If someone provides a --prefix that ends with slash, strip the slash.

Prefixes that differ only in the trailing slash should be considered
identical.

Also update the test to check that this works.
This commit is contained in:
Avery Pennarun 2009-10-02 15:22:15 -04:00
parent 39ee6ecf7e
commit 6f2012cdc0
3 changed files with 5 additions and 9 deletions

View File

@ -102,7 +102,7 @@ esac
if [ -z "$prefix" ]; then
die "You must provide the --prefix option."
fi
dir="$prefix"
dir="$(dirname "$prefix/.")"
if [ "$command" != "pull" ]; then
revs=$(git rev-parse $default --revs-only "$@") || exit $?
@ -175,7 +175,7 @@ find_latest_squash()
sq=
main=
sub=
git log --grep="^git-subtree-dir: $dir\$" \
git log --grep="^git-subtree-dir: $dir/*\$" \
--pretty=format:'START %H%n%s%n%n%b%nEND%n' HEAD |
while read a b junk; do
debug "$a $b $junk"
@ -210,7 +210,7 @@ find_existing_splits()
revs="$2"
main=
sub=
git log --grep="^git-subtree-dir: $dir\$" \
git log --grep="^git-subtree-dir: $dir/*\$" \
--pretty=format:'START %H%n%s%n%n%b%nEND%n' $revs |
while read a b junk; do
case "$a" in

View File

@ -82,7 +82,7 @@ git branch subdir
git fetch ../subproj sub1
git branch sub1 FETCH_HEAD
git subtree add --prefix=subdir FETCH_HEAD
git subtree add --prefix=subdir/ FETCH_HEAD
# this shouldn't actually do anything, since FETCH_HEAD is already a parent
git merge -m 'merge -s -ours' -s ours FETCH_HEAD
@ -118,7 +118,7 @@ create sub9
git commit -m 'sub9'
cd ../mainline
split2=$(git subtree split --annotate='*' --prefix subdir --rejoin)
split2=$(git subtree split --annotate='*' --prefix subdir/ --rejoin)
git branch split2 "$split2"
create subdir/main-sub10

4
todo
View File

@ -36,10 +36,6 @@
one of the other git tools that git-subtree calls. Should
detect this situation and print the *real* problem.
In fact, the prefix should *not* end with slash, and we
should detect (and fix) it if it does. Otherwise the
log message looks weird.
"pull --squash" should do fetch-synthesize-merge, but instead just
does "pull" directly, which doesn't work at all.