Skip to content

Conversation

@mjcheetham
Copy link
Member

@mjcheetham mjcheetham commented Aug 7, 2025

Add support for parsing Git versions that include a release candidate 'tag' such as 2.51.0-rc0, which will have a git version output like: "2.51.0.rc0". For Microsoft Git releases the tags looks like 2.51.0-rc0.vfs.0.0 and git version output like "2.51.0.rc0.vfs.0.0".

Also drop unused (except by tests) methods for parsing the Git installer file name to extract a version number. The installer file name in the tests was out-of-date anyway (no longer contains "gvfs").

Copy link
Member

@dscho dscho left a comment

Choose a reason for hiding this comment

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

I guess we'll want to merge #1854 (or at least #1852) first?

@mjcheetham
Copy link
Member Author

I guess we'll want to merge #1854 (or at least #1852) first?

I assume you mean #1853 and #1852, since 1854 is this PR itself 😉

@dscho
Copy link
Member

dscho commented Aug 11, 2025

I guess we'll want to merge #1854 (or at least #1852) first?

I assume you mean #1853 and #1852, since 1854 is this PR itself 😉

🤦 yes... 😊

Add support for parsing Git versions that include a release candidate
'tag' such as 2.51.0-rc0, which will have VFS version strings like:
"2.51.0-rc0.vfs.0.0".

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Drop unused (except by tests) methods for parsing the Git installer file
name to extract a version number. The installer file name in the tests
was out-of-date anyway (no longer contains "gvfs").

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Copy link
Member

@dscho dscho left a comment

Choose a reason for hiding this comment

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

Thanks!

@mjcheetham mjcheetham merged commit 60f78a4 into microsoft:master Aug 13, 2025
5 checks passed
@mjcheetham mjcheetham deleted the version-parsing branch August 13, 2025 16:38
@mjcheetham mjcheetham mentioned this pull request Aug 18, 2025
mjcheetham added a commit to microsoft/git that referenced this pull request Sep 3, 2025
The existing build-git-installers.yml workflow did not handle building
release candidate builds correctly, mainly because it hasn't been
exercised with a real release candidate build.

During the rc-stages of v2.51.0, various issues were uncovered:

- The tag validation was looking for the wrong format. Release candidate
tags look like `v2.X.Y-rcN.vfs.W.Z`, but it was checking for a tag like
`v2.X.Y.vfs.W.Z.rcN`.
- The GIT-VERSION-GEN script does some munging of the tag to get to the
_build_ version. Specifically the `-rc` part is replaced with `.rc` and
the leading `v` is dropped.. so a tag of `v2.51.0-rc0.vfs.0.0` will
become `2.51.0.rc0.vfs.0.0`. The macOS installed Makefile and scripts to
create the Debian package did not correctly account for this, leading to
build strings that were not consistent with those for Windows builds.

With these changes, we can now successfully build release candidate
versions. Tags must be of the form:

```text
v2.X.Y-rcN.vfs.W.Z
```

The resulting build version (output from `git --version`) looks like:

```text
2.X.Y.rcN.vfs.W.Z
```

Installer and package file names maintain the _tag_ version format, for
example:

- Git-2.51.0-rc0.vfs.0.0-{64-bit,arm64}.exe
- PortableGit-2.51.0-rc0.vfs.0.0-{64-bit,arm64}.7z.exe
- git-2.51.0-rc0.vfs.0.0-universal.{pkg,dmg}
- microsoft-git_2.51.0-rc0.vfs.0.0.deb


See an example successful build here:
https://github.com/microsoft/git/actions/runs/16830521090

VFS for Git recently learned to correctly parse these release candidate
version strings here: microsoft/VFSForGit#1854
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants