dc1cffde0bd214b90f0c0b754f0e5f33bd3023b2
1 #!/bin/sh
2 : ${GIT_DIR=.git}
3 old=$(git-rev-parse HEAD)
4 new=$(git-rev-parse --revs-only "$@")
5 new=${new:-$old}
6 args=($(git-rev-parse --no-revs "$@"))
8 i=0
9 force=
10 update=
11 while [ $i -lt ${#args} ]; do
12 case "${args[$i]}" in
13 "-f")
14 force=1;;
15 "-u")
16 update=1;;
17 "")
18 ;;
19 *)
20 echo "unknown flag ${args[$i]}"
21 exit 1;;
22 esac
23 i=$(($i+1))
24 done
26 if [ "$force" ]
27 then
28 git-read-tree --reset $new &&
29 git-checkout-cache -q -f -u -a
30 else
31 git-read-tree -m -u $old $new
32 fi && [ "$update" ] && echo $new > "$GIT_DIR/HEAD"