-
Notifications
You must be signed in to change notification settings - Fork 588
How and when does Git for Windows get released
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 testingHere 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-cheetahInspiration 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 HEADThis 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.rtfBuild the GfW installer
/share/WinGit/release.sh $msysgit_tag
/share/WinGit/portable-release.sh $msysgit_tag
/share/msysGit/net/release.sh $msysgit_tagPush 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 ;-)