Re: [PATCH 1/2] Demonstrate bugs when a directory is replaced with a symlink.
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jul 29, 2009, 08:33 UTC
- Message-ID
- <7v4osvyjl2.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <4A70062A.4040008@drmicha.warpmail.net>
Michael J Gruber <git@drmicha.warpmail.net> writes:
Show 18 quoted lines
>> +test_expect_failure 'checkout should not delete a/b-2/c/d' ' >> + git checkout -b temp HEAD^ && >> + test -f a/b-2/c/d >> +' >> + >> +test_expect_failure 'merge should not delete a/b-2/c/d' ' >> + echo x > a/x && >> + git add a/x && >> + git commit -m x && >> + git merge master && >> + test -f a/b-2/c/d >> +' >> + >> +test_done > > Isn't the failure of the second test caused by that of the first one? > a/b-2/c/d is gone from the worktree, and master does not touch it, so > the merge leaves the worktree version (non-existent) as is.
To avoid that impression the second test should probably have been written to start from a clean slate, using "reset --hard" or something.
Kjetil's patch actually fixes the first one, but the second one will still show breakage.
I wonder if the breakage is in recursive merge or in the generic read-tree three-way merge code. I highly suspect that using "git merge -s resolve" would make the test pass. Historically recursive merge is known to be careless in many corner cases.