Ivan Oleynikov <io@xxxxxxxxxxxxxxx> writes: > Cc: git@xxxxxxxxxxxxxxx, dvh@xxxxxxxxxxxxxxx, apenwarr@xxxxxxxxx I think Avery no longer actively works on this script; Dave Greene has been helping it move forward by reviewing, so let's ask him to lend his eyes. > This commit removes false positive assertion fails of `git subtree split` when > the --prefix argument is not in a particular form produced by `git ls-tree`. > > For example, typical usage of the command could be: > > git subtree split -b split --prefix=some/relative/path > > But > > git subtree split -b split --prefix=./some/relative/path > > Would fail with multiple assertion errors. This commit makes the latter command > work without errors. > > Signed-off-by: Ivan Oleynikov <io@xxxxxxxxxxxxxxx> > --- > > Notes: > The bug fixed by this commit can be reproduced like this: > > $ git init > Initialized empty Git repository in /tmp/test/.git/ > $ mkdir a b > $ touch a/file b/file > $ git add a > $ git commit -m a > [master (root-commit) b42584a] a > 1 file changed, 0 insertions($), 0 deletions(-) > create mode 100644 a/file > $ git add b > $ git commit -m b > [master 5114301] b > 1 file changed, 0 insertions($), 0 deletions(-) > create mode 100644 b/file > $ git subtree split -b split_a --prefix=a > Created branch 'split_a' > e9f5d81efacb33ab6cf67fe9ff376b33a483a92f > $ git subtree split -b split_b --prefix=./b > assertion failed: [ b = ./b ] > No new revisions were found > > When the commit is applied `git subtree split` works as expected: > > $ git init > Initialized empty Git repository in /tmp/test/.git/ > $ mkdir a b > $ touch a/file b/file > $ git add a > $ git commit -m a > [master (root-commit) bc80f36] a > 1 file changed, 0 insertions($), 0 deletions(-) > create mode 100644 a/file > $ git add b > $ git commit -m b > [master e59c446] b > 1 file changed, 0 insertions($), 0 deletions(-) > create mode 100644 b/file > $ git subtree split -b split_a --prefix=a > Created branch 'split_a' > d542e9cd2de5956dd7ca77b169dba1c8418fa03a > $ git subtree split -b split_b --prefix=./b > Created branch 'split_b' > 3ae7854c0c395413c807b2bc4e75b651adc63f8c > > contrib/subtree/git-subtree.sh | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh > index b567eae..d9351b9 100755 > --- a/contrib/subtree/git-subtree.sh > +++ b/contrib/subtree/git-subtree.sh > @@ -411,7 +411,7 @@ subtree_for_commit() > dir="$2" > git ls-tree "$commit" -- "$dir" | > while read mode type tree name; do > - assert [ "$name" = "$dir" ] > + assert [ "$(readlink -f $name)" = "$(readlink -f $dir)" ] > assert [ "$type" = "tree" -o "$type" = "commit" ] > [ "$type" = "commit" ] && continue # ignore submodules > echo $tree > -- > 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html