The `Program` type being static makes testing rather difficult, therefore removing the "static-ness" should make testing easier. This change keeps the function-delegate indirection while removing the static nature of the type.
The `Program` class was basically un-testable due to the static nature and number of cross connected functions. The first step in unwinding this mess is to add a layer of delegate indirection, which tests could then intercept as necissary.
Use seperate `HttpClientHandler` instances when querying hosts for NTLM support in parallel. Otherwise the queries need to be done in serial.
Minor refactoring of `Program` of Cli-CredentialHelper, Cli-Askpass, and Cli-Shared.
Make it so that Cli-Askpass functions correctly when the username is known. This includes keeping the username portion of the `TargetUri.ActualUri`.
Make Cli-Askpass try harder to parse credentials from queries passed to it from Git.
Make Cli-Askpass correctly captured basic credentials, for readback at a later time.
Make basic credential modal prompt only ask for password when the username is already known.
2FA support is provided via Bitbucket's OAuth implementation, users are able to run the OAuth authorization process and the GCM can retrieve and store OAuth tokens and return them to Git in a format acceptable to Bitbucket.
Bitbucket authentication support is implemented as a peer of the existing Microsoft VSTS and GitHub implementations, in the Bitbucket.Authentication project. The implementation, as far as possible, mirrors that of the GitHub support. In an attempt to lay the ground work of support for other hosts in the future some shared GUI concepts have been pulled out into the GUI-Shared shared code project. However only the new Bitbucket implementation makes use of them, the GitHub implementation has NOT been refactored to use these shared components at this time.
Further information can be found in the BITBUCKET_README.md file within the repository.
Refactor the project so that all code specific to Visual Studio Team Services lives in a new "Microsoft.Vsts.Authentication" library. This leaves all of the "common" code behind in "Microsoft.Alm.Authentication" library.
The long-term goal here is to make VSTS, GitHub, and Atlassian code share as much surface area as possible, thus reducing repetition and bugs.
Required a number of changes in build, deployment, and packaging steps; specifically with regards to the new "Microsoft.Vsts.Authentication.dll" binary which is now necessary to authenticate with TFS and VSTS hosted repositories.
Update all copyright years from 2016 to 2017, just a janitorial thing.
Update version for askpass and credential-manager to 1.9.0, MS.Alm.Authentication to 3.3.0, and GH.Authentication to 1.1.1 .
Basically, all output from the GCM should go to stderr, this adds indirection to insure it does. Additionally, ReadKey doesn't block waiting for input from the user if there's no TTY present.
Make Microsoft.Alm.Git a dependency of Micorosoft.Alm.Authentication and GitHub.Authentication.
Normalize the end of line for writelog.
Use FileMode.Append when opening log files.
add version information to start up routine.
All tracing should be done using 24h format.
Created a custom `Trace` class which handles all tracing throughout the assembly.
The new trace class uses formatting similar enough to Git to be useful when interleaved with GIT_TRACE values.
Now support tracing to a specified file, console, or the old credential.writelog location.
Added a new CommonShared project for future shared, non-library code.