Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
40f5934
Run release-winget on Windows Server
ldennington Oct 6, 2021
624251e
Update inno installer metadata
ldennington Oct 8, 2021
53ea286
Merge pull request #483 from ldennington/update-metadata
ldennington Oct 12, 2021
77a5748
docs: update README to list bad Git versions
mjcheetham Oct 12, 2021
6c0fb9e
docs: add missing DPAPI option to summary
mjcheetham Oct 14, 2021
8f63406
Merge pull request #488 from mjcheetham/badgitver-docs
mjcheetham Oct 15, 2021
4472ea0
registry: remove autodetection progress/info message
mjcheetham Oct 15, 2021
d872294
Merge pull request #494 from mjcheetham/no-auto-noise
mjcheetham Oct 20, 2021
3183fdb
Add PAT as possible option to credential.gitHubAuthModes (#496)
Shegox Oct 20, 2021
1b0ad58
Fix CONTRIBUTING.md link to LICENSE
julescubtree Oct 28, 2021
8b96141
Remove Microsoft from assembly names
ldennington Oct 20, 2021
e7a8807
Remove Microsoft from/generally update namespaces
ldennington Oct 21, 2021
c912943
Rename projects and directories
ldennington Oct 22, 2021
c35166d
fix the signing! woop yolo
ldennington Nov 1, 2021
5aa3590
Merge pull request #500 from ldennington/remove-microsoft-from-namespace
ldennington Nov 1, 2021
dd5b999
Add UI testing instructions to CONTRIBUTING
ldennington Nov 1, 2021
7609cec
Clean up README
ldennington Nov 1, 2021
73cb423
msauth: update to MSAL.NET 4.37
mjcheetham Nov 1, 2021
8cd79a3
proxy: match NO_PROXY formats to libcurl behaviour
mjcheetham Oct 20, 2021
f22fd0b
Merge pull request #510 from ldennington/add-ui-testing-instructions
mjcheetham Nov 2, 2021
a391785
Merge pull request #501 from mjcheetham/noproxy-globs
mjcheetham Nov 2, 2021
81cdb21
settings: match curl lowercase proxy envar behaviour
mjcheetham Oct 22, 2021
3bfcf41
Merge pull request #508 from julescubtree/update-contributing-guide
mjcheetham Nov 2, 2021
90a8d6d
Merge pull request #503 from mjcheetham/curl-envars
mjcheetham Nov 2, 2021
5e01de1
docs: update readme to call out G4W bundling
mjcheetham Nov 2, 2021
eac38a4
Merge pull request #512 from mjcheetham/msal-4.37
mjcheetham Nov 2, 2021
901f9ea
Merge pull request #513 from microsoft/docs-g4w
mjcheetham Nov 2, 2021
8d2d9ed
deb: include all shared libraries in Debian package
mjcheetham Nov 2, 2021
a193f94
Remove release-apt-get workflow
ldennington Nov 2, 2021
fcb3e0a
Remove apt-get install instructions from README.md
ldennington Nov 2, 2021
7edf9cd
Merge pull request #516 from ldennington/remove-release-apt-get
ldennington Nov 2, 2021
ac34798
Merge pull request #514 from mjcheetham/fix-deb
mjcheetham Nov 3, 2021
564045e
autodetect: set credential.provider after autodetect
mjcheetham Nov 3, 2021
45133e8
docs: use new Git for Windows installer screenshot
mjcheetham Nov 3, 2021
75d008d
Merge pull request #517 from mjcheetham/discovery-setconfig
mjcheetham Nov 3, 2021
f559bdc
Remove winget workflow
ldennington Nov 8, 2021
1d668b1
Merge pull request #520 from ldennington/remove-winget
ldennington Nov 8, 2021
0b2cdef
docs: update version cmd in issue template
mjcheetham Nov 12, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/auth-problem.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ assignees: ''

**Which version of GCM Core are you using?**

From a terminal, run `git-credential-manager-core --version` and paste the output.
From a terminal, run `git credential-manager-core --version` and paste the output.

<!-- Ex:
Git Credential Manager version 2.0.8-beta+e1f8492d04 (macOS, .NET Core 4.6.27129.04)
Expand Down
95 changes: 0 additions & 95 deletions .github/workflows/release-apt-get.yml

This file was deleted.

39 changes: 0 additions & 39 deletions .github/workflows/release-winget.yaml

This file was deleted.

7 changes: 6 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

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

Contributions to this project 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.md).
Contributions to this project 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).

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 All @@ -24,6 +24,11 @@ This helps us coordinate and reduce duplication.
0. Make sure the tests pass on your machine: `dotnet test`
0. Create a new branch: `git switch -c my-branch-name`
0. Make your change, add tests, and make sure the tests still pass
0. For UI updates, test your changes by executing a `dotnet run` in applicable UI-related project directories:
- `Atlassian.Bitbucket.UI.Avalonia`
- `GitHub.UI.Avalonia`
- `Atlassian.Bitbucket.UI.Windows`
- `GitHub.UI.Windows`
0. Push to your fork and [submit a pull request][pr]
0. Pat your self on the back and wait for your pull request to be reviewed and merged.

