Both GNOME/MeeGo use the same procedure for the most part and both use git.




For this documentation, we'll assume we're releasing 0.9.28.

Make sure tarball is ready for distribution:

  1. Get a list of changes: git log --oneline --no-merges 0.9.27.. > changes.txt

    • Enhanced version to automatically add "Fixes GB/NB" and print list in the right format: git log --oneline --no-merges 0.9.27.. | ( while read sha title ; do git log -1 $sha --pretty=%b | grep -q ^Fixes..B# && title="$(git log -1 $sha --pretty=%b | grep ^Fixes..B# | sed -e 's/^\(Fixes .B#[0-9]\+\).*$/\1/'): $title" ; echo "  * $title"; done ) > changes.txt

  2. Edit changes.txt into NEWS and git commit
  3. Edit and update version to 0.9.28 and git commit (make sure this is the last commit before we tag)

  4. Make sure no cached files are lying around: git clean -dfx

  5. Use autogen with the distcheck arguments to avoid failing later: ./ --enable-nautilus-extension --enable-unit-tests --enable-functional-tests --enable-gtk-doc --enable-miner-rss --enable-miner-flickr --enable-miner-evolution --enable-poppler --enable-exempi --enable-libiptcdata --enable-libjpeg --enable-libtiff --enable-libvorbis --enable-libflac --enable-libgsf --enable-playlist --enable-tracker-preferences --enable-tracker-search-bar --with-enca --enable-maemo

  6. Build sources: make

  7. Install latest version: make install (this is needed before running make distcheck because the test cases depend on a working installation, this needs fixing)

  8. Make sure the latest version is running: tracker-control -rs

  9. Wait: make distcheck

For step #1, the list is usually quite condensed into what is useful for readers, useless things don't make it in, like whitespace changes. Anything too technical should be explained properly too.

For step #5, you can see the latest distcheck arguments if they happen to change in the top level

If step #9 fails, fix the issues and go back to step #4. If you need to reorder commits, it is useful to use: git rebase -i origin/master and reorder commits so the "Release" statement is the last one. This statement serves as a marker for those reading the logs.


  1. Push the latest master: git push gnome:tracker master (the gnome:tracker is an alias of course)

  2. Create tag: git tag -s 0.9.28 -m "Release 0.9.28" (GNOME's git requires the -s)

  3. Push the latest tag: git push gnome:tracker 0.9.28

  4. Upload tarball to release machine: scp tracker-0.9.28.tar.gz

  5. Log in to release machine: ssh

  6. Run the install script and then return to your local machine: install-module tracker-0.9.28.tar.gz

  7. Send email to (see and (see

If step #1 fails because someone has pushed since you last updated, you need to pull and go back to the beginning.



Making the branch ready:

  1. git push gitorious master (where master is GNOME's master and gitorious is an alias for the repository above)

  2. git pull --rebase

  3. git checkout harmattan

  4. git pull --rebase

  5. git merge master

  6. Creating the debian/changelog is done using the dch command, e.g.: dch -v 0.9.28-1maemo1. The changes non-UI and non-translation related in the NEWS file should be copied into the debian/changelog. For formatting, see:

  7. git push gitorious harmattan

Important Notes:

  1. Do not commit anything non-packaging related (i.e. anything outside debian/) to the harmattan branch, this branch is just a debian/ directory sitting on top of master and must not have any conflicts.

  2. All commits in the harmattan branch are usually prefixed with build to make it clear they're not related to any merge from master.

  3. Make sure the debian/patches/*.patch apply. This is usually done in a sandbox type environment like Scratchbox with something like: dpkg-buildpackage -rfakeroot (you might want to use -d to skip dependencies and just make sure the patches apply).

  4. For sending an announcement email, I use with a bash alias for the target address (alias announcer-tracker='$HOME/.local/bin/ -t').

For #4, if you use Evolution instead of Thunderbird like I do, you have to switch a line in the script which is commented out because the line breaking is slightly different.

Projects/Tracker/Documentation/Releasing (last edited 2013-11-25 12:54:25 by WilliamJonMcCann)