# HG changeset patch # User Chris Cannam # Date 1549536303 0 # Node ID 622ddc1ace506a6b9619ba37196046d0fe6bed6c # Parent 828f0de6b2fb6a99af56692c837dd44c66de582d Add repo revision arg diff -r 828f0de6b2fb -r 622ddc1ace50 SCRIPTS/update.sh --- a/SCRIPTS/update.sh Wed Feb 06 13:50:03 2019 +0000 +++ b/SCRIPTS/update.sh Thu Feb 07 10:45:03 2019 +0000 @@ -2,12 +2,22 @@ # Run this from the top-level vamp-build-and-test directory # Optional argument for the single repo to checkout; default is all of them +# Optional second argument for the revision to checkout; default is tip single="" if [ -n "$1" ]; then single="$1" fi +rev="" +revopt_hg="" +revopt_git="" +if [ -n "$2" ]; then + rev="$2" + revopt_hg="-r$rev" + revopt_git="-b$rev" +fi + set -eu failed=/tmp/failed_$$ @@ -22,18 +32,21 @@ fi fi if [ -d "$name"/.hg ]; then - ( cd $name ; hg pull && hg update ) || echo "$name" >> "$failed" + ( cd $name ; hg pull && hg update $revopt_hg ) || echo "$name" >> "$failed" elif [ -d "$name"/.git ]; then ( cd $name ; git pull ) || echo "$name" >> "$failed" + if [ -n "$rev" ]; then + ( cd $name ; git checkout "$rev" ) || echo "$name" >> "$failed" + fi elif [ -d "$name" ]; then echo "ERROR: Directory \"$name\" exists, but is not a git or hg repo" 1>&2 exit 1 else case "$loc" in */hg/*) - hg clone "$loc" "$name" || echo "$name" >> "$failed";; + hg clone $revopt_hg "$loc" "$name" || echo "$name" >> "$failed";; *//git*) - git clone "$loc" "$name" || echo "$name" >> "$failed";; + git clone $revopt_git "$loc" "$name" || echo "$name" >> "$failed";; *) echo "ERROR: Can't deduce repo type from URL \"$loc\"" 1>&2 exit 1;;