X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=git-checkout.sh;h=e02d4d87f622bf73ad04c356ff15ac6e0a626aa6;hb=8860fd42fcf5a7853f7d7c2198793183320293ff;hp=8f4356d49a4935ff4a238cad3d0f90760d3e1afd;hpb=c388761c153bc3e874e75f69ff77430164c038c4;p=git.git diff --git a/git-checkout.sh b/git-checkout.sh index 8f4356d49..e02d4d87f 100755 --- a/git-checkout.sh +++ b/git-checkout.sh @@ -3,6 +3,7 @@ USAGE='[-f] [-b ] [-m] [] [...]' SUBDIRECTORY_OK=Sometimes . git-sh-setup +require_work_tree old_name=HEAD old=$(git-rev-parse --verify $old_name 2>/dev/null) @@ -134,11 +135,7 @@ fi # We are switching branches and checking out trees, so # we *NEED* to be at the toplevel. -cdup=$(git-rev-parse --show-cdup) -if test ! -z "$cdup" -then - cd "$cdup" -fi +cd_to_toplevel [ -z "$new" ] && new=$old && new_name="$old_name" @@ -204,8 +201,9 @@ else git diff-files --name-only | git update-index --remove --stdin && work=`git write-tree` && git read-tree --reset -u $new && - git read-tree -m -u --aggressive --exclude-per-directory=.gitignore $old $new $work || - exit + eval GITHEAD_$new=${new_name:-${branch:-$new}} GITHEAD_$work=local && + export GITHEAD_$new GITHEAD_$work && + git merge-recursive $old -- $new $work || exit if result=`git write-tree 2>/dev/null` then