args=($(git-rev-parse --no-revs "$@"))
i=0
-force=0
+force=
+update=
while [ $i -lt ${#args} ]; do
case "${args[$i]}" in
"-f")
force=1;;
+ "-u")
+ update=1;;
"")
;;
*)
i=$(($i+1))
done
-if $force
+if [ "$force" ]
then
git-read-tree --reset $new &&
- git-checkout-cache -q -f -u -a &&
- echo $new > "$GIT_DIR/HEAD"
+ git-checkout-cache -q -f -u -a
else
- git-read-tree -m -u $old $new && echo $new > "$GIT_DIR/HEAD"
-fi
+ git-read-tree -m -u $old $new
+fi && [ "$update" ] && echo $new > "$GIT_DIR/HEAD"
+