Fix behaviour if you have a branch named the same as your --prefix

We were trying to 'git checkout $prefix', which is ambiguous if $prefix
names a directory *and* a branch.  Do 'git checkout -- $prefix' instead.

The main place this appeared was in 'git subtree add'.

Reported by several people.
This commit is contained in:
Avery Pennarun 2009-08-26 10:43:43 -04:00
parent 33aaa697a2
commit 227f781147
3 changed files with 2 additions and 7 deletions

View File

@ -426,7 +426,7 @@ cmd_add()
debug "Adding $dir as '$rev'..."
git read-tree --prefix="$dir" $rev || exit $?
git checkout "$dir" || exit $?
git checkout -- "$dir" || exit $?
tree=$(git write-tree) || exit $?
headrev=$(git rev-parse HEAD) || exit $?

View File

@ -78,6 +78,7 @@ git init
create main4
git commit -m 'main4'
git branch -m master mainline
git branch subdir
git fetch ../subproj sub1
git branch sub1 FETCH_HEAD

6
todo
View File

@ -20,9 +20,6 @@
automated tests for --squash stuff
test.sh fails in msysgit?
sort error - see Thell's email
"add" command non-obviously requires a commitid; would be easier if
it had a "pull" sort of mode instead
@ -43,9 +40,6 @@
should detect (and fix) it if it does. Otherwise the
log message looks weird.
totally weird behavior in 'git subtree add' if --prefix matches
a branch name
"pull --squash" should do fetch-synthesize-merge, but instead just
does "pull" directly, which doesn't work at all.