Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch to reference style links #680

Merged
merged 6 commits into from
Sep 7, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,6 @@ available at [Contributor Covenant Code of Conduct][cc-coc].
For answers to common questions about this code of conduct, see the
[Contributor Covenant FAQ][cc-faq]

[cc-homepage]: https://www.contributor-covenant.org
[cc-coc]: https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[cc-faq]: https://www.contributor-covenant.org/faq
[cc-homepage]: https://www.contributor-covenant.org
25 changes: 15 additions & 10 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
# Contributing

[issue]: https://github.com/GitCredentialManager/git-credential-manager/issues/new/choose
[fork]: https://github.com/GitCredentialManager/git-credential-manager/fork
[pr]: https://github.com/GitCredentialManager/git-credential-manager/compare
[code-of-conduct]: CODE_OF_CONDUCT.md
[commits]: https://www.youtube.com/watch?v=4qLtKx9S9a8

Hi there! We're thrilled that you'd like to contribute to GCM :tada:. Your help is essential for keeping it great.

Contributions to GCM are [released](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) to the public under the [project's open source license](LICENSE).
Contributions to GCM are [released][contribute-under-repo-license] to the public under the [project's open source license][license].

Please note that this project is released with a [Contributor Code of Conduct][code-of-conduct]. By participating in this project you agree to abide by its terms.

Expand Down Expand Up @@ -42,6 +36,17 @@ Here are a few things you can do that will increase the likelihood of your pull

## Resources

- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
- [Using Pull Requests](https://help.github.com/articles/about-pull-requests/)
- [GitHub Help](https://help.github.com)
- [How to Contribute to Open Source][how-to-contribute]
- [Using Pull Requests][prs]
- [GitHub Help][github-help]

[code-of-conduct]: CODE_OF_CONDUCT.md
[commits]: https://www.youtube.com/watch?v=4qLtKx9S9a8
[contribute-under-repo-license]: https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license
[fork]: https://github.com/GitCredentialManager/git-credential-manager/fork
[github-help]: https://help.github.com
[how-to-contribute]: https://opensource.guide/how-to-contribute/
[issue]: https://github.com/GitCredentialManager/git-credential-manager/issues/new/choose
[license]: LICENSE
[pr]: https://github.com/GitCredentialManager/git-credential-manager/compare
[prs]: https://help.github.com/articles/about-pull-requests/
120 changes: 80 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
# Git Credential Manager

[![Build Status](https://github.com/GitCredentialManager/git-credential-manager/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/GitCredentialManager/git-credential-manager/actions/workflows/continuous-integration.yml)
[![Build Status][build-status-badge]][workflow-status]

---

[Git Credential Manager](https://github.com/GitCredentialManager/git-credential-manager) (GCM) is a secure Git credential helper built on [.NET](https://dotnet.microsoft.com) that runs on Windows, macOS, and Linux.
[Git Credential Manager][gcm] (GCM) is a secure Git credential helper built on [.NET][dotnet] that runs on Windows, macOS, and Linux.

Compared to Git's [built-in credential helpers](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage) (Windows: wincred, macOS: osxkeychain, Linux: gnome-keyring/libsecret) which provides single-factor authentication support working on any HTTP-enabled Git repository, GCM provides multi-factor authentication support for [Azure DevOps](https://dev.azure.com/), Azure DevOps Server (formerly Team Foundation Server), GitHub, Bitbucket, and GitLab.
Compared to Git's [built-in credential helpers][git-tools-credential-storage] (Windows: wincred, macOS: osxkeychain, Linux: gnome-keyring/libsecret) which provides single-factor authentication support working on any HTTP-enabled Git repository, GCM provides multi-factor authentication support for [Azure DevOps][azure-devops], Azure DevOps Server (formerly Team Foundation Server), GitHub, Bitbucket, and GitLab.

Git Credential Manager (GCM) replaces the .NET Framework-based [Git Credential Manager for Windows](https://github.com/microsoft/Git-Credential-Manager-for-Windows) (GCM), and the Java-based [Git Credential Manager for Mac and Linux](https://github.com/microsoft/Git-Credential-Manager-for-Mac-and-Linux) (Java GCM), providing a consistent authentication experience across all platforms.
Git Credential Manager (GCM) replaces the .NET Framework-based [Git Credential Manager for Windows][gcm-for-windows] (GCM), and the Java-based [Git Credential Manager for Mac and Linux][gcm-for-mac-and-linux] (Java GCM), providing a consistent authentication experience across all platforms.

## Current status

Git Credential Manager is currently available for Windows, macOS, and Linux\*. GCM only works with HTTP(S) remotes; you can still use Git with SSH:

- [Azure DevOps SSH](https://docs.microsoft.com/en-us/azure/devops/repos/git/use-ssh-keys-to-authenticate?view=azure-devops)
- [GitHub SSH](https://help.github.com/en/articles/connecting-to-github-with-ssh)
- [Bitbucket SSH](https://confluence.atlassian.com/bitbucket/ssh-keys-935365775.html)
- [Azure DevOps SSH][azure-devops-ssh]
- [GitHub SSH][github-ssh]
- [Bitbucket SSH][bitbucket-ssh]

Feature|Windows|macOS|Linux\*
-|:-:|:-:|:-:
Installer/uninstaller|✓|✓|✓
Secure platform credential storage [(see more)](docs/credstores.md)|✓|✓|✓
Secure platform credential storage [(see more)][gcm-credstores]|✓|✓|✓
Multi-factor authentication support for Azure DevOps|✓|✓|✓
Two-factor authentication support for GitHub|✓|✓|✓
Two-factor authentication support for Bitbucket|✓|✓|✓
Expand Down Expand Up @@ -75,7 +75,7 @@ brew uninstall --cask git-credential-manager-core

### macOS Package

We also provide a [.pkg installer](https://github.com/GitCredentialManager/git-credential-manager/releases/latest) with each release. To install, double-click the installation package and follow the instructions presented.
We also provide a [.pkg installer][latest-release] with each release. To install, double-click the installation package and follow the instructions presented.

#### Uninstall

Expand All @@ -95,15 +95,15 @@ sudo /usr/local/share/gcm-core/uninstall.sh

#### Ubuntu/Debian distributions

Download the latest [.deb package](https://github.com/GitCredentialManager/git-credential-manager/releases/latest), and run the following:
Download the latest [.deb package][latest-release], and run the following:

```shell
sudo dpkg -i <path-to-package>
git-credential-manager-core configure
```

**Note:** Although packages were previously offered on certain
[Microsoft Ubuntu package feeds](https://packages.microsoft.com/repos/),
[Microsoft Ubuntu package feeds][ms-package-repos],
GCM no longer publishes to these repositories. Please install the
Debian package using the above instructions instead.

Expand All @@ -118,7 +118,7 @@ sudo dpkg -r gcmcore

##### Option 1: Tarball

Download the latest [tarball](https://github.com/GitCredentialManager/git-credential-manager/releases/latest), and run the following:
Download the latest [tarball][latest-release], and run the following:

```shell
tar -xvf <path-to-tarball> -C /usr/local/bin
Expand Down Expand Up @@ -157,21 +157,21 @@ rm $(command -v git-credential-manager-core)

To uninstall:

[Follow these instructions](docs/linux-fromsrc-uninstall.md) for your distribution.
[Follow these instructions][linux-uninstall] for your distribution.

**Note:** all Linux distributions [require additional configuration](https://aka.ms/gcm/credstores) to use GCM.
**Note:** all Linux distributions [require additional configuration][gcm-credstores] to use GCM.

---

### Windows

GCM is included with [Git for Windows](https://gitforwindows.org/), and the latest version is included in each new Git for Windows release. This is the preferred way to install GCM on Windows. During installation you will be asked to select a credential helper, with GCM being set as the default.
GCM is included with [Git for Windows][git-for-windows], and the latest version is included in each new Git for Windows release. This is the preferred way to install GCM on Windows. During installation you will be asked to select a credential helper, with GCM being set as the default.

![image](https://user-images.githubusercontent.com/5658207/140082529-1ac133c1-0922-4a24-af03-067e27b3988b.png)
![image][git-for-windows-screenshot]

#### Standalone installation

You can also download the [latest installer](https://github.com/GitCredentialManager/git-credential-manager/releases/latest) for Windows to install GCM standalone.
You can also download the [latest installer][latest-release] for Windows to install GCM standalone.

**:warning: Important :warning:**

Expand Down Expand Up @@ -200,10 +200,10 @@ To uninstall, open Control Panel and navigate to the Programs and Features scree
#### Windows Subsystem for Linux (WSL)

Git Credential Manager can be used with the [Windows Subsystem for Linux
(WSL)](https://aka.ms/wsl) to enable secure authentication of your remote Git
(WSL)][ms-wsl] to enable secure authentication of your remote Git
repositories from inside of WSL.

[Please see the GCM on WSL docs](docs/wsl.md) for more information.
[Please see the GCM on WSL docs][gcm-wsl] for more information.

## Supported Git versions

Expand All @@ -218,50 +218,90 @@ Git that are not compatible.
- Git 2.26.2

This version of Git introduced a breaking change with parsing credential
configuration that GCM relies on. This issue was fixed in commit [`12294990`](https://github.com/git/git/commit/12294990c90e043862be9eb7eb22c3784b526340)
configuration that GCM relies on. This issue was fixed in commit [`12294990`][gcm-commit-12294990]
of the Git project, and released in Git 2.27.0.

## How to use

Once it's installed and configured, Git Credential Manager is called implicitly by Git.
You don't have to do anything special, and GCM isn't intended to be called directly by the user.
For example, when pushing (`git push`) to [Azure DevOps](https://dev.azure.com), [Bitbucket](https://bitbucket.org), or [GitHub](https://github.com), a window will automatically open and walk you through the sign-in process.
For example, when pushing (`git push`) to [Azure DevOps][azure-devops], [Bitbucket][bitbucket], or [GitHub][github], a window will automatically open and walk you through the sign-in process.
(This process will look slightly different for each Git host, and even in some cases, whether you've connected to an on-premises or cloud-hosted Git host.)
Later Git commands in the same repository will re-use existing credentials or tokens that GCM has stored for as long as they're valid.

Read full command line usage [here](docs/usage.md).
Read full command line usage [here][gcm-usage].

### Configuring a proxy

See detailed information [here](https://aka.ms/gcm/httpproxy).
See detailed information [here][gcm-http-proxy].

## Additional Resources

- [Frequently asked questions](docs/faq.md)
- [Development and debugging](docs/development.md)
- [Command-line usage](docs/usage.md)
- [Configuration options](docs/configuration.md)
- [Environment variables](docs/environment.md)
- [Enterprise configuration](docs/enterprise-config.md)
- [Network and HTTP configuration](docs/netconfig.md)
- [Credential stores](docs/credstores.md)
- [Architectural overview](docs/architecture.md)
- [Host provider specification](docs/hostprovider.md)
- [Azure Repos OAuth tokens](docs/azrepos-users-and-tokens.md)
- [GitLab support](docs/gitlab.md)
- [Frequently asked questions][gcm-faq]
- [Development and debugging][gcm-dev]
- [Command-line usage][gcm-usage]
- [Configuration options][gcm-config]
- [Environment variables][gcm-env]
- [Enterprise configuration][gcm-enterprise-config]
- [Network and HTTP configuration][gcm-net-config]
- [Credential stores][gcm-credstores]
- [Architectural overview][gcm-arch]
- [Host provider specification][gcm-host-provider]
- [Azure Repos OAuth tokens][gcm-azure-tokens]
- [GitLab support][gcm-gitlab]

## Experimental Features

- [Windows broker (experimental)](docs/windows-broker.md)
- [Windows broker (experimental)][gcm-windows-broker]

## Contributing

This project welcomes contributions and suggestions.
See the [contributing guide](CONTRIBUTING.md) to get started.
See the [contributing guide][gcm-contributing] to get started.

This project follows [GitHub's Open Source Code of Conduct](CODE_OF_CONDUCT.md).
This project follows [GitHub's Open Source Code of Conduct][gcm-coc].

## License

We're [MIT](LICENSE) licensed.
When using GitHub logos, please be sure to follow the [GitHub logo guidelines](https://github.com/logos).
We're [MIT][gcm-license] licensed.
When using GitHub logos, please be sure to follow the [GitHub logo guidelines][github-logos].

[azure-devops]: https://dev.azure.com/
[azure-devops-ssh]: https://docs.microsoft.com/en-us/azure/devops/repos/git/use-ssh-keys-to-authenticate?view=azure-devops
[bitbucket]: https://bitbucket.org
[bitbucket-ssh]: https://confluence.atlassian.com/bitbucket/ssh-keys-935365775.html
[build-status-badge]: https://github.com/GitCredentialManager/git-credential-manager/actions/workflows/continuous-integration.yml/badge.svg
[dotnet]: https://dotnet.microsoft.com
[gcm]: https://github.com/GitCredentialManager/git-credential-manager
[gcm-arch]: docs/architecture.md
[gcm-azure-tokens]: docs/azrepos-users-and-tokens.md
[gcm-coc]: CODE_OF_CONDUCT.md
[gcm-commit-12294990]: https://github.com/git/git/commit/12294990c90e043862be9eb7eb22c3784b526340
[gcm-config]: docs/configuration.md
[gcm-contributing]: CONTRIBUTING.md
[gcm-credstores]: docs/credstores.md
[gcm-dev]: docs/development.md
[gcm-enterprise-config]: docs/enterprise-config.md
[gcm-env]: docs/environment.md
[gcm-faq]: docs/faq.md
[gcm-for-mac-and-linux]: https://github.com/microsoft/Git-Credential-Manager-for-Mac-and-Linux
[gcm-for-windows]: https://github.com/microsoft/Git-Credential-Manager-for-Windows
[gcm-gitlab]: docs/gitlab.md
[gcm-host-provider]: docs/hostprovider.md
[gcm-http-proxy]: docs/netconfig.md#http-proxy
[gcm-license]: LICENSE
[gcm-net-config]: docs/netconfig.md
[gcm-usage]: docs/usage.md
[gcm-windows-broker]: docs/windows-broker.md
[gcm-wsl]: docs/wsl.md
[git-for-windows]: https://gitforwindows.org/
[git-for-windows-screenshot]: https://user-images.githubusercontent.com/5658207/140082529-1ac133c1-0922-4a24-af03-067e27b3988b.png
[git-tools-credential-storage]: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage
[github]: https://github.com
[github-ssh]: https://help.github.com/en/articles/connecting-to-github-with-ssh
[github-logos]: https://github.com/logos
[latest-release]: https://github.com/GitCredentialManager/git-credential-manager/releases/latest
[linux-uninstall]: docs/linux-fromsrc-uninstall.md
[ms-package-repos]: https://packages.microsoft.com/repos/
[ms-wsl]: https://aka.ms/wsl#
[workflow-status]: https://github.com/GitCredentialManager/git-credential-manager/actions/workflows/continuous-integration.yml
4 changes: 3 additions & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Security

If you discover a security issue in this repo, please submit it through the [GitHub Security Bug Bounty](https://hackerone.com/github)
If you discover a security issue in this repo, please submit it through the [GitHub Security Bug Bounty][hackerone-github]

Thanks for helping make GitHub products safe for everyone.

[hackerone-github]: https://hackerone.com/github
23 changes: 15 additions & 8 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,15 @@ library (C#). The library targets .NET Standard as well as .NET Framework.
> **Note**
>
> The reason for also targeting .NET Framework directly is that the
> `Microsoft.Identity.Client` ([MSAL.NET](https://github.com/AzureAD/microsoft-authentication-library-for-dotnet))
> `Microsoft.Identity.Client` ([MSAL.NET][msal])
> library requires a .NET Framework target to be able to show the embedded web
> browser auth pop-up on Windows platforms.
>
> There are extension points that now exist in MSAL.NET meaning we can plug-in
> our own browser pop-up handling code on .NET meaning both Windows and
> Mac. We haven't yet gotten around to exploring this.
>
> See [this](https://github.com/GitCredentialManager/git-credential-manager/issues/113)
> issue for more information.
> See [GCM issue 113][issue-113] for more information.

The entry-point for GCM can be found in the `Git-Credential-Manager`
project, a console application that targets both .NET and .NET Framework.
Expand All @@ -80,9 +79,9 @@ helpers on Windows.

### Cross-platform UI

We hope to be able to migrate the WPF/Windows only helpers to [Avalonia](https://avaloniaui.net/)
in order to gain cross-platform graphical user interface support. See [this](https://github.com/GitCredentialManager/git-credential-manager/issues/136)
issue for up-to-date progress on this effort.
We hope to be able to migrate the WPF/Windows only helpers to [Avalonia][avalonia]
in order to gain cross-platform graphical user interface support. See
[GCM issue 136][issue-136] for up-to-date progress on this effort.

### Microsoft authentication

Expand Down Expand Up @@ -148,7 +147,7 @@ Git Credential Manager maintains a set of known commands including
GCM also maintains a set of known, registered host providers that implement
the `IHostProvider` interface. Providers register themselves by adding an
instance of the provider to the `Application` object via the `RegisterProvider`
method [in `Core.Program`](../src/shared/Git-Credential-Manager/Program.cs).
method in [`Core.Program`][core-program].
The `GenericHostProvider` is registered last so that it can handle all other
HTTP-based remotes as a catch-all, and provide basic username/password auth and
detect the presence of Windows Integrated Authentication (Kerberos, NTLM,
Expand All @@ -162,7 +161,7 @@ The `Get|Store|EraseCommand`s consult the host provider registry for the most
appropriate host provider. The default registry implementation select the a host
provider by asking each registered provider in turn if they understand the
request. The provider selection can be overridden by the user via the
[`credential.provider`](configuration.md#credentialprovider) or [`GCM_PROVIDER`](environment.md#GCM_PROVIDER)
[`credential.provider`][credential-provider] or [`GCM_PROVIDER`][gcm-provider]
configuration and environment variable respectively (3).

The `Get|Store|EraseCommand`s call the corresponding
Expand Down Expand Up @@ -277,3 +276,11 @@ operation/authentication.
The `ITrace` component can be found on the `ICommandContext` object or passed in
directly to some constructors. Verbose and diagnostic information is be written
to the trace object in most places of GCM.

[avalonia]: https://avaloniaui.net/
[core-program]: ../src/shared/Git-Credential-Manager/Program.cs
[credential-provider]: configuration.md#credentialprovider
[issue-113]: https://github.com/GitCredentialManager/git-credential-manager/issues/113
[issue-136]: https://github.com/GitCredentialManager/git-credential-manager/issues/136
[gcm-provider]: environment.md#GCM_PROVIDER
[msal]: https://github.com/AzureAD/microsoft-authentication-library-for-dotnet
Loading