Showing preview only (2,495K chars total). Download the full file or copy to clipboard to get everything.
Repository: git-ecosystem/git-credential-manager
Branch: main
Commit: ee7363015260
Files: 496
Total size: 2.3 MB
Directory structure:
gitextract_0a_1gga6/
├── .azure-pipelines/
│ └── release.yml
├── .code-coverage/
│ └── coverlet.settings.xml
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── auth-issue.yml
│ │ └── feature-req.yml
│ ├── dependabot.yml
│ └── workflows/
│ ├── codeql-analysis.yml
│ ├── continuous-integration.yml
│ ├── lint-docs.yml
│ ├── maintainer-absence.yml
│ └── validate-install-from-source.yml
├── .gitignore
├── .lycheeignore
├── .markdownlint.jsonc
├── .vscode/
│ ├── launch.json
│ └── tasks.json
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Directory.Build.props
├── Directory.Build.targets
├── Git-Credential-Manager.sln
├── Git-Credential-Manager.sln.DotSettings
├── LICENSE
├── NOTICE
├── README.md
├── SECURITY.md
├── VERSION
├── assets/
│ └── gcm.xaml
├── build/
│ ├── GCM.MSBuild.csproj
│ ├── GCM.tasks
│ ├── GenerateWindowsAppManifest.cs
│ └── GetVersion.cs
├── docs/
│ ├── README.md
│ ├── architecture.md
│ ├── autodetect.md
│ ├── azrepos-misp.md
│ ├── azrepos-users-and-tokens.md
│ ├── bitbucket-authentication.md
│ ├── bitbucket-development.md
│ ├── configuration.md
│ ├── credstores.md
│ ├── development.md
│ ├── enterprise-config.md
│ ├── environment.md
│ ├── faq.md
│ ├── generic-oauth.md
│ ├── github-apideprecation.md
│ ├── gitlab.md
│ ├── hostprovider.md
│ ├── install.md
│ ├── linux-fromsrc-uninstall.md
│ ├── linux-validate-gpg.md
│ ├── migration.md
│ ├── multiple-users.md
│ ├── netconfig.md
│ ├── ntlm-kerberos.md
│ ├── rename.md
│ ├── usage.md
│ ├── windows-broker.md
│ └── wsl.md
├── global.json
├── nuget.config
└── src/
├── linux/
│ ├── Directory.Build.props
│ └── Packaging.Linux/
│ ├── Packaging.Linux.csproj
│ ├── build.sh
│ ├── install-from-source.sh
│ ├── layout.sh
│ └── pack.sh
├── osx/
│ ├── .gitignore
│ ├── Directory.Build.props
│ └── Installer.Mac/
│ ├── Installer.Mac.csproj
│ ├── build.sh
│ ├── codesign.sh
│ ├── dist.sh
│ ├── distribution.arm64.xml
│ ├── distribution.x64.xml
│ ├── entitlements.xml
│ ├── layout.sh
│ ├── notarize.sh
│ ├── pack.sh
│ ├── resources/
│ │ └── en.lproj/
│ │ ├── conclusion.html
│ │ └── welcome.html
│ ├── scripts/
│ │ └── postinstall
│ └── uninstall.sh
├── shared/
│ ├── Atlassian.Bitbucket/
│ │ ├── Atlassian.Bitbucket.csproj
│ │ ├── AuthenticationMethod.cs
│ │ ├── BitbucketAuthentication.cs
│ │ ├── BitbucketConstants.cs
│ │ ├── BitbucketHelper.cs
│ │ ├── BitbucketHostProvider.cs
│ │ ├── BitbucketOAuth2Client.cs
│ │ ├── BitbucketResources.Designer.cs
│ │ ├── BitbucketResources.resx
│ │ ├── BitbucketRestApiRegistry.cs
│ │ ├── BitbucketTokenEndpointResponseJson.cs
│ │ ├── Cloud/
│ │ │ ├── BitbucketOAuth2Client.cs
│ │ │ ├── BitbucketRestApi.cs
│ │ │ ├── CloudConstants.cs
│ │ │ └── UserInfo.cs
│ │ ├── DataCenter/
│ │ │ ├── BitbucketOAuth2Client.cs
│ │ │ ├── BitbucketRestApi.cs
│ │ │ ├── DataCenterConstants.cs
│ │ │ ├── LoginOption.cs
│ │ │ ├── LoginOptions.cs
│ │ │ └── UserInfo.cs
│ │ ├── IBitbucketRestApi.cs
│ │ ├── IRegistry.cs
│ │ ├── IUserInfo.cs
│ │ ├── InternalsVisibleTo.cs
│ │ ├── OAuth2ClientRegistry.cs
│ │ ├── RestApiResult.cs
│ │ └── UI/
│ │ ├── Commands/
│ │ │ └── CredentialsCommand.cs
│ │ ├── ViewModels/
│ │ │ └── CredentialsViewModel.cs
│ │ └── Views/
│ │ ├── CredentialsView.axaml
│ │ └── CredentialsView.axaml.cs
│ ├── Atlassian.Bitbucket.Tests/
│ │ ├── Atlassian.Bitbucket.Tests.csproj
│ │ ├── BitbucketAuthenticationTest.cs
│ │ ├── BitbucketHelperTest.cs
│ │ ├── BitbucketHostProviderTest.cs
│ │ ├── BitbucketRestApiRegistryTest.cs
│ │ ├── BitbucketTokenEndpointResponseJsonTest.cs
│ │ ├── Cloud/
│ │ │ ├── BitbucketOAuth2ClientTest.cs
│ │ │ ├── BitbucketRestApiTest.cs
│ │ │ └── UserInfoTest.cs
│ │ ├── DataCenter/
│ │ │ ├── BitbucketOAuth2ClientTest.cs
│ │ │ ├── BitbucketRestApiTest.cs
│ │ │ ├── LoginOptionsTest.cs
│ │ │ └── UserInfoTest.cs
│ │ └── OAuth2ClientRegistryTest.cs
│ ├── Core/
│ │ ├── Application.cs
│ │ ├── ApplicationBase.cs
│ │ ├── AssemblyUtils.cs
│ │ ├── Authentication/
│ │ │ ├── AuthenticationBase.cs
│ │ │ ├── BasicAuthentication.cs
│ │ │ ├── MicrosoftAuthentication.cs
│ │ │ ├── OAuth/
│ │ │ │ ├── HttpListenerExtensions.cs
│ │ │ │ ├── IOAuth2WebBrowser.cs
│ │ │ │ ├── Json/
│ │ │ │ │ ├── DeviceAuthorizationEndpointResponseJson.cs
│ │ │ │ │ ├── ErrorResponseJson.cs
│ │ │ │ │ └── TokenEndpointResponseJson.cs
│ │ │ │ ├── OAuth2AuthorizationCodeResult.cs
│ │ │ │ ├── OAuth2Client.cs
│ │ │ │ ├── OAuth2Constants.cs
│ │ │ │ ├── OAuth2CryptographicGenerator.cs
│ │ │ │ ├── OAuth2DeviceCodeResult.cs
│ │ │ │ ├── OAuth2Exception.cs
│ │ │ │ ├── OAuth2ServerEndpoints.cs
│ │ │ │ ├── OAuth2SystemWebBrowser.cs
│ │ │ │ └── OAuth2TokenResult.cs
│ │ │ ├── OAuthAuthentication.cs
│ │ │ └── WindowsIntegratedAuthentication.cs
│ │ ├── Base64UrlConvert.cs
│ │ ├── ChildProcess.cs
│ │ ├── CommandContext.cs
│ │ ├── CommandExtensions.cs
│ │ ├── Commands/
│ │ │ ├── ConfigurationCommands.cs
│ │ │ ├── DiagnoseCommand.cs
│ │ │ ├── EraseCommand.cs
│ │ │ ├── GetCommand.cs
│ │ │ ├── GitCommandBase.cs
│ │ │ ├── ProviderCommand.cs
│ │ │ └── StoreCommand.cs
│ │ ├── ConfigurationService.cs
│ │ ├── Constants.cs
│ │ ├── ConvertUtils.cs
│ │ ├── Core.csproj
│ │ ├── Credential.cs
│ │ ├── CredentialCacheStore.cs
│ │ ├── CredentialStore.cs
│ │ ├── CurlCookie.cs
│ │ ├── Diagnostics/
│ │ │ ├── CredentialStoreDiagnostic.cs
│ │ │ ├── Diagnostic.cs
│ │ │ ├── EnvironmentDiagnostic.cs
│ │ │ ├── FileSystemDiagnostic.cs
│ │ │ ├── GitDiagnostic.cs
│ │ │ ├── IDiagnosticProvider.cs
│ │ │ ├── MicrosoftAuthenticationDiagnostic.cs
│ │ │ └── NetworkingDiagnostic.cs
│ │ ├── DictionaryExtensions.cs
│ │ ├── DisposableObject.cs
│ │ ├── EncodingEx.cs
│ │ ├── EnsureArgument.cs
│ │ ├── EnumerableExtensions.cs
│ │ ├── EnvironmentBase.cs
│ │ ├── FileCredential.cs
│ │ ├── FileSystem.cs
│ │ ├── GenericHostProvider.cs
│ │ ├── GenericOAuthConfig.cs
│ │ ├── Git.cs
│ │ ├── GitConfiguration.cs
│ │ ├── GitConfigurationEntry.cs
│ │ ├── GitConfigurationKeyComparer.cs
│ │ ├── GitStreamReader.cs
│ │ ├── GitVersion.cs
│ │ ├── Gpg.cs
│ │ ├── HostProvider.cs
│ │ ├── HostProviderRegistry.cs
│ │ ├── HttpClientExtensions.cs
│ │ ├── HttpClientFactory.cs
│ │ ├── HttpContentExtensions.cs
│ │ ├── HttpRequestExtensions.cs
│ │ ├── ICredentialStore.cs
│ │ ├── ISessionManager.cs
│ │ ├── ISystemPrompts.cs
│ │ ├── ITerminal.cs
│ │ ├── ITrace2Writer.cs
│ │ ├── IniFile.cs
│ │ ├── InputArguments.cs
│ │ ├── InternalsVisibleTo.cs
│ │ ├── Interop/
│ │ │ ├── InteropException.cs
│ │ │ ├── InteropUtils.cs
│ │ │ ├── Linux/
│ │ │ │ ├── LinuxConfigParser.cs
│ │ │ │ ├── LinuxFileSystem.cs
│ │ │ │ ├── LinuxSessionManager.cs
│ │ │ │ ├── LinuxSettings.cs
│ │ │ │ ├── LinuxTerminal.cs
│ │ │ │ ├── Native/
│ │ │ │ │ ├── Glib.cs
│ │ │ │ │ ├── Gobject.cs
│ │ │ │ │ ├── Libsecret.cs
│ │ │ │ │ └── termios_Linux.cs
│ │ │ │ ├── SecretServiceCollection.cs
│ │ │ │ └── SecretServiceCredential.cs
│ │ │ ├── MacOS/
│ │ │ │ ├── MacOSEnvironment.cs
│ │ │ │ ├── MacOSFileSystem.cs
│ │ │ │ ├── MacOSKeychain.cs
│ │ │ │ ├── MacOSKeychainCredential.cs
│ │ │ │ ├── MacOSPreferences.cs
│ │ │ │ ├── MacOSSessionManager.cs
│ │ │ │ ├── MacOSSettings.cs
│ │ │ │ ├── MacOSTerminal.cs
│ │ │ │ └── Native/
│ │ │ │ ├── CoreFoundation.cs
│ │ │ │ ├── LibC.cs
│ │ │ │ ├── LibSystem.cs
│ │ │ │ ├── SecurityFramework.cs
│ │ │ │ └── termios_MacOS.cs
│ │ │ ├── Posix/
│ │ │ │ ├── GpgPassCredentialStore.cs
│ │ │ │ ├── Native/
│ │ │ │ │ ├── Fcntl.cs
│ │ │ │ │ ├── Signal.cs
│ │ │ │ │ ├── Stat.cs
│ │ │ │ │ ├── Stdio.cs
│ │ │ │ │ ├── Stdlib.cs
│ │ │ │ │ ├── Termios.cs
│ │ │ │ │ └── Unistd.cs
│ │ │ │ ├── PosixEnvironment.cs
│ │ │ │ ├── PosixFileDescriptor.cs
│ │ │ │ ├── PosixFileSystem.cs
│ │ │ │ ├── PosixSessionManager.cs
│ │ │ │ └── PosixTerminal.cs
│ │ │ ├── U8StringConverter.cs
│ │ │ ├── U8StringMarshaler.cs
│ │ │ └── Windows/
│ │ │ ├── DpapiCredentialStore.cs
│ │ │ ├── Native/
│ │ │ │ ├── Advapi32.cs
│ │ │ │ ├── CredUi.cs
│ │ │ │ ├── Kernel32.cs
│ │ │ │ ├── Ole32.cs
│ │ │ │ ├── Shell32.cs
│ │ │ │ ├── User32.cs
│ │ │ │ └── Win32Error.cs
│ │ │ ├── WindowsCredential.cs
│ │ │ ├── WindowsCredentialManager.cs
│ │ │ ├── WindowsEnvironment.cs
│ │ │ ├── WindowsFileSystem.cs
│ │ │ ├── WindowsProcessManager.cs
│ │ │ ├── WindowsSessionManager.cs
│ │ │ ├── WindowsSettings.cs
│ │ │ ├── WindowsSystemPrompts.cs
│ │ │ └── WindowsTerminal.cs
│ │ ├── NameValueCollectionExtensions.cs
│ │ ├── NullCredentialStore.cs
│ │ ├── PlaintextCredentialStore.cs
│ │ ├── PlatformUtils.cs
│ │ ├── ProcessManager.cs
│ │ ├── Settings.cs
│ │ ├── StandardStreams.cs
│ │ ├── StreamExtensions.cs
│ │ ├── StringExtensions.cs
│ │ ├── TerminalMenu.cs
│ │ ├── Trace.cs
│ │ ├── Trace2.cs
│ │ ├── Trace2CollectorWriter.cs
│ │ ├── Trace2Exception.cs
│ │ ├── Trace2FileWriter.cs
│ │ ├── Trace2Message.cs
│ │ ├── Trace2StreamWriter.cs
│ │ ├── TraceUtils.cs
│ │ ├── UI/
│ │ │ ├── Assets/
│ │ │ │ ├── Base.axaml
│ │ │ │ ├── ButtonHyperlink.axaml
│ │ │ │ ├── Controls.axaml
│ │ │ │ └── Images.axaml
│ │ │ ├── AvaloniaApp.axaml
│ │ │ ├── AvaloniaApp.axaml.cs
│ │ │ ├── AvaloniaUi.cs
│ │ │ ├── Commands/
│ │ │ │ ├── CredentialsCommand.cs
│ │ │ │ ├── DefaultAccountCommand.cs
│ │ │ │ ├── DeviceCodeCommand.cs
│ │ │ │ └── OAuthCommand.cs
│ │ │ ├── Controls/
│ │ │ │ ├── AboutWindow.axaml
│ │ │ │ ├── AboutWindow.axaml.cs
│ │ │ │ ├── DialogWindow.axaml
│ │ │ │ ├── DialogWindow.axaml.cs
│ │ │ │ ├── IFocusable.cs
│ │ │ │ ├── ProgressWindow.axaml
│ │ │ │ └── ProgressWindow.axaml.cs
│ │ │ ├── Converters/
│ │ │ │ ├── BoolConvertersEx.cs
│ │ │ │ └── WindowClientAreaConverters.cs
│ │ │ ├── Dispatcher.cs
│ │ │ ├── HelperApplication.cs
│ │ │ ├── HelperCommand.cs
│ │ │ ├── RelayCommand.cs
│ │ │ ├── ViewModels/
│ │ │ │ ├── CredentialsViewModel.cs
│ │ │ │ ├── DefaultAccountViewModel.cs
│ │ │ │ ├── DeviceCodeViewModel.cs
│ │ │ │ ├── EnableNtlmViewModel.cs
│ │ │ │ ├── OAuthViewModel.cs
│ │ │ │ ├── ViewModel.cs
│ │ │ │ └── WindowViewModel.cs
│ │ │ └── Views/
│ │ │ ├── CredentialsView.axaml
│ │ │ ├── CredentialsView.axaml.cs
│ │ │ ├── DefaultAccountView.axaml
│ │ │ ├── DefaultAccountView.axaml.cs
│ │ │ ├── DeviceCodeView.axaml
│ │ │ ├── DeviceCodeView.axaml.cs
│ │ │ ├── EnableNtlmView.axaml
│ │ │ ├── EnableNtlmView.cs
│ │ │ ├── OAuthView.axaml
│ │ │ └── OAuthView.axaml.cs
│ │ ├── UriExtensions.cs
│ │ ├── WslUtils.cs
│ │ └── X509Utils.cs
│ ├── Core.Tests/
│ │ ├── ApplicationTests.cs
│ │ ├── Authentication/
│ │ │ ├── AuthenticationBaseTests.cs
│ │ │ ├── BasicAuthenticationTests.cs
│ │ │ ├── MicrosoftAuthenticationTests.cs
│ │ │ ├── OAuth2ClientTests.cs
│ │ │ ├── OAuth2CryptographicCodeGeneratorTests.cs
│ │ │ ├── OAuth2SystemWebBrowserTests.cs
│ │ │ └── WindowsIntegratedAuthenticationTests.cs
│ │ ├── Base64UrlConvertTests.cs
│ │ ├── Commands/
│ │ │ ├── ConfigureCommandTests.cs
│ │ │ ├── DiagnoseCommandTests.cs
│ │ │ ├── EraseCommandTests.cs
│ │ │ ├── GetCommandTests.cs
│ │ │ ├── GitCommandBaseTests.cs
│ │ │ ├── StoreCommandTests.cs
│ │ │ └── UnconfigureCommandTests.cs
│ │ ├── ConfigurationServiceTests.cs
│ │ ├── Core.Tests.csproj
│ │ ├── CurlCookieTests.cs
│ │ ├── EnsureArgumentTests.cs
│ │ ├── EnumerableExtensionsTests.cs
│ │ ├── EnvironmentTests.cs
│ │ ├── GenericHostProviderTests.cs
│ │ ├── GenericOAuthConfigTests.cs
│ │ ├── GitConfigurationKeyComparerTests.cs
│ │ ├── GitConfigurationTests.cs
│ │ ├── GitStreamReaderTests.cs
│ │ ├── GitTests.cs
│ │ ├── GitVersionTests.cs
│ │ ├── HostProviderRegistryTests.cs
│ │ ├── HostProviderTests.cs
│ │ ├── HttpClientExtensionsTests.cs
│ │ ├── HttpClientFactoryTests.cs
│ │ ├── HttpRequestExtensionsTests.cs
│ │ ├── IniFileTests.cs
│ │ ├── InputArgumentsTests.cs
│ │ ├── Interop/
│ │ │ ├── Linux/
│ │ │ │ ├── LinuxConfigParserTests.cs
│ │ │ │ ├── LinuxFileSystemTests.cs
│ │ │ │ ├── LinuxSettingsTests.cs
│ │ │ │ └── SecretServiceCollectionTests.cs
│ │ │ ├── MacOS/
│ │ │ │ ├── MacOSFileSystemTests.cs
│ │ │ │ ├── MacOSKeychainTests.cs
│ │ │ │ └── MacOSPreferencesTests.cs
│ │ │ ├── Posix/
│ │ │ │ ├── GnuPassCredentialStoreTests.cs
│ │ │ │ └── PosixFileSystemTests.cs
│ │ │ ├── U8StringConverterTests.cs
│ │ │ └── Windows/
│ │ │ ├── DpapiCredentialStoreTests.cs
│ │ │ ├── WindowsCredentialManagerTests.cs
│ │ │ ├── WindowsFileSystemTests.cs
│ │ │ └── WindowsSystemPromptsTests.cs
│ │ ├── PlaintextCredentialStoreTests.cs
│ │ ├── ProcessManagerTests.cs
│ │ ├── SettingsTests.cs
│ │ ├── StreamExtensionsTests.cs
│ │ ├── StringExtensionsTests.cs
│ │ ├── TestProcessManager.cs
│ │ ├── TokenEndpointResponseJsonTest.cs
│ │ ├── Trace2MessageTests.cs
│ │ ├── Trace2Tests.cs
│ │ ├── TraceTests.cs
│ │ ├── TraceUtilsTests.cs
│ │ ├── UriExtensionsTests.cs
│ │ └── WslUtilsTests.cs
│ ├── Directory.Build.props
│ ├── DotnetTool/
│ │ ├── DotnetTool.csproj
│ │ ├── DotnetToolSettings.xml
│ │ ├── dotnet-tool.nuspec
│ │ ├── layout.ps1
│ │ └── pack.ps1
│ ├── Git-Credential-Manager/
│ │ ├── Git-Credential-Manager.csproj
│ │ ├── NOTICE
│ │ └── Program.cs
│ ├── GitHub/
│ │ ├── AuthenticationResult.cs
│ │ ├── Diagnostics/
│ │ │ └── GitHubApiDiagnostic.cs
│ │ ├── GitHub.csproj
│ │ ├── GitHubAuthChallenge.cs
│ │ ├── GitHubAuthentication.cs
│ │ ├── GitHubConstants.cs
│ │ ├── GitHubHostProvider.Commands.cs
│ │ ├── GitHubHostProvider.cs
│ │ ├── GitHubOAuth2Client.cs
│ │ ├── GitHubResources.Designer.cs
│ │ ├── GitHubResources.resx
│ │ ├── GitHubRestApi.cs
│ │ ├── InternalsVisibleTo.cs
│ │ └── UI/
│ │ ├── Commands/
│ │ │ ├── CredentialsCommand.cs
│ │ │ ├── DeviceCommand.cs
│ │ │ ├── SelectAccountCommand.cs
│ │ │ └── TwoFactorCommand.cs
│ │ ├── Controls/
│ │ │ ├── HorizontalShadowDivider.axaml
│ │ │ ├── HorizontalShadowDivider.axaml.cs
│ │ │ ├── SixDigitInput.axaml
│ │ │ └── SixDigitInput.axaml.cs
│ │ ├── ViewModels/
│ │ │ ├── CredentialsViewModel.cs
│ │ │ ├── DeviceCodeViewModel.cs
│ │ │ ├── SelectAccountViewModel.cs
│ │ │ └── TwoFactorViewModel.cs
│ │ └── Views/
│ │ ├── CredentialsView.axaml
│ │ ├── CredentialsView.axaml.cs
│ │ ├── DeviceCodeView.axaml
│ │ ├── DeviceCodeView.axaml.cs
│ │ ├── SelectAccountView.axaml
│ │ ├── SelectAccountView.axaml.cs
│ │ ├── TwoFactorView.axaml
│ │ └── TwoFactorView.axaml.cs
│ ├── GitHub.Tests/
│ │ ├── GitHub.Tests.csproj
│ │ ├── GitHubAuthChallengeTests.cs
│ │ ├── GitHubAuthenticationTests.cs
│ │ ├── GitHubHostProviderTests.cs
│ │ └── GitHubRestApiTests.cs
│ ├── GitHub.UI.Avalonia/
│ │ └── Commands/
│ │ └── SelectAccountCommandImpl.cs
│ ├── GitLab/
│ │ ├── GitLab.csproj
│ │ ├── GitLabAuthentication.cs
│ │ ├── GitLabConstants.cs
│ │ ├── GitLabHostProvider.cs
│ │ ├── GitLabOAuth2Client.cs
│ │ ├── InternalsVisibleTo.cs
│ │ └── UI/
│ │ ├── Assets/
│ │ │ └── Images.axaml
│ │ ├── Commands/
│ │ │ └── CredentialsCommand.cs
│ │ ├── ViewModels/
│ │ │ └── CredentialsViewModel.cs
│ │ └── Views/
│ │ ├── CredentialsView.axaml
│ │ └── CredentialsView.axaml.cs
│ ├── GitLab.Tests/
│ │ ├── GitLab.Tests.csproj
│ │ ├── GitLabAuthenticationTests.cs
│ │ └── GitLabHostProviderTests.cs
│ ├── Microsoft.AzureRepos/
│ │ ├── AzureDevOpsAuthorityCache.cs
│ │ ├── AzureDevOpsConstants.cs
│ │ ├── AzureDevOpsRestApi.cs
│ │ ├── AzureReposBindingManager.cs
│ │ ├── AzureReposHostProvider.cs
│ │ ├── InternalsVisibleTo.cs
│ │ ├── Microsoft.AzureRepos.csproj
│ │ └── UriHelpers.cs
│ ├── Microsoft.AzureRepos.Tests/
│ │ ├── AzureDevOpsApiTests.cs
│ │ ├── AzureReposAuthorityCacheTests.cs
│ │ ├── AzureReposBindingManagerTests.cs
│ │ ├── AzureReposHostProviderTests.cs
│ │ ├── Microsoft.AzureRepos.Tests.csproj
│ │ └── UriHelpersTests.cs
│ └── TestInfrastructure/
│ ├── AssertEx.cs
│ ├── GitTestUtilities.cs
│ ├── Objects/
│ │ ├── NullTrace.cs
│ │ ├── TestCommandContext.cs
│ │ ├── TestCredentialStore.cs
│ │ ├── TestEnvironment.cs
│ │ ├── TestFileSystem.cs
│ │ ├── TestGit.cs
│ │ ├── TestGitConfiguration.cs
│ │ ├── TestGpg.cs
│ │ ├── TestHostProvider.cs
│ │ ├── TestHostProviderRegistry.cs
│ │ ├── TestHttpClientFactory.cs
│ │ ├── TestHttpMessageHandler.cs
│ │ ├── TestOAuth2Server.cs
│ │ ├── TestOAuth2WebBrowser.cs
│ │ ├── TestSessionManager.cs
│ │ ├── TestSettings.cs
│ │ ├── TestStandardStreams.cs
│ │ └── TestTerminal.cs
│ ├── PlatformAttributes.cs
│ ├── RestTestUtilities.cs
│ ├── TestInfrastructure.csproj
│ └── TestUtils.cs
└── windows/
├── Directory.Build.props
└── Installer.Windows/
├── Installer.Windows.csproj
├── Setup.iss
└── layout.ps1
================================================
FILE CONTENTS
================================================
================================================
FILE: .azure-pipelines/release.yml
================================================
name: $(Date:yyyyMMdd)$(Rev:.r)
trigger: none
pr: none
resources:
repositories:
- repository: 1ESPipelines
type: git
name: 1ESPipelineTemplates/1ESPipelineTemplates
ref: refs/tags/release
parameters:
- name: 'esrp'
type: boolean
default: true
displayName: 'Enable ESRP code signing'
- name: 'github'
type: boolean
default: true
displayName: 'Enable GitHub release publishing'
- name: 'nuget'
type: boolean
default: true
displayName: 'Enable NuGet package publishing'
#
# 1ES Pipeline Templates do not allow using a matrix strategy so we create
# a YAML object parameter with and foreach to create jobs for each entry.
# Each OS has its own matrix object since their build steps differ.
#
- name: windows_matrix
type: object
default:
- id: windows_x86
jobName: 'Windows (x86)'
runtime: win-x86
pool: GitClientPME-1ESHostedPool-intel-pc
image: win-x86_64-ado1es
os: windows
- id: windows_x64
jobName: 'Windows (x64)'
runtime: win-x64
pool: GitClientPME-1ESHostedPool-intel-pc
image: win-x86_64-ado1es
os: windows
- id: windows_arm64
jobName: 'Windows (ARM64)'
runtime: win-arm64
pool: GitClientPME-1ESHostedPool-arm64-pc
image: win-arm64-ado1es
os: windows
- name: macos_matrix
type: object
default:
- id: macos_x64
jobName: 'macOS (x64)'
runtime: osx-x64
pool: 'Azure Pipelines'
image: macOS-latest
os: macos
- id: macos_arm64
jobName: 'macOS (ARM64)'
runtime: osx-arm64
pool: 'Azure Pipelines'
image: macOS-latest
os: macos
- name: linux_matrix
type: object
default:
- id: linux_x64
jobName: 'Linux (x64)'
runtime: linux-x64
pool: GitClientPME-1ESHostedPool-intel-pc
image: ubuntu-x86_64-ado1es
os: linux
- id: linux_arm64
jobName: 'Linux (ARM64)'
runtime: linux-arm64
pool: GitClientPME-1ESHostedPool-arm64-pc
image: ubuntu-arm64-ado1es
os: linux
variables:
- name: 'esrpAppConnectionName'
value: '1ESGitClient-ESRP-App'
- name: 'esrpMIConnectionName'
value: '1ESGitClient-ESRP-MI'
- name: 'githubConnectionName'
value: 'GitHub-GitCredentialManager'
- name: 'nugetConnectionName'
value: '1ESGitClient-NuGet'
# ESRP signing variables set in the pipeline settings:
# - esrpEndpointUrl
# - esrpClientId
# - esrpTenantId
# - esrpKeyVaultName
# - esrpSignReqCertName
extends:
template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelines
parameters:
sdl:
# SDL source analysis tasks only run on Windows images
sourceAnalysisPool:
name: GitClientPME-1ESHostedPool-intel-pc
image: win-x86_64-ado1es
os: windows
stages:
- stage: build
displayName: 'Build and Sign'
jobs:
#
# Windows build jobs
#
- ${{ each dim in parameters.windows_matrix }}:
- job: ${{ dim.id }}
displayName: ${{ dim.jobName }}
pool:
name: ${{ dim.pool }}
image: ${{ dim.image }}
os: ${{ dim.os }}
templateContext:
outputs:
- output: pipelineArtifact
targetPath: '$(Build.ArtifactStagingDirectory)\_final'
artifactName: '${{ dim.runtime }}'
steps:
- checkout: self
- task: PowerShell@2
displayName: 'Read version file'
inputs:
targetType: inline
script: |
$version = (Get-Content .\VERSION) -replace '\.\d+$', ''
Write-Host "##vso[task.setvariable variable=version;isReadOnly=true]$version"
- task: UseDotNet@2
displayName: 'Use .NET 8 SDK'
inputs:
packageType: sdk
version: '8.x'
- task: PowerShell@2
displayName: 'Build payload'
inputs:
targetType: filePath
filePath: '.\src\windows\Installer.Windows\layout.ps1'
arguments: |
-Configuration Release `
-Output $(Build.ArtifactStagingDirectory)\payload `
-SymbolOutput $(Build.ArtifactStagingDirectory)\symbols_raw `
-RuntimeIdentifier ${{ dim.runtime }}
- task: ArchiveFiles@2
displayName: 'Archive symbols'
inputs:
rootFolderOrFile: '$(Build.ArtifactStagingDirectory)\symbols_raw'
includeRootFolder: false
archiveType: zip
archiveFile: '$(Build.ArtifactStagingDirectory)\symbols\gcm-${{ dim.runtime }}-$(version)-symbols.zip'
- ${{ if eq(parameters.esrp, true) }}:
- task: EsrpCodeSigning@5
displayName: 'Sign payload'
inputs:
connectedServiceName: '$(esrpAppConnectionName)'
useMSIAuthentication: true
appRegistrationClientId: '$(esrpClientId)'
appRegistrationTenantId: '$(esrpTenantId)'
authAkvName: '$(esrpKeyVaultName)'
authSignCertName: '$(esrpSignReqCertName)'
serviceEndpointUrl: '$(esrpEndpointUrl)'
folderPath: '$(Build.ArtifactStagingDirectory)\payload'
pattern: |
**/*.exe
**/*.dll
useMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolSign",
"ToolName": "sign",
"ToolVersion": "1.0",
"Parameters": {
"OpusName": "Microsoft",
"OpusInfo": "https://www.microsoft.com",
"FileDigest": "/fd SHA256",
"PageHash": "/NPH",
"TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
}
},
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolVerify",
"ToolName": "sign",
"ToolVersion": "1.0",
"Parameters": {}
}
]
- task: PowerShell@2
displayName: 'Clean up code signing artifacts'
inputs:
targetType: inline
script: |
Remove-Item "$(Build.ArtifactStagingDirectory)\payload\CodeSignSummary-*.md"
- task: PowerShell@2
displayName: 'Build installers'
inputs:
targetType: inline
script: |
dotnet build '.\src\windows\Installer.Windows\Installer.Windows.csproj' `
--configuration Release `
--no-dependencies `
-p:NoLayout=true `
-p:PayloadPath="$(Build.ArtifactStagingDirectory)\payload" `
-p:OutputPath="$(Build.ArtifactStagingDirectory)\installers" `
-p:RuntimeIdentifier="${{ dim.runtime }}"
- ${{ if eq(parameters.esrp, true) }}:
- task: EsrpCodeSigning@5
condition: and(succeeded(), eq('${{ parameters.esrp }}', true))
displayName: 'Sign installers'
inputs:
connectedServiceName: '$(esrpAppConnectionName)'
useMSIAuthentication: true
appRegistrationClientId: '$(esrpClientId)'
appRegistrationTenantId: '$(esrpTenantId)'
authAkvName: '$(esrpKeyVaultName)'
authSignCertName: '$(esrpSignReqCertName)'
serviceEndpointUrl: '$(esrpEndpointUrl)'
folderPath: '$(Build.ArtifactStagingDirectory)\installers'
pattern: '**/*.exe'
useMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolSign",
"ToolName": "sign",
"ToolVersion": "1.0",
"Parameters": {
"OpusName": "Microsoft",
"OpusInfo": "https://www.microsoft.com",
"FileDigest": "/fd SHA256",
"PageHash": "/NPH",
"TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
}
},
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolVerify",
"ToolName": "sign",
"ToolVersion": "1.0",
"Parameters": {}
}
]
- task: ArchiveFiles@2
displayName: 'Archive payload'
inputs:
rootFolderOrFile: '$(Build.ArtifactStagingDirectory)\payload'
includeRootFolder: false
archiveType: zip
archiveFile: '$(Build.ArtifactStagingDirectory)\installers\gcm-${{ dim.runtime }}-$(version).zip'
- task: PowerShell@2
displayName: 'Collect artifacts for publishing'
inputs:
targetType: inline
script: |
New-Item -Path "$(Build.ArtifactStagingDirectory)\_final" -ItemType Directory -Force
Copy-Item "$(Build.ArtifactStagingDirectory)\installers\*.exe" -Destination "$(Build.ArtifactStagingDirectory)\_final"
Copy-Item "$(Build.ArtifactStagingDirectory)\installers\*.zip" -Destination "$(Build.ArtifactStagingDirectory)\_final"
Copy-Item "$(Build.ArtifactStagingDirectory)\symbols\*.zip" -Destination "$(Build.ArtifactStagingDirectory)\_final"
Copy-Item "$(Build.ArtifactStagingDirectory)\payload" -Destination "$(Build.ArtifactStagingDirectory)\_final" -Recurse
#
# macOS build jobs
#
- ${{ each dim in parameters.macos_matrix }}:
- job: ${{ dim.id }}
displayName: ${{ dim.jobName }}
pool:
name: ${{ dim.pool }}
image: ${{ dim.image }}
os: ${{ dim.os }}
templateContext:
outputs:
- output: pipelineArtifact
targetPath: '$(Build.ArtifactStagingDirectory)/_final'
artifactName: '${{ dim.runtime }}'
steps:
- checkout: self
- task: Bash@3
displayName: 'Read version file'
inputs:
targetType: inline
script: |
echo "##vso[task.setvariable variable=version;isReadOnly=true]$(cat ./VERSION | sed -E 's/.[0-9]+$//')"
- task: UseDotNet@2
displayName: 'Use .NET 8 SDK'
inputs:
packageType: sdk
version: '8.x'
- task: Bash@3
displayName: 'Build payload'
inputs:
targetType: filePath
filePath: './src/osx/Installer.Mac/layout.sh'
arguments: |
--runtime="${{ dim.runtime }}" \
--configuration="Release" \
--output="$(Build.ArtifactStagingDirectory)/payload" \
--symbol-output="$(Build.ArtifactStagingDirectory)/symbols_raw"
- task: ArchiveFiles@2
displayName: 'Archive symbols'
inputs:
rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/symbols_raw'
includeRootFolder: false
archiveType: tar
tarCompression: gz
archiveFile: '$(Build.ArtifactStagingDirectory)/symbols/gcm-${{ dim.runtime }}-$(version)-symbols.tar.gz'
- ${{ if eq(parameters.esrp, true) }}:
- task: AzureKeyVault@2
displayName: 'Download developer certificate'
inputs:
azureSubscription: '$(esrpMIConnectionName)'
keyVaultName: '$(esrpKeyVaultName)'
secretsFilter: 'mac-developer-certificate,mac-developer-certificate-password,mac-developer-certificate-identity'
- task: Bash@3
displayName: 'Import developer certificate'
inputs:
targetType: inline
script: |
# Create and unlock a keychain for the developer certificate
security create-keychain -p pwd $(Agent.TempDirectory)/buildagent.keychain
security default-keychain -s $(Agent.TempDirectory)/buildagent.keychain
security unlock-keychain -p pwd $(Agent.TempDirectory)/buildagent.keychain
echo $(mac-developer-certificate) | base64 -D > $(Agent.TempDirectory)/cert.p12
echo $(mac-developer-certificate-password) > $(Agent.TempDirectory)/cert.password
# Import the developer certificate
security import $(Agent.TempDirectory)/cert.p12 \
-k $(Agent.TempDirectory)/buildagent.keychain \
-P "$(mac-developer-certificate-password)" \
-T /usr/bin/codesign
# Clean up the cert file immediately after import
rm $(Agent.TempDirectory)/cert.p12
# Set ACLs to allow codesign to access the private key
security set-key-partition-list \
-S apple-tool:,apple:,codesign: \
-s -k pwd \
$(Agent.TempDirectory)/buildagent.keychain
- task: Bash@3
displayName: 'Developer sign payload files'
inputs:
targetType: inline
script: |
mkdir -p $(Build.ArtifactStagingDirectory)/tosign/payload
# Copy the files that need signing (Mach-o executables and dylibs)
pushd $(Build.ArtifactStagingDirectory)/payload
find . -type f -exec file --mime {} + \
| sed -n '/mach/s/: .*//p' \
| while IFS= read -r f; do
rel="${f#./}"
tgt="$(Build.ArtifactStagingDirectory)/tosign/payload/$rel"
mkdir -p "$(dirname "$tgt")"
cp -- "$f" "$tgt"
done
popd
# Developer sign the files
./src/osx/Installer.Mac/codesign.sh \
"$(Build.ArtifactStagingDirectory)/tosign/payload" \
"$(mac-developer-certificate-identity)" \
"$PWD/src/osx/Installer.Mac/entitlements.xml"
# ESRP code signing for macOS requires the files be packaged in a zip file for submission
- task: ArchiveFiles@2
displayName: 'Archive files for signing'
inputs:
rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/tosign/payload'
includeRootFolder: false
archiveType: zip
archiveFile: '$(Build.ArtifactStagingDirectory)/tosign/payload.zip'
- task: EsrpCodeSigning@5
displayName: 'Sign payload'
inputs:
connectedServiceName: '$(esrpAppConnectionName)'
useMSIAuthentication: true
appRegistrationClientId: '$(esrpClientId)'
appRegistrationTenantId: '$(esrpTenantId)'
authAkvName: '$(esrpKeyVaultName)'
authSignCertName: '$(esrpSignReqCertName)'
serviceEndpointUrl: '$(esrpEndpointUrl)'
folderPath: '$(Build.ArtifactStagingDirectory)/tosign'
pattern: 'payload.zip'
useMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-401337-Apple",
"OperationCode": "MacAppDeveloperSign",
"ToolName": "sign",
"ToolVersion": "1.0",
"Parameters": {
"Hardening": "Enable"
}
}
]
# Extract signed files, overwriting the unsigned files, ready for packaging
- task: Bash@3
displayName: 'Extract signed payload files'
inputs:
targetType: inline
script: |
unzip -uo $(Build.ArtifactStagingDirectory)/tosign/payload.zip -d $(Build.ArtifactStagingDirectory)/payload
- task: Bash@3
displayName: 'Build component package'
inputs:
targetType: filePath
filePath: './src/osx/Installer.Mac/pack.sh'
arguments: |
--version="$(version)" \
--payload="$(Build.ArtifactStagingDirectory)/payload" \
--output="$(Build.ArtifactStagingDirectory)/pkg/com.microsoft.gitcredentialmanager.component.pkg"
- task: Bash@3
displayName: 'Build installer package'
inputs:
targetType: filePath
filePath: './src/osx/Installer.Mac/dist.sh'
arguments: |
--version="$(version)" \
--runtime="${{ dim.runtime }}" \
--package-path="$(Build.ArtifactStagingDirectory)/pkg" \
--output="$(Build.ArtifactStagingDirectory)/installers/gcm-${{ dim.runtime }}-$(version).pkg"
- ${{ if eq(parameters.esrp, true) }}:
# ESRP code signing for macOS requires the files be packaged in a zip file first
- task: Bash@3
displayName: 'Prepare installer package for signing'
inputs:
targetType: inline
script: |
mkdir -p $(Build.ArtifactStagingDirectory)/tosign
cd $(Build.ArtifactStagingDirectory)/installers
zip -rX $(Build.ArtifactStagingDirectory)/tosign/installers.zip *.pkg
- task: EsrpCodeSigning@5
displayName: 'Sign installer package'
inputs:
connectedServiceName: '$(esrpAppConnectionName)'
useMSIAuthentication: true
appRegistrationClientId: '$(esrpClientId)'
appRegistrationTenantId: '$(esrpTenantId)'
authAkvName: '$(esrpKeyVaultName)'
authSignCertName: '$(esrpSignReqCertName)'
serviceEndpointUrl: '$(esrpEndpointUrl)'
folderPath: '$(Build.ArtifactStagingDirectory)/tosign'
pattern: 'installers.zip'
useMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-401337-Apple",
"OperationCode": "MacAppDeveloperSign",
"ToolName": "sign",
"ToolVersion": "1.0",
"Parameters": {
"Hardening": "Enable"
}
}
]
# Extract signed installer, overwriting the unsigned installer
- task: Bash@3
displayName: 'Extract signed installer package'
inputs:
targetType: inline
script: |
unzip -uo $(Build.ArtifactStagingDirectory)/tosign/installers.zip -d $(Build.ArtifactStagingDirectory)/installers
- task: Bash@3
displayName: 'Prepare installer package for notarization'
inputs:
targetType: inline
script: |
mkdir -p $(Build.ArtifactStagingDirectory)/tosign
cd $(Build.ArtifactStagingDirectory)/installers
# Remove previous installers.zip to avoid any confusion
rm -f $(Build.ArtifactStagingDirectory)/tosign/installers.zip
zip -rX $(Build.ArtifactStagingDirectory)/tosign/installers.zip *.pkg
- task: EsrpCodeSigning@5
displayName: 'Notarize installer package'
inputs:
connectedServiceName: '$(esrpAppConnectionName)'
useMSIAuthentication: true
appRegistrationClientId: '$(esrpClientId)'
appRegistrationTenantId: '$(esrpTenantId)'
authAkvName: '$(esrpKeyVaultName)'
authSignCertName: '$(esrpSignReqCertName)'
serviceEndpointUrl: '$(esrpEndpointUrl)'
folderPath: '$(Build.ArtifactStagingDirectory)/tosign'
pattern: 'installers.zip'
useMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-401337-Apple",
"OperationCode": "MacAppNotarize",
"ToolName": "sign",
"ToolVersion": "1.0",
"Parameters": {
"BundleId": "com.microsoft.gitcredentialmanager"
}
}
]
# Extract signed and notarized installer pkg files, overwriting the unsigned files, ready for upload
- task: Bash@3
displayName: 'Extract signed and notarized installer package'
inputs:
targetType: inline
script: |
unzip -uo $(Build.ArtifactStagingDirectory)/tosign/installers.zip -d $(Build.ArtifactStagingDirectory)/installers
- task: ArchiveFiles@2
displayName: 'Archive payload'
inputs:
rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/payload'
includeRootFolder: false
archiveType: tar
tarCompression: gz
archiveFile: '$(Build.ArtifactStagingDirectory)/installers/gcm-${{ dim.runtime }}-$(version).tar.gz'
- task: Bash@3
displayName: 'Collect artifacts for publishing'
inputs:
targetType: inline
script: |
mkdir -p $(Build.ArtifactStagingDirectory)/_final
cp $(Build.ArtifactStagingDirectory)/installers/*.pkg $(Build.ArtifactStagingDirectory)/_final
cp $(Build.ArtifactStagingDirectory)/installers/*.tar.gz $(Build.ArtifactStagingDirectory)/_final
cp $(Build.ArtifactStagingDirectory)/symbols/*.tar.gz $(Build.ArtifactStagingDirectory)/_final
cp -r $(Build.ArtifactStagingDirectory)/payload $(Build.ArtifactStagingDirectory)/_final
#
# Linux build jobs
#
- ${{ each dim in parameters.linux_matrix }}:
- job: ${{ dim.id }}
displayName: ${{ dim.jobName }}
pool:
name: ${{ dim.pool }}
image: ${{ dim.image }}
os: ${{ dim.os }}
templateContext:
outputs:
- output: pipelineArtifact
targetPath: '$(Build.ArtifactStagingDirectory)/_final'
artifactName: '${{ dim.runtime }}'
steps:
- checkout: self
- task: Bash@3
displayName: 'Read version file'
inputs:
targetType: inline
script: |
echo "##vso[task.setvariable variable=version;isReadOnly=true]$(cat ./VERSION | sed -E 's/.[0-9]+$//')"
- task: UseDotNet@2
displayName: 'Use .NET 8 SDK'
inputs:
packageType: sdk
version: '8.x'
- task: Bash@3
displayName: 'Build payload'
inputs:
targetType: filePath
filePath: './src/linux/Packaging.Linux/layout.sh'
arguments: |
--runtime="${{ dim.runtime }}" \
--configuration="Release" \
--output="$(Build.ArtifactStagingDirectory)/payload" \
--symbol-output="$(Build.ArtifactStagingDirectory)/symbols_raw"
- task: Bash@3
displayName: 'Build packages'
inputs:
targetType: filePath
filePath: './src/linux/Packaging.Linux/pack.sh'
arguments: |
--version="$(version)" \
--runtime="${{ dim.runtime }}" \
--payload="$(Build.ArtifactStagingDirectory)/payload" \
--symbols="$(Build.ArtifactStagingDirectory)/symbols_raw" \
--output="$(Build.ArtifactStagingDirectory)/pkg"
- task: Bash@3
displayName: 'Move packages'
inputs:
targetType: inline
script: |
# Move symbols
mkdir -p $(Build.ArtifactStagingDirectory)/symbols
mv $(Build.ArtifactStagingDirectory)/pkg/tar/gcm-*-symbols.tar.gz $(Build.ArtifactStagingDirectory)/symbols
# Move binary packages
mkdir -p $(Build.ArtifactStagingDirectory)/installers
mv $(Build.ArtifactStagingDirectory)/pkg/tar/*.tar.gz $(Build.ArtifactStagingDirectory)/installers
mv $(Build.ArtifactStagingDirectory)/pkg/deb/*.deb $(Build.ArtifactStagingDirectory)/installers
- ${{ if eq(parameters.esrp, true) }}:
- task: EsrpCodeSigning@5
displayName: 'Sign Debian package'
inputs:
connectedServiceName: '$(esrpAppConnectionName)'
useMSIAuthentication: true
appRegistrationClientId: '$(esrpClientId)'
appRegistrationTenantId: '$(esrpTenantId)'
authAkvName: '$(esrpKeyVaultName)'
authSignCertName: '$(esrpSignReqCertName)'
serviceEndpointUrl: '$(esrpEndpointUrl)'
folderPath: '$(Build.ArtifactStagingDirectory)/installers'
pattern: |
**/*.deb
useMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-453387-Pgp",
"OperationCode": "LinuxSign",
"ToolName": "sign",
"ToolVersion": "1.0",
"Parameters": {}
}
]
- task: Bash@3
displayName: 'Collect artifacts for publishing'
inputs:
targetType: inline
script: |
mkdir -p $(Build.ArtifactStagingDirectory)/_final
cp $(Build.ArtifactStagingDirectory)/installers/*.deb $(Build.ArtifactStagingDirectory)/_final
cp $(Build.ArtifactStagingDirectory)/installers/*.tar.gz $(Build.ArtifactStagingDirectory)/_final
cp $(Build.ArtifactStagingDirectory)/symbols/*.tar.gz $(Build.ArtifactStagingDirectory)/_final
cp -r $(Build.ArtifactStagingDirectory)/payload $(Build.ArtifactStagingDirectory)/_final
#
# .NET Tool build job
#
- job: dotnet_tool
displayName: '.NET Tool NuGet Package'
pool:
name: GitClientPME-1ESHostedPool-intel-pc
image: win-x86_64-ado1es
os: windows
templateContext:
outputs:
- output: pipelineArtifact
targetPath: '$(Build.ArtifactStagingDirectory)/packages'
artifactName: 'dotnet-tool'
steps:
- checkout: self
- task: PowerShell@2
displayName: 'Read version file'
inputs:
targetType: inline
script: |
$version = (Get-Content .\VERSION) -replace '\.\d+$', ''
Write-Host "##vso[task.setvariable variable=version;isReadOnly=true]$version"
- task: UseDotNet@2
displayName: 'Use .NET 8 SDK'
inputs:
packageType: sdk
version: '8.x'
- task: NuGetToolInstaller@1
displayName: 'Install NuGet CLI'
inputs:
versionSpec: '>= 6.0'
- task: PowerShell@2
displayName: 'Build payload'
inputs:
targetType: filePath
filePath: './src/shared/DotnetTool/layout.ps1'
arguments: |
-Configuration Release `
-Output "$(Build.ArtifactStagingDirectory)/nupkg"
- ${{ if eq(parameters.esrp, true) }}:
- task: EsrpCodeSigning@5
condition: and(succeeded(), eq('${{ parameters.esrp }}', true))
displayName: 'Sign payload'
inputs:
connectedServiceName: '$(esrpAppConnectionName)'
useMSIAuthentication: true
appRegistrationClientId: '$(esrpClientId)'
appRegistrationTenantId: '$(esrpTenantId)'
authAkvName: '$(esrpKeyVaultName)'
authSignCertName: '$(esrpSignReqCertName)'
serviceEndpointUrl: '$(esrpEndpointUrl)'
folderPath: '$(Build.ArtifactStagingDirectory)/nupkg'
pattern: |
**/*.exe
**/*.dll
useMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolSign",
"ToolName": "sign",
"ToolVersion": "1.0",
"Parameters": {
"OpusName": "Microsoft",
"OpusInfo": "https://www.microsoft.com",
"FileDigest": "/fd SHA256",
"PageHash": "/NPH",
"TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
}
},
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolVerify",
"ToolName": "sign",
"ToolVersion": "1.0",
"Parameters": {}
}
]
- task: PowerShell@2
displayName: 'Create NuGet packages'
inputs:
targetType: filePath
filePath: './src/shared/DotnetTool/pack.ps1'
arguments: |
-Configuration Release `
-Version "$(version)" `
-PackageRoot "$(Build.ArtifactStagingDirectory)/nupkg" `
-Output "$(Build.ArtifactStagingDirectory)/packages"
- ${{ if eq(parameters.esrp, true) }}:
- task: EsrpCodeSigning@5
condition: and(succeeded(), eq('${{ parameters.esrp }}', true))
displayName: 'Sign NuGet packages'
inputs:
connectedServiceName: '$(esrpAppConnectionName)'
useMSIAuthentication: true
appRegistrationClientId: '$(esrpClientId)'
appRegistrationTenantId: '$(esrpTenantId)'
authAkvName: '$(esrpKeyVaultName)'
authSignCertName: '$(esrpSignReqCertName)'
serviceEndpointUrl: '$(esrpEndpointUrl)'
folderPath: '$(Build.ArtifactStagingDirectory)/packages'
pattern: |
**/*.nupkg
**/*.snupkg
useMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-401405",
"OperationCode": "NuGetSign",
"ToolName": "sign",
"ToolVersion": "1.0",
"Parameters": {}
}
]
- stage: release
displayName: 'Release'
dependsOn: [build]
condition: and(succeeded(), or(eq('${{ parameters.github }}', true), eq('${{ parameters.nuget }}', true)))
jobs:
- job: release_validation
displayName: 'Release validation'
pool:
name: GitClientPME-1ESHostedPool-intel-pc
image: ubuntu-x86_64-ado1es
os: linux
steps:
- task: Bash@3
displayName: 'Read version file'
name: version
inputs:
targetType: inline
script: |
echo "##vso[task.setvariable variable=value;isOutput=true;isReadOnly=true]$(cat ./VERSION | sed -E 's/.[0-9]+$//')"
- job: github
displayName: 'Publish GitHub release'
dependsOn: release_validation
condition: and(succeeded(), eq('${{ parameters.github }}', true))
pool:
name: GitClientPME-1ESHostedPool-intel-pc
image: ubuntu-x86_64-ado1es
os: linux
variables:
version: $[dependencies.release_validation.outputs['version.value']]
templateContext:
type: releaseJob
isProduction: true
inputs:
# Installers and packages
- input: pipelineArtifact
artifactName: 'win-x86'
targetPath: $(Pipeline.Workspace)/assets/win-x86
- input: pipelineArtifact
artifactName: 'win-x64'
targetPath: $(Pipeline.Workspace)/assets/win-x64
- input: pipelineArtifact
artifactName: 'win-arm64'
targetPath: $(Pipeline.Workspace)/assets/win-arm64
- input: pipelineArtifact
artifactName: 'osx-x64'
targetPath: $(Pipeline.Workspace)/assets/osx-x64
- input: pipelineArtifact
artifactName: 'osx-arm64'
targetPath: $(Pipeline.Workspace)/assets/osx-arm64
- input: pipelineArtifact
artifactName: 'linux-x64'
targetPath: $(Pipeline.Workspace)/assets/linux-x64
- input: pipelineArtifact
artifactName: 'linux-arm64'
targetPath: $(Pipeline.Workspace)/assets/linux-arm64
- input: pipelineArtifact
artifactName: 'dotnet-tool'
targetPath: $(Pipeline.Workspace)/assets/dotnet-tool
steps:
- task: GitHubRelease@1
displayName: 'Create Draft GitHub Release'
condition: and(succeeded(), eq('${{ parameters.github }}', true))
inputs:
gitHubConnection: $(githubConnectionName)
repositoryName: git-ecosystem/git-credential-manager
tag: 'v$(version)'
tagSource: userSpecifiedTag
target: release
title: 'GCM $(version)'
isDraft: true
addChangeLog: false
assets: |
$(Pipeline.Workspace)/assets/win-x86/*.exe
$(Pipeline.Workspace)/assets/win-x86/*.zip
$(Pipeline.Workspace)/assets/win-x64/*.exe
$(Pipeline.Workspace)/assets/win-x64/*.zip
$(Pipeline.Workspace)/assets/win-arm64/*.exe
$(Pipeline.Workspace)/assets/win-arm64/*.zip
$(Pipeline.Workspace)/assets/osx-x64/*.pkg
$(Pipeline.Workspace)/assets/osx-x64/*.tar.gz
$(Pipeline.Workspace)/assets/osx-arm64/*.pkg
$(Pipeline.Workspace)/assets/osx-arm64/*.tar.gz
$(Pipeline.Workspace)/assets/linux-x64/*.deb
$(Pipeline.Workspace)/assets/linux-x64/*.tar.gz
$(Pipeline.Workspace)/assets/linux-arm64/*.deb
$(Pipeline.Workspace)/assets/linux-arm64/*.tar.gz
$(Pipeline.Workspace)/assets/dotnet-tool/*.nupkg
$(Pipeline.Workspace)/assets/dotnet-tool/*.snupkg
- job: nuget
displayName: 'Publish NuGet package'
dependsOn: release_validation
condition: and(succeeded(), eq('${{ parameters.nuget }}', true))
pool:
name: GitClientPME-1ESHostedPool-intel-pc
image: ubuntu-x86_64-ado1es
os: linux
variables:
version: $[dependencies.release_validation.outputs['version.value']]
templateContext:
inputs:
- input: pipelineArtifact
artifactName: 'dotnet-tool'
targetPath: $(Pipeline.Workspace)/assets/dotnet-tool
outputs:
- output: nuget
condition: and(succeeded(), eq('${{ parameters.nuget }}', true))
displayName: 'Publish .NET Tool NuGet package'
packagesToPush: '$(Pipeline.Workspace)/assets/dotnet-tool/*.nupkg;$(Pipeline.Workspace)/assets/dotnet-tool/*.snupkg'
packageParentPath: $(Pipeline.Workspace)/assets/dotnet-tool
nuGetFeedType: external
publishPackageMetadata: true
publishFeedCredentials: $(nugetConnectionName)
================================================
FILE: .code-coverage/coverlet.settings.xml
================================================
<?xml version="1.0" encoding="utf-8" ?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="XPlat code coverage">
<Configuration>
<Format>cobertura,lcov</Format>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
================================================
FILE: .github/ISSUE_TEMPLATE/auth-issue.yml
================================================
name: Authentication issue
description: An authentication problem occurred when running a Git command.
labels: ["auth-issue"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this issue!
Please answer as many of the below questions as you can - this helps us better understand what the problem is, and consequently how to resolve your problem.
- type: input
id: version
attributes:
label: Version
description: |
What version of Git Credential Manager are you using?
Run `git credential-manager --version` from a terminal to see the current version.
If you are on an older version of GCM please try updating before creating an issue as the problem you are experiencing may have already been fixed.
placeholder: |
ex: 2.0.8-beta+e1f8492d04
validations:
required: true
- type: dropdown
id: os
attributes:
label: Operating system
description: What operating system are you using?
options:
- Windows
- macOS
- Linux
- Other - please describe below
validations:
required: true
- type: input
id: os-version
attributes:
label: OS version or distribution
description: Please describe the version, CPU architecture (x64, ARM, etc), or Linux distribution you are using.
placeholder: |
ex: Windows 11 Pro, Monterey 12.5, Ubuntu 22.04
validations:
required: true
- type: dropdown
id: provider
attributes:
label: Git hosting provider(s)
description: What Git host provider are you trying to connect to?
multiple: true
options:
- Azure DevOps
- Azure DevOps Server (TFS/on-prem)
- Bitbucket Cloud
- Bitbucket Server/DC
- GitHub
- GitHub Enterprise Server
- GitLab
- Other - please describe below
validations:
required: true
- type: input
id: provider-other
attributes:
label: Other hosting provider
description: If you selected "Other" above, please describe the Git host you are using.
- type: dropdown
id: azdo-urlformat
attributes:
label: |
(Azure DevOps only) What format is your remote URL?
description: |
Tip: to see your remote URL run `git remote -v` from a terminal.
options:
- https://dev.azure.com/{org}
- https://{org}@dev.azure.com/{org}
- https://{org}.visualstudio.com
- type: dropdown
id: web-access
attributes:
label: Can you access the remote repository directly in the browser?
description: |
If you are unable to access the repository via a web browser then it is likely GCM will also be unable to access the repository with your user account.
options:
- Yes, I can access the repository
- No, I get a permission error
- No, for a different reason - please describe behavior below
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
description: A clear and concise description of what your expectation are.
placeholder: |
ex: I am authenticated and my Git operation completes successfully.
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual behavior
description: |
A clear and concise description of what actually happens.
Feel free to include screenshots of dialogs or errors here, but remember to **redact any sensitive information**!
placeholder: |
ex: An exception "FooException" is thrown, UI freezes, etc.
validations:
required: true
- type: textarea
id: logs
attributes:
label: Logs
description: |
To capture trace logs, set the environment variables `GCM_TRACE=1` and `GIT_TRACE=1` and re-run your Git command.
If you are running inside of Windows Subsystem for Linux (WSL), you must also set an additional environment variable to enable tracing: `WSLENV=$WSLENV:GCM_TRACE`. For example:
```shell
WSLENV=$WSLENV:GCM_TRACE:GIT_TRACE GCM_TRACE=1 GIT_TRACE=1 git fetch
```
If you are using GCM version 2.0.567 onwards you can also run `git credential-manager diagnose` to collect useful diagnostic information that can be attached here.
:warning: **Please review and redact any private information before attaching logs and files!**
================================================
FILE: .github/ISSUE_TEMPLATE/feature-req.yml
================================================
name: Feature request
description: A suggestion for a new feature in Git Credential Manager.
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this feature request!
Please be as detailed as possible describing your idea; how it fixes a problem or makes something easier.
Although we cannot guarentee we will accept all requests, we will still take time to consider your ideas. Whilst we may be supportive of an idea in principal, as maintainers we may not always be able to dedicate time to implementing them. We always welcome community support and contributions however! :heart:
- type: textarea
id: description
attributes:
label: Feature description
description: |
A clear and concise description of the new feature.
placeholder: |
ex: Add spline reticulation option to widget authentication mechanism.
validations:
required: true
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
# Enable version updates for GitHub ecosystem
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
================================================
FILE: .github/workflows/codeql-analysis.yml
================================================
name: "CodeQL"
on:
push:
branches: [ main, release ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'csharp' ]
steps:
- uses: actions/checkout@v6
- name: Setup .NET
uses: actions/setup-dotnet@v5.1.0
with:
dotnet-version: 8.0.x
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
- run: |
dotnet build
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
================================================
FILE: .github/workflows/continuous-integration.yml
================================================
name: ci
on:
workflow_dispatch:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
# ================================
# Windows
# ================================
windows:
name: Windows
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- runtime: win-x86
os: windows-latest
- runtime: win-x64
os: windows-latest
- runtime: win-arm64
os: windows-11-arm
steps:
- uses: actions/checkout@v6
- name: Setup .NET
uses: actions/setup-dotnet@v5.1.0
with:
dotnet-version: 8.0.x
- name: Install dependencies
run: dotnet restore
- name: Build
run: |
dotnet build src/windows/Installer.Windows/Installer.Windows.csproj `
--configuration=Release `
--runtime=${{ matrix.runtime }}
- name: Test
run: |
dotnet test --verbosity normal `
--configuration=WindowsRelease `
--runtime=${{ matrix.runtime }}
- name: Prepare artifacts
shell: bash
run: |
mkdir -p artifacts/bin
mv out/windows/Installer.Windows/bin/Release/net472/gcm*.exe artifacts/
mv out/windows/Installer.Windows/bin/Release/net472/${{ matrix.runtime }} artifacts/bin/
cp out/windows/Installer.Windows/bin/Release/net472/${{ matrix.runtime }}.sym/* artifacts/bin/${{ matrix.runtime }}/
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
name: ${{ matrix.runtime }}
path: |
artifacts
# ================================
# Linux
# ================================
linux:
name: Linux
runs-on: ubuntu-latest
strategy:
matrix:
runtime: [ linux-x64, linux-arm64, linux-arm ]
steps:
- uses: actions/checkout@v6
- name: Setup .NET
uses: actions/setup-dotnet@v5.1.0
with:
dotnet-version: 8.0.x
- name: Install dependencies
run: dotnet restore
- name: Build
run: |
dotnet build src/linux/Packaging.Linux/*.csproj \
--configuration=Release --no-self-contained \
--runtime=${{ matrix.runtime }}
- name: Test
run: |
dotnet test --verbosity normal --configuration=LinuxRelease
- name: Prepare artifacts
run: |
mkdir -p artifacts
mv out/linux/Packaging.Linux/Release/deb/*.deb artifacts/
mv out/linux/Packaging.Linux/Release/tar/*.tar.gz artifacts/
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
name: ${{ matrix.runtime }}
path: |
artifacts
# ================================
# macOS
# ================================
osx:
name: macOS
runs-on: macos-latest
strategy:
matrix:
runtime: [ osx-x64, osx-arm64 ]
steps:
- uses: actions/checkout@v6
- name: Setup .NET
uses: actions/setup-dotnet@v5.1.0
with:
dotnet-version: 8.0.x
- name: Install dependencies
run: dotnet restore
- name: Build
run: |
dotnet build src/osx/Installer.Mac/*.csproj \
--configuration=Release --no-self-contained \
--runtime=${{ matrix.runtime }}
- name: Test
run: |
dotnet test --verbosity normal --configuration=MacRelease
- name: Prepare artifacts
run: |
mkdir -p artifacts/bin
mv out/osx/Installer.Mac/pkg/Release/payload "artifacts/bin/${{ matrix.runtime }}"
cp out/osx/Installer.Mac/pkg/Release/payload.sym/* "artifacts/bin/${{ matrix.runtime }}/"
mv out/osx/Installer.Mac/pkg/Release/gcm*.pkg artifacts/
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
name: ${{ matrix.runtime }}
path: |
artifacts
================================================
FILE: .github/workflows/lint-docs.yml
================================================
name: "Lint documentation"
on:
workflow_dispatch:
push:
branches: [ main, linux ]
paths:
- '**.md'
- '.github/workflows/lint-docs.yml'
pull_request:
branches: [ main, linux ]
paths:
- '**.md'
- '.github/workflows/lint-docs.yml'
jobs:
lint-markdown:
name: Lint markdown files
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: DavidAnson/markdownlint-cli2-action@07035fd053f7be764496c0f8d8f9f41f98305101
with:
globs: |
"**/*.md"
"!.github/ISSUE_TEMPLATE"
check-links:
name: Check for broken links
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Run link checker
# For any troubleshooting, see:
# https://github.com/lycheeverse/lychee/blob/master/docs/TROUBLESHOOTING.md
uses: lycheeverse/lychee-action@8646ba30535128ac92d33dfc9133794bfdd9b411
with:
# user-agent: if a user agent is not specified, some websites (e.g.
# GitHub Docs) return HTTP errors which Lychee will interpret as
# a broken link.
# no-progress: do not show progress bar. Recommended for
# non-interactive shells (e.g. for CI)
# inputs: by default (.), this action checks files matching the
# patterns: './**/*.md' './**/*.html'
args: >-
--user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36"
--no-progress .
fail: true
env:
# A token is used to avoid GitHub rate limiting. A personal token with
# no extra permissions is enough to be able to check public repos
# See: https://github.com/lycheeverse/lychee#github-token
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
================================================
FILE: .github/workflows/maintainer-absence.yml
================================================
name: maintainer-absence
on:
workflow_dispatch:
inputs:
startDate:
description: 'First day of maintainer absence [mm-dd-yyyy]'
required: true
endDate:
description: 'Last day of maintainer absence [mm-dd-yyyy]'
required: true
permissions:
issues: write
jobs:
create-issue:
name: create-issue
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v8
with:
script: |
const startDate = new Date('${{ github.event.inputs.startDate }}');
const endDate = new Date('${{ github.event.inputs.endDate }}');
if (startDate > endDate) {
throw 'Start date cannot be later than end date.';
}
// Calculate total days of absence
const differenceInDays = endDate.getTime() - startDate.getTime();
const lengthOfAbsence = differenceInDays/(1000 * 3600 * 24);
// Create issue
issue = await github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
// Use the briefer input date format in title (instead of JavaScript's full date string)
title: `Maintainer(s) will be away from ${{ github.event.inputs.startDate }} until ${{ github.event.inputs.endDate }}`,
body: `The ${context.repo.repo} maintainer(s) will be away for ${lengthOfAbsence} day${lengthOfAbsence > 1 ? 's' : ''} beginning on
${startDate.toDateString()} and ending on ${endDate.toDateString()}. During this time, the maintainer(s)
will not be actively monitoring PRs, discussions, etc. Please report any issues
requiring immediate attention to [@GitCredManager](https://twitter.com/GitCredManager) on Twitter.`
});
// Pin issue - we use GraphQL since there is no GitHub API available for this
const mutation = `mutation($issueId: ID!) {
pinIssue(input: { issueId: $issueId }) {
issue {
repository {
id
}
}
}
}`;
const variables = {
issueId: issue.data.node_id
}
const result = await github.graphql(mutation, variables)
================================================
FILE: .github/workflows/validate-install-from-source.yml
================================================
name: validate-install-from-source
on:
workflow_dispatch:
push:
branches:
- main
jobs:
docker:
name: ${{matrix.vector.image}}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
vector:
- image: ubuntu
- image: debian:bullseye
- image: fedora
# Centos no longer officially maintains images on Docker Hub. However,
# tgagor is a contributor who pushes updated images weekly, which should
# be sufficient for our validation needs.
- image: tgagor/centos
- image: redhat/ubi8
- image: alpine
- image: alpine:3.19.8
- image: opensuse/leap
- image: opensuse/tumbleweed
- image: registry.suse.com/suse/sle15:15.4.27.11.31
- image: archlinux
- image: mcr.microsoft.com/cbl-mariner/base/core:2.0
- image: mcr.microsoft.com/azurelinux/base/core:3.0
container: ${{matrix.vector.image}}
steps:
- run: |
if [[ ${{matrix.vector.image}} == *"suse"* ]]; then
zypper -n install tar gzip
elif [[ ${{matrix.vector.image}} == *"centos"* ]]; then
dnf install which -y
elif [[ ${{matrix.vector.image}} == *"mariner"* || ${{matrix.vector.image}} == *"azurelinux"* ]]; then
GNUPGHOME=/root/.gnupg tdnf update -y &&
GNUPGHOME=/root/.gnupg tdnf install tar -y # needed for `actions/checkout`
fi
- uses: actions/checkout@v6
- run: |
sh "${GITHUB_WORKSPACE}/src/linux/Packaging.Linux/install-from-source.sh" -y
git-credential-manager --help || exit 1
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# macOS Finder files
.DS_Store
# GCM build output
out/
# Temporary build directory
.tmp/
# dotnet local tools
.tools/
# Signing generated Files
auth.json
input.json
================================================
FILE: .lycheeignore
================================================
godaddy\.com[\\/]?$
gitlab\.com/-/profile/applications
file:[\\/][\\/][\\/].*
================================================
FILE: .markdownlint.jsonc
================================================
// For information on writing markdownlint configuration see:
// https://github.com/DavidAnson/markdownlint/blob/main/README.md#optionsconfig
{
"MD013": {
"line_length": 80,
"code_blocks": false,
"headings": false,
"tables": false
},
"MD024": false // The format for some files require repeated headings, e.g. "Example"
}
================================================
FILE: .vscode/launch.json
================================================
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
"version": "0.2.0",
"configurations": [
{
"name": "Git Credential Manager (get)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/out/shared/Git-Credential-Manager/bin/Debug/net8.0/git-credential-manager.dll",
"args": ["get"],
"cwd": "${workspaceFolder}/out/shared/Git-Credential-Manager",
"console": "integratedTerminal",
"stopAtEntry": false,
},
{
"name": "Git Credential Manager (store)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/out/shared/Git-Credential-Manager/bin/Debug/net8.0/git-credential-manager.dll",
"args": ["store"],
"cwd": "${workspaceFolder}/out/shared/Git-Credential-Manager",
"console": "integratedTerminal",
"stopAtEntry": false,
},
{
"name": ".NET Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickProcess}"
}
]
}
================================================
FILE: .vscode/tasks.json
================================================
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"group":{
"kind": "build",
"isDefault": true
},
"args": [
"build",
"${workspaceFolder}/Git-Credential-Manager.sln",
],
"problemMatcher": "$msCompile"
},
{
"label": "test",
"command": "dotnet",
"type": "shell",
"group":{
"kind": "test",
"isDefault": true
},
"args": [
"test",
"${workspaceFolder}/Git-Credential-Manager.sln"
],
"presentation": {
"reveal": "always",
"panel": "dedicated"
}
},
{
"label": "test with coverage",
"command": "dotnet",
"type": "shell",
"group": "test",
"args": [
"test",
"${workspaceFolder}/Git-Credential-Manager.sln",
"--collect",
"'XPlat Code Coverage'",
"--settings",
"${workspaceFolder}/.code-coverage/coverlet.settings.xml"
],
"presentation": {
"reveal": "always",
"panel": "dedicated"
}
},
{
"label": "report coverage - nix",
"command": "dotnet",
"type": "shell",
"group": "test",
"args": [
"~/.nuget/packages/reportgenerator/*/*/net8.0/ReportGenerator.dll",
"-reports:${workspaceFolder}/**/TestResults/**/coverage.cobertura.xml",
"-targetdir:${workspaceFolder}/out/code-coverage"
],
"presentation": {
"reveal": "always",
"panel": "dedicated"
}
},
{
"label": "report coverage - win",
"command": "dotnet",
"type": "shell",
"group": "test",
"args": [
"${env:USERROFILE}/.nuget/packages/reportgenerator/*/*/net8.0/ReportGenerator.dll",
"-reports:${workspaceFolder}/**/TestResults/**/coverage.cobertura.xml",
"-targetdir:${workspaceFolder}/out/code-coverage"
],
"presentation": {
"reveal": "always",
"panel": "dedicated"
}
}
]
}
================================================
FILE: CODEOWNERS
================================================
* @git-ecosystem/git-client
/src/shared/Microsoft.AzureRepos/ @git-ecosystem/git-client @git-ecosystem/gcm-azure-maintainers
/src/shared/Microsoft.AzureRepos.Tests/ @git-ecosystem/git-client @git-ecosystem/gcm-azure-maintainers
/src/shared/GitHub/ @git-ecosystem/git-client @git-ecosystem/hubbers
/src/shared/GitHub.Tests/ @git-ecosystem/git-client @git-ecosystem/hubbers
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to make participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies within all project spaces, and it also applies when
an individual is representing the project or its community in public spaces.
Examples of representing a project or community include using an official
project e-mail address, posting via an official social media account, or acting
as an appointed representative at an online or offline event. Representation of
a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at opensource@github.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][cc-homepage],
version 1.4, 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-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
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
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][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.
## Start with an issue
1. Open an [issue][issue] to discuss the change you want to see.
This helps us coordinate and reduce duplication.
1. Once we've had some discussion, you're ready to code!
## Submitting a pull request
1. [Fork][fork] and clone the repository
1. Configure and install the dependencies: `dotnet restore`
1. Make sure the tests pass on your machine: `dotnet test`
1. Create a new branch: `git switch -c my-branch-name`
1. Make your change, add tests, and make sure the tests still pass
1. 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`
1. Organize your changes into one or more [logical, descriptive commits][commits].
1. Push to your fork and [submit a pull request][pr]
1. Pat your self on the back and wait for your pull request to be reviewed and
merged.
Here are a few things you can do that will increase the likelihood of your pull
request being accepted:
- Match existing code style.
- Write tests.
- Keep your change as focused as possible. If there are multiple changes you
would like to make that are not dependent upon each other, consider
submitting them as separate pull requests.
## Resources
- [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/git-ecosystem/git-credential-manager/fork
[github-help]: https://help.github.com
[how-to-contribute]: https://opensource.guide/how-to-contribute/
[issue]: https://github.com/git-ecosystem/git-credential-manager/issues/new/choose
[license]: LICENSE
[pr]: https://github.com/git-ecosystem/git-credential-manager/compare
[prs]: https://help.github.com/articles/about-pull-requests/
================================================
FILE: Directory.Build.props
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- This is the root Directory.Build.props file -->
<PropertyGroup>
<!--
Set helpful property for detecting the current OS platform.
We can't use the built-in $(OS) because it returns 'Unix' on macOS when run under Mono.
-->
<OSPlatform Condition="$([MSBuild]::IsOsPlatform('windows'))">windows</OSPlatform>
<OSPlatform Condition="$([MSBuild]::IsOsPlatform('osx'))">osx</OSPlatform>
<OSPlatform Condition="$([MSBuild]::IsOsPlatform('linux'))">linux</OSPlatform>
<IsUnixLike>true</IsUnixLike>
<IsUnixLike Condition="'$(OSPlatform)'=='windows'">false</IsUnixLike>
<!-- Define the root of the repository as a property - it's very useful! -->
<RepoPath>$(MSBuildThisFileDirectory)</RepoPath>
<RepoSrcPath>$(RepoPath)src\</RepoSrcPath>
<RepoOutPath>$(RepoPath)out\</RepoOutPath>
<RepoAssetsPath>$(RepoPath)assets\</RepoAssetsPath>
<!-- Identify projects that output an executable binary (not libraries) -->
<_IsExeProject Condition="'$(OutputType)' == 'Exe' OR '$(OutputType)' == 'WinExe'">true</_IsExeProject>
<!-- Automatically generate a Windows app manifest on Windows for exe projects -->
<GenerateWindowsAppManifest Condition="'$(GenerateWindowsAppManifest)' == '' AND '$(OSPlatform)' == 'windows' AND '$(_IsExeProject)' == 'true'">true</GenerateWindowsAppManifest>
</PropertyGroup>
<ItemGroup Condition = "'$(TargetFramework)' == 'net472'">
<PackageReference Include="System.Text.Json">
<Version>8.0.5</Version>
</PackageReference>
</ItemGroup>
</Project>
================================================
FILE: Directory.Build.targets
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- This is the root Directory.Build.targets file -->
<!-- Load custom build tasks -->
<Import Project="$(RepoPath)build\GCM.tasks" />
<!-- Use version specified in VERSION file -->
<Target Name="GetVersion" BeforeTargets="BeforeBuild;GenerateWindowsAppManifest">
<GetVersion VersionFile="$(RepoPath)VERSION">
<Output TaskParameter="Version" PropertyName="Version" />
<Output TaskParameter="AssemblyVersion" PropertyName="AssemblyVersion" />
<Output TaskParameter="FileVersion" PropertyName="FileVersion" />
</GetVersion>
</Target>
<!-- Windows application manifest generation -->
<PropertyGroup Condition="'$(GenerateWindowsAppManifest)' != 'false'">
<ApplicationManifest>$(IntermediateOutputPath)app.manifest</ApplicationManifest>
</PropertyGroup>
<!-- Generate the manifest file before we set the win32 manifest properties -->
<Target Name="GenerateWindowsAppManifest"
AfterTargets="GetVersion"
BeforeTargets="SetWin32ManifestProperties"
Condition="'$(GenerateWindowsAppManifest)' != 'false'"
Inputs="$(FileVersion);$(AssemblyName)"
Outputs="$(IntermediateOutputPath)app.manifest">
<GenerateWindowsAppManifest Version="$(FileVersion)"
ApplicationName="$(AssemblyName)"
OutputFile="$(IntermediateOutputPath)app.manifest"/>
<ItemGroup>
<FileWrites Include="$(IntermediateOutputPath)app.manifest" />
</ItemGroup>
</Target>
</Project>
================================================
FILE: Git-Credential-Manager.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29927.169
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{A7FC1234-95E3-4496-B5F7-4306F41E6A0E}"
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}") = "Core", "src\shared\Core\Core.csproj", "{31BCFC70-B767-4274-873F-1A076D422FC3}"
EndProject
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
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AzureRepos.Tests", "src\shared\Microsoft.AzureRepos.Tests\Microsoft.AzureRepos.Tests.csproj", "{97DC6241-1240-4A85-8035-F8404A983A82}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "windows", "windows", "{66722747-1B61-40E4-A89B-1AC8E6D62EA9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestInfrastructure", "src\shared\TestInfrastructure\TestInfrastructure.csproj", "{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GitHub", "src\shared\GitHub\GitHub.csproj", "{3C840B06-A595-4FD9-9A76-56CD45B14780}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{D5277A0E-997E-453A-8CB9-4EFCC8B16A29}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GitHub.Tests", "src\shared\GitHub.Tests\GitHub.Tests.csproj", "{3E524EA8-D31A-4394-997C-14B522E3D6FD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "osx", "osx", "{3D279E2D-E011-45CF-8EA8-3D71D1300443}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Installer.Mac", "src\osx\Installer.Mac\Installer.Mac.csproj", "{74FA0AA4-B5C1-4F3B-B182-277FC2D50715}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Installer.Windows", "src\windows\Installer.Windows\Installer.Windows.csproj", "{85903170-9E52-4B53-A6E4-3F416F684FAE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atlassian.Bitbucket", "src\shared\Atlassian.Bitbucket\Atlassian.Bitbucket.csproj", "{B49881A6-E734-490E-8EA7-FB0D9E296CFB}"
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}") = "Packaging.Linux", "src\linux\Packaging.Linux\Packaging.Linux.csproj", "{AD2A935F-3720-4802-8119-6A9B35B254DF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "linux", "linux", "{8F9D7E67-7DD7-4E32-9134-423281AF00E9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitLab", "src\shared\GitLab\GitLab.csproj", "{570897DC-A85C-4598-B793-9A00CF710119}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitLab.Tests", "src\shared\GitLab.Tests\GitLab.Tests.csproj", "{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
MacDebug|Any CPU = MacDebug|Any CPU
MacRelease|Any CPU = MacRelease|Any CPU
Release|Any CPU = Release|Any CPU
WindowsDebug|Any CPU = WindowsDebug|Any CPU
WindowsRelease|Any CPU = WindowsRelease|Any CPU
LinuxDebug|Any CPU = LinuxDebug|Any CPU
LinuxRelease|Any CPU = LinuxRelease|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.MacDebug|Any CPU.Build.0 = Debug|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.MacRelease|Any CPU.Build.0 = Release|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.Release|Any CPU.Build.0 = Release|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.MacDebug|Any CPU.Build.0 = Debug|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.MacRelease|Any CPU.Build.0 = Release|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.Release|Any CPU.Build.0 = Release|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{31BCFC70-B767-4274-873F-1A076D422FC3}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.MacDebug|Any CPU.Build.0 = Debug|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.MacRelease|Any CPU.Build.0 = Release|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.Release|Any CPU.Build.0 = Release|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{AD41FA1E-51F5-4E4F-B7DA-32F921491313}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.MacDebug|Any CPU.Build.0 = Debug|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.MacRelease|Any CPU.Build.0 = Release|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.Release|Any CPU.Build.0 = Release|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.MacDebug|Any CPU.Build.0 = Debug|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.MacRelease|Any CPU.Build.0 = Release|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.Release|Any CPU.Build.0 = Release|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{97DC6241-1240-4A85-8035-F8404A983A82}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.MacDebug|Any CPU.Build.0 = Debug|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.MacRelease|Any CPU.Build.0 = Release|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.Release|Any CPU.Build.0 = Release|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.MacDebug|Any CPU.Build.0 = Debug|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.MacRelease|Any CPU.Build.0 = Release|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.Release|Any CPU.Build.0 = Release|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{3C840B06-A595-4FD9-9A76-56CD45B14780}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.MacDebug|Any CPU.Build.0 = Debug|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.MacRelease|Any CPU.Build.0 = Release|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.Release|Any CPU.Build.0 = Release|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{3E524EA8-D31A-4394-997C-14B522E3D6FD}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
{74FA0AA4-B5C1-4F3B-B182-277FC2D50715}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{74FA0AA4-B5C1-4F3B-B182-277FC2D50715}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{74FA0AA4-B5C1-4F3B-B182-277FC2D50715}.MacDebug|Any CPU.Build.0 = Debug|Any CPU
{74FA0AA4-B5C1-4F3B-B182-277FC2D50715}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{74FA0AA4-B5C1-4F3B-B182-277FC2D50715}.MacRelease|Any CPU.Build.0 = Release|Any CPU
{74FA0AA4-B5C1-4F3B-B182-277FC2D50715}.Release|Any CPU.ActiveCfg = Release|Any CPU
{74FA0AA4-B5C1-4F3B-B182-277FC2D50715}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{74FA0AA4-B5C1-4F3B-B182-277FC2D50715}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{74FA0AA4-B5C1-4F3B-B182-277FC2D50715}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{74FA0AA4-B5C1-4F3B-B182-277FC2D50715}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{85903170-9E52-4B53-A6E4-3F416F684FAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{85903170-9E52-4B53-A6E4-3F416F684FAE}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{85903170-9E52-4B53-A6E4-3F416F684FAE}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{85903170-9E52-4B53-A6E4-3F416F684FAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{85903170-9E52-4B53-A6E4-3F416F684FAE}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{85903170-9E52-4B53-A6E4-3F416F684FAE}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
{85903170-9E52-4B53-A6E4-3F416F684FAE}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{85903170-9E52-4B53-A6E4-3F416F684FAE}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
{85903170-9E52-4B53-A6E4-3F416F684FAE}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{85903170-9E52-4B53-A6E4-3F416F684FAE}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.Release|Any CPU.Build.0 = Release|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.MacDebug|Any CPU.Build.0 = Debug|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.MacRelease|Any CPU.Build.0 = Release|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{B49881A6-E734-490E-8EA7-FB0D9E296CFB}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.Release|Any CPU.Build.0 = Release|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.MacDebug|Any CPU.Build.0 = Debug|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.MacRelease|Any CPU.Build.0 = Release|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
{AD2A935F-3720-4802-8119-6A9B35B254DF}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{AD2A935F-3720-4802-8119-6A9B35B254DF}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
{AD2A935F-3720-4802-8119-6A9B35B254DF}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{AD2A935F-3720-4802-8119-6A9B35B254DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD2A935F-3720-4802-8119-6A9B35B254DF}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{AD2A935F-3720-4802-8119-6A9B35B254DF}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{AD2A935F-3720-4802-8119-6A9B35B254DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD2A935F-3720-4802-8119-6A9B35B254DF}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{AD2A935F-3720-4802-8119-6A9B35B254DF}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{AD2A935F-3720-4802-8119-6A9B35B254DF}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.Debug|Any CPU.Build.0 = Debug|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.MacDebug|Any CPU.Build.0 = Debug|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.Release|Any CPU.ActiveCfg = Release|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.Release|Any CPU.Build.0 = Release|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.MacRelease|Any CPU.Build.0 = Release|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{570897DC-A85C-4598-B793-9A00CF710119}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.MacDebug|Any CPU.ActiveCfg = Debug|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.MacDebug|Any CPU.Build.0 = Debug|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.Release|Any CPU.Build.0 = Release|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.WindowsDebug|Any CPU.ActiveCfg = Debug|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.WindowsDebug|Any CPU.Build.0 = Debug|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.LinuxDebug|Any CPU.ActiveCfg = Debug|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.LinuxDebug|Any CPU.Build.0 = Debug|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.LinuxRelease|Any CPU.ActiveCfg = Release|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.LinuxRelease|Any CPU.Build.0 = Release|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.MacRelease|Any CPU.ActiveCfg = Release|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.MacRelease|Any CPU.Build.0 = Release|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.WindowsRelease|Any CPU.ActiveCfg = Release|Any CPU
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393}.WindowsRelease|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{28F06D44-AB25-4CF5-93F9-978C23FAA9D6} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
{31BCFC70-B767-4274-873F-1A076D422FC3} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
{AD41FA1E-51F5-4E4F-B7DA-32F921491313} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
{714AF9EB-44E6-4058-BD3E-9039F29F4D7A} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
{97DC6241-1240-4A85-8035-F8404A983A82} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
{66722747-1B61-40E4-A89B-1AC8E6D62EA9} = {A7FC1234-95E3-4496-B5F7-4306F41E6A0E}
{5A7D9E8B-C1D2-4C5C-BE98-648C41D1F8BD} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
{3C840B06-A595-4FD9-9A76-56CD45B14780} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
{D5277A0E-997E-453A-8CB9-4EFCC8B16A29} = {A7FC1234-95E3-4496-B5F7-4306F41E6A0E}
{3E524EA8-D31A-4394-997C-14B522E3D6FD} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
{3D279E2D-E011-45CF-8EA8-3D71D1300443} = {A7FC1234-95E3-4496-B5F7-4306F41E6A0E}
{74FA0AA4-B5C1-4F3B-B182-277FC2D50715} = {3D279E2D-E011-45CF-8EA8-3D71D1300443}
{85903170-9E52-4B53-A6E4-3F416F684FAE} = {66722747-1B61-40E4-A89B-1AC8E6D62EA9}
{B49881A6-E734-490E-8EA7-FB0D9E296CFB} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
{025E5329-A0B1-4BA9-9203-B70B44A5F9E0} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
{8F9D7E67-7DD7-4E32-9134-423281AF00E9} = {A7FC1234-95E3-4496-B5F7-4306F41E6A0E}
{AD2A935F-3720-4802-8119-6A9B35B254DF} = {8F9D7E67-7DD7-4E32-9134-423281AF00E9}
{570897DC-A85C-4598-B793-9A00CF710119} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
{1AF9F7C5-FA2E-48F1-B216-4D5E9A27F393} = {D5277A0E-997E-453A-8CB9-4EFCC8B16A29}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0EF9FC65-E6BA-45D4-A455-262A9EA4366B}
EndGlobalSection
EndGlobal
================================================
FILE: Git-Credential-Manager.sln.DotSettings
================================================
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=OS/@EntryIndexedValue">OS</s:String>
<s:String x:Key="/Default/Environment/Hierarchy/Build/SolBuilderDuo/UseMsbuildSolutionBuilder/@EntryValue">No</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=PKCE/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Bitbucket/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
================================================
FILE: LICENSE
================================================
Git Credential Manager
Copyright © GitHub, Inc. and contributors
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE
================================================
FILE: NOTICE
================================================
NOTICES AND INFORMATION
Do Not Translate or Localize
This repository for Git Credential Manager includes material from the
projects listed below.
--------------------------------------------------------------------------------
1. GitHub/VisualStudio (https://github.com/github/VisualStudio)
Copyright (c) GitHub Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
2. dotnet/runtime (https://github.com/dotnet/runtime)
The MIT License (MIT)
Copyright (c) .NET Foundation and Contributors
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# Git Credential Manager
[![Build Status][build-status-badge]][workflow-status]
---
[Git Credential Manager][gcm] (GCM) is a secure
[Git credential helper][git-credential-helper] built on [.NET][dotnet] that runs
on Windows, macOS, and Linux. It aims to provide a consistent and secure
authentication experience, including multi-factor auth, to every major source
control hosting service and platform.
GCM supports (in alphabetical order) [Azure DevOps][azure-devops], Azure DevOps
Server (formerly Team Foundation Server), Bitbucket, GitHub, and GitLab.
Compare to Git's [built-in credential helpers][git-tools-credential-storage]
(Windows: wincred, macOS: osxkeychain, Linux: gnome-keyring/libsecret), which
provide single-factor authentication support for username/password only.
GCM replaces both the .NET Framework-based
[Git Credential Manager for Windows][gcm-for-windows] and the Java-based
[Git Credential Manager for Mac and Linux][gcm-for-mac-and-linux].
## Install
See the [installation instructions][install] for the current version of GCM for
install options for your operating system.
## 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][azure-devops-ssh]
- [GitHub SSH][github-ssh]
- [Bitbucket SSH][bitbucket-ssh]
Feature|Windows|macOS|Linux\*
-|:-:|:-:|:-:
Installer/uninstaller|✓|✓|✓
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|✓|✓|✓
Two-factor authentication support for GitLab|✓|✓|✓
Windows Integrated Authentication (NTLM/Kerberos) support|✓|_N/A_|_N/A_
Basic HTTP authentication support|✓|✓|✓
Proxy support|✓|✓|✓
`amd64` support|✓|✓|✓
`x86` support|✓|_N/A_|✗
`arm64` support|best effort|✓|✓
`armhf` support|_N/A_|_N/A_|✓
(\*) GCM guarantees support only for [the Linux distributions that are officially
supported by dotnet][dotnet-distributions].
## Supported Git versions
Git Credential Manager tries to be compatible with the broadest set of Git
versions (within reason). However there are some known 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`][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][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][gcm-usage].
### Configuring a proxy
See detailed information [here][gcm-http-proxy].
## Additional Resources
See the [documentation index][docs-index] for links to additional resources.
## Experimental Features
- [Windows broker (experimental)][gcm-windows-broker]
## Future features
Curious about what's coming next in the GCM project? Take a look at the [project
roadmap][roadmap]! You can find more details about the construction of the
roadmap and how to interpret it [here][roadmap-announcement].
## Contributing
This project welcomes contributions and suggestions.
See the [contributing guide][gcm-contributing] to get started.
This project follows [GitHub's Open Source Code of Conduct][gcm-coc].
## License
We're [MIT][gcm-license] licensed.
When using GitHub logos, please be sure to follow the
[GitHub logo guidelines][github-logos].
[azure-devops]: https://azure.microsoft.com/en-us/products/devops
[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/git-ecosystem/git-credential-manager/actions/workflows/continuous-integration.yml/badge.svg
[docs-index]: https://github.com/git-ecosystem/git-credential-manager/blob/release/docs/README.md
[dotnet]: https://dotnet.microsoft.com
[dotnet-distributions]: https://learn.microsoft.com/en-us/dotnet/core/install/linux
[git-credential-helper]: https://git-scm.com/docs/gitcredentials
[gcm]: https://github.com/git-ecosystem/git-credential-manager
[gcm-coc]: CODE_OF_CONDUCT.md
[gcm-commit-12294990]: https://github.com/git/git/commit/12294990c90e043862be9eb7eb22c3784b526340
[gcm-contributing]: CONTRIBUTING.md
[gcm-credstores]: https://github.com/git-ecosystem/git-credential-manager/blob/release/docs/credstores.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-http-proxy]: https://github.com/git-ecosystem/git-credential-manager/blob/release/docs/netconfig.md#http-proxy
[gcm-license]: LICENSE
[gcm-usage]: https://github.com/git-ecosystem/git-credential-manager/blob/release/docs/usage.md
[gcm-windows-broker]: https://github.com/git-ecosystem/git-credential-manager/blob/release/docs/windows-broker.md
[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
[install]: https://github.com/git-ecosystem/git-credential-manager/blob/release/docs/install.md
[ms-package-repos]: https://packages.microsoft.com/repos/
[roadmap]: https://github.com/git-ecosystem/git-credential-manager/milestones?direction=desc&sort=due_date&state=open
[roadmap-announcement]: https://github.com/git-ecosystem/git-credential-manager/discussions/1203
[workflow-status]: https://github.com/git-ecosystem/git-credential-manager/actions/workflows/continuous-integration.yml
================================================
FILE: SECURITY.md
================================================
Thanks for helping make GitHub safe for everyone.
## Security
GitHub takes the security of our software products and services seriously, including all of the open source code repositories managed through our GitHub organizations, such as [GitHub](https://github.com/GitHub).
Even though [open source repositories are outside of the scope of our bug bounty program](https://bounty.github.com/index.html#scope) and therefore not eligible for bounty rewards, we will ensure that your finding gets passed along to the appropriate maintainers for remediation.
## Reporting Security Issues
If you believe you have found a security vulnerability in any GitHub-owned repository, please report it to us through coordinated disclosure.
**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.**
Instead, please send an email to opensource-security[@]github.com.
Please include as much of the information listed below as you can to help us better understand and resolve the issue:
* The type of issue (e.g., buffer overflow, SQL injection, or cross-site scripting)
* Full paths of source file(s) related to the manifestation of the issue
* The location of the affected source code (tag/branch/commit or direct URL)
* Any special configuration required to reproduce the issue
* Step-by-step instructions to reproduce the issue
* Proof-of-concept or exploit code (if possible)
* Impact of the issue, including how an attacker might exploit the issue
This information will help us triage your report more quickly.
## Policy
See [GitHub's Safe Harbor Policy](https://docs.github.com/en/site-policy/security-policies/github-bug-bounty-program-legal-safe-harbor)
================================================
FILE: VERSION
================================================
2.7.3.0
================================================
FILE: assets/gcm.xaml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Stretch="Uniform">
<Canvas Name="svg815" Width="256" Height="256">
<Canvas.RenderTransform>
<TranslateTransform X="0" Y="0"/>
</Canvas.RenderTransform>
<Canvas.Resources/>
<Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path8" Fill="#FFF05033" StrokeThickness="2.24708056">
<Path.Data>
<PathGeometry Figures="m 127.74219 0 c -4.21881 0 -8.43843 1.6093415 -11.65821 4.828125 L 92.875 28.041016 122.31445 57.482422 c 6.84425 -2.310946 14.68947 -0.761046 20.14258 4.693359 5.48141 5.488392 7.0192 13.400136 4.65039 20.267578 l 28.37696 28.376951 c 6.86492 -2.36579 14.78398 -0.83727 20.26562 4.6543 7.66374 7.66179 7.66374 20.07642 0 27.74023 -7.66486 7.66631 -20.07893 7.66631 -27.74805 0 -5.76254 -5.76724 -7.18821 -14.23373 -4.26953 -21.33398 l -26.46289 -26.464844 -0.002 69.640624 c 1.8684 0.92496 3.63248 2.16064 5.18945 3.71094 7.66148 7.6609 7.66148 20.07236 0 27.74609 -7.66374 7.66066 -20.08459 7.66066 -27.74023 0 -7.66262 -7.67305 -7.66262 -20.08452 0 -27.74609 1.89369 -1.89039 4.08382 -3.32218 6.42187 -4.28125 V 94.199219 c -2.33912 -0.955028 -4.52734 -2.375687 -6.42383 -4.28125 -5.80409 -5.799832 -7.20125 -14.319608 -4.22461 -21.447266 L 81.466797 39.443359 4.8300781 116.08203 c -6.4393305 6.44252 -6.4393305 16.88229 0 23.32031 L 42.5 177.07227 V 162.70508 C 35.078345 157.16403 29.678851 149.02425 27.328125 140.07617 19.76286 115.647 40.902921 87.908596 66.359375 88.345703 76.747705 88.003924 87.132367 91.94485 94.875 98.837891 c 18.78493 15.372969 17.87151 47.496839 -0.888672 62.484379 l -2.566406 1.3457 0.222656 12.46503 -8.160156 8.24395 v 34.67578 l 33.119138 33.11915 c 6.43505 6.43757 16.87041 6.43757 23.31446 0 L 251.17188 139.92969 c 6.43732 -6.4407 6.43732 -16.88336 0 -23.32227 l 0.002 -0.01 L 139.39453 4.828125 C 136.1788 1.6093415 131.96099 0 127.74219 0 Z" FillRule="NonZero"/>
</Path.Data>
</Path>
<Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path831" Fill="#FF4D4D4D" StrokeThickness="4.12109041">
<Path.Data>
<PathGeometry Figures="M 67.333984 94.333984 A 35.333332 35.333332 0 0 0 32 129.66602 A 35.333332 35.333332 0 0 0 48.5 159.54688 L 48.5 234.5 L 54.5 240 L 67 240 L 79 228 L 79 216.5 L 73 210 L 79 203.5 L 73 197 L 79 191 L 73 185.5 L 85.5 173 L 85.5 159.92188 A 35.333332 35.333332 0 0 0 102.66602 129.66602 A 35.333332 35.333332 0 0 0 67.333984 94.333984 z M 66.777344 109 A 9 9 0 0 1 75.777344 118 A 9 9 0 0 1 66.777344 127 A 9 9 0 0 1 57.777344 118 A 9 9 0 0 1 66.777344 109 z M 54.5 168 L 60.5 173 L 60.5 234.5 L 54.5 228 L 54.5 168 z " FillRule="NonZero"/>
</Path.Data>
</Path>
</Canvas>
</Viewbox>
================================================
FILE: build/GCM.MSBuild.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<IncludeBuildOutput>false</IncludeBuildOutput>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Build.Framework" Version="16.0.461" PrivateAssets="all" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="16.0.461" PrivateAssets="all" />
</ItemGroup>
</Project>
================================================
FILE: build/GCM.tasks
================================================
<Project>
<PropertyGroup Condition="'$(MSBuildRuntimeType)' == 'Mono'">
<_TaskAssembly>$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll</_TaskAssembly>
<_TaskFactory>CodeTaskFactory</_TaskFactory>
</PropertyGroup>
<PropertyGroup Condition="'$(MSBuildRuntimeType)' != 'Mono'">
<_TaskAssembly>$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll</_TaskAssembly>
<_TaskFactory>RoslynCodeTaskFactory</_TaskFactory>
</PropertyGroup>
<UsingTask TaskName="GenerateWindowsAppManifest" TaskFactory="$(_TaskFactory)" AssemblyFile="$(_TaskAssembly)">
<Task>
<Code Type="Class" Source="$(MSBuildThisFileDirectory)GenerateWindowsAppManifest.cs" />
</Task>
</UsingTask>
<UsingTask TaskName="GetVersion" TaskFactory="$(_TaskFactory)" AssemblyFile="$(_TaskAssembly)">
<Task>
<Code Type="Class" Source="$(MSBuildThisFileDirectory)GetVersion.cs" />
</Task>
</UsingTask>
</Project>
================================================
FILE: build/GenerateWindowsAppManifest.cs
================================================
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using System.IO;
namespace GitCredentialManager.MSBuild
{
public class GenerateWindowsAppManifest : Task
{
[Required]
public string Version { get; set; }
[Required]
public string ApplicationName { get; set; }
[Required]
public string OutputFile { get; set; }
public override bool Execute()
{
Log.LogMessage(MessageImportance.Normal, "Creating application manifest file for '{0}'...", ApplicationName);
string manifestDirectory = Path.GetDirectoryName(OutputFile);
if (!Directory.Exists(manifestDirectory))
{
Directory.CreateDirectory(manifestDirectory);
}
File.WriteAllText(
OutputFile,
$@"<?xml version=""1.0"" encoding=""utf-8""?>
<assembly manifestVersion=""1.0"" xmlns=""urn:schemas-microsoft-com:asm.v1"">
<assemblyIdentity version=""{Version}"" name=""{ApplicationName}""/>
<compatibility xmlns=""urn:schemas-microsoft-com:compatibility.v1"">
<application>
<!-- Windows 10 and Windows 11 -->
<supportedOS Id=""{{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}}""/>
<!-- Windows 8.1 -->
<supportedOS Id=""{{1f676c76-80e1-4239-95bb-83d0f6d0da78}}""/>
<!-- Windows 8 -->
<supportedOS Id=""{{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}}""/>
<!-- Windows 7 -->
<supportedOS Id=""{{35138b9a-5d96-4fbd-8e2d-a2440225f93a}}""/>
</application>
</compatibility>
</assembly>
");
return true;
}
}
}
================================================
FILE: build/GetVersion.cs
================================================
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using System.IO;
namespace GitCredentialManager.MSBuild
{
public class GetVersion : Task
{
[Required]
public string VersionFile { get; set; }
[Output]
public string Version { get; set; }
[Output]
public string AssemblyVersion { get; set; }
[Output]
public string FileVersion { get; set; }
public override bool Execute()
{
Log.LogMessage(MessageImportance.Normal, "Reading VERSION file...");
string textVersion = File.ReadAllText(VersionFile);
if (!System.Version.TryParse(textVersion, out System.Version fullVersion))
{
Log.LogError("Invalid version '{0}' specified.", textVersion);
return false;
}
// System.Version names its version components as follows:
// major.minor[.build[.revision]]
// The main version number we use for GCM contains the first three
// components.
// The assembly and file version numbers contain all components, as
// omitting the revision portion from these properties causes
// runtime failures on Windows.
Version = $"{fullVersion.Major}.{fullVersion.Minor}.{fullVersion.Build}";
AssemblyVersion = FileVersion = fullVersion.ToString();
return true;
}
}
}
================================================
FILE: docs/README.md
================================================
# User documentation
The following are links to GCM user support documentation:
- [Frequently asked questions][gcm-faq]
- [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]
- [Host provider specification][gcm-host-provider]
- [Azure Repos OAuth tokens][gcm-azure-tokens]
- [Azure Managed Identities and Service Principals][gcm-misp]
- [GitLab support][gcm-gitlab]
- [Generic OAuth support][gcm-oauth]
- [NTLM and Kerberos authentication][gcm-ntlm-kerberos]
[gcm-azure-tokens]: azrepos-users-and-tokens.md
[gcm-config]: configuration.md
[gcm-credstores]: credstores.md
[gcm-enterprise-config]: enterprise-config.md
[gcm-env]: environment.md
[gcm-faq]: faq.md
[gcm-gitlab]: gitlab.md
[gcm-host-provider]: hostprovider.md
[gcm-misp]: azrepos-misp.md
[gcm-net-config]: netconfig.md
[gcm-oauth]: generic-oauth.md
[gcm-usage]: usage.md
[gcm-ntlm-kerberos]: ntlm-kerberos.md
================================================
FILE: docs/architecture.md
================================================
# Architecture
## Overview
```text
+------------------------------------------------------------------------------+
| |
| Git-Credential-Manager |
| |
+-+-------------+--------------+-----+---------------------+-----------------+-+
| | | | | |
| | | | Windows | Windows |
| | | | | |
| +-----------v-----------+ | | +----------------v---------------+ |
| | | | | | | |
| | GitHub <-------------+ GitHub.UI.Windows | |
| | | | | | | |
| +-+---------------------+ | | +-+------------------------------+ |
| | | | | |
| | +---------------------v-+ | | +------------------------------v-+
| | | | | | | |
| | | Atlassian.Bitbucket <------------+ Atlassian.Bitbucket.UI.Windows |
| | | | | | | |
| | +-+---------------------+ | | +---------------+----------------+
| | | | | |
| | | +----------------------v-+ | |
| | | | | | |
| | | | Microsoft.AzureRepos | | |
| | | | | | |
| | | +-----------+------------+ | |
| | | | | |
+-v---v----v--------------v------------+ +-v-----------------v----------------+
| | | |
| Core <--+ Core.UI |
| | | |
+--------------------------------------+ +------------------------------------+
```
Git Credential Manager (GCM) is built to be Git host and platform/OS
agnostic. Most of the shared logic (command execution, the abstract platform
subsystems, etc) can be found in the `Core` class
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][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 [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.
This project emits the `git-credential-manager(.exe)` executable, and
contains very little code - registration of all supported host providers and
running the `Application` object found in `Core`.
Providers have their own projects/assemblies that take dependencies on the
`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
only.
Where a provider needs some platform-specific interaction or graphical user
interface, the recommended model is to have a separate 'helper' executable that
the shared, core binaries shell out to. Currently the Bitbucket and GitHub
providers each have a WPF (Windows only) helper executable that shows
authentication prompts and messages.
The `Core.UI` project is a WPF (Windows only) assembly
that contains common WPF components and styles that are shared between provider
helpers on Windows.
### Cross-platform UI
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
For authentication using Microsoft Accounts or Azure Active Directory, things
are a little different. The `MicrosoftAuthentication` component is present in
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.
## Asynchronous programming
GCM makes use of the `async`/`await` model of .NET and C# in almost all
parts of the codebase where appropriate as usually requests end up going to the
network at some point.
## Command execution
```text
+---------------+
| |
| Git |
| |
+---+-------^---+
| |
+---v---+---+---+
| stdin | stdout|
+---+---+---^---+
| |
(2) | | (7)
Select | | Serialize
Command | | Result
| |
(3) | |
Select | |
+---------------+ Provider +---v-------+---+
| Host Provider | | |
| Registry <------------+ Command |
| | | |
+-------^-------+ +----+------^---+
| | |
| (4) | | (6)
| Execute | | Return
| Operation | | Result
| (1) | |
| Register +----v------+---+
| | |
+--------------------+ Host Provider |
| |
+-------^-------+
|
(5) Use services |
|
+-------v-------+
| Command |
| Context |
+---------------+
```
Git Credential Manager maintains a set of known commands including
`Get|Store|EraseCommand`, as well as commands for install and help/usage.
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`][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,
Negotiate) support (1).
For each invocation of GCM, the first argument on the command-line is
matched against the known commands and if there is a successful match, the input
from Git (over standard input) is deserialized and the command is executed (2).
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`][credential-provider] or [`GCM_PROVIDER`][gcm-provider]
configuration and environment variable respectively (3).
The `Get|Store|EraseCommand`s call the corresponding
`Get|Store|EraseCredentialAsync` methods on the `IHostProvider`, passing the
request from Git together with an instance of the `ICommandContext` (4). The
host provider can then make use of various services available on the command
context to complete the requested operation (5).
Once a credential has been created, retrieved, stored or erased, the host
provider returns the credential (for `get` operations only) to the calling
command (6). The credential is then serialized and returned to Git over standard
output (7) and GCM terminates with a successful exit code.
## Host provider
Host providers implement the `IHostProvider` interface. They can choose to
directly implement the interface they can also derive from the `HostProvider`
abstract class (which itself implements the `IHostProvider` interface).
The `HostProvider` abstract class implements the
`Get|Store|EraseCredentialAsync` methods and instead has the
`GenerateCredentialAsync` abstract method, and the `GetServiceName` virtual
method. Calls to `get`, `store`, or `erase` result in first a call to
`GetServiceName` which should return a stable and unique value for the provider
and request. This value forms part of the attributes associated with any stored
credential in the credential store. During a `get` operation the
credential store is queried for an existing credential with such service name.
If a credential is found it is returned immediately. Similarly, calls to `store`
and `erase` are handles automatically to store credentials against, and erase
credentials matching the service name. Methods are implemented as `virtual`
meaning you can always override this behaviour, for example to clear other
custom caches on an `erase` request, without having to reimplement the
lookup/store credential logic.
The default implementation of `GetServiceName` is usually sufficient for most
providers. It returns the computed remote URL (without a trailing slash) from
the input arguments from Git - `<protocol>://<host>[/<path>]` - no username is
included even if present.
Host providers are queried in turn, by priority (then registration order) via
the `IHostProvider.IsSupported(InputArguments)` method and passed the input
received from Git. If the provider recognises the request, for example by a
matching known host name, they can return `true`. If the provider wants to
cancel and abort an authentication request, for example if this is a HTTP (not
HTTPS) request for a known host, they should still return `true` and later
cancel the request.
Host providers can also be queried via the `IHostProvider.IsSupported(HttpResponseMessage)`
method and passed the response message from a HEAD call made to the remote URI.
This is useful for detecting on-premises instances based on header values. GCM
will only query a provider via this method overload if no other provider at the
same registration priority has returned `true` to the `InputArguments` overload.
Depending on the request from Git, one of `GetCredentialAsync` (for `get`
requests), `StoreCredentialAsync` (for `store` requests) or
`EraseCredentialAsync` (for `erase` requests) will be called. The argument
`InputArguments` contains the request information passed over standard input
from Git/the caller; the same as was passed to `IsSupported`.
The return value for the `get` operation must be an `ICredential` that Git can
use to complete authentication.
> **Note:**
>
> The credential can also be an instance where both username and password are
> the empty string, to signal to Git it should let cURL use "any auth"
> detection - typically to use Windows Integrated Authentication.
There are no return values for the `store` and `erase` operations as Git ignores
any output or exit codes for these commands. Failures for these operations are
best communicated via writing to the Standard Error stream via
`ICommandContext.Streams.Error`.
## Command context
The `ICommandContext` which contains numerous services which are useful for
interacting with various platform subsystems, such as the file system or
environment variables. All services on the command context are exposed as
interfaces for ease of testing and portability between different operating
systems and platforms.
Component|Description
-|-
CredentialStore|A secure operating system controlled location for storing and retrieving `ICredential` objects.
Settings|Abstraction over all GCM settings.
Streams|Abstraction over standard input, output and error streams connected to the parent process (typically Git).
Terminal|Provides interactions with an attached terminal, if it exists.
SessionManager|Provides information about the current user session.
Trace|Provides tracing information that may be useful for debugging issues in the wild. Secret information MUST be filtered out completely or via the `Write___Secret` method(s).
FileSystem|Abstraction over file system operations.
HttpClientFactory|Factory for creating `HttpClient` instances that are configured with the correct user agent, headers, and proxy settings.
Git|Provides interactions with Git and Git configuration.
Environment|Abstraction over the current system/user environment variables.
SystemPrompts|Provides services for showing system/OS native credential prompts.
## Error handling and tracing
GCM operates a 'fail fast' approach to unrecoverable errors. This usually
means throwing an `Exception` which will propagate up to the entry-point and be
caught, a non-zero exit code returned, and the error message printed with the
"fatal:" prefix. For errors originating from interop/native code, you should
throw an exception of the `InteropException` type. Error messages in exceptions
should be human readable. When there is a known or user-fixable issue,
instructions on how to self-remedy the issue, or links to relevant
documentation should be given.
Warnings can be emitted over the standard error stream
(`ICommandContext.Streams.Error`) when you want to alert the user to a potential
issue with their configuration that does not necessarily stop the
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/git-ecosystem/git-credential-manager/issues/113
[issue-136]: https://github.com/git-ecosystem/git-credential-manager/issues/136
[gcm-provider]: environment.md#GCM_PROVIDER
[msal]: https://github.com/AzureAD/microsoft-authentication-library-for-dotnet
================================================
FILE: docs/autodetect.md
================================================
# Host provider auto-detection
Git Credential Manager (GCM) supports authentication with multiple different Git
host providers including: GitHub, Bitbucket, and Azure Repos. As well as the
hosted/cloud offerings, GCM can also work with the self-hosted or "on-premises"
versions of these services: GitHub Enterprise Server, Bitbucket DC Server, and
Azure DevOps Server (TFS).
By default, GCM will attempt to automatically detect which particular provider
is behind the Git remote URL you're interacting with. For the cloud versions of
the supported providers this is done by matching the hostname of the remote URL
to the well-known hostnames of the services. For example "github.com" or
"dev.azure.com".
## Self-hosted/on-prem detection
In order to detect which host provider to use for a self-hosted instance, each
provider can provide some heuristic matching of the hostname. For example any
hostname that begins "github.*" will be matched to the GitHub host provider.
If a heuristic matches incorrectly, you can always
[explicitly configure][explicit-config] GCM to use a particular provider.
## Remote URL probing
In addition to heuristic matching, GCM will make a network call to the remote
URL and inspect HTTP response headers to try and detect a self-hosted instance.
This network call is only performed if neither an exact nor fuzzy match by
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-config] the host provider for your self-hosted
instance.
After a successful detection of the host provider, GCM will automatically set
the [`credential.provider`][credential-provider] configuration entry
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
by setting the [`GCM_AUTODETECT_TIMEOUT`][gcm-autodetect-timeout] environment
variable, or the [`credential.autoDetectTimeout`][credential-autoDetectTimeout]
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.
## 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
configure GCM to always use a particular host provider, for a given remote URL.
You can either use the the [`GCM_PROVIDER`][gcm-provider] environment variable,
or the [`credential.provider`][credential-provider] Git configuration setting
for this purpose.
For example to tell GCM to always use the GitHub host provider for the
"ghe.example.com" hostname, you can run the following command:
```shell
git config --global credential.ghe.example.com.provider github
```
[credential-autoDetectTimeout]: configuration.md#credentialautodetecttimeout
[credential-provider]: configuration.md#credentialprovider
[explicit-config]: #manual-configuration
[gcm-autodetect-timeout]: environment.md#GCM_AUTODETECT_TIMEOUT
[gcm-provider]: environment.md#GCM_PROVIDER
================================================
FILE: docs/azrepos-misp.md
================================================
# Azure Managed Identities and Service Principals
Git Credential Manager supports Managed Identities and Service Principals for
authentication with Azure Repos. This document provides an overview of Managed
Identities and Service Principals and how to use them with GCM.
## Managed Identities
Azure Managed Identities can be used to authenticate and authorize applications
and services to access Azure resources. Managed Identities are a secure way to
access Azure resources without needing to store credentials in code or
configuration files.
There are two types of Managed Identities:
**System-assigned**
System-assigned Managed Identities are tied to a specific Azure resource, such
as a Virtual Machine or App Service. When a system-assigned Managed Identity is
enabled, Azure creates an identity for the resource in the Azure AD tenant
that's trusted by the subscription. The lifecycle of the identity is tied to the
resource to which it's assigned.
**User-assigned**
User-assigned Managed Identities are created as standalone Azure resources and
can be assigned to one or more Azure resources. This allows you to use the same
Managed Identity across multiple resources.
You can read more about Managed Identities in the
[Azure documentation][az-mi].
### How to configure Managed Identities
In order to use a Managed Identity with GCM, you need to ensure that the Managed
Identity has the necessary permissions to access the Azure Repos repository.
You can read more about how to configure Managed Identities in the
[Azure Repos documentation][azdo-misp].
Once you have configured the Managed Identity, you can use it with GCM by simply
setting one of the following environment variables or Git configuration options:
**Git configuration:** [`credential.azreposManagedIdentity`][gcm-mi-config]
**Environment variable:** [`GCM_AZREPOS_MANAGEDIDENTITY`][gcm-mi-env]
Value|Description
-|-
`system`|System-Assigned Managed Identity
`[guid]`|User-Assigned Managed Identity with the specified client ID
`id://[guid]` **|User-Assigned Managed Identity with the specified client ID
`resource://[guid]` **|User-Assigned Managed Identity for the associated resource
You can obtain the `[guid]` from the Azure Portal or by using the Azure CLI
to inspect the Managed Identity or resource.
** Note there is an open issue that prevents successfull authentication when
using these formats: https://github.com/git-ecosystem/git-credential-manager/issues/1570
## Service Principals
Azure Service Principals are used to authenticate and authorize applications and
services to access Azure resources. Service Principals are similar in many ways
to Managed Identities (in fact Service Principals are used under the hood to
implement Managed Identities), but they have expliclty defined credentials that
are not managed by Azure.
There are a number of different ways to create and configure Service Principals,
including using the Azure Portal or Azure CLI. You can read more about Service
Principals in the [Azure documentation][az-sp].
### How to configure Service Principals
Much like with Managed Identities, to use a Service Principal with GCM you first
need to ensure that the principal has the necessary permissions to access the
Azure Repos repository.
You can read more about how to configure Service Principals in the
[Azure Repos documentation][azdo-misp].
Once you have configured the Service Principal, you can use it with GCM by
setting one of the following environment variables or Git configuration options:
**Git configuration:** [`credential.azreposServicePrincipal`][gcm-sp-config]
**Environment variable:** [`GCM_AZREPOS_SERVICE_PRINCIPAL`][gcm-sp-env]
The format of the value for these options must be in the format:
```text
{tenantId}/{clientId}
```
Where `{tenantId}` is the Azure tenant ID and `{clientId}` is the client ID of
the Service Principal. These values can be found in the Azure Portal or by using
the Azure CLI to inspect the Service Principal.
#### Authentication with Service Principals
When using a Service Principal with GCM, you will also need to provide the
client secret or certificate that is associated with the Service Principal.
You can provide the client secret or certificate to GCM by setting one of the
following environment variables or Git configuration options.
Type|Git Configuration|Environment Variable
-|-|-
Client Secret|[`credential.azreposServicePrincipalSecret`][gcm-sp-secret-config]|[`GCM_AZREPOS_SP_SECRET`][gcm-sp-secret-env]
Certificate|[`credential.azreposServicePrincipalCertificateThumbprint`][gcm-sp-cert-config]|[`GCM_AZREPOS_SP_CERT_THUMBPRINT`][gcm-sp-cert-env]
Send X5C|[`credential.azreposServicePrincipalCertificateSendX5C`][gcm-sp-cert-x5c-config]|[`GCM_AZREPOS_SP_CERT_SEND_X5C`][gcm-sp-cert-x5c-env]
The value for these options should be the client secret or the thumbrint of the
certificate that is associated with the Service Principal.
The certificate itself should be installed on the machine where GCM is running
and should be installed in personal store the certificate store for either the
current user or the local machine.
[az-mi]: https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview
[az-sp]: https://learn.microsoft.com/en-us/entra/identity-platform/app-objects-and-service-principals?tabs=browser
[azdo-misp]: https://learn.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/service-principal-managed-identity?view=azure-devops
[gcm-mi-config]: https://gh.io/gcm/config#credentialazreposmanagedidentity
[gcm-mi-env]: https://gh.io/gcm/env#GCM_AZREPOS_MANAGEDIDENTITY
[gcm-sp-config]: https://gh.io/gcm/config#credentialazreposserviceprincipal
[gcm-sp-env]: https://gh.io/gcm/env#GCM_AZREPOS_SERVICE_PRINCIPAL
[gcm-sp-secret-config]: https://gh.io/gcm/config#credentialazreposserviceprincipalsecret
[gcm-sp-secret-env]: https://gh.io/gcm/env#GCM_AZREPOS_SP_SECRET
[gcm-sp-cert-config]: https://gh.io/gcm/config#credentialazreposserviceprincipalcertificatethumbprint
[gcm-sp-cert-x5c-config]: https://gh.io/gcm/config#credentialazreposserviceprincipalcertificatesendx5c
[gcm-sp-cert-env]: https://gh.io/gcm/env#GCM_AZREPOS_SP_CERT_THUMBPRINT
[gcm-sp-cert-x5c-env]: https://gh.io/gcm/env#GCM_AZREPOS_SP_CERT_SEND_X5C
================================================
FILE: docs/azrepos-users-and-tokens.md
================================================
# Azure Repos: Access tokens and Accounts
## Different credential types
The Azure Repos host provider supports creating multiple types of credential:
- Azure DevOps personal access tokens
- Microsoft identity OAuth tokens
To select which type of credential the Azure Repos host provider will create
and use, you can set the [`credential.azreposCredentialType`][credential-azreposCredentialType]
configuration entry (or [`GCM_AZREPOS_CREDENTIALTYPE`][gcm-azrepos-credential-type]
environment variable).
### Azure DevOps personal access tokens
Historically, the only option supported by the Azure Repos host provider was
Azure DevOps Personal Access Tokens (PATs).
These PATs are only used by Azure DevOps, and must be [managed through the Azure
DevOps user settings page][azure-devops-pats] or [REST API][azure-devops-api].
PATs have a limited lifetime and new tokens must be created once they expire. In
Git Credential Manager, when a PAT expired (or was manually revoked) this
resulted in a new authentication prompt.
### Microsoft identity OAuth tokens
"Microsoft identity OAuth token" is the generic term for OAuth-based access
tokens issued by Azure Active Directory for either Work and School Accounts
(AAD tokens) or Personal Accounts (Microsoft Account/MSA tokens).
Azure DevOps supports Git authentication using Microsoft identity OAuth tokens
as well as PATs. Microsoft identity OAuth tokens created by Git Credential
Manager are scoped to Azure DevOps only.
Unlike PATs, Microsoft identity OAuth tokens get automatically refreshed and
renewed as long as you are actively using them to perform Git operations.
These tokens are also securely shared with other Microsoft developer tools
including the Visual Studio IDE and Azure CLI. This means that as long as you're
using Git or one of these tools with the same account, you'll never need to
re-authenticate due to expired tokens!
#### User accounts
In versions of Git Credential Manager that support Microsoft identity OAuth
tokens, the user account used to authenticate for a particular Azure DevOps
organization will now be remembered.
The first time you clone, fetch or push from/to an Azure DevOps organization you
will be prompted to sign-in and select a user account. Git Credential Manager
will remember which account you used and continue to use that for all future
remote Git operations (clone/fetch/push). An account is said to be "bound" to
an Azure DevOps organization.
---
**Note:** If GCM is set to use PAT credentials, this account will **NOT** be
used and you will continue to be prompted to select a user account to renew the
credential. This may change in the future.
---
Normally you won't need to worry about managing which user accounts Git
Credential Manager is using as this is configured automatically when you first
authenticate for a particular Azure DevOps organization.
In advanced scenarios (such as using multiple accounts) you can interact with
and manage remembered user accounts using the 'azure-repos' provider command:
```shell
git-credential-manager azure-repos [ list | bind | unbind | ... ] <options>
```
##### Listing remembered accounts
You can list all bound user accounts by Git Credential Manager for each Azure
DevOps organization using the `list` command:
```shell
$ git-credential-manager azure-repos list
contoso:
(global) -> alice@contoso.com
fabrikam:
(global) -> user42@fabrikam.com
```
In the above example, the `contoso` Azure DevOps organization is associated with
the `alice@contoso.com` user account, while the `fabrikam` organization is
associated to the `user42@fabrikam.com` user account.
Global "bindings" apply to all remote Git operations for the current computer
user profile and are stored in `~/.gitconfig` or `%USERPROFILE%\.gitconfig`.
##### Using different accounts within a repository
If you generally use one account for an Azure DevOps organization, the default
global bindings will be sufficient. However, if you wish to use a different
user account for an organization in a particular repository you can use a local
binding.
Local account bindings only apply within a single repository and are stored in
the `.git/config` file. If there are local bindings in a repository you can show
them with the `list` command:
```shell
~/myrepo$ git-credential-manager azure-repos list
contoso:
(global) -> alice@contoso.com
(local) -> alice-alt@contoso.com
```
Within the `~/myrepo` repository, the `alice-alt@contoso.com` account will be
used by Git and GCM for the `contoso` Azure DevOps organization.
To create a local binding, use the `bind` command with the `--local` option when
inside a repository:
```shell
~/myrepo$ git-credential-manager azure-repos bind --local contoso alice-alt@contso.com
```
```diff
contoso:
(global) -> alice@contoso.com
+ (local) -> alice-alt@contoso.com
```
##### Forget an account
To have Git Credential Manager forget a user account, use the `unbind` command:
```shell
git-credential-manager azure-repos unbind fabrikam
```
```diff
contoso:
(global) -> alice@contoso.com
- fabrikam:
- (global) -> user42@fabrikam.com
```
In the above example, and global account binding for the `fabrikam` organization
will be forgotten. The next time you need to renew a PAT (if using PATs) or
perform any remote Git operation (is using Azure tokens) you will be prompted
to authenticate again.
To forget or remove a local binding, within the repository run the `unbind`
command with the `--local` option:
```shell
~/myrepo$ git-credential-manager azure-repos unbind --local contoso
```
```diff
contoso:
(global) -> alice@contoso.com
- (local) -> alice-alt@contoso.com
```
##### Using different accounts for specific Git remotes
As well as global and local user account bindings, you can instruct Git
Credential Manager to use a specific user account for an individual Git remotes
within the same local repository.
To show which accounts are being used for each Git remote in a repository use
the `list` command with the `--show-remotes` option:
```shell
~/myrepo$ git-credential-manager azure-repos list --show-remotes
contoso:
(global) -> alice@contoso.com
origin:
(fetch) -> (inherit)
(push) -> (inherit)
fabrikam:
(global) -> alice@fabrikam.com
```
In the above example, the `~/myrepo` repository has a single Git remote named
`origin` that points to the `contoso` Azure DevOps organization. There is no
user account specifically associated with the `origin` remote, so the global
user account binding for `contoso` will be used (the global binding is
inherited).
To associate a user account with a particular Git remote you must manually edit
the remote URL using `git config` commands to include the username in the
[user information][rfc3986-s321] part of the URL.
```shell
git config --local remote.origin.url https://alice-alt%40contoso.com@contoso.visualstudio.com/project/_git/repo
```
In the above example the `alice-alt@contoso.com` account is being set as the
account to use for the `origin` Git remote.
---
**Note:** All special characters must be URL encoded/escaped, for example `@`
becomes `%40`.
---
The `list --show-remotes` command will show the user account specified in the
remote URL:
```shell
~/myrepo$ git-credential-manager azure-repos list --show-remotes
contoso:
(global) -> alice@contoso.com
origin:
(fetch) -> alice-alt@contoso.com
(push) -> alice-alt@contoso.com
fabrikam:
(global) -> alice@fabrikam.com
```
[azure-devops-pats]: https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=preview-page
[credential-azreposCredentialType]: configuration.md#credentialazreposcredentialtype
[gcm-azrepos-credential-type]: environment.md#GCM_AZREPOS_CREDENTIALTYPE
[azure-devops-api]: https://docs.microsoft.com/en-gb/rest/api/azure/devops/tokens/pats
[rfc3986-s321]: https://www.rfc-editor.org/rfc/rfc3986#section-3.2.1
================================================
FILE: docs/bitbucket-authentication.md
================================================
# Bitbucket Authentication
When GCM is triggered by Git, it will check the `host` parameter passed
to it. If this parameter contains `bitbucket.org` it will trigger Bitbucket
authentication and prompt you for credentials. In this scenario, you have two
options for authentication: `OAuth` or `Password/Token`.
### OAuth
The dialog GCM presents for authentication contains two tabs. The first tab
(labeled `Browser`) will trigger OAuth Authentication. Clicking the `Sign in
with your browser` button opens a browser request to
`_https://bitbucket.org/site/oauth2/authorize?response_type=code&client_id={consumerkey}&state=authenticated&scope={scopes}&redirect_uri=http://localhost:34106/_`. This triggers a flow on Bitbucket requiring you to log in
(and potentially complete 2FA) to authorize GCM to access Bitbucket with the
specified scopes. GCM will then spawn a temporary local webserver, listening on
port 34106, to handle the OAuth redirect/callback. Assuming you successfully
log into Bitbucket and authorize GCM, this callback will include the appropriate
tokens for GCM to handle authencation. These tokens are then stored in your
configured [credential store][credstores] and are returned to Git.
### Password/Token
**Note:** Bitbucket Data Center, also known as Bitbucket Server or Bitbucket On
Premises, only supports Basic Authentication - please follow the below
instructions if you are using this product.
The dialog GCM presents for authentication contains two tabs. The second tab
(labeled `Password/Token`) will trigger Basic Authentication. This tab contains
two fields, one for your username and one for your password or token. If the
`username` parameter was passed into GCM, that will pre-populate the username
field, although it can be overridden. Enter your username (if needed) and your
password or token (i.e. Bitbucket App Password) and click `Sign in`.
:rotating_light: Requirements for App Passwords :rotating_light:
If you are planning to use an [App Password][app-password] for basic
authentication, it must at a minimum have _Account Read_ permissions (as shown
below). If your App Password does not have these permissions, you will be
re-prompted for credentials on every interaction with the server.
![][app-password-example]
When your username and password are submitted, GCM will attempt to retrieve a
basic authentication token for these credentials via the Bitbucket REST API. If
this is successful, the credentials, username, and password/token are stored in
your configured [credential store][credstores] and are returned to Git.
If the API request fails with a 401 return code, the entered username/password
combination is invalid; nothing is stored and nothing is returned to Git. In
this scenario, re-attempt authentication, ensuring your credentials are correct.
If the API request fails with a 403 (Forbidden) return code, the username and
password are valid, but 2FA is enabled on the corresponding Bitbucket Account.
In this scenario, you will be prompted to complete the OAuth authentication
process. If this is successful, the credentials, username, and password/token
are stored in your configured [credential store][credstores] and are returned to
Git.
[app-password]: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/
[app-password-example]: img/app-password.png
[credstores]: ./credstores.md
================================================
FILE: docs/bitbucket-development.md
================================================
# Bitbucket Authentication, 2FA and OAuth
By default for authenticating against private Git repositories Bitbucket
supports SSH and username/password Basic Auth over HTTPS. Username/password
Basic Auth over HTTPS is also available for REST API access. Additionally
Bitbucket supports App-specific passwords which can be used via Basic Auth as
username/app-specific-password.
To enhance security Bitbucket offers optional Two-Factor Authentication (2FA).
When 2FA is enabled username/password Basic Auth access to the REST APIs and to
Git repositories is suspended. At that point users are left with the choice of
username/apps-specific-password Basic Auth for REST APIs and Git interactions,
OAuth for REST APIs and Git/Hg interactions or SSH for Git/HG interactions and
one of the previous choices for REST APIs. SSH and REST API access are beyond
the scope of this document. Read about [Bitbucket's 2FA implementation][2fa-impl].
App-specific passwords are not particularly user friendly as once created
Bitbucket hides their value, even from the owner. They are intended for use
within application that talk to Bitbucket where application can remember and use
the app-specific-password. [Additional information][additional-info].
OAuth is the intended authentication method for user interactions with HTTPS
remote URL for Git repositories when 2FA is active. Essentially once a client
application has an OAuth access token it can be used in place of a user's
password. Read more about information [Bitbucket's OAuth implementation][oauth-impl].
Bitbucket's OAuth implementation follows the standard specifications for OAuth
2.0, which is out of scope for this document. However it implements a
comparatively rare part of OAuth 2.0 Refresh Tokens. Bitbucket's Access Token's
expire after 1 hour if not revoked, as opposed to GitHub's that expire after 1
year. When GitHub's Access Tokens expire the user must anticipate in the
standard OAuth authentication flow to get a new Access Token. Since this occurs,
in theory, once per year this is not too onerous. Since Bitbucket's Access
Tokens expire every hour it is too much to expect a user to go through the OAuth
authentication flow every hour.Bitbucket implements refresh Tokens.
Refresh Tokens are issued to the client application at the same time as Access
Tokens. They can only be used to request a new Access Token, and then only if
they have not been revoked. As such the support for Bitbucket and the use of its
OAuth in the Git Credentials Manager differs significantly from how VSTS and
GitHub are implemented. This is explained in more detail below.
## Multiple User Accounts
Unlike the GitHub implementation within the Git Credential Manager, the
Bitbucket implementation stores 'secrets', passwords, app-specific passwords, or
OAuth tokens, with usernames in the [Windows Credential Manager][wincred-manager]
vault.
Depending on the circumstances this means either saving an explicit username in
to the Windows Credential Manager/Vault or including the username in the URL
used as the identifying key of entries in the Windows Credential Manager vault,
i.e. using a key such as `git:https://mminns@bitbucket.org/` rather than
`git:https://bitbucket.org`. This means that the Bitbucket implementation in the
GCM can support multiple accounts, and usernames, for a single user against
Bitbucket, e.g. a personal account and a work account.
## On-Premise Bitbucket
On-premise Bitbucket, more correctly known as Bitbucket Server or Bitbucket DC,
has a number of differences compared to the cloud instance of Bitbucket,
[bitbucket.org][bitbucket].
It is possible to test with Bitbucket Server by running it locally using the
following command from the Atlassian SDK:
❯ atlas-run-standalone --product bitbucket
See the developer documentation for [atlas-run-standalone][atlas-run-standalone].
This will download and run a standalone instance of Bitbucket Server which can
be accessed using the credentials `admin`/`admin` at
https://localhost:7990/bitbucket
Atlassian has [documentation][atlassian-sdk] on how to download and install
their SDK.
## OAuth2 Configuration
Bitbucket DC [7.20](https://confluence.atlassian.com/bitbucketserver/bitbucket-data-center-and-server-7-20-release-notes-1101934428.html)
added support for OAuth2 Incoming Application Links and this can be used to
support OAuth2 authentication for Git. This is especially useful in environments
where Bitbucket uses SSO as it removes the requirement for users to manage
[SSH keys](https://confluence.atlassian.com/display/BITBUCKETSERVER0717/Using+SSH+keys+to+secure+Git+operations)
or manual [HTTP access tokens](https://confluence.atlassian.com/display/BITBUCKETSERVER0717/Personal+access+tokens).
### Host Configuration
For more details see
[Bitbucket's documentation on Data Center and Server Application Links to other Applications](https://confluence.atlassian.com/bitbucketserver/link-to-other-applications-1018764620.html)
Create Incoming OAuth 2 Application Link:
<!-- markdownlint-disable MD034 -->
1. Navigate to Administration/Application Links
1. Create Link
1. Screen 1
- External Application [check]
- Incoming Application [check]
1. Screen 2
- Name : GCM
- Redirect URL : `http://localhost:34106/`
- Application Permissions : Repositories.Read [check], Repositories.Write [check]
1. Save
<!-- markdownlint-enable MD034 -->
1. Copy the `ClientId` and `ClientSecret` to configure GCM
### Client Configuration
Set the OAuth2 configuration use the `ClientId` and `ClientSecret` copied above,
(for details see [credential.bitbucketDataCenterOAuthClientId](configuration.md#credential.bitbucketDataCenterOAuthClientId)
and [credential.bitbucketDataCenterOAuthClientSecret](configuration.md#credential.bitbucketDataCenterOAuthClientSecret))
❯ git config --global credential.bitbucketDataCenterOAuthClientId {`Copied ClientId`}
❯ git config --global credential.bitbucketDataCenterOAuthClientSecret {`Copied ClientSecret`}
<!-- markdownlint-disable MD034 -->
As described in [Configuration options](configuration.md#Configuration%20options)
the settings can be made more specific to apply only to a specific Bitbucket DC
host by specifying the host url, e.g. https://bitbucket.example.com/
<!-- markdownlint-enable MD034 -->
❯ git config --global credential.https://bitbucket.example.com.bitbucketDataCenterOAuthClientId {`Copied ClientId`}
❯ git config --global credential.https://bitbucket.example.com.bitbucketDataCenterOAuthClientSecret {`Copied ClientSecret`}
<!-- markdownlint-disable MD034 -->
Due to the way GCM resolves hosts and determines REST API urls, if the Bitbucket
DC instance is hosted under a relative url (e.g. https://example.com/bitbucket)
it is necessary to configure Git to send the full path to GCM. This is done
using the [credential.useHttpPath](configuration.md#credential.useHttpPath)
setting.
❯ git config --global credential.https://example.com/bitbucket.usehttppath true
<!-- markdownlint-enable MD034 -->
If a port number is used in the url of the Bitbucket DC instance the Git
configuration needs to reflect this. However, due to [Issue 608](https://github.com/git-ecosystem/git-credential-manager/issues/608)
the port is ignored when resolving [credential.bitbucketDataCenterOAuthClientId](configuration.md#credential.bitbucketDataCenterOAuthClientId)
and [credential.bitbucketDataCenterOAuthClientSecret](configuration.md#credential.bitbucketDataCenterOAuthClientSecret).
<!-- markdownlint-disable MD034 -->
For example, a Bitbucket DC host at https://example.com:7990/bitbucket would
require configuration in the form:
<!-- markdownlint-enable MD034 -->
❯ git config --global credential.https://example.com/bitbucket.bitbucketDataCenterOAuthClientId {`Copied ClientId`}
❯ git config --global credential.https://example.com/bitbucket.bitbucketDataCenterOAuthClientSecret {`Copied ClientSecret`}
❯ git config --global credential.https://example.com:7990/bitbucket.usehttppath true
[additional-info]:https://confluence.atlassian.com/display/BITBUCKET/App+passwords
[atlas-run-standalone]: https://developer.atlassian.com/server/framework/atlassian-sdk/atlas-run-standalone/
[bitbucket]: https://bitbucket.org
[2fa-impl]: https://confluence.atlassian.com/bitbucket/two-step-verification-777023203.html
[oauth-impl]: https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.html
[atlassian-sdk]: https://developer.atlassian.com/server/framework/atlassian-sdk/
[wincred-manager]: https://msdn.microsoft.com/en-us/library/windows/desktop/aa374792(v=vs.85).aspx
================================================
FILE: docs/configuration.md
================================================
# Configuration options
[Git Credential Manager][usage] works out of the box for most users.
Git Credential Manager (GCM) can be configured using Git's configuration files,
and follows all of the same rules Git does when consuming the files.
Global configuration settings override system configuration settings, and local
configuration settings override global settings; and because the configuration
details exist within Git's configuration files you can use Git's `git config`
utility to set, unset, and alter the setting values. All of GCM's configuration
settings begin with the term `credential`.
GCM honors several levels of settings, in addition to the standard local
\> global \> system tiering Git uses. URL-specific settings or overrides can be
applied to any value in the `credential` namespace with the syntax below.
Additionally, GCM respects several GCM-specific [environment variables][envars]
**which take precedence over configuration options**. System administrators may
also configure [default values][enterprise-config] for many settings used by GCM.
GCM will only be used by Git if it is installed and configured. Use
`git config --global credential.helper manager` to assign GCM as your
credential helper. Use `git config credential.helper` to see the current
configuration.
**Example:**
> `credential.microsoft.visualstudio.com.namespace` is more specific than
> `credential.visualstudio.com.namespace`, which is more specific than
> `credential.namespace`.
In the examples above, the `credential.namespace` setting would affect any
remote repository; the `credential.visualstudio.com.namespace` would affect any
remote repository in the domain, and/or any subdomain (including `www.`) of,
'visualstudio.com'; where as the
`credential.microsoft.visualstudio.com.namespace` setting would only be applied
to remote repositories hosted at 'microsoft.visualstudio.com'.
For the complete list of settings GCM understands, see the list below.
## Available settings
### credential.interactive
Permit or disable GCM from interacting with the user (showing GUI or TTY
prompts). If interaction is required but has been disabled, an error is returned.
This can be helpful when using GCM in headless and unattended environments, such
as build servers, where it would be preferable to fail than to hang indefinitely
waiting for a non-existent user.
To disable interactivity set this to `false` or `0`.
#### Compatibility
In previous versions of GCM this setting had a different behavior and accepted
other values. The following table summarizes the change in behavior and the
mapping of older values such as `never`:
Value(s)|Old meaning|New meaning
-|-|-
`auto`|Prompt if required – use cached credentials if possible|_(unchanged)_
`never`, `false`| Never prompt – fail if interaction is required|_(unchanged)_
`always`, `force`, `true`|Always prompt – don't use cached credentials|Prompt if required (same as the old `auto` value)
#### Example
```shell
git config --global credential.interactive false
```
Defaults to enabled.
**Also see: [GCM_INTERACTIVE][gcm-interactive]**
---
### credential.trace
Enables trace logging of all activities.
Configuring Git and GCM to trace to the same location is often desirable, and
GCM is compatible and cooperative with `GIT_TRACE`.
#### Example
```shell
git config --global credential.trace /tmp/git.log
```
If the value of `credential.trace` is a full path to a file in an existing
directory, logs are appended to the file.
If the value of `credential.trace` is `true` or `1`, logs are written to
standard error.
Defaults to disabled.
**Also see: [GCM_TRACE][gcm-trace]**
---
### credential.traceSecrets
Enables tracing of secret and sensitive information, which is by default masked
in trace output. Requires that `credential.trace` is also enabled.
#### Example
```shell
git config --global credential.traceSecrets true
```
If the value of `credential.traceSecrets` is `true` or `1`, trace logs will include
secret information.
Defaults to disabled.
**Also see: [GCM_TRACE_SECRETS][gcm-trace-secrets]**
---
### credential.traceMsAuth
Enables inclusion of Microsoft Authentication library (MSAL) logs in GCM trace
output. Requires that `credential.trace` is also enabled.
#### Example
```shell
git config --global credential.traceMsAuth true
```
If the value of `credential.traceMsAuth` is `true` or `1`, trace logs will
include verbose MSAL logs.
Defaults to disabled.
**Also see: [GCM_TRACE_MSAUTH][gcm-trace-msauth]**
---
### credential.debug
Pauses execution of GCM at launch to wait for a debugger to be attached.
#### Example
```shell
git config --global credential.debug true
```
Defaults to disabled.
**Also see: [GCM_DEBUG][gcm-debug]**
---
### credential.provider
Define the host provider to use when authenticating.
ID|Provider
-|-
`auto` _(default)_|_\[automatic\]_ ([learn more][autodetect])
`azure-repos`|Azure Repos
`github`|GitHub
`bitbucket`|Bitbucket
`gitlab`|GitLab _(supports OAuth in browser, personal access token and Basic Authentication)_
`generic`|Generic (any other provider not listed above)
Automatic provider selection is based on the remote URL.
This setting is typically used with a scoped URL to map a particular set of
remote URLs to providers, for example to mark a host as a GitHub Enterprise
instance.
#### Example
```shell
git config --global credential.ghe.contoso.com.provider github
```
**Also see: [GCM_PROVIDER][gcm-provider]**
---
### credential.authority _(deprecated)_
> This setting is deprecated and should be replaced by `credential.provider`
> with the corresponding provider ID value.
>
> See the [migration guide][provider-migrate] for more information.
Select the host provider to use when authenticating by which authority is
supported by the providers.
Authority|Provider(s)
-|-
`auto` _(default)_|_\[automatic\]_
`msa`, `microsoft`, `microsoftaccount`, `aad`, `azure`, `azuredirectory`, `live`, `liveconnect`, `liveid`|Azure Repos _(supports Microsoft Authentication)_
`github`|GitHub _(supports GitHub Authentication)_
`bitbucket`|Bitbucket.org _(supports Basic Authentication and OAuth)_, Bitbucket Server _(supports Basic Authentication)_
`gitlab`|GitLab _(supports OAuth in browser, personal access token and Basic Authentication)_
`basic`, `integrated`, `windows`, `kerberos`, `ntlm`, `tfs`, `sso`|Generic _(supports Basic and Windows Integrated Authentication)_
#### Example
```shell
git config --global credential.ghe.contoso.com.authority github
```
**Also see: [GCM_AUTHORITY][gcm-authority]**
---
### credential.guiPrompt
Permit or disable GCM from presenting GUI prompts. If an equivalent terminal/
text-based prompt is available, that will be shown instead.
To disable all interactivity see [credential.interactive][credential-interactive].
#### Example
```shell
git config --global credential.guiPrompt false
```
Defaults to enabled.
**Also see: [GCM_GUI_PROMPT][gcm-gui-prompt]**
---
### credential.guiSoftwareRendering
Force the use of software rendering for GUI prompts.
This is currently only applicable on Windows.
#### Example
```shell
git config --global credential.guiSoftwareRendering true
```
Defaults to false (use hardware acceleration where available).
> [!NOTE]
> Windows on ARM devices defaults to using software rendering to work around a
> known Avalonia issue: <https://github.com/AvaloniaUI/Avalonia/issues/10405>
**Also see: [GCM_GUI_SOFTWARE_RENDERING][gcm-gui-software-rendering]**
---
### credential.allowUnsafeRemotes
Allow transmitting credentials to unsafe remote URLs such as unencrypted HTTP
URLs. This setting is not recommended for general use and should only be used
when necessary.
Defaults false (disallow unsafe remote URLs).
#### Example
```shell
git config --global credential.allowUnsafeRemotes true
```
**Also see: [GCM_ALLOW_UNSAFE_REMOTES][gcm-allow-unsafe-remotes]**
---
### credential.autoDetectTimeout
Set the maximum length of time, in milliseconds, that GCM should wait for a
network response during host provider auto-detection probing.
See [auto-detection][auto-detection] for more information.
**Note:** Use a negative or zero value to disable probing altogether.
Defaults to 2000 milliseconds (2 seconds).
#### Example
```shell
git config --global credential.autoDetectTimeout -1
```
**Also see: [GCM_AUTODETECT_TIMEOUT][gcm-autodetect-timeout]**
---
### credential.allowWindowsAuth
Allow detection of Windows Integrated Authentication (WIA) support for generic
host providers. Setting this value to `false` will prevent the use of WIA and
force a basic authentication prompt when using the Generic host provider.
**Note:** WIA is only supported on Windows.
**Note:** WIA is an umbrella term for NTLM and Kerberos (and Negotiate).
Value|WIA detection
-|-
`true` _(default)_|Permitted
`false`|Not permitted
#### Example
```shell
git config --global credential.tfsonprem123.allowWindowsAuth false
```
**Also see: [GCM_ALLOW_WINDOWSAUTH][gcm-allow-windowsauth]**
---
### credential.httpProxy _(deprecated)_
> This setting is deprecated and should be replaced by the
> [standard `http.proxy` Git configuration option][git-config-http-proxy].
>
> See [HTTP Proxy][http-proxy] for more information.
Configure GCM to use the a proxy for network operations.
**Note:** Git itself does _not_ respect this setting; this affects GCM _only_.
#### Example
```shell
git config --global credential.httpsProxy http://john.doe:password@proxy.contoso.com
```
**Also see: [GCM_HTTP_PROXY][gcm-http-proxy]**
---
### credential.bitbucketAuthModes
Override the available authentication modes presented during Bitbucket
authentication. If this option is not set, then the available authentication
modes will be automatically detected.
**Note:** This setting only applies to Bitbucket.org, and not Server or DC
instances.
**Note:** This setting supports multiple values separated by commas.
Value|Authentication Mode
-|-
_(unset)_|Automatically detect modes
`oauth`|OAuth-based authentication
`basic`|Basic/PAT-based authentication
#### Example
```shell
git config --global credential.bitbucketAuthModes "oauth,basic"
```
**Also see: [GCM_BITBUCKET_AUTHMODES][gcm-bitbucket-authmodes]**
---
### credential.bitbucketAlwaysRefreshCredentials
Forces GCM to ignore any existing stored Basic Auth or OAuth access tokens and
always run through the process to refresh the credentials before returning them
to Git.
This is especially relevant to OAuth credentials. Bitbucket.org access tokens
expire after 2 hours, after that the refresh token must be used to get a new
access token.
Enabling this option will improve performance when using Oauth2 and interacting
with Bitbucket.org if, on average, commits are done less frequently than every
2 hours.
Enabling this option will decrease performance when using Basic Auth by
requiring the user the re-enter credentials every time.
Value|Refresh Credentials Before Returning
-|-
`true`, `1`, `yes`, `on` |Always
`false`, `0`, `no`, `off`_(default)_|Only when the credentials are found to be invalid
#### Example
```shell
git config --global credential.bitbucketAlwaysRefreshCredentials true
```
Defaults to false/disabled.
**Also see: [GCM_BITBUCKET_ALWAYS_REFRESH_CREDENTIALS][gcm-bitbucket-always-refresh-credentials]**
---
### credential.bitbucketValidateStoredCredentials
Forces GCM to validate any stored credentials before returning them to Git. It
does this by calling a REST API resource that requires authentication.
Disabling this option reduces the HTTP traffic within GCM when it is retrieving
credentials. This may improve user performance, but will increase the number of
times Git remote calls fail to authenticate with the host and therefore require
the user to re-try the Git remote call.
Enabling this option helps ensure Git is always provided with valid credentials.
Value|Validate credentials
-|-
`true`, `1`, `yes`, `on`_(default)_|Always
`false`, `0`, `no`, `off`|Never
#### Example
```shell
git config --global credential.bitbucketValidateStoredCredentials true
```
Defaults to true/enabled.
**Also see: [GCM_BITBUCKET_VALIDATE_STORED_CREDENTIALS](environment.md#GCM_BITBUCKET_VALIDATE_STORED_CREDENTIALS)**
---
### credential.bitbucketDataCenterOAuthClientId
To use OAuth with Bitbucket DC it is necessary to create an external, incoming
[AppLink](https://confluence.atlassian.com/bitbucketserver/configure-an-incoming-link-1108483657.html).
It is then necessary to configure the local GCM installation with both the OAuth
[ClientId](configuration.md#credential.bitbucketDataCenterOAuthClientId) and
[ClientSecret](configuration.md#credential.bitbucketDataCenterOauthSecret) from
the AppLink.
#### Example
```shell
git config --global credential.bitbucketDataCenterOAuthClientId 1111111111111111111
```
Defaults to undefined.
**Also see: [GCM_BITBUCKET_DATACENTER_CLIENTID](environment.md#GCM_BITBUCKET_DATACENTER_CLIENTID)**
---
### credential.bitbucketDataCenterOAuthClientSecret
To use OAuth with Bitbucket DC it is necessary to create an external, incoming
[AppLink](https://confluence.atlassian.com/bitbucketserver/configure-an-incoming-link-1108483657.html).
It is then necessary to configure the local GCM installation with both the OAuth
[ClientId](configuration.md#credential.bitbucketDataCenterOAuthClientId) and
[ClientSecret](configuration.md#credential.bitbucketDataCenterOauthSecret)
from the AppLink.
#### Example
```shell
git config --global credential.bitbucketDataCenterOAuthClientSecret 222222222222222222222
```
Defaults to undefined.
**Also see: [GCM_BITBUCKET_DATACENTER_CLIENTSECRET](environment.md#GCM_BITBUCKET_DATACENTER_CLIENTSECRET)**
---
### credential.gitHubAccountFiltering
Enable or disable automatic account filtering for GitHub based on server hints
when there are multiple available accounts. This setting is only applicable to
GitHub.com with [Enterprise Managed Users][github-emu].
Value|Description
-|-
`true` _(default)_|Filter available accounts based on server hints.
`false`|Show all available accounts.
#### Example
```shell
git config --global credential.gitHubAccountFiltering "false"
```
**Also see: [GCM_GITHUB_ACCOUNTFILTERING][gcm-github-accountfiltering]**
---
### credential.gitHubAuthModes
Override the available authentication modes presented during GitHub
authentication. If this option is not set, then the available authentication
modes will be automatically detected.
**Note:** This setting supports multiple values separated by commas.
Value|Authentication Mode
-|-
_(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 authentication using username and password
`pat`|Personal Access Token (pat)-based authentication
#### Example
```shell
git config --global credential.gitHubAuthModes "oauth,basic"
```
**Also see: [GCM_GITHUB_AUTHMODES][gcm-github-authmodes]**
---
### credential.gitLabAuthModes
Override the available authentication modes presented during GitLab
authentication. If this option is not set, then the available authentication
modes will be automatically detected.
**Note:** This setting supports multiple values separated by commas.
Value|Authentication Mode
-|-
_(unset)_|Automatically detect modes
`browser`|OAuth authentication via a web browser _(requires a GUI)_
`basic`|Basic authentication using username and password
`pat`|Personal Access Token (pat)-based authentication
#### Example
```shell
git config --global credential.gitLabAuthModes "browser"
```
**Also see: [GCM_GITLAB_AUTHMODES][gcm-gitlab-authmodes]**
---
### credential.namespace
Use a custom namespace prefix for credentials read and written in the OS
credential store. Credentials will be stored in the format
`{namespace}:{service}`.
Defaults to the value `git`.
#### Example
```shell
git config --global credential.namespace "my-namespace"
```
**Also see: [GCM_NAMESPACE][gcm-namespace]**
---
### credential.credentialStore
Select the type of credential store to use on supported platforms.
Default value on Windows is `wincredman`, on macOS is `keychain`, and is unset
on Linux.
**Note:** See more information about configuring secret stores in
[cred-stores][cred-stores].
Value|Credential Store|Platforms
-|-|-
_(unset)_|Windows: `wincredman`, macOS: `keychain`, Linux: _(none)_|-
`wincredman`|Windows Credential Manager (not available over SSH).|Windows
`dpapi`|DPAPI protected files. Customize the DPAPI store location with [credential.dpapiStorePath][credential-dpapistorepath]|Windows
`keychain`|macOS Keychain.|macOS
`secretservice`|[freedesktop.org Secret Service API][freedesktop-ss] via [libsecret][libsecret] (requires a graphical interface to unlock secret collections).|Linux
`gpg`|Use GPG to store encrypted files that are compatible with the [pass][pass] (requires GPG and `pass` to initialize the store).|macOS, Linux
`cache`|Git's built-in [credential cache][credential-cache].|macOS, Linux
`plaintext`|Store credentials in plaintext files (**UNSECURE**). Customize the plaintext store location with [`credential.plaintextStorePath`][credential-plaintextstorepath].|Windows, macOS, Linux
`none`|Do not store credentials via GCM.|Windows, macOS, Linux
#### Example
```bash
git config --global credential.credentialStore gpg
```
**Also see: [GCM_CREDENTIAL_STORE][gcm-credential-store]**
---
### credential.cacheOptions
Pass [options][cache-options] to the Git credential cache when
[`credential.credentialStore`][credential-credentialstore]
is set to `cache`. This allows you to select a different amount
of time to cache credentials (the default is 900 seconds) by passing
`"--timeout <seconds>"`. Use of other options like `--socket` is untested
and unsupported, but there's no reason it shouldn't work.
Defaults to empty.
#### Example
```shell
git config --global credential.cacheOptions "--timeout 300"
```
**Also see: [GCM_CREDENTIAL_CACHE_OPTIONS][gcm-credential-cache-options]**
---
### credential.plaintextStorePath
Specify a custom directory to store plaintext credential files in when
[`credential.credentialStore`][credential-credentialstore] is set to `plaintext`.
Defaults to the value `~/.gcm/store` or `%USERPROFILE%\.gcm\store`.
#### Example
```shell
git config --global credential.plaintextStorePath /mnt/external-drive/credentials
```
**Also see: [GCM_PLAINTEXT_STORE_PATH][gcm-plaintext-store-path]**
---
### credential.dpapiStorePath
Specify a custom directory to store DPAPI protected credential files in when
[`credential.credentialStore`][credential-credentialstore] is set to `dpapi`.
Defaults to the value `%USERPROFILE%\.gcm\dpapi_store`.
#### Example
```batch
git config --global credential.dpapiStorePath D:\credentials
```
**Also see: [GCM_DPAPI_STORE_PATH][gcm-dpapi-store-path]**
---
### credential.gpgPassStorePath
Specify a custom directory to store GPG-encrypted [pass][pass]-compatible credential files
in when [`credential.credentialStore`][credential-credentialstore] is set to `gpg`.
Defaults to the value `~/.password-store` or `%USERPROFILE%\.password-store`.
#### Example
```shell
git config --global credential.gpgPassStorePath /mnt/external-drive/.password-store
```
**Note:** Location of the password store used by [pass][pass] can be overridden by the
`PASSWORD_STORE_DIR` environment variable, see the [man page][pass-man] for details.
---
### credential.msauthFlow
Specify which authentication flow should be used when performing Microsoft
authentication and an interactive flow is required.
Defaults to `auto`.
**Note:** If [`credential.msauthUseBroker`][credential-msauthusebroker] is set
to `true` and the operating system authentication broker is available, all flows
will be delegated to the broker. If both of those things are true, then the
value of `credential.msauthFlow` has no effect.
Value|Authentication Flow
-|-
`auto` _(default)_|Select the best option depending on the current environment and platform.
`embedded`|Show a window with embedded web view control.
`system`|Open the user's default web browser.
`devicecode`|Show a device code.
#### Example
```shell
git config --global credential.msauthFlow devicecode
```
**Also see: [GCM_MSAUTH_FLOW][gcm-msauth-flow]**
---
### credential.msauthUseBroker _(experimental)_
Use the operating system account manager where available.
Defaults to `false`. In certain cloud hosted environments when using a work or
school account, such as [Microsoft DevBox][devbox], the default is `true`.
These defaults are subject to change in the future.
_**Note:** before you enable this option on Windows, please review the
[Windows Broker][wam] details for what this means to your local Windows user
account._
Value|Description
-|-
`true`|Use the operating system account manager as an authentication broker.
`false` _(default)_|Do not use the broker.
#### Example
```shell
git config --global credential.msauthUseBroker true
```
**Also see: [GCM_MSAUTH_USEBROKER][gcm-msauth-usebroker]**
---
### credential.msauthUseDefaultAccount _(experimental)_
Use the current operating system account by default when the broker is enabled.
Defaults to `false`. In certain cloud hosted environments when using a work or
school account, such as [Microsoft DevBox][devbox], the default is `true`.
These defaults are subject to change in the future.
Value|Description
-|-
`true`|Use the current operating system account by default.
`false` _(default)_|Do not assume any account to use by default.
#### Example
```shell
git config --global credential.msauthUseDefaultAccount true
```
**Also see: [GCM_MSAUTH_USEDEFAULTACCOUNT][gcm-msauth-usedefaultaccount]**
---
### credential.useHttpPath
Tells Git to pass the entire repository URL, rather than just the hostname, when
calling out to a credential provider. (This setting
[comes from Git itself][use-http-path], not GCM.)
Defaults to `false`.
**Note:** GCM sets this value to `true` for `dev.azure.com` (Azure Repos) hosts
after installation by default.
This is because `dev.azure.com` alone is not enough information to determine the
correct Azure authentication authority - we require a part of the path. The
fallout of this is that for `dev.azure.com` remote URLs we do not support
storing credentials against the full-path. We always store against the
`dev.azure.com/org-name` stub.
In order to use Azure Repos and store credentials against a full-path URL, you
must use the `org-name.visualstudio.com` remote URL format instead.
Value|Git Behavior
-|-
`false` _(default)_|Git will use only `user` and `hostname` to look up credentials.
`true`|Git will use the full repository URL to look up credentials.
#### Example
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)
https://github.com/foo/bar
https://github.com/contoso/widgets
https://alice@github.com/contoso/widgets
```
```text
Credential: "git:https://bob@github.com" (user = bob)
https://bob@github.com/foo/bar
https://bob@github.com/example/myrepo
```
Under the same user but with `credential.useHttpPath` set to `true`, these
credentials would be used:
```text
Credential: "git:https://github.com/foo/bar" (user = alice)
https://github.com/foo/bar
```
```text
Credential: "git:https://github.com/contoso/widgets" (user = alice)
https://github.com/contoso/widgets
https://alice@github.com/contoso/widgets
```
```text
Credential: "git:https://bob@github.com/foo/bar" (user = bob)
https://bob@github.com/foo/bar
```
```text
Credential: "git:https://bob@github.com/example/myrepo" (user = bob)
https://bob@github.com/example/myrepo
```
---
### credential.azreposCredentialType
Specify the type of credential the Azure Repos host provider should return.
Defaults to the value `pat`. In certain cloud hosted environments when using a
work or school account, such as [Microsoft DevBox][devbox], the default value is
`oauth`.
Value|Description
-|-
`pat`|Azure DevOps personal access tokens
`oauth`|Microsoft identity OAuth tokens (AAD or MSA tokens)
Here is more information about [Azure Access tokens][azure-tokens].
#### Example
```shell
git config --global credential.azreposCredentialType oauth
```
**Also see: [GCM_AZREPOS_CREDENTIALTYPE][gcm-azrepos-credentialtype]**
---
### credential.azreposManagedIdentity
Use a [Managed Identity][managed-identity] to authenticate with Azure Repos.
The value `system` will tell GCM to use the system-assigned Managed Identity.
To specify a user-assigned Managed Identity, use the format `id://{clientId}`
where `{clientId}` is the client ID of the Managed Identity. Alternatively any
GUID-like value will also be interpreted as a user-assigned Managed Identity
client ID.
To specify a Managed Identity associated with an Azure resource, you can use the
format `resource://{resourceId}` where `{resourceId}` is the ID of the resource.
For more information about managed identities, see the Azure DevOps
[documentation][azrepos-sp-mid].
Value|Description
-|-
`system`|System-Assigned Managed Identity
`[guid]`|User-Assigned Managed Identity with the specified client ID
`id://[guid]`|User-Assigned Managed Identity with the specified client ID
`resource://[guid]`|User-Assigned Ma
gitextract_0a_1gga6/
├── .azure-pipelines/
│ └── release.yml
├── .code-coverage/
│ └── coverlet.settings.xml
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── auth-issue.yml
│ │ └── feature-req.yml
│ ├── dependabot.yml
│ └── workflows/
│ ├── codeql-analysis.yml
│ ├── continuous-integration.yml
│ ├── lint-docs.yml
│ ├── maintainer-absence.yml
│ └── validate-install-from-source.yml
├── .gitignore
├── .lycheeignore
├── .markdownlint.jsonc
├── .vscode/
│ ├── launch.json
│ └── tasks.json
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Directory.Build.props
├── Directory.Build.targets
├── Git-Credential-Manager.sln
├── Git-Credential-Manager.sln.DotSettings
├── LICENSE
├── NOTICE
├── README.md
├── SECURITY.md
├── VERSION
├── assets/
│ └── gcm.xaml
├── build/
│ ├── GCM.MSBuild.csproj
│ ├── GCM.tasks
│ ├── GenerateWindowsAppManifest.cs
│ └── GetVersion.cs
├── docs/
│ ├── README.md
│ ├── architecture.md
│ ├── autodetect.md
│ ├── azrepos-misp.md
│ ├── azrepos-users-and-tokens.md
│ ├── bitbucket-authentication.md
│ ├── bitbucket-development.md
│ ├── configuration.md
│ ├── credstores.md
│ ├── development.md
│ ├── enterprise-config.md
│ ├── environment.md
│ ├── faq.md
│ ├── generic-oauth.md
│ ├── github-apideprecation.md
│ ├── gitlab.md
│ ├── hostprovider.md
│ ├── install.md
│ ├── linux-fromsrc-uninstall.md
│ ├── linux-validate-gpg.md
│ ├── migration.md
│ ├── multiple-users.md
│ ├── netconfig.md
│ ├── ntlm-kerberos.md
│ ├── rename.md
│ ├── usage.md
│ ├── windows-broker.md
│ └── wsl.md
├── global.json
├── nuget.config
└── src/
├── linux/
│ ├── Directory.Build.props
│ └── Packaging.Linux/
│ ├── Packaging.Linux.csproj
│ ├── build.sh
│ ├── install-from-source.sh
│ ├── layout.sh
│ └── pack.sh
├── osx/
│ ├── .gitignore
│ ├── Directory.Build.props
│ └── Installer.Mac/
│ ├── Installer.Mac.csproj
│ ├── build.sh
│ ├── codesign.sh
│ ├── dist.sh
│ ├── distribution.arm64.xml
│ ├── distribution.x64.xml
│ ├── entitlements.xml
│ ├── layout.sh
│ ├── notarize.sh
│ ├── pack.sh
│ ├── resources/
│ │ └── en.lproj/
│ │ ├── conclusion.html
│ │ └── welcome.html
│ ├── scripts/
│ │ └── postinstall
│ └── uninstall.sh
├── shared/
│ ├── Atlassian.Bitbucket/
│ │ ├── Atlassian.Bitbucket.csproj
│ │ ├── AuthenticationMethod.cs
│ │ ├── BitbucketAuthentication.cs
│ │ ├── BitbucketConstants.cs
│ │ ├── BitbucketHelper.cs
│ │ ├── BitbucketHostProvider.cs
│ │ ├── BitbucketOAuth2Client.cs
│ │ ├── BitbucketResources.Designer.cs
│ │ ├── BitbucketResources.resx
│ │ ├── BitbucketRestApiRegistry.cs
│ │ ├── BitbucketTokenEndpointResponseJson.cs
│ │ ├── Cloud/
│ │ │ ├── BitbucketOAuth2Client.cs
│ │ │ ├── BitbucketRestApi.cs
│ │ │ ├── CloudConstants.cs
│ │ │ └── UserInfo.cs
│ │ ├── DataCenter/
│ │ │ ├── BitbucketOAuth2Client.cs
│ │ │ ├── BitbucketRestApi.cs
│ │ │ ├── DataCenterConstants.cs
│ │ │ ├── LoginOption.cs
│ │ │ ├── LoginOptions.cs
│ │ │ └── UserInfo.cs
│ │ ├── IBitbucketRestApi.cs
│ │ ├── IRegistry.cs
│ │ ├── IUserInfo.cs
│ │ ├── InternalsVisibleTo.cs
│ │ ├── OAuth2ClientRegistry.cs
│ │ ├── RestApiResult.cs
│ │ └── UI/
│ │ ├── Commands/
│ │ │ └── CredentialsCommand.cs
│ │ ├── ViewModels/
│ │ │ └── CredentialsViewModel.cs
│ │ └── Views/
│ │ ├── CredentialsView.axaml
│ │ └── CredentialsView.axaml.cs
│ ├── Atlassian.Bitbucket.Tests/
│ │ ├── Atlassian.Bitbucket.Tests.csproj
│ │ ├── BitbucketAuthenticationTest.cs
│ │ ├── BitbucketHelperTest.cs
│ │ ├── BitbucketHostProviderTest.cs
│ │ ├── BitbucketRestApiRegistryTest.cs
│ │ ├── BitbucketTokenEndpointResponseJsonTest.cs
│ │ ├── Cloud/
│ │ │ ├── BitbucketOAuth2ClientTest.cs
│ │ │ ├── BitbucketRestApiTest.cs
│ │ │ └── UserInfoTest.cs
│ │ ├── DataCenter/
│ │ │ ├── BitbucketOAuth2ClientTest.cs
│ │ │ ├── BitbucketRestApiTest.cs
│ │ │ ├── LoginOptionsTest.cs
│ │ │ └── UserInfoTest.cs
│ │ └── OAuth2ClientRegistryTest.cs
│ ├── Core/
│ │ ├── Application.cs
│ │ ├── ApplicationBase.cs
│ │ ├── AssemblyUtils.cs
│ │ ├── Authentication/
│ │ │ ├── AuthenticationBase.cs
│ │ │ ├── BasicAuthentication.cs
│ │ │ ├── MicrosoftAuthentication.cs
│ │ │ ├── OAuth/
│ │ │ │ ├── HttpListenerExtensions.cs
│ │ │ │ ├── IOAuth2WebBrowser.cs
│ │ │ │ ├── Json/
│ │ │ │ │ ├── DeviceAuthorizationEndpointResponseJson.cs
│ │ │ │ │ ├── ErrorResponseJson.cs
│ │ │ │ │ └── TokenEndpointResponseJson.cs
│ │ │ │ ├── OAuth2AuthorizationCodeResult.cs
│ │ │ │ ├── OAuth2Client.cs
│ │ │ │ ├── OAuth2Constants.cs
│ │ │ │ ├── OAuth2CryptographicGenerator.cs
│ │ │ │ ├── OAuth2DeviceCodeResult.cs
│ │ │ │ ├── OAuth2Exception.cs
│ │ │ │ ├── OAuth2ServerEndpoints.cs
│ │ │ │ ├── OAuth2SystemWebBrowser.cs
│ │ │ │ └── OAuth2TokenResult.cs
│ │ │ ├── OAuthAuthentication.cs
│ │ │ └── WindowsIntegratedAuthentication.cs
│ │ ├── Base64UrlConvert.cs
│ │ ├── ChildProcess.cs
│ │ ├── CommandContext.cs
│ │ ├── CommandExtensions.cs
│ │ ├── Commands/
│ │ │ ├── ConfigurationCommands.cs
│ │ │ ├── DiagnoseCommand.cs
│ │ │ ├── EraseCommand.cs
│ │ │ ├── GetCommand.cs
│ │ │ ├── GitCommandBase.cs
│ │ │ ├── ProviderCommand.cs
│ │ │ └── StoreCommand.cs
│ │ ├── ConfigurationService.cs
│ │ ├── Constants.cs
│ │ ├── ConvertUtils.cs
│ │ ├── Core.csproj
│ │ ├── Credential.cs
│ │ ├── CredentialCacheStore.cs
│ │ ├── CredentialStore.cs
│ │ ├── CurlCookie.cs
│ │ ├── Diagnostics/
│ │ │ ├── CredentialStoreDiagnostic.cs
│ │ │ ├── Diagnostic.cs
│ │ │ ├── EnvironmentDiagnostic.cs
│ │ │ ├── FileSystemDiagnostic.cs
│ │ │ ├── GitDiagnostic.cs
│ │ │ ├── IDiagnosticProvider.cs
│ │ │ ├── MicrosoftAuthenticationDiagnostic.cs
│ │ │ └── NetworkingDiagnostic.cs
│ │ ├── DictionaryExtensions.cs
│ │ ├── DisposableObject.cs
│ │ ├── EncodingEx.cs
│ │ ├── EnsureArgument.cs
│ │ ├── EnumerableExtensions.cs
│ │ ├── EnvironmentBase.cs
│ │ ├── FileCredential.cs
│ │ ├── FileSystem.cs
│ │ ├── GenericHostProvider.cs
│ │ ├── GenericOAuthConfig.cs
│ │ ├── Git.cs
│ │ ├── GitConfiguration.cs
│ │ ├── GitConfigurationEntry.cs
│ │ ├── GitConfigurationKeyComparer.cs
│ │ ├── GitStreamReader.cs
│ │ ├── GitVersion.cs
│ │ ├── Gpg.cs
│ │ ├── HostProvider.cs
│ │ ├── HostProviderRegistry.cs
│ │ ├── HttpClientExtensions.cs
│ │ ├── HttpClientFactory.cs
│ │ ├── HttpContentExtensions.cs
│ │ ├── HttpRequestExtensions.cs
│ │ ├── ICredentialStore.cs
│ │ ├── ISessionManager.cs
│ │ ├── ISystemPrompts.cs
│ │ ├── ITerminal.cs
│ │ ├── ITrace2Writer.cs
│ │ ├── IniFile.cs
│ │ ├── InputArguments.cs
│ │ ├── InternalsVisibleTo.cs
│ │ ├── Interop/
│ │ │ ├── InteropException.cs
│ │ │ ├── InteropUtils.cs
│ │ │ ├── Linux/
│ │ │ │ ├── LinuxConfigParser.cs
│ │ │ │ ├── LinuxFileSystem.cs
│ │ │ │ ├── LinuxSessionManager.cs
│ │ │ │ ├── LinuxSettings.cs
│ │ │ │ ├── LinuxTerminal.cs
│ │ │ │ ├── Native/
│ │ │ │ │ ├── Glib.cs
│ │ │ │ │ ├── Gobject.cs
│ │ │ │ │ ├── Libsecret.cs
│ │ │ │ │ └── termios_Linux.cs
│ │ │ │ ├── SecretServiceCollection.cs
│ │ │ │ └── SecretServiceCredential.cs
│ │ │ ├── MacOS/
│ │ │ │ ├── MacOSEnvironment.cs
│ │ │ │ ├── MacOSFileSystem.cs
│ │ │ │ ├── MacOSKeychain.cs
│ │ │ │ ├── MacOSKeychainCredential.cs
│ │ │ │ ├── MacOSPreferences.cs
│ │ │ │ ├── MacOSSessionManager.cs
│ │ │ │ ├── MacOSSettings.cs
│ │ │ │ ├── MacOSTerminal.cs
│ │ │ │ └── Native/
│ │ │ │ ├── CoreFoundation.cs
│ │ │ │ ├── LibC.cs
│ │ │ │ ├── LibSystem.cs
│ │ │ │ ├── SecurityFramework.cs
│ │ │ │ └── termios_MacOS.cs
│ │ │ ├── Posix/
│ │ │ │ ├── GpgPassCredentialStore.cs
│ │ │ │ ├── Native/
│ │ │ │ │ ├── Fcntl.cs
│ │ │ │ │ ├── Signal.cs
│ │ │ │ │ ├── Stat.cs
│ │ │ │ │ ├── Stdio.cs
│ │ │ │ │ ├── Stdlib.cs
│ │ │ │ │ ├── Termios.cs
│ │ │ │ │ └── Unistd.cs
│ │ │ │ ├── PosixEnvironment.cs
│ │ │ │ ├── PosixFileDescriptor.cs
│ │ │ │ ├── PosixFileSystem.cs
│ │ │ │ ├── PosixSessionManager.cs
│ │ │ │ └── PosixTerminal.cs
│ │ │ ├── U8StringConverter.cs
│ │ │ ├── U8StringMarshaler.cs
│ │ │ └── Windows/
│ │ │ ├── DpapiCredentialStore.cs
│ │ │ ├── Native/
│ │ │ │ ├── Advapi32.cs
│ │ │ │ ├── CredUi.cs
│ │ │ │ ├── Kernel32.cs
│ │ │ │ ├── Ole32.cs
│ │ │ │ ├── Shell32.cs
│ │ │ │ ├── User32.cs
│ │ │ │ └── Win32Error.cs
│ │ │ ├── WindowsCredential.cs
│ │ │ ├── WindowsCredentialManager.cs
│ │ │ ├── WindowsEnvironment.cs
│ │ │ ├── WindowsFileSystem.cs
│ │ │ ├── WindowsProcessManager.cs
│ │ │ ├── WindowsSessionManager.cs
│ │ │ ├── WindowsSettings.cs
│ │ │ ├── WindowsSystemPrompts.cs
│ │ │ └── WindowsTerminal.cs
│ │ ├── NameValueCollectionExtensions.cs
│ │ ├── NullCredentialStore.cs
│ │ ├── PlaintextCredentialStore.cs
│ │ ├── PlatformUtils.cs
│ │ ├── ProcessManager.cs
│ │ ├── Settings.cs
│ │ ├── StandardStreams.cs
│ │ ├── StreamExtensions.cs
│ │ ├── StringExtensions.cs
│ │ ├── TerminalMenu.cs
│ │ ├── Trace.cs
│ │ ├── Trace2.cs
│ │ ├── Trace2CollectorWriter.cs
│ │ ├── Trace2Exception.cs
│ │ ├── Trace2FileWriter.cs
│ │ ├── Trace2Message.cs
│ │ ├── Trace2StreamWriter.cs
│ │ ├── TraceUtils.cs
│ │ ├── UI/
│ │ │ ├── Assets/
│ │ │ │ ├── Base.axaml
│ │ │ │ ├── ButtonHyperlink.axaml
│ │ │ │ ├── Controls.axaml
│ │ │ │ └── Images.axaml
│ │ │ ├── AvaloniaApp.axaml
│ │ │ ├── AvaloniaApp.axaml.cs
│ │ │ ├── AvaloniaUi.cs
│ │ │ ├── Commands/
│ │ │ │ ├── CredentialsCommand.cs
│ │ │ │ ├── DefaultAccountCommand.cs
│ │ │ │ ├── DeviceCodeCommand.cs
│ │ │ │ └── OAuthCommand.cs
│ │ │ ├── Controls/
│ │ │ │ ├── AboutWindow.axaml
│ │ │ │ ├── AboutWindow.axaml.cs
│ │ │ │ ├── DialogWindow.axaml
│ │ │ │ ├── DialogWindow.axaml.cs
│ │ │ │ ├── IFocusable.cs
│ │ │ │ ├── ProgressWindow.axaml
│ │ │ │ └── ProgressWindow.axaml.cs
│ │ │ ├── Converters/
│ │ │ │ ├── BoolConvertersEx.cs
│ │ │ │ └── WindowClientAreaConverters.cs
│ │ │ ├── Dispatcher.cs
│ │ │ ├── HelperApplication.cs
│ │ │ ├── HelperCommand.cs
│ │ │ ├── RelayCommand.cs
│ │ │ ├── ViewModels/
│ │ │ │ ├── CredentialsViewModel.cs
│ │ │ │ ├── DefaultAccountViewModel.cs
│ │ │ │ ├── DeviceCodeViewModel.cs
│ │ │ │ ├── EnableNtlmViewModel.cs
│ │ │ │ ├── OAuthViewModel.cs
│ │ │ │ ├── ViewModel.cs
│ │ │ │ └── WindowViewModel.cs
│ │ │ └── Views/
│ │ │ ├── CredentialsView.axaml
│ │ │ ├── CredentialsView.axaml.cs
│ │ │ ├── DefaultAccountView.axaml
│ │ │ ├── DefaultAccountView.axaml.cs
│ │ │ ├── DeviceCodeView.axaml
│ │ │ ├── DeviceCodeView.axaml.cs
│ │ │ ├── EnableNtlmView.axaml
│ │ │ ├── EnableNtlmView.cs
│ │ │ ├── OAuthView.axaml
│ │ │ └── OAuthView.axaml.cs
│ │ ├── UriExtensions.cs
│ │ ├── WslUtils.cs
│ │ └── X509Utils.cs
│ ├── Core.Tests/
│ │ ├── ApplicationTests.cs
│ │ ├── Authentication/
│ │ │ ├── AuthenticationBaseTests.cs
│ │ │ ├── BasicAuthenticationTests.cs
│ │ │ ├── MicrosoftAuthenticationTests.cs
│ │ │ ├── OAuth2ClientTests.cs
│ │ │ ├── OAuth2CryptographicCodeGeneratorTests.cs
│ │ │ ├── OAuth2SystemWebBrowserTests.cs
│ │ │ └── WindowsIntegratedAuthenticationTests.cs
│ │ ├── Base64UrlConvertTests.cs
│ │ ├── Commands/
│ │ │ ├── ConfigureCommandTests.cs
│ │ │ ├── DiagnoseCommandTests.cs
│ │ │ ├── EraseCommandTests.cs
│ │ │ ├── GetCommandTests.cs
│ │ │ ├── GitCommandBaseTests.cs
│ │ │ ├── StoreCommandTests.cs
│ │ │ └── UnconfigureCommandTests.cs
│ │ ├── ConfigurationServiceTests.cs
│ │ ├── Core.Tests.csproj
│ │ ├── CurlCookieTests.cs
│ │ ├── EnsureArgumentTests.cs
│ │ ├── EnumerableExtensionsTests.cs
│ │ ├── EnvironmentTests.cs
│ │ ├── GenericHostProviderTests.cs
│ │ ├── GenericOAuthConfigTests.cs
│ │ ├── GitConfigurationKeyComparerTests.cs
│ │ ├── GitConfigurationTests.cs
│ │ ├── GitStreamReaderTests.cs
│ │ ├── GitTests.cs
│ │ ├── GitVersionTests.cs
│ │ ├── HostProviderRegistryTests.cs
│ │ ├── HostProviderTests.cs
│ │ ├── HttpClientExtensionsTests.cs
│ │ ├── HttpClientFactoryTests.cs
│ │ ├── HttpRequestExtensionsTests.cs
│ │ ├── IniFileTests.cs
│ │ ├── InputArgumentsTests.cs
│ │ ├── Interop/
│ │ │ ├── Linux/
│ │ │ │ ├── LinuxConfigParserTests.cs
│ │ │ │ ├── LinuxFileSystemTests.cs
│ │ │ │ ├── LinuxSettingsTests.cs
│ │ │ │ └── SecretServiceCollectionTests.cs
│ │ │ ├── MacOS/
│ │ │ │ ├── MacOSFileSystemTests.cs
│ │ │ │ ├── MacOSKeychainTests.cs
│ │ │ │ └── MacOSPreferencesTests.cs
│ │ │ ├── Posix/
│ │ │ │ ├── GnuPassCredentialStoreTests.cs
│ │ │ │ └── PosixFileSystemTests.cs
│ │ │ ├── U8StringConverterTests.cs
│ │ │ └── Windows/
│ │ │ ├── DpapiCredentialStoreTests.cs
│ │ │ ├── WindowsCredentialManagerTests.cs
│ │ │ ├── WindowsFileSystemTests.cs
│ │ │ └── WindowsSystemPromptsTests.cs
│ │ ├── PlaintextCredentialStoreTests.cs
│ │ ├── ProcessManagerTests.cs
│ │ ├── SettingsTests.cs
│ │ ├── StreamExtensionsTests.cs
│ │ ├── StringExtensionsTests.cs
│ │ ├── TestProcessManager.cs
│ │ ├── TokenEndpointResponseJsonTest.cs
│ │ ├── Trace2MessageTests.cs
│ │ ├── Trace2Tests.cs
│ │ ├── TraceTests.cs
│ │ ├── TraceUtilsTests.cs
│ │ ├── UriExtensionsTests.cs
│ │ └── WslUtilsTests.cs
│ ├── Directory.Build.props
│ ├── DotnetTool/
│ │ ├── DotnetTool.csproj
│ │ ├── DotnetToolSettings.xml
│ │ ├── dotnet-tool.nuspec
│ │ ├── layout.ps1
│ │ └── pack.ps1
│ ├── Git-Credential-Manager/
│ │ ├── Git-Credential-Manager.csproj
│ │ ├── NOTICE
│ │ └── Program.cs
│ ├── GitHub/
│ │ ├── AuthenticationResult.cs
│ │ ├── Diagnostics/
│ │ │ └── GitHubApiDiagnostic.cs
│ │ ├── GitHub.csproj
│ │ ├── GitHubAuthChallenge.cs
│ │ ├── GitHubAuthentication.cs
│ │ ├── GitHubConstants.cs
│ │ ├── GitHubHostProvider.Commands.cs
│ │ ├── GitHubHostProvider.cs
│ │ ├── GitHubOAuth2Client.cs
│ │ ├── GitHubResources.Designer.cs
│ │ ├── GitHubResources.resx
│ │ ├── GitHubRestApi.cs
│ │ ├── InternalsVisibleTo.cs
│ │ └── UI/
│ │ ├── Commands/
│ │ │ ├── CredentialsCommand.cs
│ │ │ ├── DeviceCommand.cs
│ │ │ ├── SelectAccountCommand.cs
│ │ │ └── TwoFactorCommand.cs
│ │ ├── Controls/
│ │ │ ├── HorizontalShadowDivider.axaml
│ │ │ ├── HorizontalShadowDivider.axaml.cs
│ │ │ ├── SixDigitInput.axaml
│ │ │ └── SixDigitInput.axaml.cs
│ │ ├── ViewModels/
│ │ │ ├── CredentialsViewModel.cs
│ │ │ ├── DeviceCodeViewModel.cs
│ │ │ ├── SelectAccountViewModel.cs
│ │ │ └── TwoFactorViewModel.cs
│ │ └── Views/
│ │ ├── CredentialsView.axaml
│ │ ├── CredentialsView.axaml.cs
│ │ ├── DeviceCodeView.axaml
│ │ ├── DeviceCodeView.axaml.cs
│ │ ├── SelectAccountView.axaml
│ │ ├── SelectAccountView.axaml.cs
│ │ ├── TwoFactorView.axaml
│ │ └── TwoFactorView.axaml.cs
│ ├── GitHub.Tests/
│ │ ├── GitHub.Tests.csproj
│ │ ├── GitHubAuthChallengeTests.cs
│ │ ├── GitHubAuthenticationTests.cs
│ │ ├── GitHubHostProviderTests.cs
│ │ └── GitHubRestApiTests.cs
│ ├── GitHub.UI.Avalonia/
│ │ └── Commands/
│ │ └── SelectAccountCommandImpl.cs
│ ├── GitLab/
│ │ ├── GitLab.csproj
│ │ ├── GitLabAuthentication.cs
│ │ ├── GitLabConstants.cs
│ │ ├── GitLabHostProvider.cs
│ │ ├── GitLabOAuth2Client.cs
│ │ ├── InternalsVisibleTo.cs
│ │ └── UI/
│ │ ├── Assets/
│ │ │ └── Images.axaml
│ │ ├── Commands/
│ │ │ └── CredentialsCommand.cs
│ │ ├── ViewModels/
│ │ │ └── CredentialsViewModel.cs
│ │ └── Views/
│ │ ├── CredentialsView.axaml
│ │ └── CredentialsView.axaml.cs
│ ├── GitLab.Tests/
│ │ ├── GitLab.Tests.csproj
│ │ ├── GitLabAuthenticationTests.cs
│ │ └── GitLabHostProviderTests.cs
│ ├── Microsoft.AzureRepos/
│ │ ├── AzureDevOpsAuthorityCache.cs
│ │ ├── AzureDevOpsConstants.cs
│ │ ├── AzureDevOpsRestApi.cs
│ │ ├── AzureReposBindingManager.cs
│ │ ├── AzureReposHostProvider.cs
│ │ ├── InternalsVisibleTo.cs
│ │ ├── Microsoft.AzureRepos.csproj
│ │ └── UriHelpers.cs
│ ├── Microsoft.AzureRepos.Tests/
│ │ ├── AzureDevOpsApiTests.cs
│ │ ├── AzureReposAuthorityCacheTests.cs
│ │ ├── AzureReposBindingManagerTests.cs
│ │ ├── AzureReposHostProviderTests.cs
│ │ ├── Microsoft.AzureRepos.Tests.csproj
│ │ └── UriHelpersTests.cs
│ └── TestInfrastructure/
│ ├── AssertEx.cs
│ ├── GitTestUtilities.cs
│ ├── Objects/
│ │ ├── NullTrace.cs
│ │ ├── TestCommandContext.cs
│ │ ├── TestCredentialStore.cs
│ │ ├── TestEnvironment.cs
│ │ ├── TestFileSystem.cs
│ │ ├── TestGit.cs
│ │ ├── TestGitConfiguration.cs
│ │ ├── TestGpg.cs
│ │ ├── TestHostProvider.cs
│ │ ├── TestHostProviderRegistry.cs
│ │ ├── TestHttpClientFactory.cs
│ │ ├── TestHttpMessageHandler.cs
│ │ ├── TestOAuth2Server.cs
│ │ ├── TestOAuth2WebBrowser.cs
│ │ ├── TestSessionManager.cs
│ │ ├── TestSettings.cs
│ │ ├── TestStandardStreams.cs
│ │ └── TestTerminal.cs
│ ├── PlatformAttributes.cs
│ ├── RestTestUtilities.cs
│ ├── TestInfrastructure.csproj
│ └── TestUtils.cs
└── windows/
├── Directory.Build.props
└── Installer.Windows/
├── Installer.Windows.csproj
├── Setup.iss
└── layout.ps1
Showing preview only (289K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2871 symbols across 362 files)
FILE: build/GenerateWindowsAppManifest.cs
class GenerateWindowsAppManifest (line 7) | public class GenerateWindowsAppManifest : Task
method Execute (line 18) | public override bool Execute()
FILE: build/GetVersion.cs
class GetVersion (line 7) | public class GetVersion : Task
method Execute (line 21) | public override bool Execute()
FILE: src/shared/Atlassian.Bitbucket.Tests/BitbucketAuthenticationTest.cs
class BitbucketAuthenticationTest (line 12) | public class BitbucketAuthenticationTest
method BitbucketAuthentication_GetCredentialsAsync_Basic_SucceedsAfterUserInput (line 14) | [Theory]
method BitbucketAuthentication_GetCredentialsAsync_OAuth_ReturnsOAuth (line 33) | [Fact]
method BitbucketAuthentication_GetCredentialsAsync_All_ShowsMenu_OAuthOption1 (line 49) | [Fact]
method BitbucketAuthentication_GetCredentialsAsync_All_ShowsMenu_BasicOption2 (line 67) | [Fact]
method BitbucketAuthentication_GetCredentialsAsync_All_NoDesktopSession_BasicOnly (line 91) | [Fact]
method BitbucketAuthentication_GetCredentialsAsync_AllModes_NoUser_BBCloud_HelperCmdLine (line 113) | [Fact]
method BitbucketAuthentication_GetCredentialsAsync_BasicOnly_User_BBCloud_HelperCmdLine (line 150) | [Fact]
method BitbucketAuthentication_GetCredentialsAsync_AllModes_NoUser_BBServerDC_HelperCmdLine (line 187) | [Fact]
FILE: src/shared/Atlassian.Bitbucket.Tests/BitbucketHelperTest.cs
class BitbucketHelperTest (line 6) | public class BitbucketHelperTest
method BitbucketHelper_IsBitbucketOrg_StringHost (line 8) | [Theory]
method BitbucketHelper_IsBitbucketOrg_Uri (line 25) | [Theory]
FILE: src/shared/Atlassian.Bitbucket.Tests/BitbucketHostProviderTest.cs
class BitbucketHostProviderTest (line 15) | public class BitbucketHostProviderTest
method BitbucketHostProvider_IsSupported (line 28) | [Theory]
method BitbucketHostProvider_IsSupported_WWWAuth (line 58) | [Theory]
method BitbucketHostProvider_IsSupported_FailsForNullInput (line 72) | [Fact]
method BitbucketHostProvider_IsSupported_FailsForNullHttpResponseMessage (line 80) | [Fact]
method BitbucketHostProvider_IsSupported_HttpResponseMessage (line 88) | [Theory]
method BitbucketHostProvider_GetCredentialAsync_Valid_Stored_Basic (line 104) | [Theory]
method GetBitbucketApi (line 138) | public Mock<IBitbucketRestApi> GetBitbucketApi()
method BitbucketHostProvider_GetCredentialAsync_Valid_Stored_OAuth (line 143) | [Theory]
method MockDCSSOEnabled (line 175) | private void MockDCSSOEnabled()
method BitbucketHostProvider_GetCredentialAsync_Valid_New_Basic (line 181) | [Theory]
method BitbucketHostProvider_GetCredentialAsync_Valid_New_OAuth (line 207) | [Theory]
method BitbucketHostProvider_GetCredentialAsync_MissingAT_OAuth_Refresh (line 235) | [Theory]
method BitbucketHostProvider_GetCredentialAsync_ExpiredAT_OAuth_Refresh (line 263) | [Theory]
method BitbucketHostProvider_GetCredentialAsync_PreconfiguredMode_OAuth_ValidRT_IsRespected (line 294) | [Theory]
method BitbucketHostProvider_GetCredentialAsync_AlwaysRefreshCredentials_OAuth_IsRespected (line 321) | [Theory]
method BitbucketHostProvider_GetCredentialAsync_AlwaysRefreshCredentials_Basic_IsRespected (line 350) | [Theory]
method BitbucketHostProvider_GetSupportedAuthenticationModes (line 379) | [Theory]
method BitbucketHostProvider_StoreCredentialAsync (line 409) | [Theory]
method BitbucketHostProvider_EraseCredentialAsync (line 426) | [Theory]
method MockInput (line 449) | private static InputArguments MockInput(string protocol, string host, ...
method VerifyOAuthFlowRan (line 459) | private void VerifyOAuthFlowRan(InputArguments input, string token)
method VerifyValidateBasicAuthCredentialsNeverRan (line 468) | private void VerifyValidateBasicAuthCredentialsNeverRan()
method VerifyValidateBasicAuthCredentialsRan (line 474) | private void VerifyValidateBasicAuthCredentialsRan(InputArguments inpu...
method VerifyValidateAccessTokenRan (line 480) | private void VerifyValidateAccessTokenRan(InputArguments input, string...
method VerifyInteractiveAuthRan (line 486) | private void VerifyInteractiveAuthRan(InputArguments input)
method VerifyInteractiveAuthNeverRan (line 493) | private void VerifyInteractiveAuthNeverRan()
method VerifyOAuthRefreshRan (line 498) | private void VerifyOAuthRefreshRan(InputArguments input, string refres...
method MockRemoteRefreshTokenValid (line 504) | private void MockRemoteRefreshTokenValid(InputArguments input, string ...
method MockPromptBasic (line 509) | private void MockPromptBasic(InputArguments input, string password)
method MockPromptOAuth (line 516) | private void MockPromptOAuth(InputArguments input)
method MockRemoteBasicValid (line 523) | private void MockRemoteBasicValid(InputArguments input, string password)
method MockRemoteAccessTokenExpired (line 533) | private void MockRemoteAccessTokenExpired(InputArguments input, string...
method MockRemoteAccessTokenValid (line 540) | private void MockRemoteAccessTokenValid(InputArguments input, string t...
method MockRemoteOAuthAccountIsInvalid (line 550) | private static void MockRemoteOAuthAccountIsInvalid(Mock<IBitbucketRes...
method MockStoredAccount (line 556) | private static void MockStoredAccount(TestCommandContext context, Inpu...
method MockStoredRefreshToken (line 563) | private static void MockStoredRefreshToken(TestCommandContext context,...
method MockRemoteOAuthTokenCreate (line 570) | private void MockRemoteOAuthTokenCreate(InputArguments input, string a...
method VerifyOAuthRefreshTokenStored (line 576) | private void VerifyOAuthRefreshTokenStored(TestCommandContext context,...
method MockRestApiRegistry (line 586) | private static Mock<IRegistry<IBitbucketRestApi>> MockRestApiRegistry(...
FILE: src/shared/Atlassian.Bitbucket.Tests/BitbucketRestApiRegistryTest.cs
class BitbucketRestApiRegistryTest (line 8) | public class BitbucketRestApiRegistryTest
method BitbucketRestApiRegistry_Get_ReturnsCloudApi_ForBitbucketOrg (line 13) | [Fact]
method BitbucketRestApiRegistry_Get_ReturnsDataCenterApi_ForBitbucketDC (line 36) | [Fact]
FILE: src/shared/Atlassian.Bitbucket.Tests/BitbucketTokenEndpointResponseJsonTest.cs
class BitbucketTokenEndpointResponseJsonTest (line 7) | public class BitbucketTokenEndpointResponseJsonTest
method BitbucketTokenEndpointResponseJson_Deserialize_Uses_Scopes (line 9) | [Fact]
FILE: src/shared/Atlassian.Bitbucket.Tests/Cloud/BitbucketOAuth2ClientTest.cs
class BitbucketOAuth2ClientTest (line 16) | public class BitbucketOAuth2ClientTest
method BitbucketOAuth2Client_GetAuthorizationCodeAsync_ReturnsCode (line 30) | [Fact]
method BitbucketOAuth2Client_GetAuthorizationCodeAsync_RespectsClientIdOverride_ReturnsCode (line 48) | [Theory]
method BitbucketOAuth2Client_GetDeviceCodeAsync (line 68) | [Fact]
method BitbucketOAuth2Client_GetRefreshTokenServiceName (line 76) | [Theory]
method VerifyAuthorizationCodeResult (line 95) | private void VerifyAuthorizationCodeResult(OAuth2AuthorizationCodeResu...
method GetBitbucketOAuth2Client (line 103) | private Bitbucket.Cloud.BitbucketOAuth2Client GetBitbucketOAuth2Client()
method MockCodeGenerator (line 111) | private void MockCodeGenerator()
method MockGetAuthenticationCodeAsync (line 118) | private void MockGetAuthenticationCodeAsync(Uri finalCallbackUri, stri...
method MockFinalCallbackUri (line 134) | private Uri MockFinalCallbackUri()
method MockeClientIdOverride (line 141) | private string MockeClientIdOverride(bool set)
method MockClientIdOverride (line 145) | private string MockClientIdOverride(bool set, string value)
FILE: src/shared/Atlassian.Bitbucket.Tests/Cloud/BitbucketRestApiTest.cs
class BitbucketRestApiTest (line 12) | public class BitbucketRestApiTest
method BitbucketRestApi_GetUserInformationAsync_ReturnsUserInfo_ForSuccessfulRequest (line 14) | [Theory]
FILE: src/shared/Atlassian.Bitbucket.Tests/Cloud/UserInfoTest.cs
class UserInfoTest (line 10) | public class UserInfoTest
method UserInfo_Set (line 12) | [Fact]
method Deserialize_UserInfo (line 23) | [Fact]
FILE: src/shared/Atlassian.Bitbucket.Tests/DataCenter/BitbucketOAuth2ClientTest.cs
class BitbucketOAuth2ClientTest (line 16) | public class BitbucketOAuth2ClientTest
method BitbucketOAuth2Client_GetAuthorizationCodeAsync_ReturnsCode (line 29) | [Fact]
method BitbucketOAuth2Client_GetAuthorizationCodeAsync_ReturnsCode_WhileRespectingRedirectUriOverride (line 49) | [Fact]
method VerifyAuthorizationCodeResult (line 70) | private void VerifyAuthorizationCodeResult(OAuth2AuthorizationCodeResu...
method GetBitbucketOAuth2Client (line 78) | private Bitbucket.DataCenter.BitbucketOAuth2Client GetBitbucketOAuth2C...
method MockCodeGenerator (line 86) | private void MockCodeGenerator()
method MockGetAuthenticationCodeAsync (line 93) | private void MockGetAuthenticationCodeAsync(string url, Uri redirectUr...
method MockFinalCallbackUri (line 109) | private Uri MockFinalCallbackUri(Uri redirectUri)
method MockRemoteUri (line 117) | private string MockRemoteUri(string value)
method MockClientIdOverride (line 123) | private string MockClientIdOverride(string value)
method MockClientSecretOverride (line 132) | private string MockClientSecretOverride(string value)
method MockRootCallbackUriOverride (line 141) | private string MockRootCallbackUriOverride(string value)
FILE: src/shared/Atlassian.Bitbucket.Tests/DataCenter/BitbucketRestApiTest.cs
class BitbucketRestApiTest (line 12) | public class BitbucketRestApiTest
method BitbucketRestApi_GetUserInformationAsync_ReturnsUserInfo_ForSuccessfulRequest_DoesNothing (line 14) | [Fact]
method BitbucketRestApi_IsOAuthInstalledAsync_ReflectsBitbucketAuthenticationResponse (line 39) | [Theory]
method BitbucketRestApi_GetAuthenticationMethodsAsync_ReflectRestApiResponse (line 67) | [Theory]
FILE: src/shared/Atlassian.Bitbucket.Tests/DataCenter/LoginOptionsTest.cs
class LoginOptionsTest (line 9) | public class LoginOptionsTest
method LoginOptions_Set (line 12) | [Fact]
FILE: src/shared/Atlassian.Bitbucket.Tests/DataCenter/UserInfoTest.cs
class UserInfoTest (line 7) | public class UserInfoTest
method UserInfo_Set (line 9) | [Fact]
FILE: src/shared/Atlassian.Bitbucket.Tests/OAuth2ClientRegistryTest.cs
class OAuth2ClientRegistryTest (line 12) | public class OAuth2ClientRegistryTest
method BitbucketRestApiRegistry_Get_ReturnsCloudOAuth2Client (line 19) | [Fact]
method BitbucketRestApiRegistry_Get_ReturnsDataCenterOAuth2Client_ForBitbucketDC (line 43) | [Fact]
method MockInputArguments (line 67) | private static InputArguments MockInputArguments(string host)
method MockHttpClientFactory (line 76) | private void MockHttpClientFactory()
method MockSettingOverride (line 82) | private string MockSettingOverride(string envKey, string configKey, st...
FILE: src/shared/Atlassian.Bitbucket/AuthenticationMethod.cs
type AuthenticationMethod (line 4) | public enum AuthenticationMethod
FILE: src/shared/Atlassian.Bitbucket/BitbucketAuthentication.cs
type AuthenticationModes (line 17) | [Flags]
type IBitbucketAuthentication (line 26) | public interface IBitbucketAuthentication : IDisposable
method GetCredentialsAsync (line 28) | Task<CredentialsPromptResult> GetCredentialsAsync(Uri targetUri, strin...
method CreateOAuthCredentialsAsync (line 29) | Task<OAuth2TokenResult> CreateOAuthCredentialsAsync(InputArguments inp...
method RefreshOAuthCredentialsAsync (line 30) | Task<OAuth2TokenResult> RefreshOAuthCredentialsAsync(InputArguments in...
method GetRefreshTokenServiceName (line 31) | string GetRefreshTokenServiceName(InputArguments input);
class CredentialsPromptResult (line 34) | public class CredentialsPromptResult
method CredentialsPromptResult (line 36) | public CredentialsPromptResult(AuthenticationModes mode)
method CredentialsPromptResult (line 41) | public CredentialsPromptResult(AuthenticationModes mode, ICredential c...
class BitbucketAuthentication (line 52) | public class BitbucketAuthentication : AuthenticationBase, IBitbucketAut...
method BitbucketAuthentication (line 61) | public BitbucketAuthentication(ICommandContext context)
method BitbucketAuthentication (line 64) | public BitbucketAuthentication(ICommandContext context, IRegistry<Bitb...
method GetCredentialsAsync (line 71) | public async Task<CredentialsPromptResult> GetCredentialsAsync(Uri tar...
method GetCredentialsViaUiAsync (line 108) | private async Task<CredentialsPromptResult> GetCredentialsViaUiAsync(
method GetCredentialsViaTty (line 148) | private CredentialsPromptResult GetCredentialsViaTty(Uri targetUri, st...
method GetCredentialsViaHelperAsync (line 202) | private async Task<CredentialsPromptResult> GetCredentialsViaHelperAsync(
method CreateOAuthCredentialsAsync (line 252) | public async Task<OAuth2TokenResult> CreateOAuthCredentialsAsync(Input...
method RefreshOAuthCredentialsAsync (line 269) | public async Task<OAuth2TokenResult> RefreshOAuthCredentialsAsync(Inpu...
method GetRefreshTokenServiceName (line 275) | public string GetRefreshTokenServiceName(InputArguments input)
method TryFindHelperCommand (line 281) | protected internal virtual bool TryFindHelperCommand(out string comman...
method Dispose (line 294) | public void Dispose()
FILE: src/shared/Atlassian.Bitbucket/BitbucketConstants.cs
class BitbucketConstants (line 5) | public static class BitbucketConstants
class EnvironmentVariables (line 13) | public static class EnvironmentVariables
class GitConfiguration (line 21) | public static class GitConfiguration
class Credential (line 23) | public static class Credential
class HelpUrls (line 31) | public static class HelpUrls
FILE: src/shared/Atlassian.Bitbucket/BitbucketHelper.cs
class BitbucketHelper (line 7) | public static class BitbucketHelper
method GetBaseUri (line 9) | public static string GetBaseUri(Uri remoteUri)
method IsBitbucketOrg (line 17) | public static bool IsBitbucketOrg(InputArguments input)
method IsBitbucketOrg (line 22) | public static bool IsBitbucketOrg(Uri targetUri)
method IsBitbucketOrg (line 27) | public static bool IsBitbucketOrg(string targetHost)
FILE: src/shared/Atlassian.Bitbucket/BitbucketHostProvider.cs
class BitbucketHostProvider (line 12) | public class BitbucketHostProvider : IHostProvider
method BitbucketHostProvider (line 18) | public BitbucketHostProvider(ICommandContext context)
method BitbucketHostProvider (line 21) | public BitbucketHostProvider(ICommandContext context, IBitbucketAuthen...
method IsSupported (line 40) | public bool IsSupported(InputArguments input)
method IsSupported (line 66) | public bool IsSupported(HttpResponseMessage response)
method GetCredentialAsync (line 81) | public async Task<GetCredentialResult> GetCredentialAsync(InputArgumen...
method GetStoredCredentials (line 101) | private async Task<ICredential> GetStoredCredentials(InputArguments in...
method GetRefreshedCredentials (line 134) | private async Task<ICredential> GetRefreshedCredentials(InputArguments...
method GetOAuthCredentialsViaRefreshFlow (line 203) | private async Task<ICredential> GetOAuthCredentialsViaRefreshFlow(Inpu...
method GetOAuthCredentialsViaInteractiveBrowserFlow (line 225) | private async Task<ICredential> GetOAuthCredentialsViaInteractiveBrows...
method SupportsOAuth (line 252) | private static bool SupportsOAuth(AuthenticationModes authModes)
method SupportsBasicAuth (line 257) | private static bool SupportsBasicAuth(AuthenticationModes authModes)
method GetSupportedAuthenticationModesAsync (line 262) | public async Task<AuthenticationModes> GetSupportedAuthenticationModes...
method StoreCredentialAsync (line 328) | public Task StoreCredentialAsync(InputArguments input)
method EraseCredentialAsync (line 343) | public Task EraseCredentialAsync(InputArguments input)
method ResolveOAuthUserNameAsync (line 368) | private async Task<string> ResolveOAuthUserNameAsync(InputArguments in...
method ResolveBasicAuthUserNameAsync (line 380) | private async Task<string> ResolveBasicAuthUserNameAsync(InputArgument...
method ValidateCredentialsWork (line 392) | private async Task<bool> ValidateCredentialsWork(InputArguments input,...
method GetServiceName (line 454) | private static string GetServiceName(Uri remoteUri)
method GetRefreshTokenServiceName (line 459) | internal /* for testing */ static string GetRefreshTokenServiceName(Ur...
method Dispose (line 472) | public void Dispose()
FILE: src/shared/Atlassian.Bitbucket/BitbucketOAuth2Client.cs
class BitbucketOAuth2Client (line 11) | public abstract class BitbucketOAuth2Client : OAuth2Client
method BitbucketOAuth2Client (line 13) | public BitbucketOAuth2Client(HttpClient httpClient,
method GetRefreshTokenServiceName (line 24) | public string GetRefreshTokenServiceName(InputArguments input)
method GetAuthorizationCodeAsync (line 35) | public Task<OAuth2AuthorizationCodeResult> GetAuthorizationCodeAsync(I...
method TryCreateTokenEndpointResult (line 40) | protected override bool TryCreateTokenEndpointResult(string json, out ...
FILE: src/shared/Atlassian.Bitbucket/BitbucketResources.Designer.cs
class BitbucketResources (line 15) | [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools....
method BitbucketResources (line 24) | [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.P...
FILE: src/shared/Atlassian.Bitbucket/BitbucketRestApiRegistry.cs
class BitbucketRestApiRegistry (line 6) | public class BitbucketRestApiRegistry : IRegistry<IBitbucketRestApi>
method BitbucketRestApiRegistry (line 12) | public BitbucketRestApiRegistry(ICommandContext context)
method Get (line 17) | public IBitbucketRestApi Get(InputArguments input)
method Dispose (line 27) | public void Dispose()
FILE: src/shared/Atlassian.Bitbucket/BitbucketTokenEndpointResponseJson.cs
class BitbucketTokenEndpointResponseJson (line 8) | [JsonConverter(typeof(BitbucketCustomTokenEndpointResponseJsonConverter))]
class BitbucketCustomTokenEndpointResponseJsonConverter (line 16) | public class BitbucketCustomTokenEndpointResponseJsonConverter : JsonCon...
method Read (line 18) | public override BitbucketTokenEndpointResponseJson Read(
method Write (line 69) | public override void Write(
FILE: src/shared/Atlassian.Bitbucket/Cloud/BitbucketOAuth2Client.cs
class BitbucketOAuth2Client (line 11) | public class BitbucketOAuth2Client : Bitbucket.BitbucketOAuth2Client
method BitbucketOAuth2Client (line 13) | public BitbucketOAuth2Client(HttpClient httpClient, ISettings settings...
method GetClientId (line 24) | private static string GetClientId(ISettings settings)
method GetRedirectUri (line 38) | private static Uri GetRedirectUri(ISettings settings)
method GetClientSecret (line 52) | private static string GetClientSecret(ISettings settings)
method GetEndpoints (line 66) | private static OAuth2ServerEndpoints GetEndpoints()
FILE: src/shared/Atlassian.Bitbucket/Cloud/BitbucketRestApi.cs
class BitbucketRestApi (line 11) | public class BitbucketRestApi : IBitbucketRestApi
method BitbucketRestApi (line 16) | public BitbucketRestApi(ICommandContext context)
method GetUserInformationAsync (line 23) | public async Task<RestApiResult<IUserInfo>> GetUserInformationAsync(st...
method IsOAuthInstalledAsync (line 60) | public Task<bool> IsOAuthInstalledAsync()
method GetAuthenticationMethodsAsync (line 65) | public Task<List<AuthenticationMethod>> GetAuthenticationMethodsAsync()
method Dispose (line 76) | public void Dispose()
FILE: src/shared/Atlassian.Bitbucket/Cloud/CloudConstants.cs
class CloudConstants (line 5) | public static class CloudConstants
class OAuthScopes (line 22) | public static class OAuthScopes
class EnvironmentVariables (line 33) | public static class EnvironmentVariables
class GitConfiguration (line 40) | public static class GitConfiguration
class Credential (line 42) | public static class Credential
FILE: src/shared/Atlassian.Bitbucket/Cloud/UserInfo.cs
class UserInfo (line 7) | public class UserInfo : IUserInfo
FILE: src/shared/Atlassian.Bitbucket/DataCenter/BitbucketOAuth2Client.cs
class BitbucketOAuth2Client (line 13) | public class BitbucketOAuth2Client : Bitbucket.BitbucketOAuth2Client
method BitbucketOAuth2Client (line 15) | public BitbucketOAuth2Client(HttpClient httpClient, ISettings settings...
method GetClientId (line 27) | private static string GetClientId(ISettings settings)
method GetRedirectUri (line 41) | private static Uri GetRedirectUri(ISettings settings)
method GetClientSecret (line 55) | private static string GetClientSecret(ISettings settings)
method GetEndpoints (line 69) | private static OAuth2ServerEndpoints GetEndpoints(ISettings settings)
FILE: src/shared/Atlassian.Bitbucket/DataCenter/BitbucketRestApi.cs
class BitbucketRestApi (line 13) | public class BitbucketRestApi : IBitbucketRestApi
method BitbucketRestApi (line 19) | public BitbucketRestApi(ICommandContext context)
method GetUserInformationAsync (line 27) | public async Task<RestApiResult<IUserInfo>> GetUserInformationAsync(st...
method IsOAuthInstalledAsync (line 73) | public async Task<bool> IsOAuthInstalledAsync()
method GetAuthenticationMethodsAsync (line 94) | public async Task<List<AuthenticationMethod>> GetAuthenticationMethods...
method Dispose (line 133) | public void Dispose()
FILE: src/shared/Atlassian.Bitbucket/DataCenter/DataCenterConstants.cs
class DataCenterConstants (line 5) | public static class DataCenterConstants
class OAuthScopes (line 7) | public static class OAuthScopes
class EnvironmentVariables (line 28) | public static class EnvironmentVariables
class GitConfiguration (line 35) | public static class GitConfiguration
class Credential (line 37) | public static class Credential
FILE: src/shared/Atlassian.Bitbucket/DataCenter/LoginOption.cs
class LoginOption (line 5) | public class LoginOption
FILE: src/shared/Atlassian.Bitbucket/DataCenter/LoginOptions.cs
class LoginOptions (line 6) | public class LoginOptions
FILE: src/shared/Atlassian.Bitbucket/DataCenter/UserInfo.cs
class UserInfo (line 5) | public class UserInfo : IUserInfo
FILE: src/shared/Atlassian.Bitbucket/IBitbucketRestApi.cs
type IBitbucketRestApi (line 7) | public interface IBitbucketRestApi : IDisposable
method GetUserInformationAsync (line 9) | Task<RestApiResult<IUserInfo>> GetUserInformationAsync(string userName...
method IsOAuthInstalledAsync (line 10) | Task<bool> IsOAuthInstalledAsync();
method GetAuthenticationMethodsAsync (line 11) | Task<List<AuthenticationMethod>> GetAuthenticationMethodsAsync();
FILE: src/shared/Atlassian.Bitbucket/IRegistry.cs
type IRegistry (line 6) | public interface IRegistry<T> : IDisposable
method Get (line 8) | T Get(InputArguments input);
FILE: src/shared/Atlassian.Bitbucket/IUserInfo.cs
type IUserInfo (line 4) | public interface IUserInfo
FILE: src/shared/Atlassian.Bitbucket/OAuth2ClientRegistry.cs
class OAuth2ClientRegistry (line 6) | public class OAuth2ClientRegistry : DisposableObject, IRegistry<Bitbucke...
method OAuth2ClientRegistry (line 14) | public OAuth2ClientRegistry(ICommandContext context)
method Get (line 20) | public BitbucketOAuth2Client Get(InputArguments input)
method ReleaseManagedResources (line 30) | protected override void ReleaseManagedResources()
FILE: src/shared/Atlassian.Bitbucket/RestApiResult.cs
class RestApiResult (line 5) | public class RestApiResult<T>
method RestApiResult (line 7) | public RestApiResult(HttpStatusCode statusCode)
method RestApiResult (line 10) | public RestApiResult(HttpStatusCode statusCode, T response)
FILE: src/shared/Atlassian.Bitbucket/UI/Commands/CredentialsCommand.cs
class CredentialsCommand (line 13) | public abstract class CredentialsCommand : HelperCommand
method CredentialsCommand (line 15) | protected CredentialsCommand(ICommandContext context)
method ExecuteAsync (line 33) | private async Task<int> ExecuteAsync(Uri url, string userName, bool sh...
method ShowAsync (line 76) | protected abstract Task ShowAsync(CredentialsViewModel viewModel, Canc...
FILE: src/shared/Atlassian.Bitbucket/UI/ViewModels/CredentialsViewModel.cs
class CredentialsViewModel (line 10) | public class CredentialsViewModel : WindowViewModel
method CredentialsViewModel (line 20) | public CredentialsViewModel()
method CredentialsViewModel (line 25) | public CredentialsViewModel(ISessionManager sessionManager)
method OnPropertyChanged (line 41) | private void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
method CanLogin (line 52) | private bool CanLogin()
method AcceptBasic (line 57) | private void AcceptBasic()
method AcceptOAuth (line 63) | private void AcceptOAuth()
method CanAcceptOAuth (line 69) | private bool CanAcceptOAuth()
method ForgotPassword (line 74) | private void ForgotPassword()
method SignUp (line 83) | private void SignUp()
FILE: src/shared/Atlassian.Bitbucket/UI/Views/CredentialsView.axaml.cs
class CredentialsView (line 9) | public partial class CredentialsView : UserControl, IFocusable
method CredentialsView (line 11) | public CredentialsView()
method SetFocus (line 16) | public void SetFocus()
FILE: src/shared/Core.Tests/ApplicationTests.cs
class ApplicationTests (line 8) | public class ApplicationTests
method Application_ConfigureAsync_NoHelpers_AddsEmptyAndGcm (line 10) | [Fact]
method Application_ConfigureAsync_Gcm_AddsEmptyBeforeGcm (line 28) | [Fact]
method Application_ConfigureAsync_EmptyAndGcm_DoesNothing (line 49) | [Fact]
method Application_ConfigureAsync_EmptyAndGcmWithOthersBefore_DoesNothing (line 73) | [Fact]
method Application_ConfigureAsync_EmptyAndGcmWithOthersAfter_DoesNothing (line 99) | [Fact]
method Application_ConfigureAsync_EmptyAndGcmWithOthersBeforeAndAfter_DoesNothing (line 125) | [Fact]
method Application_ConfigureAsync_EmptyAndGcmWithEmptyAfter_RemovesExistingGcmAndAddsEmptyAndGcm (line 153) | [Fact]
method Application_UnconfigureAsync_NoHelpers_DoesNothing (line 181) | [Fact]
method Application_UnconfigureAsync_Gcm_RemovesGcm (line 194) | [Fact]
method Application_UnconfigureAsync_EmptyAndGcm_RemovesEmptyAndGcm (line 210) | [Fact]
method Application_UnconfigureAsync_EmptyAndGcmWithOthersBefore_RemovesEmptyAndGcm (line 227) | [Fact]
method Application_UnconfigureAsync_EmptyAndGcmWithOthersAfterBefore_RemovesGcmOnly (line 251) | [Fact]
method Application_UnconfigureAsync_EmptyAndGcmWithOthersBeforeAndAfter_RemovesGcmOnly (line 276) | [Fact]
FILE: src/shared/Core.Tests/Authentication/AuthenticationBaseTests.cs
class AuthenticationBaseTests (line 6) | public class AuthenticationBaseTests
method AuthenticationBase_QuoteCmdArg (line 8) | [Theory]
FILE: src/shared/Core.Tests/Authentication/BasicAuthenticationTests.cs
class BasicAuthenticationTests (line 12) | public class BasicAuthenticationTests
method BasicAuthentication_GetCredentials_NullResource_ThrowsException (line 14) | [Fact]
method BasicAuthentication_GetCredentials_NonDesktopSession_ResourceAndUserName_PasswordPromptReturnsCredentials (line 23) | [Fact]
method BasicAuthentication_GetCredentials_NonDesktopSession_Resource_UserPassPromptReturnsCredentials (line 41) | [Fact]
method BasicAuthentication_GetCredentials_NonDesktopSession_NoTerminalPrompts_ThrowsException (line 60) | [Fact]
method BasicAuthentication_GetCredentials_DesktopSession_UIHelper_CallsHelper (line 76) | [Fact]
method BasicAuthentication_GetCredentials_DesktopSession_UIHelper_UserName_CallsHelper (line 122) | [Fact]
FILE: src/shared/Core.Tests/Authentication/MicrosoftAuthenticationTests.cs
class MicrosoftAuthenticationTests (line 10) | public class MicrosoftAuthenticationTests
method MicrosoftAuthentication_GetTokenForUserAsync_NoInteraction_ThrowsException (line 12) | [Fact]
method MicrosoftAuthentication_GetManagedIdentity_ValidSystemId_ReturnsSystemId (line 32) | [Theory]
method MicrosoftAuthentication_GetManagedIdentity_ValidUserIdByClientId_ReturnsUserId (line 49) | [Theory]
method MicrosoftAuthentication_GetManagedIdentity_Invalid_ThrowsArgumentException (line 65) | [Theory]
FILE: src/shared/Core.Tests/Authentication/OAuth2ClientTests.cs
class OAuth2ClientTests (line 12) | public class OAuth2ClientTests
method OAuth2Client_GetAuthorizationCodeAsync (line 18) | [Fact]
method OAuth2Client_GetAuthorizationCodeAsync_RedirectUrlOriginalStringPreserved (line 47) | [Theory]
method OAuth2Client_GetAuthorizationCodeAsync_ExtraQueryParams (line 96) | [Fact]
method OAuth2Client_GetAuthorizationCodeAsync_ExtraQueryParams_OverrideStandardArgs_ThrowsException (line 142) | [Fact]
method OAuth2Client_GetDeviceCodeAsync (line 177) | [Fact]
method OAuth2Client_GetTokenByAuthorizationCodeAsync (line 207) | [Fact]
method OAuth2Client_GetTokenByRefreshTokenAsync (line 242) | [Fact]
method OAuth2Client_GetTokenByDeviceCodeAsync (line 279) | [Fact]
method OAuth2Client_E2E_InteractiveWebFlowAndRefresh (line 326) | [Fact]
method OAuth2Client_E2E_DeviceFlowAndRefresh (line 376) | [Fact]
method CreateTestApplication (line 431) | private static OAuth2Application CreateTestApplication() => new OAuth2...
method CreateClient (line 437) | private static OAuth2Client CreateClient(HttpMessageHandler httpHandle...
method CreateEndpoints (line 445) | private static OAuth2ServerEndpoints CreateEndpoints(Uri baseUri)
FILE: src/shared/Core.Tests/Authentication/OAuth2CryptographicCodeGeneratorTests.cs
class OAuth2CryptographicCodeGeneratorTests (line 9) | public class OAuth2CryptographicCodeGeneratorTests
method OAuth2CryptographicCodeGenerator_CreateNonce_IsUnique (line 13) | [Fact]
method OAuth2CryptographicCodeGenerator_CreatePkceCodeVerifier_IsUniqueBase64UrlStringWithoutPaddingAndLengthBetween43And128 (line 30) | [Fact]
method OAuth2CryptographicCodeGenerator_CreatePkceCodeChallenge_Plain_ReturnsVerifierUnchanged (line 56) | [Fact]
method OAuth2CryptographicCodeGenerator_CreatePkceCodeChallenge_Sha256_ReturnsBase64UrlEncodedSha256HashOfAsciiVerifier (line 67) | [Fact]
FILE: src/shared/Core.Tests/Authentication/OAuth2SystemWebBrowserTests.cs
class OAuth2SystemWebBrowserTests (line 8) | public class OAuth2SystemWebBrowserTests
method OAuth2SystemWebBrowser_UpdateRedirectUri_NonLoopback_ThrowsError (line 10) | [Fact]
method OAuth2SystemWebBrowser_UpdateRedirectUri_SpecificPort (line 20) | [Theory]
method OAuth2SystemWebBrowser_UpdateRedirectUri_AnyPort (line 40) | [Theory]
FILE: src/shared/Core.Tests/Authentication/WindowsIntegratedAuthenticationTests.cs
class WindowsIntegratedAuthenticationTests (line 11) | public class WindowsIntegratedAuthenticationTests
method WindowsIntegratedAuthentication_GetIsSupportedAsync_NullUri_ThrowsException (line 16) | [Fact]
method WindowsIntegratedAuthentication_GetIsSupportedAsync_NegotiateAndNtlm_ReturnsTrue (line 25) | [Fact]
method WindowsIntegratedAuthentication_Windows_GetIsSupportedAsync_Ntlm_ReturnsTrue (line 34) | [Fact]
method WindowsIntegratedAuthentication_Windows_GetIsSupportedAsync_Negotiate_ReturnsTrue (line 40) | [Fact]
method WindowsIntegratedAuthentication_Windows_GetIsSupportedAsync_NoHeaders_ReturnsFalse (line 46) | [Fact]
method WindowsIntegratedAuthentication_Windows_GetIsSupportedAsync_NoWiaHeaders_ReturnsFalse (line 52) | [Fact]
method TestGetIsSupportedAsync (line 69) | private static async Task TestGetIsSupportedAsync(string[] wwwAuthHead...
FILE: src/shared/Core.Tests/Base64UrlConvertTests.cs
class Base64UrlConvertTests (line 5) | public class Base64UrlConvertTests
method Base64UrlConvert_Encode_WithPadding (line 7) | [Theory]
method Base64UrlConvert_Encode_WithoutPadding (line 21) | [Theory]
FILE: src/shared/Core.Tests/Commands/ConfigureCommandTests.cs
class ConfigureCommandTests (line 9) | public class ConfigureCommandTests
method ConfigureCommand_ExecuteAsync_User_InvokesConfigurationServiceConfigureUser (line 11) | [Fact]
method ConfigureCommand_ExecuteAsync_System_InvokesConfigurationServiceConfigureSystem (line 27) | [Fact]
FILE: src/shared/Core.Tests/Commands/DiagnoseCommandTests.cs
class DiagnoseCommandTests (line 11) | public class DiagnoseCommandTests
method NetworkingDiagnostic_SendHttpRequest_Primary_OK (line 13) | [Fact]
method NetworkingDiagnostic_SendHttpRequest_Backup_OK (line 33) | [Fact]
method NetworkingDiagnostic_SendHttpRequest_No_Network (line 58) | [Fact]
FILE: src/shared/Core.Tests/Commands/EraseCommandTests.cs
class EraseCommandTests (line 10) | public class EraseCommandTests
method EraseCommand_ExecuteAsync_CallsHostProvider (line 12) | [Fact]
method AreInputArgumentsEquivalent (line 44) | private static bool AreInputArgumentsEquivalent(InputArguments a, Inpu...
FILE: src/shared/Core.Tests/Commands/GetCommandTests.cs
class GetCommandTests (line 12) | public class GetCommandTests
method GetCommand_ExecuteAsync_CallsHostProviderAndWritesCredential (line 14) | [Fact]
method ParseDictionary (line 50) | private static IDictionary<string, string> ParseDictionary(StringBuild...
method ParseDictionary (line 52) | private static IDictionary<string, string> ParseDictionary(string str)...
FILE: src/shared/Core.Tests/Commands/GitCommandBaseTests.cs
class GitCommandBaseTests (line 10) | public class GitCommandBaseTests
method GitCommandBase_ExecuteAsync_CallsExecuteInternalAsyncWithCorrectArgs (line 12) | [Fact]
method GitCommandBase_ExecuteAsync_ConfiguresSettingsRemoteUri (line 49) | [Fact]
class TestCommand (line 80) | private class TestCommand : GitCommandBase
method TestCommand (line 82) | public TestCommand(ICommandContext context, IHostProviderRegistry ho...
method ExecuteInternalAsync (line 87) | protected override Task ExecuteInternalAsync(InputArguments input, I...
FILE: src/shared/Core.Tests/Commands/StoreCommandTests.cs
class StoreCommandTests (line 10) | public class StoreCommandTests
method StoreCommand_ExecuteAsync_CallsHostProvider (line 11) | [Fact]
method AreInputArgumentsEquivalent (line 43) | bool AreInputArgumentsEquivalent(InputArguments a, InputArguments b)
FILE: src/shared/Core.Tests/Commands/UnconfigureCommandTests.cs
class UnconfigureCommandTests (line 9) | public class UnconfigureCommandTests
method UnconfigureCommand_ExecuteAsync_User_InvokesConfigurationServiceUnconfigureUser (line 11) | [Fact]
method UnconfigureCommand_ExecuteAsync_System_InvokesConfigurationServiceUnconfigureSystem (line 27) | [Fact]
FILE: src/shared/Core.Tests/ConfigurationServiceTests.cs
class ConfigurationServiceTests (line 8) | public class ConfigurationServiceTests
method ConfigurationService_ConfigureAsync_System_ComponentsAreConfiguredWithSystem (line 10) | [Fact]
method ConfigurationService_ConfigureAsync_User_ComponentsAreConfiguredWithUser (line 34) | [Fact]
method ConfigurationService_UnconfigureAsync_System_ComponentsAreUnconfiguredWithSystem (line 58) | [Fact]
method ConfigurationService_UnconfigureAsync_User_ComponentsAreUnconfiguredWithUser (line 82) | [Fact]
FILE: src/shared/Core.Tests/CurlCookieTests.cs
class CurlCookieParserTests (line 10) | public class CurlCookieParserTests
method CurlCookieParser_EmptyFile_ReturnsNoCookies (line 12) | [Fact]
method CurlCookieParser_Parse_MissingFields_SkipsInvalidLines (line 25) | [Fact]
method CurlCookieParser_Parse_MissingFields_ReturnsValidCookiesWithDefaults (line 44) | [Fact]
method CurlCookieParser_Parse_ValidFields_ReturnsValidCookies (line 64) | [Fact]
method CurlCookieParser_Parse_Comments_ReturnsCookies (line 93) | [Fact]
method AssertCookie (line 124) | private static void AssertCookie(Cookie cookie, string domain, string ...
FILE: src/shared/Core.Tests/EnsureArgumentTests.cs
class EnsureArgumentTests (line 6) | public class EnsureArgumentTests
method EnsureArgument_InRange_DoesNotThrow (line 8) | [Theory]
method EnsureArgument_InRange_ThrowsException (line 19) | [Theory]
FILE: src/shared/Core.Tests/EnumerableExtensionsTests.cs
class EnumerableExtensionsTests (line 8) | public class EnumerableExtensionsTests
method EnumerableExtensions_ConcatMany_Null_ThrowsException (line 10) | [Fact]
method EnumerableExtensions_ConcatMany_OneSequence_ReturnsSequence (line 16) | [Fact]
method EnumerableExtensions_ConcatMany_TwoSequences_ReturnsConcatenateSequences (line 27) | [Fact]
method EnumerableExtensions_ConcatMany_ManySequences_ReturnsConcatenateSequences (line 39) | [Fact]
FILE: src/shared/Core.Tests/EnvironmentTests.cs
class EnvironmentTests (line 11) | public class EnvironmentTests
method WindowsEnvironment_TryLocateExecutable_NotExists_ReturnFalse (line 18) | [WindowsFact]
method WindowsEnvironment_TryLocateExecutable_Exists_ReturnTrueAndPath (line 31) | [WindowsFact]
method WindowsEnvironment_TryLocateExecutable_ExistsMultiple_ReturnTrueAndFirstPath (line 51) | [WindowsFact]
method PosixEnvironment_TryLocateExecutable_NotExists_ReturnFalse (line 73) | [PosixFact]
method PosixEnvironment_TryLocateExecutable_Exists_ReturnTrueAndPath (line 86) | [PosixFact]
method PosixEnvironment_TryLocateExecutable_ExistsMultiple_ReturnTrueAndFirstPath (line 106) | [PosixFact]
method MacOSEnvironment_TryLocateExecutable_Paths_Are_Ignored (line 128) | [MacOSFact]
method PosixEnvironment_SetEnvironmentVariable_Sets_Expected_Value (line 154) | [PosixFact]
method WindowsEnvironment_SetEnvironmentVariable_Sets_Expected_Value (line 170) | [WindowsFact]
FILE: src/shared/Core.Tests/GenericHostProviderTests.cs
class GenericHostProviderTests (line 13) | public class GenericHostProviderTests
method GenericHostProvider_IsSupported (line 15) | [Theory]
method GenericHostProvider_GetCredentialServiceUrl_ReturnsCorrectKey (line 50) | [Fact]
method GenericHostProvider_CreateCredentialAsync_WiaNotAllowed_ReturnsBasicCredentialNoWiaCheck (line 70) | [Fact]
method GenericHostProvider_CreateCredentialAsync_LegacyAuthorityBasic_ReturnsBasicCredentialNoWiaCheck (line 106) | [Fact]
method GenericHostProvider_CreateCredentialAsync_NonHttpProtocol_ReturnsBasicCredentialNoWiaCheck (line 142) | [Fact]
method GenericHostProvider_CreateCredentialAsync_NonWindows_WiaSupported_ReturnsBasicCredential (line 175) | [PosixFact]
method GenericHostProvider_CreateCredentialAsync_Windows_WiaSupported_ReturnsEmptyCredential (line 181) | [WindowsFact]
method GenericHostProvider_CreateCredentialAsync_WiaNotSupported_ReturnsBasicCredential (line 187) | [Fact]
method GenericHostProvider_NtlmSuppressed_AllowOnce (line 193) | [WindowsFact]
method GenericHostProvider_NtlmSuppressed_AllowAlways (line 236) | [WindowsFact]
method GenericHostProvider_NtlmSuppressed_Disabled (line 281) | [WindowsFact]
method GenericHostProvider_GenerateCredentialAsync_OAuth_CompleteOAuthConfig_UsesOAuth (line 323) | [Fact]
method TestCreateCredentialAsync_ReturnsEmptyCredential (line 410) | private static async Task TestCreateCredentialAsync_ReturnsEmptyCreden...
method TestCreateCredentialAsync_ReturnsBasicCredential (line 438) | private static async Task TestCreateCredentialAsync_ReturnsBasicCreden...
FILE: src/shared/Core.Tests/GenericOAuthConfigTests.cs
class GenericOAuthConfigTests (line 8) | public class GenericOAuthConfigTests
method GenericOAuthConfig_TryGet_Valid_ReturnsTrue (line 10) | [Fact]
method GenericOAuthConfig_TryGet_Gitea (line 69) | [Fact]
FILE: src/shared/Core.Tests/GitConfigurationKeyComparerTests.cs
class GitConfigurationKeyComparerTests (line 5) | public class GitConfigurationKeyComparerTests
method GitConfigurationKeyComparer_Equals (line 7) | [Theory]
method GitConfigurationKeyComparer_Compare (line 31) | [Theory]
FILE: src/shared/Core.Tests/GitConfigurationTests.cs
class GitConfigurationTests (line 10) | public class GitConfigurationTests
method GitConfiguration_QuoteCmdArg (line 12) | [Theory]
method GitProcess_GetConfiguration_ReturnsConfiguration (line 45) | [Fact]
method GitConfiguration_Enumerate_CallbackReturnsTrue_InvokesCallbackForEachEntry (line 57) | [Fact]
method GitConfiguration_Enumerate_CallbackReturnsFalse_InvokesCallbackForEachEntryUntilReturnsFalse (line 97) | [Fact]
method GitConfiguration_TryGet_Name_Exists_ReturnsTrueOutString (line 136) | [Fact]
method GitConfiguration_TryGet_Name_DoesNotExists_ReturnsFalse (line 155) | [Fact]
method GitConfiguration_TryGet_IsPath_True_ReturnsCanonicalPath (line 174) | [Fact]
method GitConfiguration_TryGet_IsPath_False_ReturnsRawConfig (line 194) | [Fact]
method GitConfiguration_TryGet_BoolType_ReturnsCanonicalBool (line 213) | [Fact]
method GitConfiguration_TryGet_BoolWithoutType_ReturnsRawConfig (line 233) | [Fact]
method GitConfiguration_Get_Name_Exists_ReturnsString (line 253) | [Fact]
method GitConfiguration_Get_Name_DoesNotExists_ThrowsException (line 272) | [Fact]
method GitConfiguration_Set_Local_SetsLocalConfig (line 288) | [Fact]
method GitConfiguration_Set_All_ThrowsException (line 307) | [Fact]
method GitConfiguration_Unset_Global_UnsetsGlobalConfig (line 323) | [Fact]
method GitConfiguration_Unset_Local_UnsetsLocalConfig (line 354) | [Fact]
method GitConfiguration_Unset_All_ThrowsException (line 386) | [Fact]
method GitConfiguration_UnsetAll_UnsetsAllConfig (line 401) | [Fact]
method GitConfiguration_UnsetAll_All_ThrowsException (line 423) | [Fact]
method GitConfiguration_CacheTryGet_ReturnsValueFromCache (line 440) | [Fact]
method GitConfiguration_CacheGetAll_ReturnsAllValuesFromCache (line 466) | [Fact]
method GitConfiguration_CacheEnumerate_EnumeratesFromCache (line 490) | [Fact]
method GitConfiguration_CacheInvalidation_SetInvalidatesCache (line 520) | [Fact]
method GitConfiguration_CacheInvalidation_AddInvalidatesCache (line 548) | [Fact]
method GitConfiguration_CacheInvalidation_UnsetInvalidatesCache (line 577) | [Fact]
method GitConfiguration_CacheLevelFilter_ReturnsOnlyLocalValues (line 605) | [Fact]
method GitConfiguration_TypedQuery_CanonicalizesValues (line 636) | [Fact]
FILE: src/shared/Core.Tests/GitStreamReaderTests.cs
class GitStreamReaderTests (line 8) | public class GitStreamReaderTests
method GitStreamReader_ReadLineAsync_LF (line 12) | [Fact]
method GitStreamReader_ReadLineAsync_CR (line 31) | [Fact]
method GitStreamReader_ReadLineAsync_CRLF (line 47) | [Fact]
method GitStreamReader_ReadLineAsync_Mixed (line 66) | [Fact]
method GitStreamReader_ReadLine_LF (line 104) | [Fact]
method GitStreamReader_ReadLine_CR (line 123) | [Fact]
method GitStreamReader_ReadLine_CRLF (line 139) | [Fact]
method GitStreamReader_ReadLine_Mixed (line 158) | [Fact]
FILE: src/shared/Core.Tests/GitTests.cs
class GitTests (line 9) | public class GitTests
method Git_GetCurrentRepository_NoLocalRepo_ReturnsNull (line 11) | [Fact]
method Git_GetCurrentRepository_LocalRepo_ReturnsNotNull (line 25) | [Fact]
method Git_GetRemotes_NoLocalRepo_ReturnsEmpty (line 41) | [Fact]
method Git_GetRemotes_NoRemotes_ReturnsEmpty (line 55) | [Fact]
method Git_GetRemotes_OneRemote_ReturnsRemote (line 71) | [Fact]
method Git_GetRemotes_OneRemoteFetchAndPull_ReturnsRemote (line 91) | [Fact]
method Git_GetRemotes_NonHttpRemote_ReturnsRemote (line 113) | [Theory]
method Git_GetRemotes_MultipleRemotes_ReturnsAllRemotes (line 137) | [Fact]
method Git_GetRemotes_RemoteNoFetchOnlyPull_ReturnsRemote (line 166) | [Fact]
method Git_Version_ReturnsVersion (line 189) | [Fact]
method AssertRemote (line 206) | private static void AssertRemote(string expectedName, string expectedU...
method AssertRemote (line 213) | private static void AssertRemote(string expectedName, string expectedF...
FILE: src/shared/Core.Tests/GitVersionTests.cs
class GitVersionTests (line 6) | public class GitVersionTests
method GitVersion_CompareTo_2_33_0 (line 8) | [Theory]
FILE: src/shared/Core.Tests/HostProviderRegistryTests.cs
class HostProviderRegistryTests (line 13) | public class HostProviderRegistryTests
method HostProviderRegistry_Register_AutoProviderId_ThrowException (line 15) | [Fact]
method HostProviderRegistry_Register_AutoAuthorityId_ThrowException (line 26) | [Fact]
method HostProviderRegistry_GetProvider_NoProviders_ThrowException (line 37) | [Fact]
method HostProviderRegistry_GetProvider_Auto_HasProviders_ReturnsSupportedProvider (line 47) | [Fact]
method HostProviderRegistry_GetProvider_Auto_HasProviders_StaticMatch_DoesNotSetProviderGlobalConfig (line 71) | [Fact]
method HostProviderRegistry_GetProvider_Auto_HasProviders_DynamicMatch_SetsProviderGlobalConfig (line 97) | [Fact]
method HostProviderRegistry_GetProvider_Auto_HasProviders_DynamicMatch_SetsProviderGlobalConfig_HostWithPath (line 126) | [Fact]
method HostProviderRegistry_GetProvider_Auto_MultipleValidProviders_ReturnsFirstRegistered (line 155) | [Fact]
method HostProviderRegistry_GetProvider_Auto_MultipleValidProvidersMultipleLevels_ReturnsFirstHighestRegistered (line 179) | [Fact]
method HostProviderRegistry_GetProvider_ProviderSpecified_ReturnsProvider (line 206) | [Fact]
method HostProviderRegistry_GetProvider_AutoProviderSpecified_ReturnsFirstSupportedProvider (line 235) | [Fact]
method HostProviderRegistry_GetProvider_UnknownProviderSpecified_ReturnsFirstSupportedProvider (line 265) | [Fact]
method HostProviderRegistry_GetProvider_LegacyAuthoritySpecified_ReturnsProvider (line 295) | [Fact]
method HostProviderRegistry_GetProvider_AutoLegacyAuthoritySpecified_ReturnsFirstSupportedProvider (line 324) | [Fact]
method HostProviderRegistry_GetProvider_Auto_NetworkProbe_ReturnsSupportedProvider (line 354) | [Fact]
method HostProviderRegistry_GetProvider_Auto_NetworkProbe_TimeoutZero_NoNetworkCall (line 389) | [Fact]
method HostProviderRegistry_GetProvider_Auto_NetworkProbe_TimeoutNegative_NoNetworkCall (line 422) | [Fact]
method HostProviderRegistry_GetProvider_Auto_NetworkProbe_NoNetwork_ReturnsLastProvider (line 455) | [Fact]
method CreateInputArguments (line 497) | public static InputArguments CreateInputArguments(Uri uri)
FILE: src/shared/Core.Tests/HostProviderTests.cs
class HostProviderTests (line 8) | public class HostProviderTests
method HostProvider_GetCredentialAsync_CredentialExists_ReturnsExistingCredential (line 12) | [Fact]
method HostProvider_GetCredentialAsync_CredentialDoesNotExist_ReturnsNewGeneratedCredential (line 45) | [Fact]
method HostProvider_StoreCredentialAsync_EmptyCredential_DoesNotStoreCredential (line 83) | [Fact]
method HostProvider_StoreCredentialAsync_NonEmptyCredential_StoresCredential (line 104) | [Fact]
method HostProvider_StoreCredentialAsync_NonEmptyCredential_ExistingCredential_UpdatesCredential (line 129) | [Fact]
method HostProvider_EraseCredentialAsync_NoInputUser_CredentialExists_ErasesOneCredential (line 160) | [Fact]
method HostProvider_EraseCredentialAsync_InputUser_CredentialExists_UserNotMatch_DoesNothing (line 184) | [Fact]
method HostProvider_EraseCredentialAsync_InputUser_CredentialExists_UserMatch_ErasesCredential (line 209) | [Fact]
method HostProvider_EraseCredentialAsync_DifferentHost_DoesNothing (line 233) | [Fact]
FILE: src/shared/Core.Tests/HttpClientExtensionsTests.cs
class HttpClientExtensionsTests (line 10) | public class HttpClientExtensionsTests
method HttpClientExtensions_SendAsync_SendsRequestMessage (line 12) | [Fact]
method HttpClientExtensions_SendAsync_Content_SetsContent (line 32) | [Fact]
method HttpClientExtensions_SendAsync_Headers_SetsHeaders (line 53) | [Fact]
FILE: src/shared/Core.Tests/HttpClientFactoryTests.cs
class HttpClientFactoryTests (line 11) | public class HttpClientFactoryTests
method HttpClientFactory_GetClient_SetsDefaultHeaders (line 13) | [Fact]
method HttpClientFactory_GetClient_MultipleCalls_ReturnsNewInstance (line 25) | [Fact]
method HttpClientFactory_TryCreateProxy_NoProxy_ReturnsFalseOutNull (line 36) | [Fact]
method HttpClientFactory_TryCreateProxy_ProxyNoCredentials_ReturnsTrueOutProxyWithUrlDefaultCredentials (line 56) | [Fact]
method HttpClientFactory_TryCreateProxy_ProxyWithBypass_ReturnsTrueOutProxyWithBypassedHosts (line 84) | [Fact]
method HttpClientFactory_TryCreateProxy_ProxyWithWildcardBypass_ReturnsFalse (line 120) | [Fact]
method HttpClientFactory_TryCreateProxy_ProxyWithCredentials_ReturnsTrueOutProxyWithUrlConfiguredCredentials (line 149) | [Fact]
method HttpClientFactory_TryCreateProxy_ProxyWithNonEmptyUserAndEmptyPass_ReturnsTrueOutProxyWithUrlConfiguredCredentials (line 186) | [Fact]
method HttpClientFactory_TryCreateProxy_ProxyWithEmptyUserAndNonEmptyPass_ReturnsTrueOutProxyWithUrlConfiguredCredentials (line 222) | [Fact]
method HttpClientFactory_TryCreateProxy_ProxyEmptyUserAndEmptyPass_ReturnsTrueOutProxyWithUrlDefaultCredentials (line 258) | [Fact]
method HttpClientFactory_GetClient_ChecksCertBundleOnlyIfEnabled (line 289) | [Theory]
method HttpClientFactory_GetClient_SetCookieOnlyIfEnabled (line 314) | [Theory]
method AssertDefaultCredentials (line 344) | private static void AssertDefaultCredentials(ICredentials credentials)
FILE: src/shared/Core.Tests/HttpRequestExtensionsTests.cs
class HttpRequestExtensionsTests (line 6) | public class HttpRequestExtensionsTests
method HttpRequestExtensions_AddBasicAuthenticationHeader_ComplexUserPass_ReturnsCorrectString (line 8) | [Fact]
method HttpRequestExtensions_AddBasicAuthenticationHeader_EmptyUserName_ReturnsCorrectString (line 18) | [Fact]
method HttpRequestExtensions_AddBasicAuthenticationHeader_EmptyPassword_ReturnsCorrectString (line 28) | [Fact]
method HttpRequestExtensions_AddBasicAuthenticationHeader_EmptyCredential_ReturnsCorrectString (line 38) | [Fact]
method TestAddBasicAuthenticationHeader (line 48) | private static void TestAddBasicAuthenticationHeader(string userName, ...
FILE: src/shared/Core.Tests/IniFileTests.cs
class IniFileTests (line 8) | public class IniFileTests
method IniSectionName_Equality (line 10) | [Fact]
method IniSerializer_Deserialize (line 34) | [Fact]
method AssertSection (line 109) | private static void AssertSection(IniFile file, string name, out IniSe...
method AssertSection (line 116) | private static void AssertSection(IniFile file, string name, string su...
method AssertProperty (line 123) | private static void AssertProperty(IniSection section, string name, st...
method AssertMultiProperty (line 129) | private static void AssertMultiProperty(IniSection section, string nam...
FILE: src/shared/Core.Tests/InputArgumentsTests.cs
class InputArgumentsTests (line 7) | public class InputArgumentsTests
method InputArguments_Ctor_Null_ThrowsArgNullException (line 9) | [Fact]
method InputArguments_CommonArguments_ValuePresent_ReturnsValues (line 16) | [Fact]
method InputArguments_CommonArguments_ValueMissing_ReturnsNullOrEmptyCollection (line 48) | [Fact]
method InputArguments_OtherArguments (line 63) | [Fact]
method InputArguments_GetRemoteUri_NoAuthority_ReturnsNull (line 79) | [Fact]
method InputArguments_GetRemoteUri_Authority_ReturnsUriWithAuthority (line 91) | [Fact]
method InputArguments_GetRemoteUri_IncludeUser_Authority_ReturnsUriWithAuthorityAndUser (line 110) | [Fact]
method InputArguments_GetRemoteUri_IncludeUserSpecialCharacters_Authority_ReturnsUriWithAuthorityAndUser (line 133) | [Fact]
method InputArguments_GetRemoteUri_IncludeUserNoUser_Authority_ReturnsUriWithAuthority (line 156) | [Fact]
method InputArguments_GetRemoteUri_AuthorityAndPort_ReturnsUriWithAuthorityAndPort (line 175) | [Fact]
method InputArguments_GetRemoteUri_AuthorityPath_ReturnsUriWithAuthorityAndPath (line 194) | [Fact]
method InputArguments_GetRemoteUri_AuthorityPathUserInfo_ReturnsUriWithAuthorityAndPath (line 214) | [Fact]
method InputArguments_GetRemoteUri_PathQueryFragment_ReturnsCorrectUri (line 238) | [Theory]
method InputArguments_GetRemoteUri_IncludeUser_AuthorityPathUserInfo_ReturnsUriWithAll (line 261) | [Fact]
method InputArguments_TryGetHostAndPort_NoPort_ReturnsHostName (line 285) | [Fact]
method InputArguments_TryGetHostAndPort_Port_ReturnsHostNameAndPort (line 306) | [Fact]
method InputArguments_TryGetHostAndPort_BadPort_ReturnsFalse (line 329) | [Fact]
method InputArguments_TryGetHostAndPort_NoHostNoPort_ReturnsFalse (line 346) | [Fact]
FILE: src/shared/Core.Tests/Interop/Linux/LinuxConfigParserTests.cs
class LinuxConfigParserTests (line 8) | public class LinuxConfigParserTests
method LinuxConfigParser_Parse (line 10) | [Fact]
FILE: src/shared/Core.Tests/Interop/Linux/LinuxFileSystemTests.cs
class LinuxFileSystemTests (line 8) | public class LinuxFileSystemTests
method LinuxFileSystem_IsSamePath_SamePath_ReturnsTrue (line 10) | [LinuxFact]
method LinuxFileSystem_IsSamePath_DifferentFile_ReturnsFalse (line 21) | [LinuxFact]
method LinuxFileSystem_IsSamePath_SameFileDifferentCase_ReturnsFalse (line 34) | [LinuxFact]
method LinuxFileSystem_IsSamePath_SameFileDifferentPathNormalization_ReturnsTrue (line 47) | [LinuxFact]
method LinuxFileSystem_IsSamePath_SameFileViaSymlink_ReturnsTrue (line 61) | [LinuxFact]
method LinuxFileSystem_IsSamePath_SameFileRelativePath_ReturnsTrue (line 74) | [LinuxFact]
FILE: src/shared/Core.Tests/Interop/Linux/LinuxSettingsTests.cs
class LinuxSettingsTests (line 8) | public class LinuxSettingsTests
method LinuxSettings_TryGetExternalDefault_CombinesFiles (line 10) | [LinuxFact]
FILE: src/shared/Core.Tests/Interop/Linux/SecretServiceCollectionTests.cs
class SecretServiceCollectionTests (line 7) | public class SecretServiceCollectionTests
method SecretServiceCollection_ReadWriteDelete (line 11) | [LinuxFact(Skip = "Cannot run headless")]
method SecretServiceCollection_Get_NotFound_ReturnsNull (line 40) | [LinuxFact(Skip = "Cannot run headless")]
method SecretServiceCollection_Remove_NotFound_ReturnsFalse (line 52) | [LinuxFact(Skip = "Cannot run headless")]
FILE: src/shared/Core.Tests/Interop/MacOS/MacOSFileSystemTests.cs
class MacOSFileSystemTests (line 8) | public class MacOSFileSystemTests
method MacOSFileSystem_IsSamePath_SamePath_ReturnsTrue (line 10) | [MacOSFact]
method MacOSFileSystem_IsSamePath_DifferentFile_ReturnsFalse (line 21) | [MacOSFact]
method MacOSFileSystem_IsSamePath_SameFileDifferentCase_ReturnsTrue (line 34) | [MacOSFact]
method MacOSFileSystem_IsSamePath_SameFileDifferentPathNormalization_ReturnsTrue (line 47) | [MacOSFact]
method MacOSFileSystem_IsSamePath_SameFileViaSymlink_ReturnsTrue (line 61) | [MacOSFact]
method MacOSFileSystem_IsSamePath_SameFileRelativePath_ReturnsTrue (line 74) | [MacOSFact]
FILE: src/shared/Core.Tests/Interop/MacOS/MacOSKeychainTests.cs
class MacOSKeychainTests (line 9) | public class MacOSKeychainTests
method MacOSKeychain_ReadWriteDelete (line 13) | [MacOSFact]
method MacOSKeychain_Get_NotFound_ReturnsNull (line 55) | [MacOSFact]
method MacOSKeychain_Remove_NotFound_ReturnsFalse (line 67) | [MacOSFact]
FILE: src/shared/Core.Tests/Interop/MacOS/MacOSPreferencesTests.cs
class MacOSPreferencesTests (line 9) | public class MacOSPreferencesTests
method MacOSPreferences_ReadPreferences (line 14) | [MacOSFact]
method SetupTestPreferencesAsync (line 52) | private static async Task SetupTestPreferencesAsync()
method CleanupTestPreferencesAsync (line 60) | private static async Task CleanupTestPreferencesAsync()
FILE: src/shared/Core.Tests/Interop/Posix/GnuPassCredentialStoreTests.cs
class GnuPassCredentialStoreTests (line 10) | public class GnuPassCredentialStoreTests
method GnuPassCredentialStore_ReadWriteDelete (line 14) | [PosixFact]
method GnuPassCredentialStore_Get_NotFound_ReturnsNull (line 57) | [PosixFact]
method GnuPassCredentialStore_Remove_NotFound_ReturnsFalse (line 73) | [PosixFact]
method GnuPassCredentialStore_ReadWriteDelete_GpgIdInSubdirectory (line 89) | [PosixFact]
method GnuPassCredentialStore_WriteCredential_MultipleGpgIds_UsesNearestGpgId (line 135) | [PosixFact]
method InitializePasswordStore (line 185) | private static string InitializePasswordStore(TestFileSystem fs, TestG...
FILE: src/shared/Core.Tests/Interop/Posix/PosixFileSystemTests.cs
class PosixFileSystemTests (line 8) | public class PosixFileSystemTests
method PosixFileSystem_ResolveSymlinks_FileLinks (line 10) | [PosixFact]
method PosixFileSystem_ResolveSymlinks_DirectoryLinks (line 22) | [PosixFact]
FILE: src/shared/Core.Tests/Interop/U8StringConverterTests.cs
class U8StringConverterTests (line 7) | public class U8StringConverterTests
method U8StringConverter_ToNative_Null_ReturnsNullPointer (line 56) | [Fact]
method U8StringConverter_ToNative_EmptyString_ReturnsNullByte (line 65) | [Fact]
method U8StringConverter_ToNative_SimpleString_ReturnsExpectedBytes (line 76) | [Fact]
method U8StringConverter_ToNative_ComplexString_ReturnsExpectedBytes (line 87) | [Fact]
method U8StringConverter_ToManaged_Null_ReturnsNull (line 98) | [Fact]
method U8StringConverter_ToManaged_ZeroPtr_ReturnsNull (line 109) | [Fact]
method U8StringConverter_ToManaged_NullByte_ReturnsEmptyString (line 120) | [Fact]
method U8StringConverter_ToManaged_SimpleString_ReturnsExpectedString (line 134) | [Fact]
method U8StringConverter_ToManaged_ComplexString_ReturnsExpectedString (line 148) | [Fact]
method AssertCStringEqual (line 162) | private static unsafe void AssertCStringEqual(byte[] expected, byte* a...
FILE: src/shared/Core.Tests/Interop/Windows/DpapiCredentialStoreTests.cs
class DpapiCredentialStoreTests (line 11) | public class DpapiCredentialStoreTests
method DpapiCredentialStore_AddOrUpdate_CreatesUTF8ProtectedFile (line 16) | [WindowsFact]
method DpapiCredentialStore_Get_KeyNotFound_ReturnsNull (line 52) | [WindowsFact]
method DpapiCredentialStore_Get_ReadProtectedFile (line 65) | [WindowsFact]
method DpapiCredentialStore_Remove_KeyNotFound_ReturnsFalse (line 100) | [WindowsFact]
FILE: src/shared/Core.Tests/Interop/Windows/WindowsCredentialManagerTests.cs
class WindowsCredentialManagerTests (line 8) | public class WindowsCredentialManagerTests
method WindowsCredentialManager_ReadWriteDelete (line 12) | [WindowsFact]
method WindowsCredentialManager_AddOrUpdate_UsernameWithAtCharacter (line 48) | [WindowsFact]
method WindowsCredentialManager_Get_KeyNotFound_ReturnsNull (line 84) | [WindowsFact]
method WindowsCredentialManager_Remove_KeyNotFound_ReturnsFalse (line 96) | [WindowsFact]
method WindowsCredentialManager_AddOrUpdate_TargetNameAlreadyExists_CreatesWithUserInTargetName (line 108) | [WindowsFact]
method WindowsCredentialManager_AddOrUpdate_TargetNameAlreadyExistsAndUserWithAtCharacter_CreatesWithEscapedUserInTargetName (line 158) | [WindowsFact]
method WindowsCredentialManager_RemoveUriUserInfo (line 209) | [Theory]
method WindowsCredentialManager_IsMatch (line 238) | [WindowsTheory]
method WindowsCredentialManager_IsMatch_NoNamespace_NotMatched (line 273) | [WindowsFact]
method WindowsCredentialManager_IsMatch_DifferentNamespace_NotMatched (line 289) | [WindowsFact]
method WindowsCredentialManager_IsMatch_CaseSensitiveNamespace_NotMatched (line 305) | [WindowsFact]
method WindowsCredentialManager_IsMatch_NoNamespaceInQuery_IsMatched (line 321) | [WindowsFact]
method WindowsCredentialManager_CreateTargetName (line 337) | [WindowsTheory]
method WindowsCredentialManager_CreateTargetName_Namespace (line 358) | [WindowsTheory]
FILE: src/shared/Core.Tests/Interop/Windows/WindowsFileSystemTests.cs
class WindowsFileSystemTests (line 8) | public class WindowsFileSystemTests
method WindowsFileSystem_IsSamePath_SamePath_ReturnsTrue (line 10) | [WindowsFact]
method WindowsFileSystem_IsSamePath_DifferentFile_ReturnsFalse (line 21) | [WindowsFact]
method WindowsFileSystem_IsSamePath_SameFileDifferentCase_ReturnsTrue (line 34) | [WindowsFact]
method WindowsFileSystem_IsSamePath_SameFileDifferentPathNormalization_ReturnsTrue (line 47) | [WindowsFact]
method WindowsFileSystem_IsSamePath_SameFileRelativePath_ReturnsTrue (line 61) | [WindowsFact]
FILE: src/shared/Core.Tests/Interop/Windows/WindowsSystemPromptsTests.cs
class WindowsSystemPromptsTests (line 8) | public class WindowsSystemPromptsTests
method WindowsSystemPrompts_ShowCredentialPrompt_NullResource_ThrowsException (line 10) | [Fact]
method WindowsSystemPrompts_ShowCredentialPrompt_EmptyResource_ThrowsException (line 17) | [Fact]
method WindowsSystemPrompts_ShowCredentialPrompt_WhiteSpaceResource_ThrowsException (line 24) | [Fact]
FILE: src/shared/Core.Tests/PlaintextCredentialStoreTests.cs
class PlaintextCredentialStoreTests (line 9) | public class PlaintextCredentialStoreTests
method PlaintextCredentialStore_ReadWriteDelete (line 14) | [Fact]
method PlaintextCredentialStore_Get_NotFound_ReturnsNull (line 60) | [Fact]
method PlaintextCredentialStore_Remove_NotFound_ReturnsFalse (line 74) | [Fact]
FILE: src/shared/Core.Tests/ProcessManagerTests.cs
class ProcessManagerTests (line 6) | public class ProcessManagerTests
method CreateSid_Envar_Returns_Expected_Sid (line 8) | [Theory]
method TryGetProcessDepth_Returns_Expected_Depth (line 21) | [Theory]
FILE: src/shared/Core.Tests/SettingsTests.cs
class SettingsTests (line 9) | public class SettingsTests
method Settings_IsDebuggingEnabled_EnvarUnset_ReturnsFalse (line 11) | [Fact]
method Settings_IsDebuggingEnabled_EnvarTruthy_ReturnsTrue (line 22) | [Fact]
method Settings_IsDebuggingEnabled_EnvarFalsey_ReturnsFalse (line 36) | [Fact]
method Settings_IsTerminalPromptsEnabled_EnvarUnset_ReturnsTrue (line 50) | [Fact]
method Settings_IsTerminalPromptsEnabled_EnvarTruthy_ReturnsTrue (line 61) | [Fact]
method Settings_IsTerminalPromptsEnabled_EnvarFalsey_ReturnsFalse (line 75) | [Fact]
method Settings_IsInteractionAllowed_EnvarUnset_ReturnsTrue (line 89) | [Fact]
method Settings_IsInteractionAllowed_EnvarTruthy_ReturnsTrue (line 100) | [Fact]
method Settings_IsInteractionAllowed_EnvarFalsey_ReturnsFalse (line 114) | [Fact]
method Settings_IsInteractionAllowed_ConfigAuto_ReturnsTrue (line 128) | [Fact]
method Settings_IsInteractionAllowed_ConfigAlways_ReturnsTrue (line 143) | [Fact]
method Settings_IsInteractionAllowed_ConfigNever_ReturnsFalse (line 158) | [Fact]
method Settings_IsInteractionAllowed_ConfigTruthy_ReturnsTrue (line 173) | [Fact]
method Settings_IsInteractionAllowed_ConfigFalsey_ReturnsFalse (line 188) | [Fact]
method Settings_IsInteractionAllowed_ConfigNonBooleanyValue_ReturnsTrue (line 203) | [Fact]
method Settings_IsTracingEnabled_EnvarUnset_ReturnsFalse (line 218) | [Fact]
method Settings_IsTracingEnabled_EnvarTruthy_ReturnsTrueOutValue (line 230) | [Fact]
method Settings_IsTracingEnabled_EnvarFalsey_ReturnsFalseOutValue (line 247) | [Fact]
method Settings_IsTracingEnabled_EnvarPathy_ReturnsTrueOutValue (line 265) | [Fact]
method Settings_IsSecretTracingEnabled_EnvarUnset_ReturnsFalse (line 282) | [Fact]
method Settings_IsSecretTracingEnabled_EnvarTruthy_ReturnsTrue (line 293) | [Fact]
method Settings_IsSecretTracingEnabled_EnvarFalsey_ReturnsFalse (line 307) | [Fact]
method Settings_IsWindowsIntegratedAuthenticationEnabled_EnvarUnset_ReturnsTrue (line 321) | [Fact]
method Settings_IsWindowsIntegratedAuthenticationEnabled_EnvarTruthy_ReturnsTrue (line 332) | [Fact]
method Settings_IsWindowsIntegratedAuthenticationEnabled_EnvarFalsey_ReturnsFalse (line 346) | [Fact]
method Settings_IsWindowsIntegratedAuthenticationEnabled_EnvarNonBooleanyValue_ReturnsTrue (line 360) | [Fact]
method Settings_IsWindowsIntegratedAuthenticationEnabled_ConfigUnset_ReturnsTrue (line 374) | [Fact]
method Settings_IsWindowsIntegratedAuthenticationEnabled_ConfigTruthy_ReturnsTrue (line 385) | [Fact]
method Settings_IsWindowsIntegratedAuthenticationEnabled_ConfigFalsey_ReturnsFalse (line 400) | [Fact]
method Settings_IsWindowsIntegratedAuthenticationEnabled_ConfigNonBooleanyValue_ReturnsTrue (line 415) | [Fact]
method Settings_ProxyConfiguration_ConvertToBypassRegexArray (line 430) | [Theory]
method Settings_ProxyConfiguration_ConvertToBypassRegexArray_WebProxyBypass (line 455) | [Theory]
method Settings_ProxyConfiguration_Unset_ReturnsNull (line 481) | [Fact]
method Settings_ProxyConfiguration_GcmHttpConfig_ReturnsValue (line 500) | [Fact]
method Settings_ProxyConfiguration_GcmHttpsConfig_ReturnsValue (line 536) | [Fact]
method Settings_ProxyConfiguration_GitHttpConfig_ReturnsValue (line 572) | [Fact]
method Settings_ProxyConfiguration_GitHttpConfig_EmptyScopedUriUnscoped_ReturnsNull (line 608) | [Fact]
method Settings_ProxyConfiguration_CurlHttpEnvar_ReturnsValue (line 633) | [Fact]
method Settings_ProxyConfiguration_CurlHttpsEnvar_ReturnsValue (line 670) | [Fact]
method Settings_TryGetProxy_CurlAllEnvar_ReturnsValue (line 707) | [Fact]
method Settings_ProxyConfiguration_LegacyGcmEnvar_ReturnsValue (line 744) | [Fact]
method Settings_ProxyConfiguration_Precedence_ReturnsValue (line 781) | [Fact]
method Settings_ProxyConfiguration_CurlEnvarPrecedence_PrefersLowercase (line 835) | [Fact]
method Settings_ProviderOverride_Unset_ReturnsNull (line 891) | [Fact]
method Settings_ProviderOverride_EnvarSet_ReturnsValue (line 909) | [Fact]
method Settings_ProviderOverride_ConfigSet_ReturnsValue (line 932) | [Fact]
method Settings_ProviderOverride_EnvarAndConfigSet_ReturnsEnvarValue (line 955) | [Fact]
method Settings_LegacyAuthorityOverride_Unset_ReturnsNull (line 982) | [Fact]
method Settings_LegacyAuthorityOverride_EnvarSet_ReturnsValue (line 1000) | [Fact]
method Settings_LegacyAuthorityOverride_ConfigSet_ReturnsTrueOutValue (line 1023) | [Fact]
method Settings_LegacyAuthorityOverride_EnvarAndConfigSet_ReturnsEnvarValue (line 1046) | [Fact]
method Settings_TryGetSetting_EnvarSet_ReturnsTrueOutValue (line 1073) | [Fact]
method Settings_TryGetSetting_EnvarUnset_ReturnsFalse (line 1100) | [Fact]
method Settings_TryGetSetting_GlobalConfig_ReturnsTrueAndValue (line 1122) | [Fact]
method Settings_TryGetSetting_RepoConfig_ReturnsTrueAndValue (line 1147) | [Fact]
method Settings_TryGetSetting_ScopedConfig (line 1172) | [Fact]
method Settings_TryGetSetting_EnvarAndConfig_EnvarTakesPrecedence (line 1201) | [Fact]
method Settings_GetSettingValues_EnvarAndMultipleConfig_ReturnsAllWithCorrectPrecedence (line 1230) | [Fact]
method Settings_GetSettingValues_ReturnsAllMatchingValues (line 1266) | [Fact]
method Settings_GetSettingValues_IgnoresSectionAndPropertyCase_ScopeIsCaseSensitive (line 1311) | [Fact]
method Settings_GetSettingValues_IsPath_ReturnsAllParsedValues (line 1354) | [Theory]
method Settings_CustomCertificateBundlePath_ReturnsExpectedValue (line 1400) | [Theory]
method Settings_TlsBackend_ReturnsExpectedValue (line 1437) | [Theory]
FILE: src/shared/Core.Tests/StreamExtensionsTests.cs
class StreamExtensionsTests (line 9) | public class StreamExtensionsTests
method StreamExtensions_ReadDictionary_EmptyString_ReturnsEmptyDictionary (line 16) | [Fact]
method StreamExtensions_ReadDictionary_TerminatedLF_ReturnsDictionary (line 27) | [Fact]
method StreamExtensions_ReadDictionary_TerminatedCRLF_ReturnsDictionary (line 41) | [Fact]
method StreamExtensions_ReadDictionary_CaseSensitive_ReturnsDictionaryWithMultipleEntries (line 55) | [Fact]
method StreamExtensions_ReadDictionary_CaseInsensitive_ReturnsDictionaryWithLastValue (line 68) | [Fact]
method StreamExtensions_ReadDictionary_Spaces_ReturnsCorrectKeysAndValues (line 80) | [Fact]
method StreamExtensions_ReadDictionary_EqualsInValues_ReturnsCorrectKeysAndValues (line 94) | [Fact]
method StreamExtensions_WriteDictionary_TextWriterLF_EmptyDictionary_WritesLineLF (line 108) | [Fact]
method StreamExtensions_WriteDictionary_TextWriterCRLF_EmptyDictionary_WritesLineCRLF (line 118) | [Fact]
method StreamExtensions_WriteDictionary_TextWriterLF_Entries_WritesKVPsAndLF (line 128) | [Fact]
method StreamExtensions_WriteDictionary_TextWriterCRLF_Entries_WritesKVPsAndCRLF (line 143) | [Fact]
method StreamExtensions_WriteDictionary_TextWriterLF_EntriesWithSpaces_WritesKVPsAndLF (line 158) | [Fact]
method StreamExtensions_WriteDictionary_TextWriterCRLF_EntriesWithSpaces_WritesKVPsAndCRLF (line 173) | [Fact]
method StreamExtensions_ReadMultiDictionary_EmptyString_ReturnsEmptyDictionary (line 192) | [Fact]
method StreamExtensions_ReadMultiDictionary_TerminatedLF_ReturnsDictionary (line 203) | [Fact]
method StreamExtensions_ReadMultiDictionary_TerminatedCRLF_ReturnsDictionary (line 218) | [Fact]
method StreamExtensions_ReadMultiDictionary_CaseSensitive_ReturnsDictionaryWithMultipleEntries (line 232) | [Fact]
method StreamExtensions_ReadMultiDictionary_CaseInsensitive_ReturnsDictionaryWithLastValue (line 245) | [Fact]
method StreamExtensions_ReadMultiDictionary_EmptyString_ReturnsKeyWithEmptyStringValue (line 257) | [Fact]
method StreamExtensions_ReadMultiDictionary_Spaces_ReturnsCorrectKeysAndValues (line 270) | [Fact]
method StreamExtensions_ReadMultiDictionary_EqualsInValues_ReturnsCorrectKeysAndValues (line 285) | [Fact]
method StreamExtensions_ReadMultiDictionary_MultiValue_ReturnsDictionary (line 299) | [Fact]
method StreamExtensions_WriteDictionary_TextWriterLF_EmptyMultiDictionary_WritesLineLF (line 312) | [Fact]
method StreamExtensions_WriteDictionary_TextWriterCRLF_EmptyMultiDictionary_WritesLineCRLF (line 322) | [Fact]
method StreamExtensions_WriteDictionary_TextWriterLF_MultiEntries_WritesKVPListsAndLF (line 332) | [Fact]
method StreamExtensions_WriteDictionary_TextWriterCRLF_MultiEntries_WritesKVPListsAndCRLF (line 347) | [Fact]
method StreamExtensions_WriteDictionary_NoMultiEntries_WritesKVPsAndLF (line 362) | [Fact]
method StreamExtensions_WriteDictionary_MultiEntriesWithEmpty_WritesKVPListsAndLF (line 377) | [Fact]
method ReadStringStream (line 396) | private static T ReadStringStream<T>(string input, Func<TextReader, T>...
method WriteStringStream (line 407) | private static string WriteStringStream<T>(T input, Action<TextWriter,...
method AssertDictionary (line 418) | private static void AssertDictionary(string expectedValue, string key,...
method AssertMultiDictionary (line 424) | private static void AssertMultiDictionary(IList<string> expectedValues,
FILE: src/shared/Core.Tests/StringExtensionsTests.cs
class StringExtensionsTests (line 6) | public class StringExtensionsTests
method StringExtensions_IsTruthy (line 8) | [Theory]
method StringExtensions_IsFalsey (line 37) | [Theory]
method StringExtensions_ToBooleany (line 66) | [Theory]
method StringExtensions_ToBooleanyOrDefault (line 97) | [Theory]
method StringExtensions_TruncateLastIndexOf (line 133) | [Theory]
method StringExtensions_TruncateLastIndexOf_Null_ThrowsArgumentNullException (line 146) | [Fact]
method StringExtensions_TruncateFromLastIndexOf (line 152) | [Theory]
method StringExtensions_TruncateFromLastIndexOf_Null_ThrowsArgumentNullException (line 165) | [Fact]
method StringExtensions_TrimUntilIndexOf_Character (line 171) | [Theory]
method StringExtensions_TrimUntilIndexOf_Character_Null_ThrowsArgumentNullException (line 184) | [Fact]
method StringExtensions_TrimUntilIndexOf_String (line 190) | [Theory]
method StringExtensions_TrimUntilIndexOf_String_ComparisonType (line 203) | [Theory]
method StringExtensions_TrimUntilIndexOf_String_Null_ThrowsArgumentNullException (line 216) | [Fact]
method StringExtensions_TrimUntilLastIndexOf_Character (line 222) | [Theory]
method StringExtensions_TrimUntilLastIndexOf_Character_Null_ThrowsArgumentNullException (line 235) | [Fact]
method StringExtensions_TrimUntilLastIndexOf_String (line 241) | [Theory]
method StringExtensions_TrimUntilLastIndexOf_String_ComparisonType (line 255) | [Theory]
method StringExtensions_TrimUntilLastIndexOf_String_Null_ThrowsArgumentNullException (line 268) | [Fact]
method StringExtensions_TrimMiddle_String (line 274) | [Theory]
method StringExtensions_TrimMiddle_String_ComparisonType (line 284) | [Theory]
method StringExtensions_ToSnakeCase_Converts_Correctly (line 297) | [Theory]
FILE: src/shared/Core.Tests/TestProcessManager.cs
class TestProcessManager (line 9) | public class TestProcessManager : IProcessManager
method CreateProcess (line 11) | public ChildProcess CreateProcess(string path, string args, bool useSh...
method CreateProcess (line 25) | public ChildProcess CreateProcess(ProcessStartInfo psi)
FILE: src/shared/Core.Tests/TokenEndpointResponseJsonTest.cs
class TokenEndpointResponseJsonTest (line 8) | public class TokenEndpointResponseJsonTest
method TokenEndpointResponseJson_Deserialize_Uses_Scope (line 10) | [Fact]
FILE: src/shared/Core.Tests/Trace2MessageTests.cs
class Trace2MessageTests (line 8) | public class Trace2MessageTests
method BuildTimeSpan_Match_Returns_Expected_String (line 10) | [Theory]
method BuildRepoSpan_Match_Returns_Expected_String (line 21) | [Fact]
method BuildCategorySpan_Match_Returns_Expected_String (line 30) | [Theory]
method Event_Message_Without_Snake_Case_ToJson_Creates_Expected_Json (line 41) | [Fact]
method Event_Message_With_Snake_Case_ToJson_Creates_Expected_Json (line 63) | [Fact]
FILE: src/shared/Core.Tests/Trace2Tests.cs
class Trace2Tests (line 5) | public class Trace2Tests
method TryGetPipeName_Posix_Returns_Expected_Value (line 7) | [PosixTheory]
method TryGetPipeName_Windows_Returns_Expected_Value (line 20) | [WindowsTheory]
FILE: src/shared/Core.Tests/TraceTests.cs
class TraceTests (line 9) | public class TraceTests
method Trace_WriteLineSecrets_SecretTracingEnabled_WritesSecretValues (line 11) | [Fact]
method Trace_WriteLineSecrets_SecretTracingDisabled_WritesMaskedValues (line 33) | [Fact]
FILE: src/shared/Core.Tests/TraceUtilsTests.cs
class TraceUtilsTests (line 8) | public class TraceUtilsTests
method FormatSource_ReturnsExpectedSourceValues (line 10) | [Theory]
FILE: src/shared/Core.Tests/UriExtensionsTests.cs
class UriExtensionsTests (line 8) | public class UriExtensionsTests
method UriExtensions_GetQueryParameters (line 10) | [Fact]
method UriExtensions_GetGitConfigurationScopes (line 29) | [Theory]
method UriExtensions_GetUserInfo (line 49) | [Theory]
method UriExtensions_WithoutUserInfo (line 80) | [Theory]
FILE: src/shared/Core.Tests/WslUtilsTests.cs
class WslUtilsTests (line 8) | public class WslUtilsTests
method WslUtils_IsWslPath (line 10) | [Theory]
method WslUtils_ConvertToDistroPath (line 48) | [Theory]
method WslUtils_ConvertToDistroPath_Invalid_ThrowsException (line 70) | [Theory]
method WslUtils_CreateWslProcess (line 95) | [WindowsFact]
method WslUtils_CreateWslProcess_WorkingDirectory (line 115) | [WindowsFact]
FILE: src/shared/Core/Application.cs
class Application (line 16) | public class Application : ApplicationBase, IConfigurableComponent
method Application (line 23) | public Application(ICommandContext context)
method Application (line 28) | internal Application(ICommandContext context,
method RegisterProvider (line 42) | public void RegisterProvider(IHostProvider provider, HostProviderPrior...
method RunInternalAsync (line 67) | protected override async Task<int> RunInternalAsync(string[] args)
method Dispose (line 123) | protected override void Dispose(bool disposing)
method OnException (line 133) | private void OnException(Exception ex, InvocationContext invocationCon...
method WriteException (line 147) | private bool WriteException(Exception ex)
method ConfigureAsync (line 182) | Task IConfigurableComponent.ConfigureAsync(ConfigurationTarget target)
method UnconfigureAsync (line 229) | Task IConfigurableComponent.UnconfigureAsync(ConfigurationTarget target)
method GetGitConfigAppPath (line 275) | private string GetGitConfigAppPath()
FILE: src/shared/Core/ApplicationBase.cs
class ApplicationBase (line 11) | public abstract class ApplicationBase : IDisposable
method ApplicationBase (line 19) | protected ApplicationBase(ICommandContext context)
method RunAsync (line 26) | public Task<int> RunAsync(string[] args)
method RunInternalAsync (line 87) | protected abstract Task<int> RunInternalAsync(string[] args);
method WaitForDebuggerAttached (line 94) | private static void WaitForDebuggerAttached()
method Dispose (line 115) | protected virtual void Dispose(bool disposing)
method Dispose (line 123) | public void Dispose()
FILE: src/shared/Core/AssemblyUtils.cs
class AssemblyUtils (line 5) | public static class AssemblyUtils
method TryGetAssemblyVersion (line 7) | public static bool TryGetAssemblyVersion(out string version)
FILE: src/shared/Core/Authentication/AuthenticationBase.cs
class AuthenticationBase (line 12) | public abstract class AuthenticationBase
method AuthenticationBase (line 16) | protected AuthenticationBase(ICommandContext context)
method InvokeHelperAsync (line 23) | protected Task<IDictionary<string, string>> InvokeHelperAsync(string p...
method InvokeHelperAsync (line 29) | protected internal virtual async Task<IDictionary<string, string>> Inv...
method ThrowIfUserInteractionDisabled (line 89) | protected void ThrowIfUserInteractionDisabled()
method ThrowIfGuiPromptsDisabled (line 103) | protected void ThrowIfGuiPromptsDisabled()
method ThrowIfTerminalPromptsDisabled (line 112) | protected void ThrowIfTerminalPromptsDisabled()
method ThrowIfWindowCancelled (line 121) | protected void ThrowIfWindowCancelled(WindowViewModel viewModel)
method GetParentWindowHandle (line 129) | protected IntPtr GetParentWindowHandle()
method TryFindHelperCommand (line 139) | protected bool TryFindHelperCommand(string envar, string configName, s...
method QuoteCmdArg (line 260) | public static string QuoteCmdArg(string str)
FILE: src/shared/Core/Authentication/BasicAuthentication.cs
type IBasicAuthentication (line 12) | public interface IBasicAuthentication
method GetCredentialsAsync (line 14) | Task<ICredential> GetCredentialsAsync(string resource, string userName);
class BasicAuthenticationExtensions (line 17) | public static class BasicAuthenticationExtensions
method GetCredentialsAsync (line 19) | public static Task<ICredential> GetCredentialsAsync(this IBasicAuthent...
class BasicAuthentication (line 25) | public class BasicAuthentication : AuthenticationBase, IBasicAuthentication
method BasicAuthentication (line 32) | public BasicAuthentication(ICommandContext context)
method GetCredentialsAsync (line 35) | public async Task<ICredential> GetCredentialsAsync(string resource, st...
method GetCredentialsViaUiAsync (line 56) | private async Task<ICredential> GetCredentialsViaUiAsync(string resour...
method GetCredentialsViaTty (line 73) | private ICredential GetCredentialsViaTty(string resource, string userN...
method GetCredentialsViaHelperAsync (line 94) | private async Task<ICredential> GetCredentialsViaHelperAsync(string co...
method TryFindHelperCommand (line 124) | private bool TryFindHelperCommand(out string command, out string args)
FILE: src/shared/Core/Authentication/MicrosoftAuthentication.cs
type IMicrosoftAuthentication (line 25) | public interface IMicrosoftAuthentication
method GetTokenForUserAsync (line 37) | Task<IMicrosoftAuthenticationResult> GetTokenForUserAsync(string autho...
method GetTokenForServicePrincipalAsync (line 46) | Task<IMicrosoftAuthenticationResult> GetTokenForServicePrincipalAsync(...
method GetTokenForManagedIdentityAsync (line 65) | Task<IMicrosoftAuthenticationResult> GetTokenForManagedIdentityAsync(s...
class ServicePrincipalIdentity (line 68) | public class ServicePrincipalIdentity
type IMicrosoftAuthenticationResult (line 102) | public interface IMicrosoftAuthenticationResult
type MicrosoftAuthenticationFlowType (line 108) | public enum MicrosoftAuthenticationFlowType
class MicrosoftAuthentication (line 116) | public class MicrosoftAuthentication : AuthenticationBase, IMicrosoftAut...
method MicrosoftAuthentication (line 125) | public MicrosoftAuthentication(ICommandContext context)
method GetTokenForUserAsync (line 130) | public async Task<IMicrosoftAuthenticationResult> GetTokenForUserAsync(
method GetTokenForServicePrincipalAsync (line 271) | public async Task<IMicrosoftAuthenticationResult> GetTokenForServicePr...
method GetTokenForManagedIdentityAsync (line 290) | public async Task<IMicrosoftAuthenticationResult> GetTokenForManagedId...
method UseDefaultAccountAsync (line 315) | private async Task<bool> UseDefaultAccountAsync(string userName)
method GetFlowType (line 370) | internal MicrosoftAuthenticationFlowType GetFlowType()
method GetAccessTokenSilentlyAsync (line 402) | private async Task<AuthenticationResult> GetAccessTokenSilentlyAsync(
method CreatePublicClientApplicationAsync (line 456) | private async Task<IPublicClientApplication> CreatePublicClientApplica...
method CreateConfidentialClientApplicationAsync (line 530) | private async Task<IConfidentialClientApplication> CreateConfidentialC...
method RegisterTokenCacheAsync (line 567) | private async Task RegisterTokenCacheAsync(ITokenCache cache, StorageP...
method CreateUserTokenCacheProps (line 635) | internal StorageCreationProperties CreateUserTokenCacheProps(bool useL...
method GetManagedIdentity (line 673) | internal static ManagedIdentityId GetManagedIdentity(string str)
method CreateAppTokenCacheProps (line 721) | internal StorageCreationProperties CreateAppTokenCacheProps(bool useLi...
method GetEmbeddedWebViewOptions (line 749) | private static EmbeddedWebViewOptions GetEmbeddedWebViewOptions()
method GetSystemWebViewOptions (line 757) | private SystemWebViewOptions GetSystemWebViewOptions()
method ShowDeviceCodeInTty (line 786) | private Task ShowDeviceCodeInTty(DeviceCodeResult dcr)
method OnMsalLogMessage (line 793) | private void OnMsalLogMessage(LogLevel level, string message, bool con...
method TryFindHelperCommand (line 798) | private bool TryFindHelperCommand(out string command, out string args)
class MsalHttpClientFactoryAdaptor (line 808) | private class MsalHttpClientFactoryAdaptor : IMsalHttpClientFactory
method MsalHttpClientFactoryAdaptor (line 813) | public MsalHttpClientFactoryAdaptor(IHttpClientFactory factory)
method GetHttpClient (line 820) | public HttpClient GetHttpClient()
method CanUseBroker (line 832) | public bool CanUseBroker()
method CanUseEmbeddedWebView (line 859) | private bool CanUseEmbeddedWebView()
method EnsureCanUseEmbeddedWebView (line 869) | private void EnsureCanUseEmbeddedWebView()
method CanUseSystemWebView (line 883) | private bool CanUseSystemWebView(IPublicClientApplication app, Uri red...
method EnsureCanUseSystemWebView (line 895) | private void EnsureCanUseSystemWebView(IPublicClientApplication app, U...
class MsalResult (line 912) | private class MsalResult : IMicrosoftAuthenticationResult
method MsalResult (line 916) | public MsalResult(AuthenticationResult msalResult)
FILE: src/shared/Core/Authentication/OAuth/HttpListenerExtensions.cs
class HttpListenerExtensions (line 7) | public static class HttpListenerExtensions
method WriteResponseAsync (line 9) | public static async Task WriteResponseAsync(this HttpListenerResponse ...
FILE: src/shared/Core/Authentication/OAuth/IOAuth2WebBrowser.cs
type IOAuth2WebBrowser (line 8) | public interface IOAuth2WebBrowser
method UpdateRedirectUri (line 10) | Uri UpdateRedirectUri(Uri uri);
method GetAuthenticationCodeAsync (line 12) | Task<Uri> GetAuthenticationCodeAsync(Uri authorizationUri, Uri redirec...
FILE: src/shared/Core/Authentication/OAuth/Json/DeviceAuthorizationEndpointResponseJson.cs
class DeviceAuthorizationEndpointResponseJson (line 6) | public class DeviceAuthorizationEndpointResponseJson
method ToResult (line 26) | public OAuth2DeviceCodeResult ToResult()
FILE: src/shared/Core/Authentication/OAuth/Json/ErrorResponseJson.cs
class ErrorResponseJson (line 8) | public class ErrorResponseJson
method ToException (line 20) | public OAuth2Exception ToException(Exception innerException = null)
FILE: src/shared/Core/Authentication/OAuth/Json/TokenEndpointResponseJson.cs
class TokenEndpointResponseJson (line 7) | public class TokenEndpointResponseJson
method ToResult (line 26) | public OAuth2TokenResult ToResult()
FILE: src/shared/Core/Authentication/OAuth/OAuth2AuthorizationCodeResult.cs
class OAuth2AuthorizationCodeResult (line 5) | public class OAuth2AuthorizationCodeResult
method OAuth2AuthorizationCodeResult (line 7) | public OAuth2AuthorizationCodeResult(string code, Uri redirectUri = nu...
FILE: src/shared/Core/Authentication/OAuth/OAuth2Client.cs
type IOAuth2Client (line 16) | public interface IOAuth2Client
method GetAuthorizationCodeAsync (line 26) | Task<OAuth2AuthorizationCodeResult> GetAuthorizationCodeAsync(
method GetDeviceCodeAsync (line 40) | Task<OAuth2DeviceCodeResult> GetDeviceCodeAsync(IEnumerable<string> sc...
method GetTokenByAuthorizationCodeAsync (line 48) | Task<OAuth2TokenResult> GetTokenByAuthorizationCodeAsync(OAuth2Authori...
method GetTokenByRefreshTokenAsync (line 56) | Task<OAuth2TokenResult> GetTokenByRefreshTokenAsync(string refreshToke...
method GetTokenByDeviceCodeAsync (line 64) | Task<OAuth2TokenResult> GetTokenByDeviceCodeAsync(OAuth2DeviceCodeResu...
class OAuth2Client (line 67) | public class OAuth2Client : IOAuth2Client
method OAuth2Client (line 79) | public OAuth2Client(HttpClient httpClient,
method GetAuthorizationCodeAsync (line 104) | public async Task<OAuth2AuthorizationCodeResult> GetAuthorizationCodeA...
method GetDeviceCodeAsync (line 187) | public async Task<OAuth2DeviceCodeResult> GetDeviceCodeAsync(IEnumerab...
method GetTokenByAuthorizationCodeAsync (line 225) | public async Task<OAuth2TokenResult> GetTokenByAuthorizationCodeAsync(...
method GetTokenByRefreshTokenAsync (line 264) | public async Task<OAuth2TokenResult> GetTokenByRefreshTokenAsync(strin...
method GetTokenByDeviceCodeAsync (line 297) | public async Task<OAuth2TokenResult> GetTokenByDeviceCodeAsync(OAuth2D...
method TryCreateTokenEndpointResult (line 359) | protected virtual bool TryCreateTokenEndpointResult(string json, out O...
method TryCreateExceptionFromResponse (line 371) | protected virtual bool TryCreateExceptionFromResponse(string json, out...
method CreateRequestMessage (line 387) | private HttpRequestMessage CreateRequestMessage(HttpMethod method, Uri...
method CreateExceptionFromResponse (line 400) | protected Exception CreateExceptionFromResponse(string json)
method TryDeserializeJson (line 413) | protected static bool TryDeserializeJson<T>(string json, out T obj)
class OAuth2ClientExtensions (line 430) | public static class OAuth2ClientExtensions
method GetAuthorizationCodeAsync (line 432) | public static Task<OAuth2AuthorizationCodeResult> GetAuthorizationCode...
FILE: src/shared/Core/Authentication/OAuth/OAuth2Constants.cs
class OAuth2Constants (line 4) | public static class OAuth2Constants
class AuthorizationEndpoint (line 12) | public static class AuthorizationEndpoint
class AuthorizationGrantResponse (line 23) | public static class AuthorizationGrantResponse
class TokenEndpoint (line 32) | public static class TokenEndpoint
class DeviceAuthorization (line 42) | public static class DeviceAuthorization
class Errors (line 48) | public static class Errors
FILE: src/shared/Core/Authentication/OAuth/OAuth2CryptographicGenerator.cs
type OAuth2PkceChallengeMethod (line 7) | public enum OAuth2PkceChallengeMethod
type IOAuth2CodeGenerator (line 13) | public interface IOAuth2CodeGenerator
method CreateNonce (line 19) | string CreateNonce();
method CreatePkceCodeVerifier (line 25) | string CreatePkceCodeVerifier();
method CreatePkceCodeChallenge (line 33) | string CreatePkceCodeChallenge(OAuth2PkceChallengeMethod challengeMeth...
class OAuth2CryptographicCodeGenerator (line 36) | public class OAuth2CryptographicCodeGenerator : IOAuth2CodeGenerator
method CreateNonce (line 41) | public string CreateNonce()
method CreatePkceCodeVerifier (line 46) | public string CreatePkceCodeVerifier()
method CreatePkceCodeChallenge (line 78) | public string CreatePkceCodeChallenge(OAuth2PkceChallengeMethod challe...
FILE: src/shared/Core/Authentication/OAuth/OAuth2DeviceCodeResult.cs
class OAuth2DeviceCodeResult (line 5) | public class OAuth2DeviceCodeResult
method OAuth2DeviceCodeResult (line 7) | public OAuth2DeviceCodeResult(string deviceCode, string userCode, Uri ...
FILE: src/shared/Core/Authentication/OAuth/OAuth2Exception.cs
class OAuth2Exception (line 5) | public class OAuth2Exception : Exception
method OAuth2Exception (line 7) | public OAuth2Exception(string message) : base(message) { }
method OAuth2Exception (line 9) | public OAuth2Exception(string message, Exception innerException) : bas...
FILE: src/shared/Core/Authentication/OAuth/OAuth2ServerEndpoints.cs
class OAuth2ServerEndpoints (line 8) | public class OAuth2ServerEndpoints
method OAuth2ServerEndpoints (line 12) | public OAuth2ServerEndpoints(Uri authorizationEndpoint, Uri tokenEndpo...
FILE: src/shared/Core/Authentication/OAuth/OAuth2SystemWebBrowser.cs
class OAuth2WebBrowserOptions (line 10) | public class OAuth2WebBrowserOptions
class OAuth2SystemWebBrowser (line 33) | public class OAuth2SystemWebBrowser : IOAuth2WebBrowser
method OAuth2SystemWebBrowser (line 38) | public OAuth2SystemWebBrowser(ISessionManager sessionManager, OAuth2We...
method UpdateRedirectUri (line 47) | public Uri UpdateRedirectUri(Uri uri)
method GetAuthenticationCodeAsync (line 64) | public async Task<Uri> GetAuthenticationCodeAsync(Uri authorizationUri...
method InterceptRequestsAsync (line 78) | private async Task<Uri> InterceptRequestsAsync(Uri listenUri, Cancella...
method HandleInterceptedRequestAsync (line 125) | private async Task HandleInterceptedRequestAsync(HttpListenerRequest r...
method GetFreeTcpPort (line 175) | private static int GetFreeTcpPort()
FILE: src/shared/Core/Authentication/OAuth/OAuth2TokenResult.cs
class OAuth2TokenResult (line 5) | public class OAuth2TokenResult
method OAuth2TokenResult (line 7) | public OAuth2TokenResult(string accessToken, string tokenType)
FILE: src/shared/Core/Authentication/OAuthAuthentication.cs
type OAuthAuthenticationModes (line 13) | [Flags]
type IOAuthAuthentication (line 23) | public interface IOAuthAuthentication
method GetAuthenticationModeAsync (line 25) | Task<OAuthAuthenticationModes> GetAuthenticationModeAsync(string resou...
method GetTokenByBrowserAsync (line 27) | Task<OAuth2TokenResult> GetTokenByBrowserAsync(OAuth2Client client, st...
method GetTokenByDeviceCodeAsync (line 29) | Task<OAuth2TokenResult> GetTokenByDeviceCodeAsync(OAuth2Client client,...
class OAuthAuthentication (line 32) | public class OAuthAuthentication : AuthenticationBase, IOAuthAuthentication
method OAuthAuthentication (line 34) | public OAuthAuthentication(ICommandContext context)
method GetAuthenticationModeAsync (line 37) | public async Task<OAuthAuthenticationModes> GetAuthenticationModeAsync(
method GetAuthenticationModeViaUiAsync (line 76) | private async Task<OAuthAuthenticationModes> GetAuthenticationModeViaU...
method GetAuthenticationModeViaTty (line 104) | private OAuthAuthenticationModes GetAuthenticationModeViaTty(string re...
method GetAuthenticationModeViaHelperAsync (line 136) | private async Task<OAuthAuthenticationModes> GetAuthenticationModeViaH...
method GetTokenByBrowserAsync (line 178) | public async Task<OAuth2TokenResult> GetTokenByBrowserAsync(OAuth2Clie...
method GetTokenByDeviceCodeAsync (line 195) | public async Task<OAuth2TokenResult> GetTokenByDeviceCodeAsync(OAuth2C...
method ShowDeviceCodeViaUiAsync (line 242) | private Task ShowDeviceCodeViaUiAsync(OAuth2DeviceCodeResult dcr, Canc...
method ShowDeviceCodeViaHelperAsync (line 253) | private Task ShowDeviceCodeViaHelperAsync(
method GetTokenByDeviceCodeViaTtyAsync (line 264) | private async Task<OAuth2TokenResult> GetTokenByDeviceCodeViaTtyAsync(...
method TryFindHelperCommand (line 277) | private bool TryFindHelperCommand(out string command, out string args)
FILE: src/shared/Core/Authentication/WindowsIntegratedAuthentication.cs
type IWindowsIntegratedAuthentication (line 12) | public interface IWindowsIntegratedAuthentication : IDisposable
method AskEnableNtlmAsync (line 14) | Task<NtlmSupport> AskEnableNtlmAsync(Uri uri);
method GetAuthenticationTypesAsync (line 15) | Task<WindowsAuthenticationTypes> GetAuthenticationTypesAsync(Uri uri);
type NtlmSupport (line 18) | public enum NtlmSupport
type WindowsAuthenticationTypes (line 25) | [Flags]
class WindowsIntegratedAuthentication (line 35) | public class WindowsIntegratedAuthentication : AuthenticationBase, IWind...
method WindowsIntegratedAuthentication (line 43) | public WindowsIntegratedAuthentication(ICommandContext context)
method AskEnableNtlmAsync (line 46) | public async Task<NtlmSupport> AskEnableNtlmAsync(Uri uri)
method GetAuthenticationTypesAsync (line 84) | public async Task<WindowsAuthenticationTypes> GetAuthenticationTypesAs...
method Dispose (line 119) | public void Dispose()
FILE: src/shared/Core/Base64UrlConvert.cs
class Base64UrlConvert (line 5) | public static class Base64UrlConvert
method Encode (line 7) | public static string Encode(byte[] data, bool includePadding = true)
FILE: src/shared/Core/ChildProcess.cs
class ChildProcess (line 8) | public class ChildProcess : DisposableObject
method Start (line 25) | public static ChildProcess Start(ITrace2 trace2, ProcessStartInfo star...
method ChildProcess (line 32) | public ChildProcess(ITrace2 trace2, ProcessStartInfo startInfo)
method Start (line 39) | public bool Start(Trace2ProcessClass processClass)
method WaitForExit (line 57) | public void WaitForExit() => Process.WaitForExit();
method Kill (line 59) | public void Kill() => Process.Kill();
method ReleaseManagedResources (line 61) | protected override void ReleaseManagedResources()
method ProcessOnExited (line 68) | private void ProcessOnExited(object sender, EventArgs e)
FILE: src/shared/Core/CommandContext.cs
type ICommandContext (line 15) | public interface ICommandContext : IDisposable
class CommandContext (line 91) | public class CommandContext : DisposableObject, ICommandContext
method CommandContext (line 93) | public CommandContext()
method GetGitPath (line 162) | private static string GetGitPath(IEnvironment environment, IFileSystem...
method ReleaseManagedResources (line 228) | protected override void ReleaseManagedResources()
method GetEntryApplicationPath (line 238) | public static string GetEntryApplicationPath()
method GetInstallationDirectory (line 245) | public static string GetInstallationDirectory()
FILE: src/shared/Core/CommandExtensions.cs
class CommandExtensions (line 9) | public static class CommandExtensions
method AddOptionSet (line 17) | public static void AddOptionSet(this Command command, OptionArity arit...
type OptionArity (line 69) | public enum OptionArity
FILE: src/shared/Core/Commands/ConfigurationCommands.cs
class ConfigurationCommandBase (line 6) | public abstract class ConfigurationCommandBase : Command
method ConfigurationCommandBase (line 8) | protected ConfigurationCommandBase(ICommandContext context, string nam...
method ExecuteAsync (line 27) | internal Task ExecuteAsync(bool system)
method ExecuteInternalAsync (line 36) | protected abstract Task ExecuteInternalAsync(ConfigurationTarget target);
class ConfigureCommand (line 39) | public class ConfigureCommand : ConfigurationCommandBase
method ConfigureCommand (line 41) | public ConfigureCommand(ICommandContext context, IConfigurationService...
method ExecuteInternalAsync (line 44) | protected override Task ExecuteInternalAsync(ConfigurationTarget target)
class UnconfigureCommand (line 50) | public class UnconfigureCommand : ConfigurationCommandBase
method UnconfigureCommand (line 52) | public UnconfigureCommand(ICommandContext context, IConfigurationServi...
method ExecuteInternalAsync (line 55) | protected override Task ExecuteInternalAsync(ConfigurationTarget target)
FILE: src/shared/Core/Commands/DiagnoseCommand.cs
class DiagnoseCommand (line 11) | public class DiagnoseCommand : Command
method DiagnoseCommand (line 18) | public DiagnoseCommand(ICommandContext context)
method AddDiagnostic (line 41) | public void AddDiagnostic(IDiagnostic diagnostic)
method ExecuteAsync (line 46) | private async Task<int> ExecuteAsync(string output)
class ConsoleEx (line 198) | private static class ConsoleEx
method WriteLineIndent (line 200) | public static void WriteLineIndent(string str)
method WriteColor (line 213) | public static void WriteColor(string str, ConsoleColor fgColor)
FILE: src/shared/Core/Commands/EraseCommand.cs
class EraseCommand (line 8) | public class EraseCommand : GitCommandBase
method EraseCommand (line 10) | public EraseCommand(ICommandContext context, IHostProviderRegistry hos...
method ExecuteInternalAsync (line 13) | protected override Task ExecuteInternalAsync(InputArguments input, IHo...
FILE: src/shared/Core/Commands/GetCommand.cs
class GetCommand (line 10) | public class GetCommand : GitCommandBase
method GetCommand (line 12) | public GetCommand(ICommandContext context, IHostProviderRegistry hostP...
method ExecuteInternalAsync (line 15) | protected override async Task ExecuteInternalAsync(InputArguments inpu...
FILE: src/shared/Core/Commands/GitCommandBase.cs
class GitCommandBase (line 12) | public abstract class GitCommandBase : Command
method GitCommandBase (line 16) | protected GitCommandBase(ICommandContext context, string name, string ...
method ExecuteAsync (line 30) | internal async Task ExecuteAsync()
method EnsureMinimumInputArguments (line 56) | protected virtual void EnsureMinimumInputArguments(InputArguments input)
method ExecuteInternalAsync (line 87) | protected abstract Task ExecuteInternalAsync(InputArguments input, IHo...
FILE: src/shared/Core/Commands/ProviderCommand.cs
type ICommandProvider (line 5) | public interface ICommandProvider
method CreateCommand (line 10) | ProviderCommand CreateCommand();
class ProviderCommand (line 13) | public class ProviderCommand : Command
method ProviderCommand (line 15) | public ProviderCommand(IHostProvider provider)
FILE: src/shared/Core/Commands/StoreCommand.cs
class StoreCommand (line 9) | public class StoreCommand : GitCommandBase
method StoreCommand (line 11) | public StoreCommand(ICommandContext context, IHostProviderRegistry hos...
method ExecuteInternalAsync (line 14) | protected override Task ExecuteInternalAsync(InputArguments input, IHo...
method EnsureMinimumInputArguments (line 19) | protected override void EnsureMinimumInputArguments(InputArguments input)
FILE: src/shared/Core/ConfigurationService.cs
type ConfigurationTarget (line 9) | public enum ConfigurationTarget
type IConfigurableComponent (line 25) | public interface IConfigurableComponent
method ConfigureAsync (line 36) | Task ConfigureAsync(ConfigurationTarget target);
method UnconfigureAsync (line 42) | Task UnconfigureAsync(ConfigurationTarget target);
type IConfigurationService (line 45) | public interface IConfigurationService
method AddComponent (line 51) | void AddComponent(IConfigurableComponent component);
method ConfigureAsync (line 57) | Task ConfigureAsync(ConfigurationTarget target);
method UnconfigureAsync (line 63) | Task UnconfigureAsync(ConfigurationTarget target);
class ConfigurationService (line 66) | public class ConfigurationService : IConfigurationService
method ConfigurationService (line 71) | public ConfigurationService(ICommandContext context)
method AddComponent (line 80) | public void AddComponent(IConfigurableComponent component)
method ConfigureAsync (line 85) | public async Task ConfigureAsync(ConfigurationTarget target)
method UnconfigureAsync (line 95) | public async Task UnconfigureAsync(ConfigurationTarget target)
FILE: src/shared/Core/Constants.cs
class Constants (line 6) | public static class Constants
class CredentialProtocol (line 34) | public static class CredentialProtocol
class CredentialStoreNames (line 41) | public static class CredentialStoreNames
class RegexPatterns (line 53) | public static class RegexPatterns
class EnvironmentVariables (line 71) | public static class EnvironmentVariables
class Http (line 135) | public static class Http
class GitConfiguration (line 145) | public static class GitConfiguration
class Credential (line 147) | public static class Credential
class Http (line 191) | public static class Http
class Remote (line 204) | public static class Remote
class Trace2 (line 211) | public static class Trace2
class WindowsRegistry (line 220) | public static class WindowsRegistry
class HelpUrls (line 230) | public static class HelpUrls
method GetHttpUserAgent (line 279) | public static string GetHttpUserAgent(ITrace2 trace2)
FILE: src/shared/Core/ConvertUtils.cs
class ConvertUtils (line 5) | public static class ConvertUtils
method TryToInt32 (line 7) | public static bool TryToInt32(object value, out int i)
method TryConvert (line 12) | public static bool TryConvert<T>(Func<object, T> convert, object value...
FILE: src/shared/Core/Credential.cs
type ICredential (line 7) | public interface ICredential
class GitCredential (line 23) | public class GitCredential : ICredential
method GitCredential (line 25) | public GitCredential(string userName, string password)
FILE: src/shared/Core/CredentialCacheStore.cs
class CredentialCacheStore (line 6) | public class CredentialCacheStore : ICredentialStore
method CredentialCacheStore (line 11) | public CredentialCacheStore(IGit git, string options)
method GetAccounts (line 26) | public IList<string> GetAccounts(string service)
method Get (line 45) | public ICredential Get(string service, string account)
method AddOrUpdate (line 62) | public void AddOrUpdate(string service, string account, string secret)
method Remove (line 75) | public bool Remove(string service, string account)
method MakeGitCredentialsEntry (line 93) | private Dictionary<string, string> MakeGitCredentialsEntry(string serv...
FILE: src/shared/Core/CredentialStore.cs
class CredentialStore (line 13) | public class CredentialStore : ICredentialStore
method CredentialStore (line 19) | public CredentialStore(ICommandContext context)
method GetAccounts (line 28) | public IList<string> GetAccounts(string service)
method Get (line 34) | public ICredential Get(string service, string account)
method AddOrUpdate (line 40) | public void AddOrUpdate(string service, string account, string secret)
method Remove (line 46) | public bool Remove(string service, string account)
method EnsureBackingStore (line 54) | private void EnsureBackingStore()
method GetDefaultStore (line 126) | private static string GetDefaultStore()
method AppendAvailableStoreList (line 138) | private static void AppendAvailableStoreList(StringBuilder sb)
method ValidateWindowsCredentialManager (line 180) | private void ValidateWindowsCredentialManager()
method ValidateDpapi (line 201) | private void ValidateDpapi(out string storeRoot)
method ValidateMacOSKeychain (line 224) | private void ValidateMacOSKeychain()
method ValidateSecretService (line 236) | private void ValidateSecretService()
method ValidateGpgPass (line 257) | private void ValidateGpgPass(out string storeRoot, out string execPath)
method ValidateCredentialCache (line 296) | private void ValidateCredentialCache(out string options)
method ValidatePlaintext (line 318) | private void ValidatePlaintext(out string storeRoot)
method GetGpgPath (line 332) | private string GetGpgPath()
FILE: src/shared/Core/CurlCookie.cs
class CurlCookieParser (line 8) | public class CurlCookieParser
method CurlCookieParser (line 12) | public CurlCookieParser(ITrace trace)
method Parse (line 17) | public IList<Cookie> Parse(string content)
method ParseExpires (line 67) | private static DateTime ParseExpires(string expires)
FILE: src/shared/Core/Diagnostics/CredentialStoreDiagnostic.cs
class CredentialStoreDiagnostic (line 8) | public class CredentialStoreDiagnostic : Diagnostic
method CredentialStoreDiagnostic (line 10) | public CredentialStoreDiagnostic(ICommandContext commandContext)
method RunInternalAsync (line 14) | protected override Task<bool> RunInternalAsync(StringBuilder log, ILis...
FILE: src/shared/Core/Diagnostics/Diagnostic.cs
type IDiagnostic (line 8) | public interface IDiagnostic
method CanRun (line 12) | bool CanRun();
method RunAsync (line 14) | Task<DiagnosticResult> RunAsync();
class Diagnostic (line 17) | public abstract class Diagnostic : IDiagnostic
method Diagnostic (line 21) | protected Diagnostic(string name, ICommandContext commandContext)
method CanRun (line 29) | public virtual bool CanRun()
method RunAsync (line 34) | public async Task<DiagnosticResult> RunAsync()
method RunInternalAsync (line 59) | protected abstract Task<bool> RunInternalAsync(StringBuilder log, ILis...
class DiagnosticResult (line 62) | public class DiagnosticResult
FILE: src/shared/Core/Diagnostics/EnvironmentDiagnostic.cs
class EnvironmentDiagnostic (line 10) | public class EnvironmentDiagnostic : Diagnostic
method EnvironmentDiagnostic (line 12) | public EnvironmentDiagnostic(ICommandContext commandContext)
method RunInternalAsync (line 16) | protected override Task<bool> RunInternalAsync(StringBuilder log, ILis...
FILE: src/shared/Core/Diagnostics/FileSystemDiagnostic.cs
class FileSystemDiagnostic (line 9) | public class FileSystemDiagnostic : Diagnostic
method FileSystemDiagnostic (line 11) | public FileSystemDiagnostic(ICommandContext commandContext)
method RunInternalAsync (line 15) | protected override Task<bool> RunInternalAsync(StringBuilder log, ILis...
FILE: src/shared/Core/Diagnostics/GitDiagnostic.cs
class GitDiagnostic (line 8) | public class GitDiagnostic : Diagnostic
method GitDiagnostic (line 10) | public GitDiagnostic(ICommandContext commandContext)
method RunInternalAsync (line 14) | protected override Task<bool> RunInternalAsync(StringBuilder log, ILis...
FILE: src/shared/Core/Diagnostics/IDiagnosticProvider.cs
type IDiagnosticProvider (line 5) | public interface IDiagnosticProvider
method GetDiagnostics (line 7) | IEnumerable<IDiagnostic> GetDiagnostics();
FILE: src/shared/Core/Diagnostics/MicrosoftAuthenticationDiagnostic.cs
class MicrosoftAuthenticationDiagnostic (line 10) | public class MicrosoftAuthenticationDiagnostic : Diagnostic
method MicrosoftAuthenticationDiagnostic (line 12) | public MicrosoftAuthenticationDiagnostic(ICommandContext context)
method RunInternalAsync (line 16) | protected override async Task<bool> RunInternalAsync(StringBuilder log...
FILE: src/shared/Core/Diagnostics/NetworkingDiagnostic.cs
class NetworkingDiagnostic (line 12) | public class NetworkingDiagnostic : Diagnostic
method NetworkingDiagnostic (line 18) | public NetworkingDiagnostic(ICommandContext commandContext)
method RunInternalAsync (line 22) | protected override async Task<bool> RunInternalAsync(StringBuilder log...
method SendHttpRequest (line 101) | internal /* For testing purposes */ async void SendHttpRequest(StringB...
FILE: src/shared/Core/DictionaryExtensions.cs
class DictionaryExtensions (line 8) | public static class DictionaryExtensions
method GetBooleanyOrDefault (line 20) | public static bool GetBooleanyOrDefault(this IReadOnlyDictionary<strin...
method ToQueryString (line 30) | public static string ToQueryString(this IDictionary<string, string> dict)
method Append (line 53) | public static void Append<TKey, TValue>(this IDictionary<TKey, ICollec...
method GetValues (line 64) | public static IEnumerable<TValue> GetValues<TKey, TValue>(this IDictio...
method GetValues (line 69) | public static IEnumerable<TValue> GetValues<TKey, TValue>(this IDictio...
method ToDictionary (line 74) | public static IDictionary<TKey, IEnumerable<TValue>> ToDictionary<TKey...
FILE: src/shared/Core/DisposableObject.cs
class DisposableObject (line 8) | public abstract class DisposableObject : IDisposable
method ThrowIfDisposed (line 16) | protected void ThrowIfDisposed()
method ReleaseUnmanagedResources (line 27) | protected virtual void ReleaseUnmanagedResources() { }
method ReleaseManagedResources (line 32) | protected virtual void ReleaseManagedResources() { }
method Dispose (line 38) | private void Dispose(bool disposing)
method Dispose (line 55) | public void Dispose()
FILE: src/shared/Core/EncodingEx.cs
class EncodingEx (line 5) | public static class EncodingEx
FILE: src/shared/Core/EnsureArgument.cs
class EnsureArgument (line 5) | public static class EnsureArgument
method NotNull (line 7) | public static void NotNull<T>(T arg, string name)
method NotNullOrEmpty (line 15) | public static void NotNullOrEmpty(string arg, string name)
method NotNullOrWhiteSpace (line 25) | public static void NotNullOrWhiteSpace(string arg, string name)
method AbsoluteUri (line 35) | public static void AbsoluteUri(Uri arg, string name)
method PositiveOrZero (line 45) | public static void PositiveOrZero(int arg, string name)
method Positive (line 53) | public static void Positive(int arg, string name)
method NegativeOrZero (line 61) | public static void NegativeOrZero(int arg, string name)
method Negative (line 69) | public static void Negative(int arg, string name)
method InRange (line 77) | public static void InRange(int arg, string name, int lower, int upper,...
FILE: src/shared/Core/EnumerableExtensions.cs
class EnumerableExtensions (line 7) | public static class EnumerableExtensions
method ConcatMany (line 16) | public static IEnumerable<TSource> ConcatMany<TSource>(this IEnumerabl...
method TryGetFirst (line 28) | public static bool TryGetFirst<TSource>(this IEnumerable<TSource> coll...
FILE: src/shared/Core/EnvironmentBase.cs
type IEnvironment (line 12) | public interface IEnvironment
method IsDirectoryOnPath (line 24) | bool IsDirectoryOnPath(string directoryPath);
method AddDirectoryToPath (line 31) | void AddDirectoryToPath(string directoryPath, EnvironmentVariableTarge...
method RemoveDirectoryFromPath (line 38) | void RemoveDirectoryFromPath(string directoryPath, EnvironmentVariable...
method TryLocateExecutable (line 46) | bool TryLocateExecutable(string program, out string path);
method SetEnvironmentVariable (line 54) | void SetEnvironmentVariable(string variable, string value,
method Refresh (line 61) | void Refresh();
class EnvironmentBase (line 64) | public abstract class EnvironmentBase : IEnvironment
method EnvironmentBase (line 68) | protected EnvironmentBase(IFileSystem fileSystem)
method EnvironmentBase (line 74) | internal EnvironmentBase(IFileSystem fileSystem, IReadOnlyDictionary<s...
method IsDirectoryOnPath (line 98) | public bool IsDirectoryOnPath(string directoryPath)
method AddDirectoryToPath (line 109) | public abstract void AddDirectoryToPath(string directoryPath, Environm...
method RemoveDirectoryFromPath (line 111) | public abstract void RemoveDirectoryFromPath(string directoryPath, Env...
method SplitPathVariable (line 113) | protected abstract string[] SplitPathVariable(string value);
method TryLocateExecutable (line 115) | public virtual bool TryLocateExecutable(string program, out string path)
method TryLocateExecutable (line 120) | internal virtual bool TryLocateExecutable(string program, ICollection<...
method SetEnvironmentVariable (line 153) | public void SetEnvironmentVariable(string variable, string value,
method Refresh (line 169) | public void Refresh()
method GetCurrentVariables (line 174) | protected abstract IReadOnlyDictionary<string, string> GetCurrentVaria...
class EnvironmentExtensions (line 177) | public static class EnvironmentExtensions
method LocateExecutable (line 185) | public static string LocateExecutable(this IEnvironment environment, s...
method GetEnvironmentVariable (line 203) | public static string GetEnvironmentVariable(this IEnvironment environm...
FILE: src/shared/Core/FileCredential.cs
class FileCredential (line 3) | public class FileCredential : ICredential
method FileCredential (line 5) | public FileCredential(string fullPath, string service, string account,...
FILE: src/shared/Core/FileSystem.cs
type IFileSystem (line 10) | public interface IFileSystem
method IsSamePath (line 28) | bool IsSamePath(string a, string b);
method FileExists (line 35) | bool FileExists(string path);
method DirectoryExists (line 42) | bool DirectoryExists(string path);
method GetCurrentDirectory (line 48) | string GetCurrentDirectory();
method OpenFileStream (line 58) | Stream OpenFileStream(string path, FileMode fileMode, FileAccess fileA...
method CreateDirectory (line 64) | void CreateDirectory(string path);
method DeleteFile (line 70) | void DeleteFile(string path);
method EnumerateFiles (line 85) | IEnumerable<string> EnumerateFiles(string path, string searchPattern);
method EnumerateDirectories (line 95) | IEnumerable<string> EnumerateDirectories(string path);
method ReadAllText (line 102) | string ReadAllText(string path);
method ReadAllLines (line 109) | string[] ReadAllLines(string path);
class FileSystem (line 115) | public abstract class FileSystem : IFileSystem
method IsSamePath (line 121) | public abstract bool IsSamePath(string a, string b);
method FileExists (line 123) | public bool FileExists(string path) => File.Exists(path);
method DirectoryExists (line 125) | public bool DirectoryExists(string path) => Directory.Exists(path);
method GetCurrentDirectory (line 127) | public string GetCurrentDirectory() => Directory.GetCurrentDirectory();
method OpenFileStream (line 129) | public Stream OpenFileStream(string path, FileMode fileMode, FileAcces...
method CreateDirectory (line 132) | public void CreateDirectory(string path) => Directory.CreateDirectory(...
method DeleteFile (line 134) | public void DeleteFile(string path) => File.Delete(path);
method EnumerateFiles (line 136) | public IEnumerable<string> EnumerateFiles(string path, string searchPa...
method EnumerateDirectories (line 138) | public IEnumerable<string> EnumerateDirectories(string path) => Direct...
method ReadAllText (line 140) | public string ReadAllText(string path) => File.ReadAllText(path);
method ReadAllLines (line 142) | public string[] ReadAllLines(string path) => File.ReadAllLines(path);
FILE: src/shared/Core/GenericHostProvider.cs
class GenericHostProvider (line 12) | public class GenericHostProvider : DisposableObject, IHostProvider
method GenericHostProvider (line 19) | public GenericHostProvider(ICommandContext context)
method GenericHostProvider (line 23) | public GenericHostProvider(ICommandContext context,
method IsSupported (line 49) | public bool IsSupported(InputArguments input)
method IsSupported (line 55) | public bool IsSupported(HttpResponseMessage response)
method GetServiceName (line 60) | public string GetServiceName(InputArguments input)
method GetCredentialAsync (line 67) | public async Task<GetCredentialResult> GetCredentialAsync(InputArgumen...
method StoreCredentialAsync (line 90) | public Task StoreCredentialAsync(InputArguments input)
method EraseCredentialAsync (line 112) | public Task EraseCredentialAsync(InputArguments input)
method GenerateCredentialAsync (line 130) | public async Task<GetCredentialResult> GenerateCredentialAsync(InputAr...
method EnableNtlmSupport (line 249) | private void EnableNtlmSupport(Uri uri)
method GetOAuthAccessToken (line 266) | private async Task<ICredential> GetOAuthAccessToken(Uri remoteUri, str...
method ReleaseManagedResources (line 396) | protected override void ReleaseManagedResources()
FILE: src/shared/Core/GenericOAuthConfig.cs
class GenericOAuthConfig (line 8) | public class GenericOAuthConfig
method TryGet (line 10) | public static bool TryGet(ITrace trace, ISettings settings, InputArgum...
class WellKnown (line 159) | public static class WellKnown
FILE: src/shared/Core/Git.cs
type IGit (line 9) | public interface IGit
method CreateProcess (line 21) | ChildProcess CreateProcess(string args);
method IsInsideRepository (line 27) | bool IsInsideRepository();
method GetCurrentRepository (line 34) | string GetCurrentRepository();
method GetRemotes (line 40) | IEnumerable<GitRemote> GetRemotes();
method GetConfiguration (line 46) | IGitConfiguration GetConfiguration();
method InvokeHelperAsync (line 54) | Task<IDictionary<string, string>> InvokeHelperAsync(string args, IDict...
class GitRemote (line 57) | public class GitRemote
method GitRemote (line 59) | public GitRemote(string name, string fetchUrl, string pushUrl)
class GitProcess (line 71) | public class GitProcess : IGit
method GitProcess (line 79) | public GitProcess(ITrace trace, ITrace2 trace2, IProcessManager proces...
method GetConfiguration (line 123) | public IGitConfiguration GetConfiguration()
method IsInsideRepository (line 128) | public bool IsInsideRepository()
method GetCurrentRepository (line 133) | public string GetCurrentRepository()
method GetCurrentRepositoryInternal (line 138) | private string GetCurrentRepositoryInternal(bool suppressStreams)
method GetRemotes (line 166) | public IEnumerable<GitRemote> GetRemotes()
method CreateProcess (line 212) | public ChildProcess CreateProcess(string args)
method InvokeHelperAsync (line 223) | public async Task<IDictionary<string, string>> InvokeHelperAsync(strin...
method CreateGitException (line 268) | public static GitException CreateGitException(ChildProcess git, string...
class GitException (line 279) | public class GitException : Exception
method GitException (line 285) | public GitException(string message, string gitErrorMessage, int exitCode)
class GitExtensions (line 293) | public static class GitExtensions
FILE: src/shared/Core/GitConfiguration.cs
type GitConfigurationLevel (line 16) | public enum GitConfigurationLevel
type GitConfigurationType (line 25) | public enum GitConfigurationType
type IGitConfiguration (line 32) | public interface IGitConfiguration
method Enumerate (line 39) | void Enumerate(GitConfigurationLevel level, GitConfigurationEnumeratio...
method TryGet (line 49) | bool TryGet(GitConfigurationLevel level, GitConfigurationType type, st...
method Set (line 57) | void Set(GitConfigurationLevel level, string name, string value);
method Add (line 65) | void Add(GitConfigurationLevel level, string name, string value);
method Unset (line 72) | void Unset(GitConfigurationLevel level, string name);
method GetAll (line 81) | IEnumerable<string> GetAll(GitConfigurationLevel level, GitConfigurati...
method GetRegex (line 91) | IEnumerable<string> GetRegex(GitConfigurationLevel level, GitConfigura...
method ReplaceAll (line 101) | void ReplaceAll(GitConfigurationLevel level, string nameRegex, string ...
method UnsetAll (line 109) | void UnsetAll(GitConfigurationLevel level, string name, string valueRe...
class ConfigCacheEntry (line 115) | internal class ConfigCacheEntry
method ConfigCacheEntry (line 120) | public ConfigCacheEntry(string scope, string value)
method ParseScope (line 126) | private static GitConfigurationLevel ParseScope(string scope)
class ConfigCache (line 147) | internal class ConfigCache
method Load (line 154) | public void Load(string data, ITrace trace)
method TryGet (line 230) | public bool TryGet(string name, GitConfigurationLevel level, out strin...
method GetAll (line 268) | public IEnumerable<string> GetAll(string name, GitConfigurationLevel l...
method Enumerate (line 290) | public void Enumerate(GitConfigurationLevel level, GitConfigurationEnu...
method Clear (line 314) | public void Clear()
class GitProcessConfiguration (line 323) | public class GitProcessConfiguration : IGitConfiguration
method GitProcessConfiguration (line 335) | internal GitProcessConfiguration(ITrace trace, GitProcess git) : this(...
method GitProcessConfiguration (line 339) | internal GitProcessConfiguration(ITrace trace, GitProcess git, bool us...
method SupportsConfigListType (line 359) | private static bool SupportsConfigListType(GitProcess git)
method EnsureCacheLoaded (line 384) | private void EnsureCacheLoaded(GitConfigurationType type)
method InvalidateCache (line 438) | private void InvalidateCache()
method Enumerate (line 449) | public void Enumerate(GitConfigurationLevel level, GitConfigurationEnu...
method TryGet (line 531) | public bool TryGet(GitConfigurationLevel level, GitConfigurationType t...
method Set (line 581) | public void Set(GitConfigurationLevel level, string name, string value)
method Add (line 603) | public void Add(GitConfigurationLevel level, string name, string value)
method Unset (line 625) | public void Unset(GitConfigurationLevel level, string name)
method GetAll (line 648) | public IEnumerable<string> GetAll(GitConfigurationLevel level, GitConf...
method GetRegex (line 703) | public IEnumerable<string> GetRegex(GitConfigurationLevel level, GitCo...
method ReplaceAll (line 745) | public void ReplaceAll(GitConfigurationLevel level, string name, strin...
method UnsetAll (line 773) | public void UnsetAll(GitConfigurationLevel level, string name, string ...
method EnsureSpecificLevel (line 802) | private static void EnsureSpecificLevel(GitConfigurationLevel level)
method GetLevelFilterArg (line 810) | private static string GetLevelFilterArg(GitConfigurationLevel level)
method GetCanonicalizeTypeArg (line 826) | private string GetCanonicalizeTypeArg(GitConfigurationType type)
method QuoteCmdArg (line 848) | public static string QuoteCmdArg(string str)
class GitConfigurationExtensions (line 920) | public static class GitConfigurationExtensions
method Enumerate (line 927) | public static void Enumerate(this IGitConfiguration config, GitConfigu...
method Enumerate (line 940) | public static void Enumerate(this IGitConfiguration config,
method Enumerate (line 963) | public static void Enumerate(this IGitConfiguration config, string sec...
method Get (line 976) | public static string Get(this IGitConfiguration config, GitConfigurati...
method Get (line 993) | public static string Get(this IGitConfiguration config, string name)
method TryGet (line 1006) | public static bool TryGet(this IGitConfiguration config, string name, ...
method GetAll (line 1019) | public static IEnumerable<string> GetAll(this IGitConfiguration config...
method GetRegex (line 1031) | public static IEnumerable<string> GetRegex(this IGitConfiguration conf...
FILE: src/shared/Core/GitConfigurationEntry.cs
class GitConfigurationEntry (line 3) | public class GitConfigurationEntry
method GitConfigurationEntry (line 5) | public GitConfigurationEntry(string key, string value)
FILE: src/shared/Core/GitConfigurationKeyComparer.cs
class GitConfigurationKeyComparer (line 15) | public class GitConfigurationKeyComparer : StringComparer
method GitConfigurationKeyComparer (line 23) | private GitConfigurationKeyComparer() { }
method Compare (line 25) | public override int Compare(string x, string y)
method Equals (line 39) | public override bool Equals(string x, string y)
method GetHashCode (line 53) | public override int GetHashCode(string obj)
method TrySplit (line 65) | public static bool TrySplit(string str, out string section, out string...
FILE: src/shared/Core/GitStreamReader.cs
class GitStreamReader (line 15) | public class GitStreamReader : StreamReader
method GitStreamReader (line 17) | public GitStreamReader(Stream stream, Encoding encoding) : base(stream...
method ReadLine (line 19) | public override string ReadLine()
method ReadLineAsync (line 29) | public override async Task<string> ReadLineAsync()
method ReadLineAsync (line 31) | public override async ValueTask<string> ReadLineAsync(CancellationToke...
FILE: src/shared/Core/GitVersion.cs
class GitVersion (line 7) | public class GitVersion : IComparable, IComparable<GitVersion>
method GitVersion (line 12) | public GitVersion(string versionString)
method GitVersion (line 39) | public GitVersion(params int[] components)
method ToString (line 44) | public override string ToString()
method CompareTo (line 62) | public int CompareTo(object obj)
method CompareTo (line 78) | public int CompareTo(GitVersion other)
method Compare (line 102) | public static int Compare(GitVersion left, GitVersion right)
method Equals (line 117) | public override bool Equals(object obj)
method GetHashCode (line 128) | public override int GetHashCode()
FILE: src/shared/Core/Gpg.cs
type IGpg (line 6) | public interface IGpg
method DecryptFile (line 8) | string DecryptFile(string path);
method EncryptFile (line 10) | void EncryptFile(string path, string gpgId, string contents);
class Gpg (line 13) | public class Gpg : IGpg
method Gpg (line 20) | public Gpg(string gpgPath, ISessionManager sessionManager, IProcessMan...
method DecryptFile (line 32) | public string DecryptFile(string path)
method EncryptFile (line 67) | public void EncryptFile(string path, string gpgId, string contents)
method PrepareEnvironment (line 102) | private void PrepareEnvironment(ProcessStartInfo psi)
FILE: src/shared/Core/HostProvider.cs
type IHostProvider (line 12) | public interface IHostProvider : IDisposable
method IsSupported (line 34) | bool IsSupported(InputArguments input);
method IsSupported (line 41) | bool IsSupported(HttpResponseMessage response);
method GetCredentialAsync (line 48) | Task<GetCredentialResult> GetCredentialAsync(InputArguments input);
method StoreCredentialAsync (line 54) | Task StoreCredentialAsync(InputArguments input);
method EraseCredentialAsync (line 60) | Task EraseCredentialAsync(InputArguments input);
class GetCredentialResult (line 63) | public class GetCredentialResult
method GetCredentialResult (line 65) | public GetCredentialResult(ICredential credential)
class HostProvider (line 79) | public abstract class HostProvider : DisposableObject, IHostProvider
method HostProvider (line 81) | protected HostProvider(ICommandContext context)
method IsSupported (line 97) | public abstract bool IsSupported(InputArguments input);
method IsSupported (line 99) | public virtual bool IsSupported(HttpResponseMessage response)
method GetServiceName (line 120) | public virtual string GetServiceName(InputArguments input)
method GenerateCredentialAsync (line 132) | public abstract Task<ICredential> GenerateCredentialAsync(InputArgumen...
method GetCredentialAsync (line 134) | public virtual async Task<GetCredentialResult> GetCredentialAsync(Inpu...
method StoreCredentialAsync (line 158) | public virtual Task StoreCredentialAsync(InputArguments input)
method EraseCredentialAsync (line 180) | public virtual Task EraseCredentialAsync(InputArguments input)
FILE: src/shared/Core/HostProviderRegistry.cs
type HostProviderPriority (line 13) | public enum HostProviderPriority
type IHostProviderRegistry (line 27) | public interface IHostProviderRegistry : IDisposable
method Register (line 35) | void Register(IHostProvider hostProvider, HostProviderPriority priority);
method GetProviderAsync (line 43) | Task<IHostProvider> GetProviderAsync(InputArguments input);
class HostProviderRegistry (line 50) | public class HostProviderRegistry : IHostProviderRegistry
method HostProviderRegistry (line 55) | public HostProviderRegistry(ICommandContext context)
method Register (line 63) | public void Register(IHostProvider hostProvider, HostProviderPriority ...
method GetProviderAsync (line 90) | public async Task<IHostProvider> GetProviderAsync(InputArguments input)
method Dispose (line 256) | public void Dispose()
FILE: src/shared/Core/HttpClientExtensions.cs
class HttpClientExtensions (line 9) | public static class HttpClientExtensions
method HeadAsync (line 13) | public static Task<HttpResponseMessage> HeadAsync(this HttpClient clie...
method HeadAsync (line 18) | public static Task<HttpResponseMessage> HeadAsync(this HttpClient clie...
method HeadAsync (line 23) | public static Task<HttpResponseMessage> HeadAsync(this HttpClient clie...
method HeadAsync (line 28) | public static Task<HttpResponseMessage> HeadAsync(this HttpClient clie...
method HeadAsync (line 33) | public static Task<HttpResponseMessage> HeadAsync(this HttpClient clie...
method HeadAsync (line 38) | public static Task<HttpResponseMessage> HeadAsync(this HttpClient clie...
method HeadAsync (line 43) | public static Task<HttpResponseMessage> HeadAsync(this HttpClient clie...
method HeadAsync (line 48) | public static Task<HttpResponseMessage> HeadAsync(this HttpClient clie...
method SendAsync (line 57) | public static Task<HttpResponseMessage> SendAsync(this HttpClient client,
FILE: src/shared/Core/HttpClientFactory.cs
type IHttpClientFactory (line 16) | public interface IHttpClientFactory
method CreateClient (line 33) | HttpClient CreateClient();
class HttpClientFactory (line 36) | public class HttpClientFactory : IHttpClientFactory
method HttpClientFactory (line 44) | public HttpClientFactory(IFileSystem fileSystem, ITrace trace, ITrace2...
method CreateClient (line 58) | public HttpClient CreateClient()
method TryCreateProxy (line 246) | public bool TryCreateProxy(out IWebProxy proxy)
FILE: src/shared/Core/HttpContentExtensions.cs
class HttpContentExtensions (line 7) | public static class HttpContentExtensions
method ReadAsFormContentAsync (line 9) | public static async Task<IDictionary<string, string>> ReadAsFormConten...
FILE: src/shared/Core/HttpRequestExtensions.cs
class HttpRequestExtensions (line 9) | public static class HttpRequestExtensions
method AddBasicAuthenticationHeader (line 17) | public static void AddBasicAuthenticationHeader(this HttpRequestMessag...
method AddBearerAuthenticationHeader (line 28) | public static void AddBearerAuthenticationHeader(this HttpRequestMessa...
FILE: src/shared/Core/ICredentialStore.cs
type ICredentialStore (line 8) | public interface ICredentialStore
method GetAccounts (line 15) | IList<string> GetAccounts(string service);
method Get (line 23) | ICredential Get(string service, string account);
method AddOrUpdate (line 31) | void AddOrUpdate(string service, string account, string secret);
method Remove (line 39) | bool Remove(string service, string account);
FILE: src/shared/Core/ISessionManager.cs
type ISessionManager (line 6) | public interface ISessionManager
method OpenBrowser (line 25) | void OpenBrowser(Uri uri);
class SessionManagerExtensions (line 28) | public static class SessionManagerExtensions
method OpenBrowser (line 30) | public static void OpenBrowser(this ISessionManager sm, string url)
class SessionManager (line 41) | public abstract class SessionManager : ISessionManager
method SessionManager (line 47) | protected SessionManager(ITrace trace, IEnvironment env, IFileSystem fs)
method OpenBrowser (line 62) | public void OpenBrowser(Uri uri)
method OpenBrowserInternal (line 73) | protected virtual void OpenBrowserInternal(string url)
FILE: src/shared/Core/ISystemPrompts.cs
type ISystemPrompts (line 7) | public interface ISystemPrompts
method ShowCredentialPrompt (line 22) | bool ShowCredentialPrompt(string resource, string userName, out ICrede...
FILE: src/shared/Core/ITerminal.cs
type ITerminal (line 9) | public interface ITerminal
method WriteLine (line 17) | void WriteLine(string format, params object[] args);
method Prompt (line 25) | string Prompt(string prompt);
method PromptSecret (line 36) | string PromptSecret(string prompt);
class TerminalExtensions (line 39) | public static class TerminalExtensions
method WriteLine (line 44) | public static void WriteLine(this ITerminal terminal)
FILE: src/shared/Core/ITrace2Writer.cs
type Trace2FormatTarget (line 10) | public enum Trace2FormatTarget
type ITrace2Writer (line 17) | public interface ITrace2Writer : IDisposable
method Write (line 21) | void Write(Trace2Message message);
class Trace2Writer (line 24) | public class Trace2Writer : DisposableObject, ITrace2Writer
method Trace2Writer (line 30) | protected Trace2Writer(Trace2FormatTarget formatTarget)
method Format (line 35) | protected string Format(Trace2Message message)
method Write (line 61) | public virtual void Write(Trace2Message message)
FILE: src/shared/Core/IniFile.cs
class IniFile (line 9) | public class IniFile
method IniFile (line 11) | public IniFile()
method TryGetSection (line 18) | public bool TryGetSection(string name, string subName, out IniSection ...
method TryGetSection (line 23) | public bool TryGetSection(string name, out IniSection section)
type IniSectionName (line 29) | [DebuggerDisplay("{DebuggerDisplay}")]
method IniSectionName (line 32) | public IniSectionName(string name, string subName = null)
method Equals (line 42) | public bool Equals(IniSectionName other)
method Equals (line 49) | public override bool Equals(object obj)
method GetHashCode (line 54) | public override int GetHashCode()
class IniSection (line 66) | [DebuggerDisplay("{DebuggerDisplay}")]
method IniSection (line 69) | public IniSection(IniSectionName name)
method TryGetProperty (line 79) | public bool TryGetProperty(string name, out string value)
method TryGetMultiProperty (line 91) | public bool TryGetMultiProperty(string name, out IEnumerable<string> v...
class IniProperty (line 112) | [DebuggerDisplay("{DebuggerDisplay}")]
method IniProperty (line 115) | public IniProperty(string name, string value)
class IniSerializer (line 127) | public static class IniSerializer
method Deserialize (line 135) | public static IniFile Deserialize(IFileSystem fs, string path)
FILE: src/shared/Core/InputArguments.cs
class InputArguments (line 16) | public class InputArguments
method InputArguments (line 20) | public InputArguments(IDictionary<string, string> dict)
method InputArguments (line 30) | public InputArguments(IDictionary<string, IList<string>> dict)
method GetArgumentOrDefault (line 56) | public string GetArgumentOrDefault(string key)
method GetMultiArgumentOrDefault (line 61) | public IList<string> GetMultiArgumentOrDefault(string key)
method TryGetArgument (line 66) | public bool TryGetArgument(string key, out string value)
method TryGetMultiArgument (line 78) | public bool TryGetMultiArgument(string key, out IList<string> value)
method TryGetHostAndPort (line 90) | public bool TryGetHostAndPort(out string host, out int? port)
method GetRemoteUri (line 120) | public Uri GetRemoteUri(bool includeUser = false)
FILE: src/shared/Core/Interop/InteropException.cs
class InteropException (line 10) | [DebuggerDisplay("{DebuggerDisplay}")]
method InteropException (line 13) | public InteropException()
method InteropException (line 16) | public InteropException(string message, int errorCode)
method InteropException (line 22) | public InteropException(string message, int errorCode, Exception inner...
method InteropException (line 28) | public InteropException(string message, Win32Exception w32Exception)
FILE: src/shared/Core/Interop/InteropUtils.cs
class InteropUtils (line 7) | internal static class InteropUtils
method ToByteArray (line 9) | public static byte[] ToByteArray(IntPtr ptr, long count)
method AreEqual (line 16) | public static bool AreEqual(byte[] bytes, IntPtr ptr, uint length)
FILE: src/shared/Core/Interop/Linux/LinuxConfigParser.cs
class LinuxConfigParser (line 7) | public class LinuxConfigParser
method LinuxConfigParser (line 23) | public LinuxConfigParser(ITrace trace)
method Parse (line 30) | public IDictionary<string, string> Parse(string content)
FILE: src/shared/Core/Interop/Linux/LinuxFileSystem.cs
class LinuxFileSystem (line 7) | public class LinuxFileSystem : PosixFileSystem
method IsSamePath (line 9) | public override bool IsSamePath(string a, string b)
FILE: src/shared/Core/Interop/Linux/LinuxSessionManager.cs
class LinuxSessionManager (line 7) | public class LinuxSessionManager : PosixSessionManager
method LinuxSessionManager (line 11) | public LinuxSessionManager(ITrace trace, IEnvironment env, IFileSystem...
method OpenBrowserInternal (line 24) | protected override void OpenBrowserInternal(string url)
method GetWebBrowserAvailable (line 56) | private bool GetWebBrowserAvailable()
method TryGetShellExecuteHandler (line 149) | private static bool TryGetShellExecuteHandler(IEnvironment env, out st...
FILE: src/shared/Core/Interop/Linux/LinuxSettings.cs
class LinuxSettings (line 9) | public class LinuxSettings : Settings
method LinuxSettings (line 20) | public LinuxSettings(IEnvironment environment, IGit git, ITrace trace,...
method TryGetExternalDefault (line 32) | protected internal override bool TryGetExternalDefault(string section,...
method ReadExternalConfiguration (line 56) | private IDictionary<string, string> ReadExternalConfiguration()
FILE: src/shared/Core/Interop/Linux/LinuxTerminal.cs
class LinuxTerminal (line 8) | public class LinuxTerminal : PosixTerminal
method LinuxTerminal (line 10) | public LinuxTerminal(ITrace trace, ITrace2 trace2)
method CreateTtyContext (line 13) | protected override IDisposable CreateTtyContext(int fd, bool echo)
class TtyContext (line 18) | private class TtyContext : IDisposable
method TtyContext (line 26) | public TtyContext(ITrace trace, ITrace2 trace2, int fd, bool echo)
method Dispose (line 57) | public void Dispose()
FILE: src/shared/Core/Interop/Linux/Native/Glib.cs
class Glib (line 6) | public static class Glib
type GHashTable (line 10) | public struct GHashTable { /* transparent */ }
type GList (line 12) | [StructLayout(LayoutKind.Sequential)]
type GError (line 20) | [StructLayout(LayoutKind.Sequential)]
method g_str_hash (line 37) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method g_str_equal (line 40) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method g_hash_table_new (line 43) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method g_hash_table_new_full (line 46) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method g_hash_table_destroy (line 53) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method g_hash_table_insert (line 56) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method g_hash_table_lookup (line 59) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method g_list_free_full (line 62) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method g_hash_table_unref (line 65) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method g_error_free (line 68) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method g_free (line 71) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
FILE: src/shared/Core/Interop/Linux/Native/Gobject.cs
class Gobject (line 6) | public static class Gobject
method g_object_ref (line 10) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method g_object_unref (line 13) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
FILE: src/shared/Core/Interop/Linux/Native/Libsecret.cs
class Libsecret (line 6) | public static class Libsecret
type SecretSchemaAttributeType (line 10) | public enum SecretSchemaAttributeType
type SecretSchemaAttribute (line 17) | [StructLayout(LayoutKind.Sequential)]
type SecretSchemaFlags (line 24) | [Flags]
type SecretSchema (line 31) | [StructLayout(LayoutKind.Sequential)]
type SecretService (line 49) | public struct SecretService { /* transparent */ }
type SecretServiceFlags (line 51) | [Flags]
type SecretSearchFlags (line 59) | [Flags]
type SecretItem (line 68) | public struct SecretItem { /* transparent */ }
type SecretValue (line 70) | public struct SecretValue { /* transparent */ }
method secret_service_get_sync (line 72) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_service_search_sync (line 78) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_service_store_sync (line 87) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_service_clear_sync (line 98) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_item_get_label (line 106) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_item_get_attributes (line 109) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_item_load_secret_sync (line 112) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_service_unlock_sync (line 118) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_item_get_locked (line 125) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_item_get_secret (line 128) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_value_new (line 131) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_value_get (line 137) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_value_unref (line 140) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_value_unref_to_password (line 143) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_password_free (line 146) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
method secret_item_delete_sync (line 149) | [DllImport(LibraryName, CharSet = CharSet.Ansi, CallingConvention = Ca...
FILE: src/shared/Core/Interop/Linux/Native/termios_Linux.cs
class Termios_Linux (line 6) | public static class Termios_Linux
method tcgetattr (line 8) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
method tcsetattr (line 11) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
type termios_Linux (line 15) | [StructLayout(LayoutKind.Explicit)]
FILE: src/shared/Core/Interop/Linux/SecretServiceCollection.cs
class SecretServiceCollection (line 14) | public class SecretServiceCollection : ICredentialStore
method SecretServiceCollection (line 30) | public SecretServiceCollection(string @namespace)
method GetAccounts (line 40) | public IList<string> GetAccounts(string service)
method Get (line 45) | public ICredential Get(string service, string account)
method Enumerate (line 50) | private unsafe IEnumerable<ICredential> Enumerate(string service, stri...
method AddOrUpdate (line 128) | public unsafe void AddOrUpdate(string service, string account, string ...
method Remove (line 201) | public unsafe bool Remove(string service, string account)
method CreateSearchQuery (line 241) | private unsafe GHashTable* CreateSearchQuery(string service, string ac...
method CreateCredentialFromItem (line 268) | private static unsafe ICredential CreateCredentialFromItem(SecretItem*...
method CreateServiceName (line 315) | private string CreateServiceName(string service)
method GetSecretService (line 327) | private static unsafe SecretService* GetSecretService()
method GetSchema (line 346) | private static SecretSchema GetSchema()
FILE: src/shared/Core/Interop/Linux/SecretServiceCredential.cs
class SecretServiceCredential (line 5) | [DebuggerDisplay("{DebuggerDisplay}")]
method SecretServiceCredential (line 8) | internal SecretServiceCredential(string service, string account, strin...
FILE: src/shared/Core/Interop/MacOS/MacOSEnvironment.cs
class MacOSEnvironment (line 10) | public class MacOSEnvironment : PosixEnvironment
method MacOSEnvironment (line 14) | public MacOSEnvironment(IFileSystem fileSystem)
method MacOSEnvironment (line 17) | internal MacOSEnvironment(IFileSystem fileSystem, IReadOnlyDictionary<...
method TryLocateExecutable (line 20) | public override bool TryLocateExecutable(string program, out string path)
FILE: src/shared/Core/Interop/MacOS/MacOSFileSystem.cs
class MacOSFileSystem (line 7) | public class MacOSFileSystem : PosixFileSystem
method IsSamePath (line 9) | public override bool IsSamePath(string a, string b)
FILE: src/shared/Core/Interop/MacOS/MacOSKeychain.cs
class MacOSKeychain (line 13) | public class MacOSKeychain : ICredentialStore
method MacOSKeychain (line 24) | public MacOSKeychain(string @namespace = null)
method GetAccounts (line 34) | public IList<string> GetAccounts(string service)
method Get (line 99) | public ICredential Get(string service, string account)
method AddOrUpdate (line 162) | public void AddOrUpdate(string service, string account, string secret)
method Remove (line 221) | public bool Remove(string service, string account)
method CreateCFStringUtf8 (line 282) | private static IntPtr CreateCFStringUtf8(string str)
method CreateCredentialFromAttributes (line 289) | private static ICredential CreateCredentialFromAttributes(IntPtr attri...
method GetStringAttribute (line 298) | private static string GetStringAttribute(IntPtr dict, IntPtr key)
method CreateServiceName (line 323) | private string CreateServiceName(string service)
FILE: src/shared/Core/Interop/MacOS/MacOSKeychainCredential.cs
class MacOSKeychainCredential (line 5) | [DebuggerDisplay("{DebuggerDisplay}")]
method MacOSKeychainCredential (line 8) | internal MacOSKeychainCredential(string service, string account, strin...
FILE: src/shared/Core/Interop/MacOS/MacOSPreferences.cs
class MacOSPreferences (line 8) | public class MacOSPreferences
method MacOSPreferences (line 12) | public MacOSPreferences(string appId)
method GetString (line 27) | public string GetString(string key)
method GetInteger (line 42) | public int? GetInteger(string key)
method GetDictionary (line 57) | public IDictionary<string, string> GetDictionary(string key)
method TryGet (line 64) | private bool TryGet<T>(string key, Func<IntPtr, T> converter, out T va...
method CreateAppIdPtr (line 92) | private IntPtr CreateAppIdPtr()
FILE: src/shared/Core/Interop/MacOS/MacOSSessionManager.cs
class MacOSSessionManager (line 6) | public class MacOSSessionManager : PosixSessionManager
method MacOSSessionManager (line 8) | public MacOSSessionManager(ITrace trace, IEnvironment env, IFileSystem...
FILE: src/shared/Core/Interop/MacOS/MacOSSettings.cs
class MacOSSettings (line 9) | public class MacOSSettings : Settings
method MacOSSettings (line 13) | public MacOSSettings(IEnvironment environment, IGit git, ITrace trace)
method TryGetExternalDefault (line 22) | protected internal override bool TryGetExternalDefault(string section,...
FILE: src/shared/Core/Interop/MacOS/MacOSTerminal.cs
class MacOSTerminal (line 8) | public class MacOSTerminal : PosixTerminal
method MacOSTerminal (line 10) | public MacOSTerminal(ITrace trace, ITrace2 trace2)
method CreateTtyContext (line 13) | protected override IDisposable CreateTtyContext(int fd, bool echo)
class TtyContext (line 18) | private class TtyContext : IDisposable
method TtyContext (line 26) | public TtyContext(ITrace trace, ITrace2 trace2, int fd, bool echo)
method Dispose (line 57) | public void Dispose()
FILE: src/shared/Core/Interop/MacOS/Native/CoreFoundation.cs
class CoreFoundation (line 8) | public static class CoreFoundation
method CoreFoundation (line 16) | static CoreFoundation()
method CFArrayCreateMutable (line 24) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFArrayInsertValueAtIndex (line 27) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFArrayGetCount (line 30) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFArrayGetValueAtIndex (line 33) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFDictionaryCreateMutable (line 36) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFDictionaryAddValue (line 43) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFDictionaryGetValue (line 49) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFDictionaryGetValueIfPresent (line 52) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFStringCreateWithBytes (line 55) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFStringCreateWithCString (line 59) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFStringGetLength (line 62) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFStringGetCString (line 65) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFRetain (line 68) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFRelease (line 71) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFGetTypeID (line 74) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFStringGetTypeID (line 77) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFDataGetTypeID (line 80) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFDictionaryGetTypeID (line 83) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFArrayGetTypeID (line 86) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFNumberGetTypeID (line 89) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFDataGetBytePtr (line 92) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFDataGetLength (line 95) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFPreferencesCopyAppValue (line 98) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFNumberGetValue (line 101) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFDictionaryGetKeysAndValues (line 104) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFDictionaryGetCount (line 107) | [DllImport(CoreFoundationFrameworkLib, CharSet = CharSet.Ansi, Calling...
method CFStringToString (line 110) | public static string CFStringToString(IntPtr cfString)
method CFNumberToInt32 (line 140) | public static int CFNumberToInt32(IntPtr cfNumber)
method CFDictionaryToDictionary (line 160) | public static IDictionary<string, string> CFDictionaryToDictionary(Int...
type CFStringEncoding (line 191) | public enum CFStringEncoding
type CFNumberType (line 196) | public enum CFNumberType
FILE: src/shared/Core/Interop/MacOS/Native/LibC.cs
class LibC (line 6) | public static class LibC
method _NSGetExecutablePath (line 10) | [DllImport(LibCLib, CharSet = CharSet.Ansi, CallingConvention = Callin...
FILE: src/shared/Core/Interop/MacOS/Native/LibSystem.cs
class LibSystem (line 6) | public static class LibSystem
method dlopen (line 10) | [DllImport(LibSystemLib, CharSet = CharSet.Ansi, CallingConvention = C...
method dlsym (line 13) | [DllImport(LibSystemLib, CharSet = CharSet.Ansi, CallingConvention = C...
method GetGlobal (line 16) | public static IntPtr GetGlobal(IntPtr handle, string symbol)
FILE: src/shared/Core/Interop/MacOS/Native/SecurityFramework.cs
class SecurityFramework (line 8) | public static class SecurityFramework
method SecurityFramework (line 29) | static SecurityFramework()
method SessionGetInfo (line 50) | [DllImport(SecurityFrameworkLib, CharSet = CharSet.Ansi, CallingConven...
method SecAccessCreate (line 53) | [DllImport(SecurityFrameworkLib, CharSet = CharSet.Ansi, CallingConven...
method SecKeychainItemCreateFromContent (line 56) | [DllImport(SecurityFrameworkLib, CharSet = CharSet.Ansi, CallingConven...
method SecKeychainAddGenericPassword (line 60) | [DllImport(SecurityFrameworkLib, CharSet = CharSet.Ansi, CallingConven...
method SecKeychainFindGenericPassword (line 71) | [DllImport(SecurityFrameworkLib, CharSet = CharSet.Ansi, CallingConven...
method SecKeychainItemCopyAttributesAndData (line 82) | [DllImport(SecurityFrameworkLib, CharSet = CharSet.Ansi, CallingConven...
method SecKeychainItemModifyAttributesAndData (line 91) | [DllImport(SecurityFrameworkLib, CharSet = CharSet.Ansi, CallingConven...
method SecKeychainItemDelete (line 98) | [DllImport(SecurityFrameworkLib, CharSet = CharSet.Ansi, CallingConven...
method SecKeychainItemFreeContent (line 102) | [DllImport(SecurityFrameworkLib, CharSet = CharSet.Ansi, CallingConven...
method SecKeychainItemFreeAttributesAndData (line 107) | [DllImport(SecurityFrameworkLib, CharSet = CharSet.Ansi, CallingConven...
method SecItemCopyMatching (line 112) | [DllImport(SecurityFrameworkLib, CharSet = CharSet.Ansi, CallingConven...
method SecKeychainItemCopyFromPersistentReference (line 115) | [DllImport(SecurityFrameworkLib, CharSet = CharSet.Ansi, CallingConven...
method SecKeychainItemCopyContent (line 118) | [DllImport(SecurityFrameworkLib, CharSet = CharSet.Ansi, CallingConven...
method ThrowIfError (line 135) | public static void ThrowIfError(int error, string defaultErrorMessage ...
type SessionAttributeBits (line 163) | [Flags]
type SecKeychainAttributeInfo (line 172) | [StructLayout(LayoutKind.Sequential)]
type SecKeychainAttributeList (line 180) | [StructLayout(LayoutKind.Sequential)]
type SecKeychainAttribute (line 187) | [StructLayout(LayoutKind.Sequential)]
type CssmDbAttributeFormat (line 195) | public enum CssmDbAttributeFormat : uint
type SecKeychainAttrType (line 208) | public enum SecKeychainAttrType : uint
FILE: src/shared/Core/Interop/MacOS/Native/termios_MacOS.cs
class Termios_MacOS (line 6) | public static class Termios_MacOS
method tcgetattr (line 8) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
method tcsetattr (line 11) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
type termios_MacOS (line 15) | [StructLayout(LayoutKind.Explicit)]
FILE: src/shared/Core/Interop/Posix/GpgPassCredentialStore.cs
class GpgPassCredentialStore (line 8) | public class GpgPassCredentialStore : PlaintextCredentialStore
method GpgPassCredentialStore (line 14) | public GpgPassCredentialStore(IFileSystem fileSystem, IGpg gpg, string...
method GetGpgId (line 24) | private string GetGpgId(string credentialFullPath)
method TryDeserializeCredential (line 53) | protected override bool TryDeserializeCredential(string path, out File...
method SerializeCredential (line 83) | protected override void SerializeCredential(FileCredential credential)
FILE: src/shared/Core/Interop/Posix/Native/Fcntl.cs
class Fcntl (line 6) | public static class Fcntl
method open (line 8) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
type OpenFlags (line 12) | [Flags]
FILE: src/shared/Core/Interop/Posix/Native/Signal.cs
class Signal (line 5) | public static class Signal
method kill (line 32) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
FILE: src/shared/Core/Interop/Posix/Native/Stat.cs
class Stat (line 6) | public static class Stat
method chmod (line 8) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
type NativeFileMode (line 11) | [Flags]
FILE: src/shared/Core/Interop/Posix/Native/Stdio.cs
class Stdio (line 7) | public static class Stdio
method fgets (line 11) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
method fputc (line 14) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
method fprintf (line 17) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
method fgetc (line 20) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
method fputs (line 23) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
method setbuf (line 26) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
method fdopen (line 29) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
FILE: src/shared/Core/Interop/Posix/Native/Stdlib.cs
class Stdlib (line 5) | public static class Stdlib
method realpath (line 7) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
FILE: src/shared/Core/Interop/Posix/Native/Termios.cs
type SetActionFlags (line 5) | [Flags]
type InputFlags (line 24) | [Flags]
type OutputFlags (line 43) | [Flags]
type ControlFlags (line 63) | [Flags]
type LocalFlags (line 87) | [Flags]
FILE: src/shared/Core/Interop/Posix/Native/Unistd.cs
class Unistd (line 5) | public static class Unistd
method read (line 7) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
method write (line 10) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
method close (line 13) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
method getpid (line 16) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
method getppid (line 19) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
method geteuid (line 22) | [DllImport("libc", CallingConvention = CallingConvention.Cdecl, CharSe...
FILE: src/shared/Core/Interop/Posix/PosixEnvironment.cs
class PosixEnvironment (line 7) | public class PosixEnvironment : EnvironmentBase
method PosixEnvironment (line 9) | public PosixEnvironment(IFileSystem fileSystem)
method PosixEnvironment (line 12) | internal PosixEnvironment(IFileSystem fileSystem, IReadOnlyDictionary<...
method AddDirectoryToPath (line 17) | public override void AddDirectoryToPath(string directoryPath, Environm...
method RemoveDirectoryFromPath (line 22) | public override void RemoveDirectoryFromPath(string directoryPath, Env...
method SplitPathVariable (line 27) | protected override string[] SplitPathVariable(string value)
method GetCurrentVariables (line 34) | protected override IReadOnlyDictionary<string, string> GetCurrentVaria...
FILE: src/shared/Core/Interop/Posix/PosixFileDescriptor.cs
class PosixFileDescriptor (line 10) | public class PosixFileDescriptor : DisposableObject
method PosixFileDescriptor (line 14) | private PosixFileDescriptor()
method PosixFileDescriptor (line 19) | public PosixFileDescriptor(string filename, OpenFlags mode) : this()
method Read (line 40) | public int Read(byte[] buf, int count)
method Write (line 53) | public int Write(byte[] buf, int size)
method Write (line 65) | public int Write(string str)
method ReleaseUnmanagedResources (line 71) | protected override void ReleaseUnmanagedResources()
method ThrowIfInvalid (line 81) | private void ThrowIfInvalid()
FILE: src/shared/Core/Interop/Posix/PosixFileSystem.cs
class PosixFileSystem (line 6) | public abstract class PosixFileSystem : FileSystem
method ResolveSymbolicLinks (line 14) | protected internal static string ResolveSymbolicLinks(string path)
method TryResolveFileLink (line 61) | private static bool TryResolveFileLink(string path, out string target)
method TryResolveDirectoryLink (line 68) | private static bool TryResolveDirectoryLink(string path, out string ta...
FILE: src/shared/Core/Interop/Posix/PosixSessionManager.cs
class PosixSessionManager (line 3) | public abstract class PosixSessionManager : SessionManager
method PosixSessionManager (line 5) | protected PosixSessionManager(ITrace trace, IEnvironment env, IFileSys...
FILE: src/shared/Core/Interop/Posix/PosixTerminal.cs
class PosixTerminal (line 10) | public abstract class PosixTerminal : ITerminal
method PosixTerminal (line 18) | public PosixTerminal(ITrace trace, ITrace2 trace2)
method WriteLine (line 26) | public void WriteLine(string format, params object[] args)
method Prompt (line 41) | public string Prompt(string prompt)
method PromptSecret (line 46) | public string PromptSecret(string prompt)
method CreateTtyContext (line 51) | protected abstract IDisposable CreateTtyContext(int fd, bool echo);
method Prompt (line 53) | private string Prompt(string prompt, bool echo)
FILE: src/shared/Core/Interop/U8StringConverter.cs
class U8StringConverter (line 10) | public static class U8StringConverter
method ToNative (line 21) | public static unsafe IntPtr ToNative(string str)
method ToManaged (line 45) | public static unsafe string ToManaged(byte* buf)
FILE: src/shared/Core/Interop/U8StringMarshaler.cs
class U8StringMarshaler (line 10) | public class U8StringMarshaler : ICustomMarshaler
method GetInstance (line 22) | public static ICustomMarshaler GetInstance(string cookie)
method U8StringMarshaler (line 35) | private U8StringMarshaler(bool cleanup)
method GetNativeDataSize (line 40) | public int GetNativeDataSize()
method MarshalManagedToNative (line 45) | public IntPtr MarshalManagedToNative(object value)
method MarshalNativeToManaged (line 58) | public unsafe object MarshalNativeToManaged(IntPtr ptr)
method CleanUpManagedData (line 63) | public void CleanUpManagedData(object value)
method CleanUpNativeData (line 67) | public virtual void CleanUpNativeData(IntPtr ptr)
FILE: src/shared/Core/Interop/Windows/DpapiCredentialStore.cs
class DpapiCredentialStore (line 9) | public class DpapiCredentialStore : PlaintextCredentialStore
method DpapiCredentialStore (line 11) | public DpapiCredentialStore(IFileSystem fileSystem, string storeRoot, ...
method TryDeserializeCredential (line 17) | protected override bool TryDeserializeCredential(string path, out File...
method SerializeCredential (line 56) | protected override void SerializeCredential(FileCredential credential)
FILE: src/shared/Core/Interop/Windows/Native/Advapi32.cs
class Advapi32 (line 9) | public static class Advapi32
method CredRead (line 13) | [DllImport(LibraryName, EntryPoint = "CredReadW", CallingConvention = ...
method CredWrite (line 20) | [DllImport(LibraryName, EntryPoint = "CredWriteW", CallingConvention =...
method CredDelete (line 25) | [DllImport(LibraryName, EntryPoint = "CredDeleteW", CallingConvention ...
method CredFree (line 31) | [DllImport(LibraryName, EntryPoint = "CredFree", CallingConvention = C...
method CredEnumerate (line 35) | [DllImport(LibraryName, EntryPoint = "CredEnumerateW", CallingConventi...
method CredGetSessionTypes (line 42) | [DllImport(LibraryName, EntryPoint = "CredGetSessionTypes", CallingCon...
type CredentialType (line 53) | public enum CredentialType
type CredentialPersist (line 63) | public enum CredentialPersist
type CredentialEnumerateFlags (line 71) | [Flags]
type Win32Credential (line 78) | [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
method GetCredentialBlobAsString (line 98) | public string GetCredentialBlobAsString()
FILE: src/shared/Core/Interop/Windows/Native/CredUi.cs
class CredUi (line 8) | public static class CredUi
type CredentialPackFlags (line 12) | [Flags]
type CredentialUiFlags (line 21) | [Flags]
type CredentialUiResult (line 44) | public enum CredentialUiResult : uint
type CredentialUiWindowsFlags (line 56) | [Flags]
type CredentialUiInfo (line 123) | [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
method CredUIPromptForWindowsCredentials (line 142) | [DllImport(LibraryName, EntryPoint = "CredUIPromptForWindowsCredential...
method CredPackAuthenticationBuffer (line 154) | [DllImport(LibraryName, EntryPoint = "CredPackAuthenticationBufferW", ...
method CredUnPackAuthenticationBuffer (line 162) | [DllImport(LibraryName, EntryPoint = "CredUnPackAuthenticationBufferW"...
FILE: src/shared/Core/Interop/Windows/Native/Kernel32.cs
class Kernel32 (line 9) | public static class Kernel32
method CreateFile (line 81) | [DllImport(LibraryName, EntryPoint = "CreateFileW", CallingConvention ...
method ReadConsole (line 118) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "C...
method WriteConsole (line 157) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "C...
method GetConsoleMode (line 191) | [DllImport(LibraryName, EntryPoint = "GetConsoleMode", CallingConventi...
method SetConsoleMode (line 224) | [DllImport(LibraryName, EntryPoint = "SetConsoleMode", CallingConventi...
method GetCommandLine (line 234) | [DllImport(LibraryName, CallingConvention = CallingConvention.StdCall,...
method LocalFree (line 252) | [DllImport(LibraryName, CallingConvention = CallingConvention.StdCall,...
method GetConsoleWindow (line 262) | [DllImport("kernel32.dll", SetLastError = true)]
type FileAccess (line 266) | [Flags]
type FileAttributes (line 275) | [Flags]
type FileCreationDisposition (line 466) | public enum FileCreationDisposition : uint
type FileShare (line 518) | [Flags]
type ConsoleMode (line 555) | [Flags]
FILE: src/shared/Core/Interop/Windows/Native/Ole32.cs
class Ole32 (line 6) | public static class Ole32
method CoInitializeSecurity (line 12) | [DllImport(LibraryName)]
type RpcAuthnLevel (line 24) | public enum RpcAuthnLevel
type RpcImpLevel (line 35) | public enum RpcImpLevel
type EoAuthnCap (line 44) | public enum EoAuthnCap
FILE: src/shared/Core/Interop/Windows/Native/Shell32.cs
class Shell32 (line 6) | public static class Shell32
method CommandLineToArgvW (line 23) | [DllImport("Shell32.dll", CallingConvention = CallingConvention.StdCal...
FILE: src/shared/Core/Interop/Windows/Native/User32.cs
class User32 (line 6) | public static class User32
method GetProcessWindowStation (line 13) | [DllImport(LibraryName, CallingConvention = CallingConvention.StdCall,...
method GetUserObjectInformation (line 16) | [DllImport(LibraryName, EntryPoint = "GetUserObjectInformation", Calli...
method SetWindowLongPtr32 (line 19) | [DllImport(LibraryName, EntryPoint="SetWindowLong", SetLastError = true)]
method SetWindowLongPtr64 (line 22) | [DllImport(LibraryName, EntryPoint="SetWindowLongPtr", SetLastError = ...
method SetWindowLongPtr (line 25) | public static IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr ...
method GetWindowRect (line 33) | [DllImport(LibraryName, SetLastError = true)]
method GetClientRect (line 36) | [DllImport(LibraryName, SetLastError = true)]
method GetAncestor (line 48) | [DllImport("user32.dll", SetLastError = true)]
type GetAncestorFlags (line 52) | public enum GetAncestorFlags
type USEROBJECTFLAGS (line 70) | [StructLayout(LayoutKind.Sequential)]
type WindowLongParam (line 78) | public enum WindowLongParam
type RECT (line 89) | [StructLayout(LayoutKind.Sequential)]
FILE: src/shared/Core/Interop/Windows/Native/Win32Error.cs
class Win32Error (line 23) | internal static class Win32Error
method GetLastError (line 90) | public static int GetLastError(bool success)
method ThrowIfError (line 107) | public static void ThrowIfError(ITrace2 trace2, bool succeeded, string...
method ThrowIfError (line 118) | public static void ThrowIfError(bool succeeded, string defaultErrorMes...
method ThrowIfError (line 130) | public static void ThrowIfError(int error, string defaultErrorMessage ...
FILE: src/shared/Core/Interop/Windows/WindowsCredential.cs
class WindowsCredential (line 4) | public class WindowsCredential : ICredential
method WindowsCredential (line 6) | public WindowsCredential(string service, string userName, string passw...
FILE: src/shared/Core/Interop/Windows/WindowsCredentialManager.cs
class WindowsCredentialManager (line 10) | public class WindowsCredentialManager : ICredentialStore
method WindowsCredentialManager (line 21) | public WindowsCredentialManager(string @namespace = null)
method GetAccounts (line 27) | public IList<string> GetAccounts(string service)
method Get (line 32) | public ICredential Get(string service, string account)
method AddOrUpdate (line 37) | public void AddOrUpdate(string service, string account, string secret)
method Remove (line 113) | public bool Remove(string service, string account)
method CanPersist (line 144) | public static bool CanPersist()
method Enumerate (line 163) | private IEnumerable<WindowsCredential> Enumerate(string service, strin...
method CreateCredentialFromStructure (line 212) | private WindowsCredential CreateCredentialFromStructure(Win32Credentia...
method RemoveUriUserInfo (line 232) | public /* for testing */ static string RemoveUriUserInfo(string url)
method IsMatch (line 268) | internal /* for testing */ bool IsMatch(string service, string account...
method CreateTargetName (line 335) | internal /* for testing */ string CreateTargetName(string service, str...
FILE: src/shared/Core/Interop/Windows/WindowsEnvironment.cs
class WindowsEnvironment (line 10) | public class WindowsEnvironment : EnvironmentBase
method WindowsEnvironment (line 12) | public WindowsEnvironment(IFileSystem fileSystem)
method WindowsEnvironment (line 15) | internal WindowsEnvironment(IFileSystem fileSystem, IReadOnlyDictionar...
method SplitPathVariable (line 20) | protected override string[] SplitPathVariable(string value)
method AddDirectoryToPath (line 28) | public override void AddDirectoryToPath(string directoryPath, Environm...
method RemoveDirectoryFromPath (line 51) | public override void RemoveDirectoryFromPath(string directoryPath, Env...
method GetCurrentVariables (line 72) | protected override IReadOnlyDictionary<string, string> GetCurrentVaria...
FILE: src/shared/Core/Interop/Windows/WindowsFileSystem.cs
class WindowsFileSystem (line 6) | public class WindowsFileSystem : FileSystem
method IsSamePath (line 8) | public override bool IsSamePath(string a, string b)
FILE: src/shared/Core/Interop/Windows/WindowsProcessManager.cs
class WindowsProcessManager (line 3) | public class WindowsProcessManager : ProcessManager
method WindowsProcessManager (line 5) | public WindowsProcessManager(ITrace2 trace2) : base(trace2)
method CreateProcess (line 10) | public override ChildProcess CreateProcess(string path, string args, b...
FILE: src/shared/Core/Interop/Windows/WindowsSessionManager.cs
class WindowsSessionManager (line 6) | public class WindowsSessionManager : SessionManager
method WindowsSessionManager (line 8) | public WindowsSessionManager(ITrace trace, IEnvironment env, IFileSyst...
FILE: src/shared/Core/Interop/Windows/WindowsSettings.cs
class WindowsSettings (line 7) | public class WindowsSettings : Settings
method WindowsSettings (line 11) | public WindowsSettings(IEnvironment environment, IGit git, ITrace trace)
method TryGetExternalDefault (line 20) | protected internal override bool TryGetExternalDefault(string section,...
FILE: src/shared/Core/Interop/Windows/WindowsSystemPrompts.cs
class WindowsSystemPrompts (line 8) | public class WindowsSystemPrompts : ISystemPrompts
method ShowCredentialPrompt (line 18) | public bool ShowCredentialPrompt(string resource, string userName, out...
method CreateCredentialInfoBuffer (line 59) | private static void CreateCredentialInfoBuffer(string userName, CredUi...
method DisplayCredentialPrompt (line 81) | private static bool DisplayCredentialPrompt(
FILE: src/shared/Core/Interop/Windows/WindowsTerminal.cs
class WindowsTerminal (line 12) | public class WindowsTerminal : ITerminal
method WindowsTerminal (line 22) | public WindowsTerminal(ITrace trace, ITrace2 trace2)
method WriteLine (line 30) | public void WriteLine(string format, params object[] args)
method Prompt (line 68) | public string Prompt(string prompt)
method PromptSecret (line 73) | public string PromptSecret(string prompt)
method Prompt (line 78) | private string Prompt(string prompt, bool echo)
class TtyContext (line 165) | private class TtyContext : IDisposable
method TtyContext (line 174) | public TtyContext(ITrace trace, ITrace2 trace2, SafeFileHandle strea...
method Dispose (line 204) | public void Dispose()
FILE: src/shared/Core/NameValueCollectionExtensions.cs
class NameValueCollectionExtensions (line 7) | public static class NameValueCollectionExtensions
method ToDictionary (line 9) | public static IDictionary<string, string> ToDictionary(this NameValueC...
FILE: src/shared/Core/NullCredentialStore.cs
class NullCredentialStore (line 10) | public class NullCredentialStore : ICredentialStore
method GetAccounts (line 12) | public IList<string> GetAccounts(string service) => Array.Empty<string...
method Get (line 14) | public ICredential Get(string service, string account) => null;
method AddOrUpdate (line 16) | public void AddOrUpdate(string service, string account, string secret)...
method Remove (line 18) | public bool Remove(string service, string account) => false;
FILE: src/shared/Core/PlaintextCredentialStore.cs
class PlaintextCredentialStore (line 9) | public class PlaintextCredentialStore : ICredentialStore
method PlaintextCredentialStore (line 11) | public PlaintextCredentialStore(IFileSystem fileSystem, string storeRo...
method GetAccounts (line 26) | public IList<string> GetAccounts(string service)
method Get (line 31) | public ICredential Get(string service, string account)
method AddOrUpdate (line 36) | public void AddOrUpdate(string service, string account, string secret)
method Remove (line 64) | public bool Remove(string service, string account)
method TryDeserializeCredential (line 76) | protected virtual bool TryDeserializeCredential(string path, out FileC...
method SerializeCredential (line 111) | protected virtual void SerializeCredential(FileCredential credential)
method Enumerate (line 130) | private IEnumerable<FileCredential> Enumerate(string service, string a...
method EnsureStoreRoot (line 164) | private void EnsureStoreRoot()
method CreateServiceSlug (line 189) | private string CreateServiceSlug(string service)
FILE: src/shared/Core/PlatformUtils.cs
class PlatformUtils (line 11) | public static class PlatformUtils
method GetPlatformInformation (line 17) | public static PlatformInformation GetPlatformInformation(ITrace2 trace2)
method IsDevBox (line 27) | public static bool IsDevBox()
method IsArm (line 60) | public static bool IsArm()
method IsWindowsBrokerSupported (line 72) | public static bool IsWindowsBrokerSupported()
method IsMacOS (line 116) | public static bool IsMacOS()
method IsWindows (line 125) | public static bool IsWindows()
method IsLinux (line 134) | public static bool IsLinux()
method IsPosix (line 143) | public static bool IsPosix()
method EnsureMacOS (line 152) | public static void EnsureMacOS()
method EnsureWindows (line 164) | public static void EnsureWindows()
method EnsureLinux (line 176) | public static void EnsureLinux()
method EnsurePosix (line 188) | public static void EnsurePosix()
method IsElevatedUser (line 196) | public static bool IsElevatedUser()
method GetNativeEntryPath (line 220) | public static string GetNativeEntryPath()
method GetLinuxEntryPath (line 249) | private static string GetLinuxEntryPath()
method GetMacOSEntryPath (line 305) | private static string GetMacOSEntryPath()
method GetWindowsEntryPath (line 320) | private static string GetWindowsEntryPath()
method GetOSType (line 338) | private static string GetOSType()
method GetOSVersion (line 360) | private static string GetOSVersion(ITrace2 trace2)
method GetCpuArchitecture (line 464) | private static string GetCpuArchitecture()
method RtlGetVersion (line 488) | [DllImport("ntdll.dll", ExactSpelling = true)]
method RtlGetVersionEx (line 491) | private static unsafe int RtlGetVersionEx(out RTL_OSVERSIONINFOEX osvi)
type RTL_OSVERSIONINFOEX (line 498) | [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
type PlatformInformation (line 535) | public struct PlatformInformation
method PlatformInformation (line 537) | public PlatformInformation(string osType, string osVersion, string cpu...
FILE: src/shared/Core/ProcessManager.cs
type IProcessManager (line 6) | public interface IProcessManager
method CreateProcess (line 18) | ChildProcess CreateProcess(string path, string args, bool useShellExec...
method CreateProcess (line 25) | ChildProcess CreateProcess(ProcessStartInfo psi);
class ProcessManager (line 28) | public class ProcessManager : IProcessManager
method ProcessManager (line 38) | public ProcessManager(ITrace2 trace2)
method CreateProcess (line 45) | public virtual ChildProcess CreateProcess(string path, string args, bo...
method CreateProcess (line 59) | public virtual ChildProcess CreateProcess(ProcessStartInfo psi)
method CreateSid (line 67) | public static void CreateSid()
method GetProcessDepth (line 92) | internal static int GetProcessDepth()
FILE: src/shared/Core/Settings.cs
type ISettings (line 17) | public interface ISettings : IDisposable
method TryGetSetting (line 28) | bool TryGetSetting(string envarName, string section, string property, ...
method TryGetPathSetting (line 40) | bool TryGetPathSetting(string envarName, string section, string proper...
method GetSettingValues (line 51) | IEnumerable<string> GetSettingValues(string envarName, string section,...
method GetTracingEnabled (line 90) | bool GetTracingEnabled(out string value);
method GetProxyConfiguration (line 131) | ProxyConfiguration GetProxyConfiguration();
method GetTrace2Settings (line 201) | Trace2Settings GetTrace2Settings();
class ProxyConfiguration (line 204) | public class ProxyConfiguration
method ProxyConfiguration (line 206) | public ProxyConfiguration(
method ConvertToBypassRegexArray (line 256) | public static IEnumerable<string> ConvertToBypassRegexArray(string noP...
type TlsBackend (line 304) | public enum TlsBackend
class Settings (line 311) | public class Settings : ISettings
method Settings (line 318) | public Settings(IEnvironment environment, IGit git)
method TryGetSetting (line 327) | public bool TryGetSetting(string envarName, string section, string pro...
method TryGetPathSetting (line 336) | public bool TryGetPathSetting(string envarName, string section, string...
method GetSettingValues (line 345) | public IEnumerable<string> GetSettingValues(string envarName, string s...
method TryGetExternalDefault (line 492) | protected internal virtual bool TryGetExternalDefault(string section, ...
method GetTracingEnabled (line 566) | public bool GetTracingEnabled(out string value) =>
method GetTrace2Settings (line 594) | public Trace2Settings GetTrace2Settings()
method GetProxyConfiguration (line 696) | public ProxyConfiguration GetProxyConfiguration()
method Dispose (line 846) | public void Dispose()
FILE: src/shared/Core/StandardStreams.cs
type IStandardStreams (line 10) | public interface IStandardStreams
class StandardStreams (line 28) | public class StandardStreams : IStandardStreams
FILE: src/shared/Core/StreamExtensions.cs
class StreamExtensions (line 8) | public static class StreamExtensions
method ReadDictionary (line 20) | public static IDictionary<string, string> ReadDictionary(this TextRead...
method ReadDictionary (line 31) | public static IDictionary<string, string> ReadDictionary(this TextRead...
method ReadMultiDictionary (line 54) | public static IDictionary<string, IList<string>> ReadMultiDictionary(t...
method ReadMultiDictionary (line 65) | public static IDictionary<string, IList<string>> ReadMultiDictionary(t...
method ReadDictionaryAsync (line 88) | public static Task<IDictionary<string, string>> ReadDictionaryAsync(th...
method ReadMultiDictionaryAsync (line 101) | public static Task<IDictionary<string, IList<string>>> ReadMultiDictio...
method ReadDictionaryAsync (line 112) | public static async Task<IDictionary<string, string>> ReadDictionaryAs...
method ReadMultiDictionaryAsync (line 133) | public static async Task<IDictionary<string, IList<string>>> ReadMulti...
method WriteDictionary (line 153) | public static void WriteDictionary(this TextWriter writer, IDictionary...
method WriteDictionary (line 171) | public static void WriteDictionary(this TextWriter writer, IDictionary...
method WriteDictionaryAsync (line 205) | public static async Task WriteDictionaryAsync(this TextWriter writer, ...
method ParseLine (line 216) | private static void ParseLine(IDictionary<string, string> dict, string...
method ParseMultiLine (line 228) | private static void ParseMultiLine(IDictionary<string, IList<string>> ...
method GetNormalizedValueList (line 266) | private static IList<string> GetNormalizedValueList(IEnumerable<string...
FILE: src/shared/Core/StringExtensions.cs
class StringExtensions (line 6) | public static class StringExtensions
method IsTruthy (line 20) | public static bool IsTruthy(this string str)
method IsFalsey (line 40) | public static bool IsFalsey(this string str)
method ToBooleany (line 60) | public static bool? ToBooleany(this string str)
method ToBooleanyOrDefault (line 88) | public static bool ToBooleanyOrDefault(this string str, bool defaultVa...
method TruncateFromIndexOf (line 99) | public static string TruncateFromIndexOf(this string str, char c)
method TruncateFromLastIndexOf (line 118) | public static string TruncateFromLastIndexOf(this string str, char c)
method TrimUntilIndexOf (line 138) | public static string TrimUntilIndexOf(this string str, char c)
method TrimUntilIndexOf (line 159) | public static string TrimUntilIndexOf(this string str, string value, S...
method TrimUntilLastIndexOf (line 179) | public static string TrimUntilLastIndexOf(this string str, char c)
method TrimUntilLastIndexOf (line 200) | public static string TrimUntilLastIndexOf(this string str, string valu...
method TrimMiddle (line 220) | public static string TrimMiddle(this string str, string value, StringC...
method Contains (line 240) | public static bool Contains(this string str, string value, StringCompa...
method ToSnakeCase (line 250) | public static string ToSnakeCase(this string str)
FILE: src/shared/Core/TerminalMenu.cs
class TerminalMenu (line 6) | public class TerminalMenu : IEnumerable<TerminalMenuItem>
method TerminalMenu (line 11) | public TerminalMenu(ITerminal terminal, string title = null)
method Add (line 19) | public TerminalMenuItem Add(string name)
method Show (line 26) | public TerminalMenuItem Show(int? defaultOption = null)
method GetEnumerator (line 84) | public IEnumerator<TerminalMenuItem> GetEnumerator()
method GetEnumerator (line 89) | IEnumerator IEnumerable.GetEnumerator()
class TerminalMenuItem (line 95) | public class TerminalMenuItem
method TerminalMenuItem (line 97) | public TerminalMenuItem(string name)
FILE: src/shared/Core/Trace.cs
type ITrace (line 14) | public interface ITrace : IDisposable
method AddListener (line 31) | void AddListener(TextWriter listener);
method Flush (line 36) | void Flush();
method WriteException (line 47) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "...
method WriteDictionary (line 63) | void WriteDictionary<TKey, TValue>(
method WriteDictionarySecrets (line 80) | void WriteDictionarySecrets<TKey, TValue>(
method WriteLine (line 95) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "...
method WriteLineSecrets (line 113) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "...
class Trace (line 122) | public class Trace : DisposableObject, ITrace
method AddListener (line 142) | public void AddListener(TextWriter listener)
method Flush (line 156) | public void Flush()
method WriteException (line 174) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "...
method WriteDictionary (line 193) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "...
method WriteDictionarySecrets (line 206) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "...
method WriteLine (line 243) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "...
method WriteLineSecrets (line 274) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "...
method ReleaseManagedResources (line 289) | protected override void ReleaseManagedResources()
method FormatText (line 310) | private static string FormatText(string message, string filePath, int ...
class DebugTraceWriter (line 334) | public class DebugTraceWriter : TextWriter
method Write (line 338) | public override void Write(char value) => Debug.Write(value);
method Write (line 340) | public override void Write(string value) => Debug.Write(value);
method WriteLine (line 342) | public override void WriteLine(string value) => Debug.WriteLine(value);
FILE: src/shared/Core/Trace2.cs
type Trace2Event (line 14) | public enum Trace2Event
type Trace2ProcessClass (line 29) | public enum Trace2ProcessClass
class Trace2Settings (line 41) | public class Trace2Settings
class PerformanceFormatSpan (line 50) | public class PerformanceFormatSpan
class Region (line 62) | public class Region : DisposableObject
method Region (line 72) | public Region(ITrace2 trace2, string category, string label, string fi...
method ReleaseManagedResources (line 86) | protected override void ReleaseManagedResources()
type ITrace2 (line 96) | public interface ITrace2 : IDisposable
method Initialize (line 102) | void Initialize(DateTimeOffset startTime);
method Start (line 111) | void Start(string appPath,
method Stop (line 122) | void Stop(int exitCode,
method WriteChildStart (line 137) | void WriteChildStart(DateTimeOffset startTime,
method WriteChildExit (line 155) | void WriteChildExit(
method WriteError (line 171) | void WriteError(
method CreateRegion (line 187) | Region CreateRegion(
method WriteRegionEnter (line 204) | void WriteRegionEnter(
method WriteRegionLeave (line 222) | void WriteRegionLeave(
class Trace2 (line 233) | public class Trace2 : DisposableObject, ITrace2
method Trace2 (line 250) | public Trace2(ICommandContext commandContext)
method Initialize (line 255) | public void Initialize(DateTimeOffset startTime)
method Start (line 271) | public void Start(string appPath,
method Stop (line 286) | public void Stop(int exitCode, string filePath, int lineNumber)
method WriteChildStart (line 291) | public void WriteChildStart(DateTimeOffset startTime,
method WriteChildExit (line 337) | public void WriteChildExit(
method WriteError (line 370) | public void WriteError(
method CreateRegion (line 399) | public Region CreateRegion(
method WriteRegionEnter (line 409) | public void WriteRegionEnter(
method WriteRegionLeave (line 432) | public void WriteRegionLeave(
method ReleaseManagedResources (line 457) | protected override void ReleaseManagedResources()
method TryGetPipeName (line 480) | internal static bool TryGetPipeName(string eventTarget, out string name)
method InitializeWriters (line 500) | private void InitializeWriters()
method WriteVersion (line 532) | private void WriteVersion(
method WriteStart (line 553) | private void WriteStart(
method WriteExit (line 583) | private void WriteExit(int code, string filePath = "", int lineNumber ...
method AddWriter (line 600) | private void AddWriter(ITrace2Writer writer)
method WriteMessage (line 614) | private void WriteMessage(Trace2Message message)
method BuildThreadName (line 640) | private static string BuildThreadName()
FILE: src/shared/Core/Trace2CollectorWriter.cs
class Trace2CollectorWriter (line 15) | public class Trace2CollectorWriter : Trace2Writer
method Trace2CollectorWriter (line 25) | public Trace2CollectorWriter(Trace2FormatTarget formatTarget,
method Write (line 38) | public override void Write(Trace2Message message)
method ReleaseManagedResources (line 43) | protected override void ReleaseManagedResources()
method Start (line 55) | private void Start()
method Stop (line 80) | private void Stop()
method BackgroundWriterThreadProc (line 93) | private void BackgroundWriterThreadProc()
method WriteMessage (line 107) | private void WriteMessage(string message)
FILE: src/shared/Core/Trace2Exception.cs
class Trace2Exception (line 9) | public class Trace2Exception : Exception
method Trace2Exception (line 11) | public Trace2Exception(ITrace2 trace2, string message) : base(message)
method Trace2Exception (line 16) | public Trace2Exception(ITrace2 trace2, string message, string messageF...
class Trace2InvalidOperationException (line 22) | public class Trace2InvalidOperationException : InvalidOperationException
method Trace2InvalidOperationException (line 24) | public Trace2InvalidOperationException(ITrace2 trace2, string message)...
class Trace2OAuth2Exception (line 30) | public class Trace2OAuth2Exception : OAuth2Exception
method Trace2OAuth2Exception (line 32) | public Trace2OAuth2Exception(ITrace2 trace2, string message) : base(me...
method Trace2OAuth2Exception (line 37) | public Trace2OAuth2Exception(ITrace2 trace2, string message, string me...
class Trace2InteropException (line 43) | public class Trace2InteropException : InteropException
method Trace2InteropException (line 45) | public Trace2InteropException(ITrace2 trace2, string message, int erro...
method Trace2InteropException (line 50) | public Trace2InteropException(ITrace2 trace2, string message, Win32Exc...
class Trace2GitException (line 56) | public class Trace2GitException : GitException
method Trace2GitException (line 58) | public Trace2GitException(ITrace2 trace2, string message, int errorCod...
class Trace2FileNotFoundException (line 68) | public class Trace2FileNotFoundException : FileNotFoundException
method Trace2FileNotFoundException (line 70) | public Trace2FileNotFoundException(ITrace2 trace2, string message, str...
FILE: src/shared/Core/Trace2FileWriter.cs
class Trace2FileWriter (line 6) | public class Trace2FileWriter : Trace2Writer
method Trace2FileWriter (line 10) | public Trace2FileWriter(Trace2FormatTarget formatTarget, string path) ...
method Write (line 15) | public override void Write(Trace2Message message)
FILE: src/shared/Core/Trace2Message.cs
class Trace2Message (line 9) | public abstract class Trace2Message
method ToJson (line 49) | public abstract string ToJson();
method ToNormalString (line 51) | public abstract string ToNormalString();
method ToPerformanceString (line 53) | public abstract string ToPerformanceString();
method BuildPerformanceSpan (line 55) | protected abstract string BuildPerformanceSpan();
method BuildNormalString (line 57) | protected string BuildNormalString()
method BuildPerformanceString (line 70) | protected string BuildPerformanceString()
method GetEventMessage (line 92) | protected abstract string GetEventMessage(Trace2FormatTarget formatTar...
method GetSource (line 94) | private string GetSource()
method BuildTimeSpan (line 106) | internal static string BuildTimeSpan(double time)
method BuildCategorySpan (line 119) | internal static string BuildCategorySpan(string category)
method BuildRepoSpan (line 131) | internal static string BuildRepoSpan(int repo)
method BuildSpan (line 143) | private static string BuildSpan(PerformanceFormatSpan component, strin...
class VersionMessage (line 185) | public class VersionMessage : Trace2Message
method ToJson (line 195) | public override string ToJson()
method ToNormalString (line 200) | public override string ToNormalString()
method ToPerformanceString (line 205) | public override string ToPerformanceString()
method BuildPerformanceSpan (line 210) | protected override string BuildPerformanceSpan()
method GetEventMessage (line 215) | protected override string GetEventMessage(Trace2FormatTarget formatTar...
class StartMessage (line 221) | public class StartMessage : Trace2Message
method ToJson (line 231) | public override string ToJson()
method ToNormalString (line 236) | public override string ToNormalString()
method ToPerformanceString (line 241) | public override string ToPerformanceString()
method BuildPerformanceSpan (line 246) | protected override string BuildPerformanceSpan()
method GetEventMessage (line 251) | protected override string GetEventMessage(Trace2FormatTarget formatTar...
class ExitMessage (line 257) | public class ExitMessage : Trace2Message
method ToJson (line 267) | public override string ToJson()
method ToNormalString (line 272) | public override string ToNormalString()
method ToPerformanceString (line 277) | public override string ToPerformanceString()
method BuildPerformanceSpan (line 282) | protected override string BuildPerformanceSpan()
method GetEventMessage (line 287) | protected override string GetEventMessage(Trace2FormatTarget formatTar...
class ChildStartMessage (line 293) | public class ChildStartMessage : Trace2Message
method ToJson (line 315) | public override string ToJson()
method ToNormalString (line 320) | public override string ToNormalString()
method ToPerformanceString (line 325) | public override string ToPerformanceString()
method BuildPerformanceSpan (line 330) | protected override string BuildPerformanceSpan()
method GetEventMessage (line 335) | protected override string GetEventMessage(Trace2FormatTarget formatTar...
class ChildExitMessage (line 350) | public class ChildExitMessage : Trace2Message
method ToJson (line 372) | public override string ToJson()
method ToNormalString (line 377) | public override string ToNormalString()
method ToPerformanceString (line 382) | public override string ToPerformanceString()
method BuildPerformanceSpan (line 387) | protected override string BuildPerformanceSpan()
method GetEventMessage (line 392) | protected override string GetEventMessage(Trace2FormatTarget formatTar...
class ErrorMessage (line 406) | public class ErrorMessage : Trace2Message
method ToJson (line 416) | public override string ToJson()
method ToNormalString (line 421) | public override string ToNormalString()
method ToPerformanceString (line 426) | public override string ToPerformanceString()
method BuildPerformanceSpan (line 431) | protected override string BuildPerformanceSpan()
method GetEventMessage (line 436) | protected override string GetEventMessage(Trace2FormatTarget formatTar...
class RegionMessage (line 442) | public abstract class RegionMessage : Trace2Message
class RegionEnterMessage (line 472) | public class RegionEnterMessage : RegionMessage
method ToJson (line 474) | public override string ToJson()
method ToNormalString (line 479) | public override string ToNormalString()
method ToPerformanceString (line 484) | public override string ToPerformanceString()
method BuildPerformanceSpan (line 489) | protected override string BuildPerformanceSpan()
method GetEventMessage (line 494) | protected override string GetEventMessage(Trace2FormatTarget formatTar...
class RegionLeaveMessage (line 500) | public class RegionLeaveMessage : RegionMessage
method ToJson (line 505) | public override string ToJson()
method ToNormalString (line 510) | public override string ToNormalString()
method ToPerformanceString (line 515) | public override string ToPerformanceString()
method BuildPerformanceSpan (line 520) | protected override string BuildPerformanceSpan()
method GetEventMessage (line 525) | protected override string GetEventMessage(Trace2FormatTarget formatTar...
class SnakeCaseNamingPolicy (line 531) | public class SnakeCaseNamingPolicy : JsonNamingPolicy
method ConvertName (line 533) | public override string ConvertName(string name) =>
FILE: src/share
Condensed preview — 496 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,520K chars).
[
{
"path": ".azure-pipelines/release.yml",
"chars": 41556,
"preview": "name: $(Date:yyyyMMdd)$(Rev:.r)\ntrigger: none\npr: none\n\nresources:\n repositories:\n - repository: 1ESPipelines\n "
},
{
"path": ".code-coverage/coverlet.settings.xml",
"chars": 343,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<RunSettings>\n <DataCollectionRunSettings>\n <DataCollectors>\n <DataColl"
},
{
"path": ".github/ISSUE_TEMPLATE/auth-issue.yml",
"chars": 4526,
"preview": "name: Authentication issue\ndescription: An authentication problem occurred when running a Git command.\nlabels: [\"auth-is"
},
{
"path": ".github/ISSUE_TEMPLATE/feature-req.yml",
"chars": 983,
"preview": "name: Feature request\ndescription: A suggestion for a new feature in Git Credential Manager.\nlabels: [\"enhancement\"]\nbod"
},
{
"path": ".github/dependabot.yml",
"chars": 167,
"preview": "version: 2\n\nupdates:\n\n # Enable version updates for GitHub ecosystem\n - package-ecosystem: \"github-actions\"\n direct"
},
{
"path": ".github/workflows/codeql-analysis.yml",
"chars": 836,
"preview": "name: \"CodeQL\"\n\non:\n push:\n branches: [ main, release ]\n pull_request:\n # The branches below must be a subset of"
},
{
"path": ".github/workflows/continuous-integration.yml",
"chars": 4001,
"preview": "name: ci\r\n\r\non:\r\n workflow_dispatch:\r\n push:\r\n branches: [ main ]\r\n pull_request:\r\n branches: [ main ]\r\n\r\njobs:"
},
{
"path": ".github/workflows/lint-docs.yml",
"chars": 1875,
"preview": "name: \"Lint documentation\"\n\non:\n workflow_dispatch:\n push:\n branches: [ main, linux ]\n paths:\n - '**.md'\n "
},
{
"path": ".github/workflows/maintainer-absence.yml",
"chars": 2333,
"preview": "name: maintainer-absence\n\non:\n workflow_dispatch:\n inputs:\n startDate:\n description: 'First day of maint"
},
{
"path": ".github/workflows/validate-install-from-source.yml",
"chars": 1644,
"preview": "name: validate-install-from-source\n\non:\n workflow_dispatch:\n push:\n branches:\n - main\n\njobs:\n docker:\n nam"
},
{
"path": ".gitignore",
"chars": 5746,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
},
{
"path": ".lycheeignore",
"chars": 78,
"preview": "godaddy\\.com[\\\\/]?$\ngitlab\\.com/-/profile/applications\nfile:[\\\\/][\\\\/][\\\\/].*\n"
},
{
"path": ".markdownlint.jsonc",
"chars": 369,
"preview": "// For information on writing markdownlint configuration see:\n// https://github.com/DavidAnson/markdownlint/blob/main/R"
},
{
"path": ".vscode/launch.json",
"chars": 1630,
"preview": "{\n // Use IntelliSense to find out which attributes exist for C# debugging\n // Use hover for the description of the "
},
{
"path": ".vscode/tasks.json",
"chars": 2581,
"preview": "{\n \"version\": \"2.0.0\",\n \"tasks\": [\n {\n \"label\": \"build\",\n \"command\": \"dotnet\",\n "
},
{
"path": "CODEOWNERS",
"chars": 372,
"preview": "*\t@git-ecosystem/git-client\n/src/shared/Microsoft.AzureRepos/\t@git-ecosystem/git-client @git-ecosystem/gcm-azure-maintai"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3483,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "CONTRIBUTING.md",
"chars": 2518,
"preview": "# Contributing\n\nHi there! We're thrilled that you'd like to contribute to GCM :tada:. Your help\nis essential for keeping"
},
{
"path": "Directory.Build.props",
"chars": 1702,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "Directory.Build.targets",
"chars": 1649,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "Git-Credential-Manager.sln",
"chars": 24823,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 16\nVisualStudioVersion = 16.0.2992"
},
{
"path": "Git-Credential-Manager.sln.DotSettings",
"chars": 724,
"preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
},
{
"path": "LICENSE",
"chars": 1101,
"preview": "Git Credential Manager\nCopyright © GitHub, Inc. and contributors\n\nMIT License\n\nPermission is hereby granted, free of cha"
},
{
"path": "NOTICE",
"chars": 2597,
"preview": "NOTICES AND INFORMATION\nDo Not Translate or Localize\n\nThis repository for Git Credential Manager includes material from "
},
{
"path": "README.md",
"chars": 6766,
"preview": "# Git Credential Manager\n\n[![Build Status][build-status-badge]][workflow-status]\n\n---\n\n[Git Credential Manager][gcm] (GC"
},
{
"path": "SECURITY.md",
"chars": 1726,
"preview": "Thanks for helping make GitHub safe for everyone.\n\n## Security\n\nGitHub takes the security of our software products and s"
},
{
"path": "VERSION",
"chars": 8,
"preview": "2.7.3.0\n"
},
{
"path": "assets/gcm.xaml",
"chars": 2786,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Viewbox xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" Stretc"
},
{
"path": "build/GCM.MSBuild.csproj",
"chars": 416,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net8.0</TargetFramework>\n <IncludeBuildOutp"
},
{
"path": "build/GCM.tasks",
"chars": 985,
"preview": "<Project>\n <PropertyGroup Condition=\"'$(MSBuildRuntimeType)' == 'Mono'\">\n <_TaskAssembly>$(MSBuildToolsPath)\\M"
},
{
"path": "build/GenerateWindowsAppManifest.cs",
"chars": 1627,
"preview": "using Microsoft.Build.Framework;\nusing Microsoft.Build.Utilities;\nusing System.IO;\n\nnamespace GitCredentialManager.MSBui"
},
{
"path": "build/GetVersion.cs",
"chars": 1471,
"preview": "using Microsoft.Build.Framework;\nusing Microsoft.Build.Utilities;\nusing System.IO;\n\nnamespace GitCredentialManager.MSBui"
},
{
"path": "docs/README.md",
"chars": 1066,
"preview": "# User documentation\n\nThe following are links to GCM user support documentation:\n\n- [Frequently asked questions][gcm-faq"
},
{
"path": "docs/architecture.md",
"chars": 15212,
"preview": "# Architecture\n\n## Overview\n\n```text\n+------------------------------------------------------------------------------+\n| "
},
{
"path": "docs/autodetect.md",
"chars": 3228,
"preview": "# Host provider auto-detection\n\nGit Credential Manager (GCM) supports authentication with multiple different Git\nhost pr"
},
{
"path": "docs/azrepos-misp.md",
"chars": 6285,
"preview": "# Azure Managed Identities and Service Principals\n\nGit Credential Manager supports Managed Identities and Service Princi"
},
{
"path": "docs/azrepos-users-and-tokens.md",
"chars": 7986,
"preview": "# Azure Repos: Access tokens and Accounts\n\n## Different credential types\n\nThe Azure Repos host provider supports creatin"
},
{
"path": "docs/bitbucket-authentication.md",
"chars": 3374,
"preview": "# Bitbucket Authentication\n\nWhen GCM is triggered by Git, it will check the `host` parameter passed\nto it. If this param"
},
{
"path": "docs/bitbucket-development.md",
"chars": 8664,
"preview": "# Bitbucket Authentication, 2FA and OAuth\n\nBy default for authenticating against private Git repositories Bitbucket\nsupp"
},
{
"path": "docs/configuration.md",
"chars": 34671,
"preview": "# Configuration options\n\n[Git Credential Manager][usage] works out of the box for most users.\n\nGit Credential Manager (G"
},
{
"path": "docs/credstores.md",
"chars": 9919,
"preview": "# Credential stores\n\nThere are several options for storing credentials that GCM supports:\n\n- Windows Credential Manager\n"
},
{
"path": "docs/development.md",
"chars": 8005,
"preview": "# Development and debugging\n\nStart by cloning this repository:\n\n```shell\ngit clone https://github.com/git-ecosystem/git-"
},
{
"path": "docs/enterprise-config.md",
"chars": 3999,
"preview": "# Enterprise configuration defaults\n\nGit Credential Manager (GCM) can be configured using multiple\ndifferent mechanisms."
},
{
"path": "docs/environment.md",
"chars": 33163,
"preview": "# Environment variables\n\n[Git Credential Manager][gcm] works out of the box for most users. Configuration\noptions are av"
},
{
"path": "docs/faq.md",
"chars": 14273,
"preview": "# Frequently asked questions\n\n## Authentication problems\n\n### Q: I got an error trying to push/pull/clone. What do I do "
},
{
"path": "docs/generic-oauth.md",
"chars": 4446,
"preview": "# Generic Host Provider OAuth\n\nMany Git hosts use the popular standard OAuth2 or OpenID Connect (OIDC)\nauthentication me"
},
{
"path": "docs/github-apideprecation.md",
"chars": 6028,
"preview": "# GitHub Authentication Deprecation\n\n## What's going on?\n\nGitHub now [requires token-based authentication][token-auth] t"
},
{
"path": "docs/gitlab.md",
"chars": 4913,
"preview": "# GitLab support\n\nGit Credential Manager supports [gitlab.com][gitlab] out the box.\n\n## Using on another instance\n\nTo us"
},
{
"path": "docs/hostprovider.md",
"chars": 16709,
"preview": "# Git Credential Manager Host Provider\n\n## Abstract\n\nGit Credential Manger, the cross-platform and cross-host Git creden"
},
{
"path": "docs/install.md",
"chars": 6089,
"preview": "# Install instructions\n\nThere are multiple ways to install GCM on macOS, Windows, and Linux. Preferred\ninstallation meth"
},
{
"path": "docs/linux-fromsrc-uninstall.md",
"chars": 3488,
"preview": "# Uninstalling after installing from source\n\nThese instructions will guide you in removing GCM after running the\n[instal"
},
{
"path": "docs/linux-validate-gpg.md",
"chars": 2673,
"preview": "# Validating GCM's GPG signature\n\nFollow the below instructions to import GCM's public key and use it to validate\nthe la"
},
{
"path": "docs/migration.md",
"chars": 1476,
"preview": "# Migration Guide\n\n## Migrating from Git Credential Manager for Windows\n\n### GCM_AUTHORITY\n\nThis setting (and the corres"
},
{
"path": "docs/multiple-users.md",
"chars": 5225,
"preview": "# Multiple users\n\nIf you work with multiple different identities on a single Git hosting service,\nyou may be wondering i"
},
{
"path": "docs/netconfig.md",
"chars": 9003,
"preview": "# Network and HTTP configuration\n\nGit Credential Manager's network and HTTP(S) behavior can be configured in a few\ndiffe"
},
{
"path": "docs/ntlm-kerberos.md",
"chars": 6311,
"preview": "# NTLM and Kerberos Authentication\n\n## Background\n\nNTLM and Kerberos are two authentication protocols that are commonly "
},
{
"path": "docs/rename.md",
"chars": 6247,
"preview": "# Git Credential Manager Rename\n\nIn November 2021, _\"Git Credential Manager Core\"_ was [renamed][rename-pr] to\nsimply _\""
},
{
"path": "docs/usage.md",
"chars": 1566,
"preview": "# Command-line usage\n\nAfter installation, Git will use Git Credential Manager and you will only need\nto interact with an"
},
{
"path": "docs/windows-broker.md",
"chars": 11450,
"preview": "# Web Account Manager integration\n\nGit Credential Manager (GCM) knows how to integrate with the\n[Web Account Manager (WA"
},
{
"path": "docs/wsl.md",
"chars": 4997,
"preview": "# Windows Subsystem for Linux (WSL)\n\nGCM can be used with the\n[Windows Subsystem for Linux (WSL)][wsl], both WSL1 and WS"
},
{
"path": "global.json",
"chars": 75,
"preview": "{\n \"sdk\": {\n \"rollForward\": \"latestMajor\",\n \"version\": \"8.0\"\n }\n}\n\n"
},
{
"path": "nuget.config",
"chars": 200,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n <packageSources>\r\n <clear />\r\n <add key=\"nuget\" value=\""
},
{
"path": "src/linux/Directory.Build.props",
"chars": 684,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "src/linux/Packaging.Linux/Packaging.Linux.csproj",
"chars": 1437,
"preview": "<Project>\n <!-- Implicit SDK props import -->\n <Import Project=\"Sdk.props\" Sdk=\"Microsoft.NET.Sdk\" />\n\n <PropertyGrou"
},
{
"path": "src/linux/Packaging.Linux/build.sh",
"chars": 2225,
"preview": "#!/bin/bash\ndie () {\n echo \"$*\" >&2\n exit 1\n}\n\necho \"Building Packaging.Linux...\"\n\n# Directories\nTHISDIR=\"$( cd \"$"
},
{
"path": "src/linux/Packaging.Linux/install-from-source.sh",
"chars": 8165,
"preview": "#!/bin/sh\n\n# Halt execution immediately on failure.\n# Note there are some scenarios in which this will not exit; see\n# h"
},
{
"path": "src/linux/Packaging.Linux/layout.sh",
"chars": 2218,
"preview": "#!/bin/bash\ndie () {\n echo \"$*\" >&2\n exit 1\n}\n\nmake_absolute () {\n case \"$1\" in\n /*)\n echo \"$1\"\n "
},
{
"path": "src/linux/Packaging.Linux/pack.sh",
"chars": 4092,
"preview": "#!/bin/bash\ndie () {\n echo \"$*\" >&2\n exit 1\n}\n\n# Directories\nTHISDIR=\"$( cd \"$(dirname \"$0\")\" ; pwd -P )\"\nROOT=\"$("
},
{
"path": "src/osx/.gitignore",
"chars": 1509,
"preview": "# Xcode\n#\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n"
},
{
"path": "src/osx/Directory.Build.props",
"chars": 682,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "src/osx/Installer.Mac/Installer.Mac.csproj",
"chars": 1145,
"preview": "<Project>\n <!-- Implicit SDK props import -->\n <Import Project=\"Sdk.props\" Sdk=\"Microsoft.NET.Sdk\" />\n\n <PropertyGro"
},
{
"path": "src/osx/Installer.Mac/build.sh",
"chars": 1689,
"preview": "#!/bin/bash\ndie () {\n echo \"$*\" >&2\n exit 1\n}\n\necho \"Building Installer.Mac...\"\n\n# Directories\nTHISDIR=\"$( cd \"$(d"
},
{
"path": "src/osx/Installer.Mac/codesign.sh",
"chars": 1603,
"preview": "#!/bin/bash\n\nSIGN_DIR=$1\nDEVELOPER_ID=$2\nENTITLEMENTS_FILE=$3\n\nif [ -z \"$SIGN_DIR\" ]; then\n echo \"error: missing dire"
},
{
"path": "src/osx/Installer.Mac/dist.sh",
"chars": 2188,
"preview": "#!/bin/bash\ndie () {\n echo \"$*\" >&2\n exit 1\n}\n\n# Directories\nTHISDIR=\"$( cd \"$(dirname \"$0\")\" ; pwd -P )\"\nROOT=\"$("
},
{
"path": "src/osx/Installer.Mac/distribution.arm64.xml",
"chars": 965,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<installer-gui-script minSpecVersion=\"1\">\n <title>Git Credenti"
},
{
"path": "src/osx/Installer.Mac/distribution.x64.xml",
"chars": 967,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<installer-gui-script minSpecVersion=\"1\">\n <title>Git Credenti"
},
{
"path": "src/osx/Installer.Mac/entitlements.xml",
"chars": 404,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "src/osx/Installer.Mac/layout.sh",
"chars": 2341,
"preview": "#!/bin/bash\ndie () {\n echo \"$*\" >&2\n exit 1\n}\nmake_absolute () {\n case \"$1\" in\n /*)\n echo \"$1\"\n "
},
{
"path": "src/osx/Installer.Mac/notarize.sh",
"chars": 667,
"preview": "#!/bin/bash\n\nfor i in \"$@\"\ndo\ncase \"$i\" in\n\t--package=*)\n\tPACKAGE=\"${i#*=}\"\n\tshift # past argument=value\n\t;;\n\t--keychain"
},
{
"path": "src/osx/Installer.Mac/pack.sh",
"chars": 1830,
"preview": "#!/bin/bash\ndie () {\n echo \"$*\" >&2\n exit 1\n}\n\n# Directories\nTHISDIR=\"$( cd \"$(dirname \"$0\")\" ; pwd -P )\"\nROOT=\"$("
},
{
"path": "src/osx/Installer.Mac/resources/en.lproj/conclusion.html",
"chars": 1809,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <style>\n body { font-fam"
},
{
"path": "src/osx/Installer.Mac/resources/en.lproj/welcome.html",
"chars": 1447,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <style>\n body { font-fam"
},
{
"path": "src/osx/Installer.Mac/scripts/postinstall",
"chars": 957,
"preview": "#!/bin/bash\nset -e\n\nPACKAGE=$1\nINSTALL_DESTINATION=$2\n\nfunction IsBrewPkgInstalled\n{\n # Check if Homebrew is installe"
},
{
"path": "src/osx/Installer.Mac/uninstall.sh",
"chars": 992,
"preview": "#!/bin/bash\n\nTHISDIR=\"$( cd \"$(dirname \"$0\")\" ; pwd -P )\"\nGCMBIN=\"$THISDIR/git-credential-manager\"\n\n# Ensure we're runni"
},
{
"path": "src/shared/Atlassian.Bitbucket/Atlassian.Bitbucket.csproj",
"chars": 712,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFrameworks>net8.0</TargetFrameworks>\n <TargetFramewo"
},
{
"path": "src/shared/Atlassian.Bitbucket/AuthenticationMethod.cs",
"chars": 130,
"preview": "using System;\nnamespace Atlassian.Bitbucket\n{\n public enum AuthenticationMethod\n {\n BasicAuth,\n Sso"
},
{
"path": "src/shared/Atlassian.Bitbucket/BitbucketAuthentication.cs",
"chars": 11593,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Net.Http;\nusing System.Text;\nusing System.Threading;\nusing "
},
{
"path": "src/shared/Atlassian.Bitbucket/BitbucketConstants.cs",
"chars": 1720,
"preview": "using System;\n\nnamespace Atlassian.Bitbucket\n{\n public static class BitbucketConstants\n {\n public const str"
},
{
"path": "src/shared/Atlassian.Bitbucket/BitbucketHelper.cs",
"chars": 1034,
"preview": "using System;\nusing Atlassian.Bitbucket.Cloud;\nusing GitCredentialManager;\n\nnamespace Atlassian.Bitbucket\n{\n public "
},
{
"path": "src/shared/Atlassian.Bitbucket/BitbucketHostProvider.cs",
"chars": 21279,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Threading.Tasks;"
},
{
"path": "src/shared/Atlassian.Bitbucket/BitbucketOAuth2Client.cs",
"chars": 2034,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.T"
},
{
"path": "src/shared/Atlassian.Bitbucket/BitbucketResources.Designer.cs",
"chars": 2454,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// This code w"
},
{
"path": "src/shared/Atlassian.Bitbucket/BitbucketResources.resx",
"chars": 4013,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<root>\n <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLS"
},
{
"path": "src/shared/Atlassian.Bitbucket/BitbucketRestApiRegistry.cs",
"chars": 1061,
"preview": "using Atlassian.Bitbucket.Cloud;\nusing GitCredentialManager;\n\nnamespace Atlassian.Bitbucket\n{\n public class Bitbucket"
},
{
"path": "src/shared/Atlassian.Bitbucket/BitbucketTokenEndpointResponseJson.cs",
"chars": 2949,
"preview": "using System;\nusing System.Text.Json;\nusing GitCredentialManager.Authentication.OAuth.Json;\nusing System.Text.Json.Seria"
},
{
"path": "src/shared/Atlassian.Bitbucket/Cloud/BitbucketOAuth2Client.cs",
"chars": 2730,
"preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\nusing System;\nusing Syst"
},
{
"path": "src/shared/Atlassian.Bitbucket/Cloud/BitbucketRestApi.cs",
"chars": 2872,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing GitCredential"
},
{
"path": "src/shared/Atlassian.Bitbucket/Cloud/CloudConstants.cs",
"chars": 2268,
"preview": "using System;\n\nnamespace Atlassian.Bitbucket.Cloud\n{\n public static class CloudConstants\n {\n public const s"
},
{
"path": "src/shared/Atlassian.Bitbucket/Cloud/UserInfo.cs",
"chars": 251,
"preview": "using System;\nusing System.Text.Json;\nusing System.Text.Json.Serialization;\n\nnamespace Atlassian.Bitbucket.Cloud\n{\n p"
},
{
"path": "src/shared/Atlassian.Bitbucket/DataCenter/BitbucketOAuth2Client.cs",
"chars": 3305,
"preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\nusing System;\nusing Syst"
},
{
"path": "src/shared/Atlassian.Bitbucket/DataCenter/BitbucketRestApi.cs",
"chars": 6413,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Net;\nusing System.Net.Http;\nusing System"
},
{
"path": "src/shared/Atlassian.Bitbucket/DataCenter/DataCenterConstants.cs",
"chars": 1839,
"preview": "using System;\n\nnamespace Atlassian.Bitbucket.DataCenter\n{\n public static class DataCenterConstants\n {\n publ"
},
{
"path": "src/shared/Atlassian.Bitbucket/DataCenter/LoginOption.cs",
"chars": 272,
"preview": "using System.Text.Json.Serialization;\n\nnamespace Atlassian.Bitbucket.DataCenter\n{\n public class LoginOption\n {\n "
},
{
"path": "src/shared/Atlassian.Bitbucket/DataCenter/LoginOptions.cs",
"chars": 253,
"preview": "using System.Collections.Generic;\nusing System.Text.Json.Serialization;\n\nnamespace Atlassian.Bitbucket.DataCenter\n{\n "
},
{
"path": "src/shared/Atlassian.Bitbucket/DataCenter/UserInfo.cs",
"chars": 155,
"preview": "using System;\n\nnamespace Atlassian.Bitbucket.DataCenter\n{\n public class UserInfo : IUserInfo\n {\n public str"
},
{
"path": "src/shared/Atlassian.Bitbucket/IBitbucketRestApi.cs",
"chars": 415,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nnamespace Atlassian.Bitbucket\n{\n publ"
},
{
"path": "src/shared/Atlassian.Bitbucket/IRegistry.cs",
"chars": 173,
"preview": "using System;\nusing GitCredentialManager;\n\nnamespace Atlassian.Bitbucket\n{\n public interface IRegistry<T> : IDisposab"
},
{
"path": "src/shared/Atlassian.Bitbucket/IUserInfo.cs",
"chars": 124,
"preview": "using System;\nnamespace Atlassian.Bitbucket\n{\n public interface IUserInfo\n {\n string UserName{ get; }\n "
},
{
"path": "src/shared/Atlassian.Bitbucket/InternalsVisibleTo.cs",
"chars": 100,
"preview": "using System.Runtime.CompilerServices;\n\n[assembly: InternalsVisibleTo(\"Atlassian.Bitbucket.Tests\")]\n"
},
{
"path": "src/shared/Atlassian.Bitbucket/OAuth2ClientRegistry.cs",
"chars": 1516,
"preview": "using System.Net.Http;\nusing GitCredentialManager;\n\nnamespace Atlassian.Bitbucket\n{\n public class OAuth2ClientRegistr"
},
{
"path": "src/shared/Atlassian.Bitbucket/RestApiResult.cs",
"chars": 531,
"preview": "using System.Net;\n\nnamespace Atlassian.Bitbucket\n{\n public class RestApiResult<T>\n {\n public RestApiResult"
},
{
"path": "src/shared/Atlassian.Bitbucket/UI/Commands/CredentialsCommand.cs",
"chars": 2692,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.CommandLine;\nusing System.CommandLine.Invocation;\nusing Sys"
},
{
"path": "src/shared/Atlassian.Bitbucket/UI/ViewModels/CredentialsViewModel.cs",
"chars": 4443,
"preview": "using System;\nusing System.ComponentModel;\nusing System.Windows.Input;\nusing GitCredentialManager;\nusing GitCredentialMa"
},
{
"path": "src/shared/Atlassian.Bitbucket/UI/Views/CredentialsView.axaml",
"chars": 4212,
"preview": "<UserControl xmlns=\"https://github.com/avaloniaui\"\n xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n "
},
{
"path": "src/shared/Atlassian.Bitbucket/UI/Views/CredentialsView.axaml.cs",
"chars": 1372,
"preview": "using Atlassian.Bitbucket.UI.ViewModels;\nusing Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\nusing GitCredentialManager"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/Atlassian.Bitbucket.Tests.csproj",
"chars": 1163,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net8.0</TargetFramework>\n <IsPackable>fals"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/BitbucketAuthenticationTest.cs",
"chars": 9893,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing GitCredentia"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/BitbucketHelperTest.cs",
"chars": 2647,
"preview": "using System;\nusing Xunit;\n\nnamespace Atlassian.Bitbucket.Tests\n{\n public class BitbucketHelperTest\n {\n [Th"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/BitbucketHostProviderTest.cs",
"chars": 27204,
"preview": "using Atlassian.Bitbucket.Cloud;\nusing Atlassian.Bitbucket.DataCenter;\nusing GitCredentialManager;\nusing GitCredentialM"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/BitbucketRestApiRegistryTest.cs",
"chars": 1898,
"preview": "using System.Collections.Generic;\nusing GitCredentialManager;\nusing Moq;\nusing Xunit;\n\nnamespace Atlassian.Bitbucket.Tes"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/BitbucketTokenEndpointResponseJsonTest.cs",
"chars": 1110,
"preview": "using System;\nusing System.Text.Json;\nusing Xunit;\n\nnamespace Atlassian.Bitbucket.Tests\n{\n public class BitbucketToke"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/Cloud/BitbucketOAuth2ClientTest.cs",
"chars": 6683,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading;\nusing S"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/Cloud/BitbucketRestApiTest.cs",
"chars": 2021,
"preview": "using System;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Atlassian.Bitbucket.Cloud;\nus"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/Cloud/UserInfoTest.cs",
"chars": 1061,
"preview": "using System;\nusing System.Text.Json;\nusing System.Text.Json.Serialization;\nusing System.Threading.Tasks;\nusing Atlassia"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/DataCenter/BitbucketOAuth2ClientTest.cs",
"chars": 6564,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading;\nusing S"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/DataCenter/BitbucketRestApiTest.cs",
"chars": 4957,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nu"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/DataCenter/LoginOptionsTest.cs",
"chars": 909,
"preview": "using System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Atlassian.Bitbucket.DataCenter;"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/DataCenter/UserInfoTest.cs",
"chars": 402,
"preview": "using System.Threading.Tasks;\nusing Atlassian.Bitbucket.DataCenter;\nusing Xunit;\n\nnamespace Atlassian.Bitbucket.Tests.Da"
},
{
"path": "src/shared/Atlassian.Bitbucket.Tests/OAuth2ClientRegistryTest.cs",
"chars": 3958,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Net.Http;\nusing Atlassian.Bitbucket.Cloud;\nusing Atlassian."
},
{
"path": "src/shared/Core/Application.cs",
"chars": 12669,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.CommandLine;\nusing System.CommandLine.Builder;\nusing System"
},
{
"path": "src/shared/Core/ApplicationBase.cs",
"chars": 4219,
"preview": "using System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Text;\nusing System.Threading;\nusing System.Threadi"
},
{
"path": "src/shared/Core/AssemblyUtils.cs",
"chars": 699,
"preview": "using System.Reflection;\n\nnamespace GitCredentialManager;\n\npublic static class AssemblyUtils\n{\n public static bool Tr"
},
{
"path": "src/shared/Core/Authentication/AuthenticationBase.cs",
"chars": 11429,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing Syst"
},
{
"path": "src/shared/Core/Authentication/BasicAuthentication.cs",
"chars": 4698,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;"
},
{
"path": "src/shared/Core/Authentication/MicrosoftAuthentication.cs",
"chars": 41209,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net.Http;\nusing System."
},
{
"path": "src/shared/Core/Authentication/OAuth/HttpListenerExtensions.cs",
"chars": 534,
"preview": "using System.Net;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace GitCredentialManager.Authentication.OAuth\n"
},
{
"path": "src/shared/Core/Authentication/OAuth/IOAuth2WebBrowser.cs",
"chars": 342,
"preview": "using System;\nusing System.Net;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace GitCredentialManager.Au"
},
{
"path": "src/shared/Core/Authentication/OAuth/Json/DeviceAuthorizationEndpointResponseJson.cs",
"chars": 983,
"preview": "using System;\nusing System.Text.Json.Serialization;\n\nnamespace GitCredentialManager.Authentication.OAuth.Json\n{\n publ"
},
{
"path": "src/shared/Core/Authentication/OAuth/Json/ErrorResponseJson.cs",
"chars": 987,
"preview": "using System;\nusing System.Text;\nusing System.Text.Json;\nusing System.Text.Json.Serialization;\n\nnamespace GitCredentialM"
},
{
"path": "src/shared/Core/Authentication/OAuth/Json/TokenEndpointResponseJson.cs",
"chars": 1028,
"preview": "using System;\nusing System.Text.Json;\nusing System.Text.Json.Serialization;\n\nnamespace GitCredentialManager.Authenticati"
},
{
"path": "src/shared/Core/Authentication/OAuth/OAuth2AuthorizationCodeResult.cs",
"chars": 486,
"preview": "using System;\n\nnamespace GitCredentialManager.Authentication.OAuth\n{\n public class OAuth2AuthorizationCodeResult\n "
},
{
"path": "src/shared/Core/Authentication/OAuth/OAuth2Client.cs",
"chars": 19765,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Net.Http;\r\nusing System.Net.Http.Headers;\r\nusing System."
},
{
"path": "src/shared/Core/Authentication/OAuth/OAuth2Constants.cs",
"chars": 2417,
"preview": "\nnamespace GitCredentialManager.Authentication.OAuth\n{\n public static class OAuth2Constants\n {\n public cons"
},
{
"path": "src/shared/Core/Authentication/OAuth/OAuth2CryptographicGenerator.cs",
"chars": 4192,
"preview": "using System;\nusing System.Security.Cryptography;\nusing System.Text;\n\nnamespace GitCredentialManager.Authentication.OAut"
},
{
"path": "src/shared/Core/Authentication/OAuth/OAuth2DeviceCodeResult.cs",
"chars": 680,
"preview": "using System;\n\nnamespace GitCredentialManager.Authentication.OAuth\n{\n public class OAuth2DeviceCodeResult\n {\n "
},
{
"path": "src/shared/Core/Authentication/OAuth/OAuth2Exception.cs",
"chars": 305,
"preview": "using System;\n\nnamespace GitCredentialManager.Authentication.OAuth\n{\n public class OAuth2Exception : Exception\n {\n"
},
{
"path": "src/shared/Core/Authentication/OAuth/OAuth2ServerEndpoints.cs",
"chars": 1122,
"preview": "using System;\n\nnamespace GitCredentialManager.Authentication.OAuth\n{\n /// <summary>\n /// Represents the various OA"
},
{
"path": "src/shared/Core/Authentication/OAuth/OAuth2SystemWebBrowser.cs",
"chars": 7357,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Net;\nusing System.Net.Sockets;\nusing System.Threading;\nusin"
},
{
"path": "src/shared/Core/Authentication/OAuth/OAuth2TokenResult.cs",
"chars": 515,
"preview": "using System;\n\nnamespace GitCredentialManager.Authentication.OAuth\n{\n public class OAuth2TokenResult\n {\n pu"
},
{
"path": "src/shared/Core/Authentication/OAuthAuthentication.cs",
"chars": 11220,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;"
},
{
"path": "src/shared/Core/Authentication/WindowsIntegratedAuthentication.cs",
"chars": 4184,
"preview": "using System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Threading;\nusing System.Threading.Tasks"
},
{
"path": "src/shared/Core/Base64UrlConvert.cs",
"chars": 942,
"preview": "using System;\n\nnamespace GitCredentialManager\n{\n public static class Base64UrlConvert\n {\n public static str"
},
{
"path": "src/shared/Core/ChildProcess.cs",
"chars": 2487,
"preview": "using System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Threading.Tasks;\n\nnamespace GitCredentialManager;\n"
},
{
"path": "src/shared/Core/CommandContext.cs",
"chars": 9019,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing GitCredentialManager.In"
},
{
"path": "src/shared/Core/CommandExtensions.cs",
"chars": 3058,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.CommandLine;\nusing System.Diagnostics;\nusing System.Linq;\n\n"
},
{
"path": "src/shared/Core/Commands/ConfigurationCommands.cs",
"chars": 2229,
"preview": "using System.CommandLine;\nusing System.Threading.Tasks;\n\nnamespace GitCredentialManager.Commands\n{\n public abstract c"
},
{
"path": "src/shared/Core/Commands/DiagnoseCommand.cs",
"chars": 7971,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.CommandLine;\nusing System.IO;\nusing System.Text;\nusing Syst"
},
{
"path": "src/shared/Core/Commands/EraseCommand.cs",
"chars": 642,
"preview": "using System.Threading.Tasks;\n\nnamespace GitCredentialManager.Commands\n{\n /// <summary>\n /// Erase a previously st"
},
{
"path": "src/shared/Core/Commands/GetCommand.cs",
"chars": 1857,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nnamespace GitCredentialManager.Commands\n{"
},
{
"path": "src/shared/Core/Commands/GitCommandBase.cs",
"chars": 3774,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.CommandLine;\nusing System.Threading.Tasks;\n\nnamespace GitCr"
},
{
"path": "src/shared/Core/Commands/ProviderCommand.cs",
"chars": 484,
"preview": "using System.CommandLine;\n\nnamespace GitCredentialManager.Commands\n{\n public interface ICommandProvider\n {\n "
},
{
"path": "src/shared/Core/Commands/StoreCommand.cs",
"chars": 1273,
"preview": "using System;\nusing System.Threading.Tasks;\n\nnamespace GitCredentialManager.Commands\n{\n /// <summary>\n /// Store a"
},
{
"path": "src/shared/Core/ConfigurationService.cs",
"chars": 3594,
"preview": "using System.Collections.Generic;\nusing System.Threading.Tasks;\n\nnamespace GitCredentialManager\n{\n /// <summary>\n "
},
{
"path": "src/shared/Core/Constants.cs",
"chars": 15069,
"preview": "using System;\nusing System.Reflection;\n\nnamespace GitCredentialManager\n{\n public static class Constants\n {\n "
},
{
"path": "src/shared/Core/ConvertUtils.cs",
"chars": 580,
"preview": "using System;\n\nnamespace GitCredentialManager\n{\n public static class ConvertUtils\n {\n public static bool Tr"
},
{
"path": "src/shared/Core/Core.csproj",
"chars": 1538,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFrameworks>net8.0</TargetFrameworks>\n <TargetFramewo"
},
{
"path": "src/shared/Core/Credential.cs",
"chars": 820,
"preview": "\nnamespace GitCredentialManager\n{\n /// <summary>\n /// Represents a credential.\n /// </summary>\n public inter"
},
{
"path": "src/shared/Core/CredentialCacheStore.cs",
"chars": 3277,
"preview": "using System;\nusing System.Collections.Generic;\n\nnamespace GitCredentialManager\n{\n public class CredentialCacheStore "
},
{
"path": "src/shared/Core/CredentialStore.cs",
"chars": 15043,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Text;\nusing GitCredentialManager.Interop.L"
},
{
"path": "src/shared/Core/CurlCookie.cs",
"chars": 2676,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Net;\nusing GitCredentialManager;\n\nnamespace GitCredentialMa"
},
{
"path": "src/shared/Core/Diagnostics/CredentialStoreDiagnostic.cs",
"chars": 2629,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace GitCredentia"
},
{
"path": "src/shared/Core/Diagnostics/Diagnostic.cs",
"chars": 1749,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace GitCredentia"
},
{
"path": "src/shared/Core/Diagnostics/EnvironmentDiagnostic.cs",
"chars": 1249,
"preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Net.Mime;\nusing System.Text;\nusin"
},
{
"path": "src/shared/Core/Diagnostics/FileSystemDiagnostic.cs",
"chars": 2028,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnames"
},
{
"path": "src/shared/Core/Diagnostics/GitDiagnostic.cs",
"chars": 1798,
"preview": "using System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace "
},
{
"path": "src/shared/Core/Diagnostics/IDiagnosticProvider.cs",
"chars": 186,
"preview": "using System.Collections.Generic;\n\nnamespace GitCredentialManager.Diagnostics\n{\n public interface IDiagnosticProvider"
},
{
"path": "src/shared/Core/Diagnostics/MicrosoftAuthenticationDiagnostic.cs",
"chars": 2624,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading.Tasks;\nusing GitCredentialMana"
},
{
"path": "src/shared/Core/Diagnostics/NetworkingDiagnostic.cs",
"chars": 4632,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Net;\nusing System.Net.Http;\nusing System.Net.NetworkInforma"
},
{
"path": "src/shared/Core/DictionaryExtensions.cs",
"chars": 2796,
"preview": "using System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Web;\n\nnamespace GitCredentialManage"
},
{
"path": "src/shared/Core/DisposableObject.cs",
"chars": 1819,
"preview": "using System;\n\nnamespace GitCredentialManager\n{\n /// <summary>\n /// An object that implements the <see cref=\"IDisp"
},
{
"path": "src/shared/Core/EncodingEx.cs",
"chars": 194,
"preview": "using System.Text;\n\nnamespace GitCredentialManager;\n\npublic static class EncodingEx\n{\n public static readonly Encodin"
},
{
"path": "src/shared/Core/EnsureArgument.cs",
"chars": 2994,
"preview": "using System;\n\nnamespace GitCredentialManager\n{\n public static class EnsureArgument\n {\n public static void "
},
{
"path": "src/shared/Core/EnumerableExtensions.cs",
"chars": 1212,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace GitCredentialManager\n{\n public static c"
},
{
"path": "src/shared/Core/EnvironmentBase.cs",
"chars": 8620,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\n\nnamespace"
},
{
"path": "src/shared/Core/FileCredential.cs",
"chars": 499,
"preview": "namespace GitCredentialManager\n{\n public class FileCredential : ICredential\n {\n public FileCredential(strin"
},
{
"path": "src/shared/Core/FileSystem.cs",
"chars": 6173,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\n\nnamespace GitCredentialManager\n{\n /// <summary>\n "
},
{
"path": "src/shared/Core/GenericHostProvider.cs",
"chars": 18902,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Threading;\nusing "
},
{
"path": "src/shared/Core/GenericOAuthConfig.cs",
"chars": 7180,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing GitCredentialManager.Authentication.OAuth;\n\nnam"
},
{
"path": "src/shared/Core/Git.cs",
"chars": 11053,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Text.RegularExpressions;\nusing Sy"
},
{
"path": "src/shared/Core/GitConfiguration.cs",
"chars": 40530,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\n\nnamespa"
},
{
"path": "src/shared/Core/GitConfigurationEntry.cs",
"chars": 292,
"preview": "namespace GitCredentialManager\n{\n public class GitConfigurationEntry\n {\n public GitConfigurationEntry(strin"
},
{
"path": "src/shared/Core/GitConfigurationKeyComparer.cs",
"chars": 3173,
"preview": "using System;\n\nnamespace GitCredentialManager\n{\n /// <summary>\n /// Represents string comparison of Git configurat"
},
{
"path": "src/shared/Core/GitStreamReader.cs",
"chars": 2134,
"preview": "using System.IO;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace GitCredentialManage"
},
{
"path": "src/shared/Core/GitVersion.cs",
"chars": 4413,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace GitCredentialManager\n{\n public class Gi"
},
{
"path": "src/shared/Core/Gpg.cs",
"chars": 4198,
"preview": "using System;\nusing System.Diagnostics;\n\nnamespace GitCredentialManager\n{\n public interface IGpg\n {\n string"
},
{
"path": "src/shared/Core/HostProvider.cs",
"chars": 8155,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n"
},
{
"path": "src/shared/Core/HostProviderRegistry.cs",
"chars": 12610,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Linq;\nusing System.Net.Http;\nus"
},
{
"path": "src/shared/Core/HttpClientExtensions.cs",
"chars": 3000,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Ta"
},
{
"path": "src/shared/Core/HttpClientFactory.cs",
"chars": 15551,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Net.H"
},
{
"path": "src/shared/Core/HttpContentExtensions.cs",
"chars": 428,
"preview": "using System.Collections.Generic;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\nnamespace GitCredentialManager\n{"
}
]
// ... and 296 more files (download for full content)
About this extraction
This page contains the full source code of the git-ecosystem/git-credential-manager GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 496 files (2.3 MB), approximately 626.0k tokens, and a symbol index with 2871 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.