I'm writing a book about RSpec and need to deliver code samples by chapter/section to the publisher. This is a pretty dirty but fast way of doing so; essentially I identify each check in's revision in my check in message (I used the section name as the check in message) and plugged them into the following shell script. Note that there are ../working and ../delivery directories (relative to the GIT_SRC directory) that get plastered and filled during this process!
# package-src.sh
#!/bin/bash
GIT_SRC=~/Projects/book/src
DEST\_TAR\_GZ=project
REVS="48c7ed8 7c19f89 30e195f 4f75557 9cf5aea"
cd $GIT_SRC
rm -rf ../working
mkdir -p ../delivery
rm -rf ../delivery/*.tar ../delivery/*.tar.gz
git clone . ../working
cd ../working
for REV in $REVS; do
git co $REV
FILENAME=$(git log -n1 | tail -n1 | cut -c 5-256 | tr ' ' _)
tar cf ../delivery/$FILENAME.tar --exclude=".git/" .
done
cd ../delivery
tar czf ${DEST_TAR_GZ}.tar.gz *.tar