This is an old revision of the document!
Making a Release
Before you start with this, make sure you understand the release model all developers should follow for core components.
Version Numbering
Stable releases
Stable releases are created from the stable branch of the repository. So before you start make sure you are working in this branch.
# get the stable branch git checkout --track -b xfce-4.10 remotes/origin/xfce-4.10 # pull the latest changes git pull --rebase
Now make sure all the bug fixes are committed and pushed to the remote repository. You can check this at git.xfce.org as well.
For the version number the micro version is increased by 1. So 4.10.2 becomes 4.10.3.
Development releases
Unstable releases are created from the master branch, which is in this period in feature-freeze. There we use an odd minor number. So the first development release is for example 4.11.0, then 4.11.1 etc.
Build the tarball
If you are sure all the fixes are committed in the correct branch, its time to prepare the release.
Update NEWS
Update the NEWS, AUTHORS, README, THANKS, HACKING etc. files to credits are given where due.
Update version number
Open configure.ac.in
or configure.in.in
and update the version number. Also remove git
from the ?_version_tag
variable.
Update the ChangeLog
All core modules have a Makefile.am
rule to generate the ChangeLog
during distcheck. But if this is not the case, either add the rule or dump the git log in the ChangeLog
# put the git log in ChangeLog git log > ChangeLog # commit git ci ChangeLog -m "Update ChangeLog" # send to remote git push
Compile the code
./autogen.sh --enable-gtk-doc make distcheck
If everything is ok distcheck will tell you the abc.x.y.z.tar.bz2
tarball is ready. If not fix the error(s) and commit the changes before running distcheck again.
Tag release
If the tarball is build successfully, it is time to tag the release in GIT.
# make sure there are not pending changes git status # if not, commit them git commit -a -m "Updates for the x.y.z release." && git push # tag the release (annotated tag is required) git tag -a abc.x.y.z # send tag to remote git push --tags abc.x.y.z
For more information read the git tag manual.