How To: prepare a release - psjw12/gitextensions GitHub Wiki
GitExtensions uses semantic versioning for its releases. The basic workflow proceeds as follows.
- General development work is performed on the master branch. During this time, new features may be added to the product.
- In preparation for a release, a new branch is created with the name release/major.minor. For example, the branch release/<latest version> was created in preparation for the <latest version> release. These release branches are feature frozen; only small bug fixes are allowed to be added to one of these branches.
- Work on the new version takes place in the
master
branch - Merge all PR that ready for new version
- Create milestone for new version
- Assign bugs (especially all regressions), features to that milestone
- Update 3rd party tools (PuTTY remains - to be removed)
- Update copyright year if needed
- Fix all issues in milestone or move them to milestone 'Next version' if necessary
- Freeze
master
branch for all PR's that add/change localized strings - Run
GitUI/Translation/UpdateLocalEnglishTranslations.ps1
to update English.xlf and English.Plugins.xlf in GitUI/Translation (it runsTranslationApp.exe update
under the hood). - Review the changes to English*.xlf files to ensure the change is expected
- Commit the updated English*.xlf files.
- Announce on Transifex that new version is ready to ship in two(?) weeks. Remind that only the language in which the "User Interface (master)" translated 95% or more will be added in the installer.
- Create branch
release/3.x
in GitExtensionsDoc - Run
GitUI/Translation/DownloadTransifexTranslations.cmd
and commit pulled translations. - Update translations in
Setup\Product.wxs
andSetup\MakePortableArchive.cmd
(remove those not meeting the translation threshold and add new ones) - Update the current version to something like
<major>.<minor>.0
. Build version will be added by the AppVeyor build.
From Setup folder run.\Prepare-Release.ps1 -oldVersion 3.0.0 -newVersion 3.0.1 -milestones '36,37' -CommitChanges
; or update manually (the result is something like this commit). Make sure you push the Bump version commits. - Create documentation version on Read the Docs site. See wiki
- Change docs link in
UserManualToolStripMenuItemClick
(FormBrowse.cs) to new version - Commit and tag it as annotated tag
v3.0.0.<appveyor-version>
- Create a pre-release and publish binaries
- Give users RC1 version to test it
- If after week no critical error reported update version to
set_version_to.py -t 3.x -v 3.x.0
- Update version date in
GitUI/Resources/ChangeLog.md
- Commit and tag it as annotated tag
v3.x.0.<appveyor-version>
- Build final installer using
BuildInstallers.cmd
- Upload it with changelog to GitHub releases
- Create branch
release/3.x
for bugfixes - Update the 'latest' branch for GitExtensionsDoc to point to the release documentation. See wiki
- If after week no critical error reported update version and link in
configdata
branch for autoupdater