Release process
- We usually make two releases per year (spring and fall)
- We currently use a semantic versioning scheme (
4.8.XX
)
Pre-requisites
Release VM
- Install a fresh Fedora VM to cut a release:
yum build-dep mc yum install git-core fakeroot check-devel po4a libX11-devel
- Configure
git
:git config --global user.name "Yury V. Zaytsev" git config --global user.email "yury@shurup.com"
- Port over the GPG keyring to make it possible to sign the tags.
Transifex
Set up Transifex to be able to work with translations.
Release process
Copy and paste the following list into the Prepare for release mc-4.8.XX
issue on GitHub:
Pre-release tasks
- Prepare the repository for release:
git clone git@github.com:MidnightCommander/mc.git git fetch git checkout master git reset --hard origin/master git clean -dfx ./autogen.sh mkdir dist; cd dist; ../configure; cd ..
- Download PO translations from Transifex:
./maint/sync-transifex/po-from-transifex.py
- Commit PO translations to
git
:make -C dist/po update-po git add po/*.po git commit -s -m 'maint: update PO translations from Transifex' git push origin master
- Download hints translations from Transifex:
./maint/sync-transifex/hints-from-transifex.py
- Commit hints translations to
git
:git add doc/hints/l10n/mc.hint.* git commit -s -m 'maint: update hints translations from Transifex' git push origin master
- Create a new
NEWS-4.8.YY
wiki page for the next version with an empty template. The template can be copied from the currentNEWS
wiki page (without the list of tasks and bug reports). - Add the content of the current
NEWS
wiki page to thedoc/NEWS
file in thegit
repo:git add doc/NEWS git commit -s -m 'maint: update doc/NEWS file' git push origin master
- Create a new version label1 on GitHub (
ver: 4.8.XX
) - Create a new milestone1 on GitHub (
4.8.YY
)
Cutting release tarballs
- Create a new
git
tag:git tag -s 4.8.XX # "Release" or "RCn"
- Create
*.tar.(bz2|xz)
distribution archives:cd dist; fakeroot make dist-bzip2 && fakeroot make dist-xz # https://bugzilla.redhat.com/show_bug.cgi?id=2338285 cat mc-4.8.33.tar | XZ_OPT=${XZ_OPT--e} xz -c >mc-4.8.33.tar.xz
- Compute checksums for distribution archives:
sha256sum mc-*tar.* > mc-4.8.XX.sha256
- Upload source packages and checksums to the issue
- Developers should download tarballs, verify checksums, compile and install locally; if everything is OK, developers should vote for the release.
./configure --prefix=$(pwd)/install make install make check
- Push out the release (or release candidate) tag:
git push origin 4.8.XX
- Upload source packages and checksums to the mirror master (maintainers should have access via public keys):
scp mc-4.8.XX.* midnightcommander@ftp-osl.osuosl.org:/home/midnightcommander/data ssh midnightcommander@ftp-osl.osuosl.org 'ls -als /home/midnightcommander/data/' | grep 4.8.3
- Trigger distribution of the tarballs to the mirrors:
ssh midnightcommander@ftp-osl.osuosl.org '/home/midnightcommander/trigger-midnightcommander'
- Check that files can be downloaded; adjust permissions (
0644
) if necessary
Post-release tasks
- Update the home page with the latest release version
- Write an announcement highlighting user-visible changes
- Create a new issue
Prepare for release mc-4.8.YY
(type:Task
, label:area: adm
) for the next release - Close issue for current release
- Close current milestone1