Navigation Menu

Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

How and when does Git for Windows get released

Quoth edited this page Aug 5, 2015 · 9 revisions

We try to follow the git release schedule. When a core msysGit contributor reads that there is a new release, we try to update Git for Windows and incorporate changes from git.git.

The procedure can be outlined as follows:

git remote add junio https://github.com/git/git.git
git remote update junio origin
git fetch junio --tags
git checkout master
git pull origin master
git checkout -b tentative-foo
git branch -u origin/master
/share/msysgit/merging-rebase.sh foo # use --dry-run for testing

Here foo is a tag from the junio remote.

Once all conflicts are resolved, commit the changes.

We then run the tests. To get a compact output it helps to use the prove framework. So configure this by editing the /git/config.mak file as follows:

DEFAULT_TEST_TARGET=prove
GIT_PROVE_OPTS=--timer --jobs 16

With this config in place, running make test runs the git tests under the prove test reporting aggregator. Once the tests complete, it will produce a simplified report of those tests that failed at the end. Typically, there are one or two failures which we try to investigate, or send a message to the msysGit mailing list mentioning which tests need to be shown some love.

Once the person starting the process (we are very loose on procedures, basically the first person having time, the others realize from "git fetch"ing that the process was started) is reasonably happy with the test suite, he or she makes the packages.

cd /
version=W.X.Y
git_tag=v$version.msysgit.Z
msysgit_tag=$version-preview`date +"%Y%m%d"`
# Tag /git
git tag -a -m "Git $version" $git_tag git
# Commit the submodules
git commit -m "Commit submodule in preparation of $version" git doc/git/html src/git-cheetah

Inspiration for editing the release notes can be found by studying the log output of the submodules and /. For /git one can also try the following snippet which works better with our merging-rebase approach:

git log --no-merges  --author-date-order --decorate --date=short --format="%ad %h %s" --abbrev-commit HEAD

This shows our non-merge commits in author date order. Every commit after the date of our last release is new and should be noted in the release notes. The date of our last release can be found with

cd /git && git show `git tag  | grep msysgit  | tail -n1`

Edit release notes

wordpad /share/WinGit/ReleaseNotes.rtf

Build the GfW installer

/share/WinGit/release.sh $msysgit_tag
/share/WinGit/portable-release.sh $msysgit_tag
/share/msysGit/net/release.sh $msysgit_tag

Push everything to the remote (this might differ for maintenance branches)

git push
git push origin $msysgit_tag
cd /git
git push
git push origin $git_tag
  • Upload the installers either via webinterface or /bin/upload-to-github.sh
  • Write announcement mail to the msysgit and git mailing list
  • Change download links on msysgit.github.io

Fetch yourself something nice to drink as you should reward yourself ;-)