#!/bin/sh : ${GIT_DIR=.git} old=$(git-rev-parse HEAD) new= force= branch= while [ "$#" != "0" ]; do arg="$1" shift case "$arg" in "-f") force=1 ;; *) rev=$(git-rev-parse "$arg") if [ -z "$rev" ]; then echo "unknown flag $arg" exit 1 fi if [ "$new" ]; then echo "Multiple revisions?" exit 1 fi new="$rev" if [ -f "$GIT_DIR/revs/heads/$arg" ]; then branch="$arg" fi ;; esac i=$(($i+1)) done : ${new=$old} if [ "$force" ] then git-read-tree --reset $new && git-checkout-cache -q -f -u -a else git-read-tree -m -u $old $new fi && [ "$branch" ] && ln -sf "refs/heads/$branch" "$GIT_DIR/HEAD"