"git checkout": add "-u" flag to update HEAD conditionally
[git.git] / git-checkout-script
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 "$@"))
7
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
25
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"
33