Skip to content
New issue

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

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

Already on GitHub? # to your account

Release GCM Core with various fixes and new Windows user-installer #206

Merged
merged 38 commits into from
Nov 2, 2020

Conversation

mjcheetham
Copy link
Collaborator

Changes:

mjcheetham and others added 30 commits October 1, 2020 10:36
Update the readme and FAQ documentation to include Linux preview
support, and elevate macOS and Windows from "preview" to GA.
Update readme and FAQs and drop preview wording
Automatically create a new PR to update the winget package for GCM Core
on release.
winget: update winget pkg on release
Add documentation regarding the upcoming removal of user/pass access to
the authorizations API on GitHub. Outline how to upgrade to GCM Core
from GCM4W to fix.
Update the GitHub auth change document PAT link to auto-select the `repo`, `gist`, and `workflow` scopes.
Update GitHub auth change document PAT link
Fix a bug where the 'Allow Windows Integrated Authentication' setting
was evaluating to `false` when unset, rather than `true` as per design
and the documentation.
Fix bug where Allow Windows Integrated Authentication setting default wrong
Update the macOS installer build to also create a distribution/product
archive package, that contains the flat component package we were
already building.

The product archive allows us to do things like set welcome and
conclusion messages, titles, and display a license (like the Windows
installers do).

In the new welcome and conclusion screens we include helpful links and
instructions on how to uninstall GCM Core, and how to configure it for
other users on the system.

The macOS installer continues to install in a global location, but only
configure the user's global Git configuration.
Ensure that we are correclty quoting arguments to Git configuration
commands.

We must ensure double-quotes are escaped correclty, and also any runs of
back-slashes ('\') are preserved _UNLESS_ a double-quote ('"') follows.
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
The .github/run_esrp_signing.py script is executed on the signing
machines. This mostly accumulates a set of JSON input files before
running the ESRP signing tool that was securely downloaded.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
This launches a job that downloads the ESRP signing tool client, then
loads it with the necessary information for our signing abilities.
Finally, it publishes our signed .deb to the build artifacts.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Update the configure and unconfigure actions to now set the full file
path to GCM Core, rather than rely on `manager-core` resolving to
`git-credential-manager-core` on the PATH by Git.

This was a problem because Git for Windows now bundles GCM Core, and
even if a standalone install of GCM Core was present on the system with
a higher version, since the bundled copy is found on the PATH before
anything else, Git was always picking the old one.

The change to using full paths helps fix this issue, and also another
issue on macOS where sometimes the /usr/local/bin directory is not on
the PATH (such as for the root user, or during a postinstall script for
a flat-package [.pkg] file).
Split the Windows installer into two versions: a single-user installer,
and a system-wide installer.

The old installer installed in Program Files (x86) and set the system
Git configuration, which is now what the system-flavoured installer
does.

The new single-user installer places files in %LOCALAPPDATA% and updates
the ~/.gitconfig (global) user Git configuration instead.

The benefit of the single-user installer is that it does not require an
administrator to install it, and doesn't affect other users of the
system.
Update the configure command to set the full path to GCM Core
Update the Mac installer to make a product archive package/installer
Fix the incorrect wording of the macOS installer welcome screen.
We do not configure different gitconfig files depending on the install
mode - we always update the current user's gitconfig only.
Fix incorrect wording of installer welcome msg
This adds a new workflow build-installers.yml, where hopefully we can either migrate all installer builds in the future (or rename and split them across the platforms.)

This workflow is heavily dependent on a lot of internal Microsoft infrastructure. What we have so far results in a GPG signed .deb for GCM-Core. This is currently uploaded as an artifact on the workflow itself but it not yet published. The 3rd and last build job yet to be added is using setting up yet another internal tool with the right security to use our internal publishing service.

This does the signing, but does not actually publish the package to the Microsoft package feed.

Replaces #170.
Split Windows installer in to user/system flavours
Rather than set the helper to be _only_ GCM Core in the system
configuration when called with `(un)configure --system`, we do what we
are already doing in the user-case.

We only append an empty ("") reset entry, and then the GCM full path
entry. This means on uninstall of the standalone GCM (be that the system
or user install), we restore the previous entry, always.
Add the --get-all and --add Git configuration commands, and use them in
place of --get-regexp and --replace-all where applicable.
If we have empty helper entries after GCM, then we should attempt to
reconfigure to put GCM back "at the front", since otherwise it's
effectively being disabled by those subsequent empty entries.
mjcheetham and others added 8 commits October 30, 2020 10:31
Only clear the useHttpPath=true option on calls to unconfigure if the
"manager-core" option is not present and we're in the system config on a
Windows platform.

This would be the case for the bundled GCM Core in Git for Windows,
which we would break by removing this option.
Since --null means that each config entry terminates with a null
character ('\0') we are left with one extra entry in the array after
splitting the string. This is NOT a real entry and we shouldn't return
it from the method.
this caused the preceding argument to fail due to lack of separation between args
Fix missing space in username input
Make the system installer always append GCM Core entries, not outright set/replace existing values (and fix a typo)
Copy link
Contributor

@derrickstolee derrickstolee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@mjcheetham mjcheetham merged commit b81f44a into release Nov 2, 2020
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants