On Tuesday 09 March 2010 02:28:30 Alexander Gladysh wrote: > Hi, list! > > OS X 10.6.2 > Git 1.7.0.2 > > I'm complaining about Git symlink handling again. This time it is > cherry-pick. > > In my repo I have a symlink pointing to a directory. > > I swap symlink with the directory in a single commit. > > Now, if I try to cherry-pick any later commit from the branch that has > that swap commit to a branch that have not, cherry-pick fails > horribly. > > See script to reproduce the bug below (run it in a clean directory). > > Output example: > > $ git cherry-pick <SHA> > > Automatic cherry-pick failed. After resolving the conflicts, > mark the corrected paths with 'git add <paths>' or 'git rm <paths>' > and commit the result with: > > git commit -c 6a398597ce7a00fe05f43ff88808303eb151dfb5 > > $ git status # Note the "Untracked files" section > > # On branch master > # Changes to be committed: > # (use "git reset HEAD <file>..." to unstage) > # > # renamed: a/f -> f1 > # > # Unmerged paths: > # (use "git reset HEAD <file>..." to unstage) > # (use "git add/rm <file>..." as appropriate to mark resolution) > # > # added by us: b/a > # > # Untracked files: > # (use "git add <file>..." to include in what will be committed) > # > # b/a~HEAD > > (Also I've seen git reset --hard to fail afterwards, complaining it > can't delete a directory, but I can't reproduce it now.) > > I see a similar behaviour if I try to do interactive rebase accross > symlink swap commit. > > Alexander. > > #! /bin/bash > > git init > > mkdir a > touch a/f > git add a > git commit -m "a" > > mkdir b > ln -s ../a b/a > git add b > git commit -m "b" > > git checkout -b branch > rm b/a > mv a b/ > ln -s b/a a > git add . > git commit -m "swap" > > touch f1 > git add f1 > git commit -m "f1" > > git checkout master > > git cherry-pick `git rev-parse branch` # This one breaks horribly I can reproduce the bug here on Linux. And Git v1.6.0 has the same bug. So I suspect an old bug in unpack_trees.c. I will try to have another look at it this evening, but I am not familiar with that code. Thanks for the report, Christian. -- 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