Mercurial > hg-stable
view contrib/builddeb @ 27739:d6d3cf5fda6f
hooks: add HG_NODE_LAST to txnclose and changegroup hook environments
Sometimes a txnclose or changegroup hook wants to iterate through all
the changesets in transaction: in that situation usually the revset
`$HG_NODE:` is used to select the revisions. Unfortunately this revset
sometimes may contain too many changesets because we don't have the
write lock while the hook runs newer changes may be added to
repository in the meantime.
That's why there is a need for extra variable carrying the information about
the last change in the transaction.
author | Mateusz Kwapich <mitrandir@fb.com> |
---|---|
date | Tue, 05 Jan 2016 17:37:59 -0800 |
parents | ef9301ce6046 |
children | 4f1dac94b53f |
line wrap: on
line source
#!/bin/sh -e # # Build a Mercurial debian package from the current repo # # Tested on Jessie (stable as of original script authoring.) . $(dirname $0)/packagelib.sh BUILD=1 CLEANUP=1 DISTID=`(lsb_release -is 2> /dev/null | tr '[:upper:]' '[:lower:]') || echo debian` CODENAME=`lsb_release -cs 2> /dev/null || echo unknown` while [ "$1" ]; do case "$1" in --distid ) shift DISTID="$1" shift ;; --codename ) shift CODENAME="$1" shift ;; --cleanup ) shift BUILD= ;; --build ) shift CLEANUP= ;; * ) echo "Invalid parameter $1!" 1>&2 exit 1 ;; esac done trap "if [ '$CLEANUP' ] ; then rm -r '$PWD/debian' ; fi" EXIT set -u if [ ! -d .hg ]; then echo 'You are not inside a Mercurial repository!' 1>&2 exit 1 fi gethgversion debver="$version" if [ -n "$type" ] ; then debver="$debver~$type" fi if [ -n "$distance" ] ; then debver="$debver+$distance-$node" fi control=debian/control changelog=debian/changelog if [ "$BUILD" ]; then if [ -d debian ] ; then echo "Error! debian control directory already exists!" exit 1 fi cp -r $PWD/contrib/debian debian chmod -R 0755 debian # This looks like sed -i, but sed -i behaves just differently enough # between BSD and GNU sed that I gave up and did the dumb thing. sed "s/__VERSION__/$debver/" < $changelog > $changelog.tmp date=$(date --rfc-2822) sed "s/__DATE__/$date/" < $changelog.tmp > $changelog rm $changelog.tmp debuild -us -uc -b if [ $? != 0 ]; then echo 'debuild failed!' exit 1 fi fi if [ "$CLEANUP" ] ; then echo OUTPUTDIR=${OUTPUTDIR:=packages/$DISTID-$CODENAME} mkdir -p "$OUTPUTDIR" find ../mercurial*.deb ../mercurial_*.build ../mercurial_*.changes \ -type f -newer $control -print0 | \ xargs -Inarf -0 mv narf "$OUTPUTDIR" echo "Built packages for $debver:" find "$OUTPUTDIR" -type f -newer $control -name '*.deb' fi