X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=git-checkout.sh;h=c3825904b60d36edca96506d7f451cf0349b262d;hb=79a9d8ea0d88a3667ad19be8e705405ab5d896f1;hp=4e7c57a5f39894c85a6b1f8f2e1eee444808c57f;hpb=215a7ad1ef790467a4cd3f0dcffbd6e5f04c38f7;p=git.git diff --git a/git-checkout.sh b/git-checkout.sh index 4e7c57a5..c3825904 100755 --- a/git-checkout.sh +++ b/git-checkout.sh @@ -22,7 +22,8 @@ while [ "$#" != "0" ]; do force=1 ;; *) - rev=$(git-rev-parse --verify "$arg^0") || exit + rev=$(git-rev-parse --verify "$arg^0" 2>/dev/null) || + die "I don't know any '$arg'." if [ -z "$rev" ]; then echo "unknown flag $arg" exit 1 @@ -55,6 +56,7 @@ then git-read-tree --reset $new && git-checkout-index -q -f -u -a else + git-update-index --refresh >/dev/null git-read-tree -m -u $old $new fi @@ -69,7 +71,8 @@ if [ "$?" -eq 0 ]; then echo $new > "$GIT_DIR/refs/heads/$newbranch" branch="$newbranch" fi - [ "$branch" ] && ln -sf "refs/heads/$branch" "$GIT_DIR/HEAD" + [ "$branch" ] && + GIT_DIR="$GIT_DIR" git-symbolic-ref HEAD "refs/heads/$branch" rm -f "$GIT_DIR/MERGE_HEAD" else exit 1