Expand Down
10 changes: 5 additions & 5 deletions Git-Credential-Manager.sln
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{A7FC1234-95E
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Git-Credential-Manager", "src\shared\Git-Credential-Manager\Git-Credential-Manager.csproj", "{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Git.CredentialManager", "src\shared\Microsoft.Git.CredentialManager\Microsoft.Git.CredentialManager.csproj", "{31BCFC70-B767-4274-873F-1A076D422FC3}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core", "src\shared\Core\Core.csproj", "{31BCFC70-B767-4274-873F-1A076D422FC3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Git.CredentialManager.Tests", "src\shared\Microsoft.Git.CredentialManager.Tests\Microsoft.Git.CredentialManager.Tests.csproj", "{AD41FA1E-51F5-4E4F-B7DA-32F921491313}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core.Tests", "src\shared\Core.Tests\Core.Tests.csproj", "{AD41FA1E-51F5-4E4F-B7DA-32F921491313}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AzureRepos", "src\shared\Microsoft.AzureRepos\Microsoft.AzureRepos.csproj", "{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}"
EndProject
Expand Down Expand Up @@ -37,7 +37,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atlassian.Bitbucket", "src\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atlassian.Bitbucket.Tests", "src\shared\Atlassian.Bitbucket.Tests\Atlassian.Bitbucket.Tests.csproj", "{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared.UI.Windows", "src\windows\Shared.UI.Windows\Shared.UI.Windows.csproj", "{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.UI.Windows", "src\windows\Core.UI.Windows\Core.UI.Windows.csproj", "{2B3CD8FF-84A6-4B53-A28B-D7A75B0AB4D7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packaging.Linux", "src\linux\Packaging.Linux\Packaging.Linux.csproj", "{AD2A935F-3720-4802-8119-6A9B35B254DF}"
EndProject
Expand All @@ -47,9 +47,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitHub.UI", "src\shared\Git
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atlassian.Bitbucket.UI", "src\shared\Atlassian.Bitbucket.UI\Atlassian.Bitbucket.UI.csproj", "{EB1AA840-6FFF-4464-A9B2-0AEA36F615EA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Git.CredentialManager.UI", "src\shared\Microsoft.Git.CredentialManager.UI\Microsoft.Git.CredentialManager.UI.csproj", "{001846B0-462B-4A27-90CD-2435D4C0F680}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.UI", "src\shared\Core.UI\Core.UI.csproj", "{001846B0-462B-4A27-90CD-2435D4C0F680}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Git.CredentialManager.UI.Avalonia", "src\shared\Microsoft.Git.CredentialManager.UI.Avalonia\Microsoft.Git.CredentialManager.UI.Avalonia.csproj", "{DE620324-250C-4262-BA13-198FA6FDB82A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.UI.Avalonia", "src\shared\Core.UI.Avalonia\Core.UI.Avalonia.csproj", "{DE620324-250C-4262-BA13-198FA6FDB82A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitHub.UI.Avalonia", "src\shared\GitHub.UI.Avalonia\GitHub.UI.Avalonia.csproj", "{459501A8-31E6-41CB-BE54-D31FFF4B2007}"
EndProject
Expand Down
55 changes: 25 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,7 @@ Proxy support|&#10003;|&#10003;|&#10003;

**Notes:**

(\*) Debian package offered but not yet available on an official Microsoft feed.
Fedora packages planned but not yet available.
(\*) Fedora packages planned but not yet available.

## Download and Install

Expand Down Expand Up @@ -89,33 +88,7 @@ sudo /usr/local/share/gcm-core/uninstall.sh
<a name="linux-install-instructions"></a>
### Linux

#### Debian package (.deb)

`apt-get` support is available for Ubuntu Bionic Beaver (18.04) and Hirsute
Hippo (21.04). Take the following steps to set up and install based on the
version you are running:

##### Ubuntu 18.04 (Bionic)

```shell
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo apt-add-repository https://packages.microsoft.com/ubuntu/18.04/prod
sudo apt-get update
sudo apt-get install gcmcore
git-credential-manager-core configure
```

##### Ubuntu 21.04 (Hirsute)

```shell
curl -sSL https://packages.microsoft.com/config/ubuntu/21.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft-prod.list
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
sudo apt-get update
sudo apt-get install gcmcore
git-credential-manager-core configure
```

##### Other Ubuntu/Debian distributions
#### Ubuntu/Debian distributions

Download the latest [.deb package](https://github.com/microsoft/Git-Credential-Manager-Core/releases/latest), and run the following:

Expand All @@ -139,7 +112,13 @@ git-credential-manager-core configure

### Windows

You can download the [latest installer](https://github.com/microsoft/Git-Credential-Manager-Core/releases/latest) for Windows to install GCM Core standalone.
GCM Core 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 Core on Windows. During installation you will be asked to select a credential helper, with GCM Core being set as the default.

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

#### Standalone installation

You can also download the [latest installer](https://github.com/microsoft/Git-Credential-Manager-Core/releases/latest) for Windows to install GCM Core standalone.

**:warning: Important :warning:**

Expand Down Expand Up @@ -173,6 +152,22 @@ repositories from inside of WSL.

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

## Supported Git versions

Git Credential Manager Core tries to be compatible with the broadest set of Git
versions (within reason). However there are some know problematic releases of
Git that are not compatible.

- Git 1.x

The initial major version of Git is not supported or tested with GCM.

- 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)
of the Git project, and released in Git 2.27.0.

## How to use

Once it's installed and configured, Git Credential Manager Core is called implicitly by Git.
Expand Down
12 changes: 6 additions & 6 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,14 @@
| | | | | |
+-v---v----v--------------v------------+ +-v-----------------v----------------+
| | | |
| Microsoft.Git.CredentialManager <--+ Microsoft.Git.CredentialManager.UI |
| Core <--+ Core.UI |
| | | |
+--------------------------------------+ +------------------------------------+
```

Git Credential Manager Core (GCM Core) is built to be Git host and platform/OS
agonstic. Most of the shared logic (command execution, the abstract platform
subsystems, etc) can be found in the `Microsoft.Git.CredentialManager` class
subsystems, etc) can be found in the `Core` class
library (C#). The library targets .NET Standard as well as .NET Framework.

> **Note**
Expand All @@ -59,10 +59,10 @@ The entry-point for GCM Core can be found in the `Git-Credential-Manager`
project, a console application that targets both .NET and .NET Framework.
This project emits the `git-credential-manager-core(.exe)` executable, and
contains very little code - registration of all supported host providers and
running the `Application` object found in `Microsoft.Git.CredentialManager`.
running the `Application` object found in `Core`.

Providers have their own projects/assemblies that take dependencies on the
`Microsoft.Git.CredentialManager` core assembly, and are dependents of the main
`Core` core assembly, and are dependents of the main
entry point application `Git-Credential-Manager`. Code in these binaries is
expected to run on all supported platforms and typically (see MSAL.NET note
above) does not include any graphical user interface; they use terminal prompts
Expand All @@ -88,7 +88,7 @@ issue for up-to-date progress on this effort.

For authentication using Microsoft Accounts or Azure Active Directory, things
are a little different. The `MicrosoftAuthentication` component is present in
the core `Microsoft.Git.CredentialManager` assembly, rather than bundled with a
the core `Core` assembly, rather than bundled with a
specific host provider. This was done to allow any service that may wish to in
the future integrate with Microsoft Accounts or Azure Active Directory can make
use of this reusable authentication component.
Expand Down Expand Up @@ -148,7 +148,7 @@ Git Credential Manager Core maintains a set of known commands including
GCM Core 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 `Microsoft.Git.CredentialManager.Program`](../src/shared/Git-Credential-Manager/Program.cs).
method [in `Core.Program`](../src/shared/Git-Credential-Manager/Program.cs).
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 Down
7 changes: 6 additions & 1 deletion docs/autodetect.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ hostname can be made. Only one HTTP `HEAD` call is made per credential request
received by Git. To avoid this network call, please [explicitly configure](#explicit-configuration)
the host provider for your self-hosted instance.

After a successful detection of the host provider, GCM will automatically set
the [`credential.provider` configuration entry](configuration.md#credentialprovider)
for that remote to avoid needing to perform this expensive network call in
future requests.

### Timeout

You can control how long GCM will wait for a response to the remote network call
Expand All @@ -41,7 +46,7 @@ Git configuration setting to the maximum number of milliseconds to wait.
The default value is 2000 milliseconds (2 seconds). You can prevent the network
call altogether by setting a zero or negative value, for example -1.

## Explicit configuration
## Manual configuration

If the auto-detection mechanism fails to select the correct host provider, or
if the remote probing network call is causing performance issues, you can
Expand Down
5 changes: 3 additions & 2 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,8 @@ _(unset)_|Automatically detect modes
`oauth`|Expands to: `browser, device`
`browser`|OAuth authentication via a web browser _(requires a GUI)_
`device`|OAuth authentication with a device code
`basic`|Basic/PAT-based authentication
`basic`|Basic authentication using username and password
`pat`|Personal Access Token (pat)-based authentication

#### Example

Expand Down Expand Up @@ -394,7 +395,7 @@ Value|Git Behavior
On Windows using GitHub, for a user whose login is `alice`, and with `credential.useHttpPath` set to `false` (or not set), the following remote URLs will use the same credentials:

```text
Credential: "git:https://github.com" (user = alice)
Credential: "git:https://github.com" (user = alice)

https://github.com/foo/bar
https://github.com/contoso/widgets
Expand Down
1 change: 1 addition & 0 deletions docs/credstores.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
There are several options for storing credentials that GCM Core supports:

- Windows Credential Manager
- DPAPI protected files
- macOS Keychain
- [freedesktop.org Secret Service API](https://specifications.freedesktop.org/secret-service/)
- GPG/[`pass`](https://www.passwordstore.org/) compatible files
Expand Down
3 changes: 2 additions & 1 deletion docs/environment.md
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,8 @@ _(unset)_|Automatically detect modes
`oauth`|Expands to: `browser, device`
`browser`|OAuth authentication via a web browser _(requires a GUI)_
`device`|OAuth authentication with a device code
`basic`|Basic/PAT-based authentication
`basic`|Basic authentication using username and password
`pat`|Personal Access Token (pat)-based authentication

##### Windows

Expand Down
Loading