Re: [PATCH] t1410: fix breakage on case-insensitive filesystems
- From
Michael Blume <blume.mike@gmail.com>
- Date
- Nov 9, 2014, 17:34 UTC
- Message-ID
- <CAO2U3QiNYCWF_otPnR43gHNA22otR62aC2g8b0CnxVz3rjp7kQ@mail.gmail.com>
- In-Reply-To
- <20141109015918.GA24736@peff.net>
Works for me, thanks =)
I'm curious now, is there an automated build of git running on a mac anywhere? There's a mac mini running jenkins in my office and it's possible I could convince someone to let me set up a git build that'll e-mail me if there's a test failure.
On Sat, Nov 8, 2014 at 5:59 PM, Jeff King <peff@peff.net> wrote:
Show 92 quoted lines
> On Sat, Nov 08, 2014 at 08:43:54PM -0500, Jeff King wrote:
>
>> Unfortunately I don't have an OS X install handy to test on.
>
> I lied; it turns out I still had access to an old VM. The problem did
> turn out to be rather silly. Here's a patch.
>
> -- >8 --
> Two tests recently added to t1410 create branches "a" and
> "a/b" to test d/f conflicts on reflogs. Earlier, unrelated
> tests in that script create the path "A/B" in the working
> tree. There's no conflict on a case-sensitive filesystem,
> but on a case-insensitive one, "git log" will complain that
> "a/b" is both a revision and a working tree path.
>
> We could fix this by using a "--" to disambiguate, but we
> are probably better off using names that are less confusing
> to make it more clear that they are unrelated to the working
> tree files. This patch turns "a/b" into "one/two".
>
> Reported-by: Michael Blume <blume.mike@gmail.com>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> The line-diff is hard to read, but if anyone was looking for a chance to
> test-drive contrib/diff-highlight, it does a good job of making the
> change easy to see.
>
> t/t1410-reflog.sh | 36 ++++++++++++++++++------------------
> 1 file changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/t/t1410-reflog.sh b/t/t1410-reflog.sh
> index 976c1d4..8cf4461 100755
> --- a/t/t1410-reflog.sh
> +++ b/t/t1410-reflog.sh
> @@ -254,36 +254,36 @@ test_expect_success 'checkout should not delete log for packed ref' '
> '
>
> test_expect_success 'stale dirs do not cause d/f conflicts (reflogs on)' '
> - test_when_finished "git branch -d a || git branch -d a/b" &&
> + test_when_finished "git branch -d one || git branch -d one/two" &&
>
> - git branch a/b master &&
> - echo "a/b@{0} branch: Created from master" >expect &&
> - git log -g --format="%gd %gs" a/b >actual &&
> + git branch one/two master &&
> + echo "one/two@{0} branch: Created from master" >expect &&
> + git log -g --format="%gd %gs" one/two >actual &&
> test_cmp expect actual &&
> - git branch -d a/b &&
> + git branch -d one/two &&
>
> - # now logs/refs/heads/a is a stale directory, but
> - # we should move it out of the way to create "a" reflog
> - git branch a master &&
> - echo "a@{0} branch: Created from master" >expect &&
> - git log -g --format="%gd %gs" a >actual &&
> + # now logs/refs/heads/one is a stale directory, but
> + # we should move it out of the way to create "one" reflog
> + git branch one master &&
> + echo "one@{0} branch: Created from master" >expect &&
> + git log -g --format="%gd %gs" one >actual &&
> test_cmp expect actual
> '
>
> test_expect_success 'stale dirs do not cause d/f conflicts (reflogs off)' '
> - test_when_finished "git branch -d a || git branch -d a/b" &&
> + test_when_finished "git branch -d one || git branch -d one/two" &&
>
> - git branch a/b master &&
> - echo "a/b@{0} branch: Created from master" >expect &&
> - git log -g --format="%gd %gs" a/b >actual &&
> + git branch one/two master &&
> + echo "one/two@{0} branch: Created from master" >expect &&
> + git log -g --format="%gd %gs" one/two >actual &&
> test_cmp expect actual &&
> - git branch -d a/b &&
> + git branch -d one/two &&
>
> - # same as before, but we only create a reflog for "a" if
> + # same as before, but we only create a reflog for "one" if
> # it already exists, which it does not
> - git -c core.logallrefupdates=false branch a master &&
> + git -c core.logallrefupdates=false branch one master &&
> : >expect &&
> - git log -g --format="%gd %gs" a >actual &&
> + git log -g --format="%gd %gs" one >actual &&
> test_cmp expect actual
> '
>
> --
> 2.1.2.596.g7379948
>