Hi Victor,
On Tue, May 06, 2008 at 03:15:31PM -0300 or thereabouts, Victor Bogado da S=
ilva Lins wrote:
Others already discussed the --delete method with tar, and I do something
similar except slightly more flexible. I have for example, a git repo
that checks out directories from CVS, and of course I don't want these
CVS directories in my 'release'. So put a executable '.release' file in
each repo that tells my release script how to fix up the tarball to be
production ready.
Here is my release script, modeled after some lines Linus put in the git
documentation. It is meant to be run, reviewed for mistakes, and then
have the commands run via cut-paste.
#!/bin/bash=20
stable=3D"$1"
last=3D"$2"
new=3D"$3"
chip=3D"$4"
rel=3D`pwd | cut -d'/' -f6 | sed -e 's/\.git//'`
if [ -z $chip ]; then
reldir=3D$rel
else
reldir=3D$rel-$chip
fi
reldir=3D"$reldir-$new"
tarfile=3D"$reldir.tar"
if [ -d $reldir ]; then
echo "release directory $reldir already exists, please remove" 1>&2
exit 1
fi
if [ -f "../$reldir.tar" ]; then
echo "Release file ../$reldir.tar already exists, please remove" 1>&2
exit 1
fi
if [ -f "../$reldir.tar.gz" ]; then
echo "Release file ../$reldir.tar.gz already exists, please remove" 1>&2
exit 1
fi
echo "#git tag v$new"
echo "Tagging new release v$new" 1>&2
echo "git archive --prefix=3D$reldir/ v$new > ../$tarfile"
echo "mkdir $reldir"
#echo "git diff v$stable v$new | gzip -9 > ../patch-$new.gz"
echo "git log --no-merges v$new ^v$last > $reldir/ChangeLog-$new"
echo "git shortlog --no-merges v$new ^v$last > $reldir/ShortLog"
echo "git diff --stat --summary -M v$last v$new > $reldir/diffstat-$new"
echo "tar -rf ../$tarfile $reldir/*"
=2E/.release $reldir ../$tarfile
if [ $? !=3D 0 ]; then
echo ".release script failed! removing generated files" 1>&2
echo "rm -rf $reldir ../$tarfile"
exit 1
fi
echo "gzip -9 < ../$tarfile > ../$tarfile.gz"
echo "rm -rf $reldir ../$tarfile"
echo "New release at ../$tarfile.gz" 1>&2
And an example .release file
#!/bin/bash
dirlist=3D"make foo_include scripts"
excludes=3D"--exclude CVS --exclude '*.o' --exclude '*.swp' --exclude '*.d'=
--exclude '*.a'"
reldir=3D$1
tarfile=3D$2
#echo "make doc && make -C doc/latex pdf"
echo "cp -a $dirlist $reldir"
echo "cp Makefile.release $reldir/Makefile"
echo "tar $excludes -rf $tarfile $reldir/*"
# write over the makefile
echo "cp Makefile.release $reldir/Makefile"
echo "tar -u -f $tarfile $reldir/Makefile"
echo "tar --delete --file=3D$tarfile $reldir/Makefile.release"
# delete the doxygen file
echo "cp Doxyfile $reldir"
echo "tar --delete --file=3D$tarfile $reldir/Doxyfile"
# remove traces of the release file
echo "tar --delete --file=3D$tarfile $reldir/.release"