#!/make/me/a/sandwich

Common Tasks
-----------------------------------------------------------------

Set file to be executable
$ svn propset svn:executable ON filename.sh

Enable $Id$ keyword expansion for a newly added file
$ svn propset svn:keywords 'Id' filename.sh

Update experimental branch with latest trunk files
$ svn co https://libdmtx.svn.sourceforge.net/svnroot/libdmtx/branches/experimental-mbl dmtx_exp
$ cd dmtx_exp
$ svn merge --ignore-ancestry \
      https://libdmtx.svn.sourceforge.net/svnroot/libdmtx/branches/experimental-mbl \
      https://libdmtx.svn.sourceforge.net/svnroot/libdmtx/trunk .
(verify updates)
$ svn commit

Generate splint warnings
$ splint -posix-strict-lib dmtx.c


Release Checklist
-----------------------------------------------------------------

1) o Include newly added files in lists below if appropriate

2) o Create copy of this file as living checklist

3) o Test for common style and formatting issues

   o $ script/check_all.sh .

4) o Review and close applicable bugs and feature requests

5) o Write and finalize release documentation

   o ReleaseNotes.txt (not in SVN or source distribution)

   o ChangeLog               o KNOWNBUG
   o NEWS                    o TODO

   o README                  o README.cygwin
   o README.freebsd          o README.linux
   o README.mingw            o README.osx
   o README.unix             o README.visualc

   o test/rotate_test/README
   o project/visualc9/README.txt

   o wrapper/cocoa/README    o wrapper/java/README
   o wrapper/net/README      o wrapper/php/README
   o wrapper/python/README   o wrapper/ruby/README
   o wrapper/vala/README

   o man/dmtxread.1          o man/dmtxwrite.1
   o man/dmtxquery.1         o man/libdmtx.3

6) o Update version number in appropriate files

   o configure.ac
   o dmtx.h
   o man/libdmtx.3
   o wrapper/cocoa/README
   o wrapper/java/README
   o wrapper/net/README
   o wrapper/php/README
   o wrapper/python/README
   o wrapper/ruby/README
   o wrapper/vala/README

7) o Update release date in appropriate files

   o TODO

   o man/libdmtx.3 (be sure to sync w/ simple_test.c)
   o man/dmtxread.1
   o man/dmtxwrite.1
   o man/dmtxquery.1

   o wrapper/cocoa/README
   o wrapper/java/README
   o wrapper/net/README
   o wrapper/php/README
   o wrapper/python/README
   o wrapper/ruby/README
   o wrapper/vala/README

8) o Perform final test build

   o $ svn update # get any pending updates
   o # final commit
   o $ svn diff # confirm no diffs, code is final
   o $ sudo make uninstall && make clean && make distclean
   o $ ./autogen.sh && ./configure && make && make check && sudo make install
   o # Run tests and confirm it works. Start step over if changes are needed.

9) o Build and test tarballs

   o $ cd ..
   o $ svn co https://libdmtx.svn.sourceforge.net/svnroot/libdmtx/trunk release
   o $ cd release
   o $ find . -type d -name ".svn" -exec rm -Rf {} \;
   o $ find . -type d -name ".svn"
   o $ ./autogen.sh && ./configure # don't build though
   o $ rm m4/* # probably should be addressed in Makefile.am instead
   o $ make dist-gzip
   o $ make dist-bzip2
   o $ make dist-zip
   o Verify no extraneous files made their way into the
     distribution (especially in the wrapper directories)
   o $ md5sum libdmtx-0.8.0.* > MD5SUM.txt

10) o SourceForge release administration

    o Upload files to SourceForge
    o Publish news item

11) o Tag final release in SVN (do this only after uploading to
      SourceForge in case something changes at the last minute)

    o $ svn copy https://libdmtx.svn.sourceforge.net/svnroot/libdmtx/trunk \
                 https://libdmtx.svn.sourceforge.net/svnroot/libdmtx/tags/release-0.8.0 \
           -m "Tagged libdmtx 0.8.0 release"

12) o Update minor number in unstable trunk (e.g., 0.8.0 -> 0.8.1)

    o Use file list from step 6 above
    o $ ./autogen.sh
    o $ ./configure
    o $ svn commit

13) o Update libdmtx.org with news item, download entry, and new
      project status

14) o Send message to libdmtx-announcements@lists.sourceforge.net
      with subject "libdmtx: 0.8.0 Released" and ReleaseNotes.txt
      as message body

15) o Create win32 build ("Release") and upload to SourceForge
