'index', 'title' => 'GNULib Stable HOWTO', 'jumbotron_title' => 'GNULib Stable HOWTO', ); show_page_top($pagedata); show_jumbotron($pagedata); ?>

Branches

upstream tracks git://git.savannah.gnu.org/gnulib.git
stable the stable snapshot we produce, based on upstream
master the debian branch, based on stable (optional)

Procedure

  1. if you don't already have a repository:
  2. update upstream branch:
             $ git checkout upstream
             $ git pull
         
  3. tag the current upstream HEAD for later use:
             $ git tag snapshot-start upstream
         
  4. run the test suite:
             $ git checkout upstream
             $ ./gnulib-tool --create-megatestdir --with-tests  --dir=t 2>&1 | tee create.out
             $ cd t
             $ ./do-autobuild 2>&1 | tee ../build.out
             $ cd ..
         
  5. find failing tests with:
             $ grep -L rc=0 t/logs/*
         
  6. report any issues to bug-gnulib@gnu.org
  7. merge the current upstream version into the stable branch:
             $ git checkout stable
             $ git merge upstream
         
  8. resolve conflicts
             $ git checkout upstream <all conflicting paths except NEWS.stable>
             $ git commit -a
         
  9. wait a week or so
  10. update upstream branch:
             $ git checkout upstream
             $ git pull
         
  11. create list of commits to review:
             $ git log --oneline --reverse --topo-order snapshot-start..upstream > ../stable.log
         
  12. return to the stable branch
             $ git checkout stable
         
  13. prepare NEWS.stable for new release:
  14. for each commit in ../stable.log:
  15. remove __NEXTCOMMIT__ marker from NEWS.stable, commit
  16. test (see above). If testsuite fails, check whether bug exists in upstream branch, report to bug-gnulib@gnu.org.
  17. remove the temporary snapshot-start tag
              $ git tag -d snapshot-start
         
  18. tag the new release
              $ git tag stable/yymmdd
         
  19. create and upload tarball:
              $ git archive --format=tar --prefix=gnulib-yymmdd-stable/ stable/yymmdd | gzip -9 > ../gnulib-yymmdd-stable.tar.gz
         
  20. push changes to stable git repository
  21. mail announcement to bug-gnulib@gnu.org