From: Jeff King Date: Fri, 05 Oct 2012 00:29:42 GMT Subject: Re: Super long branch names corrupt `.git/config` Message-ID: <20121005002942.GB17586@sigill.intra.peff.net> In-Reply-To: <7v391uyr2w.fsf@alter.siamese.dyndns.org> On Thu, Oct 04, 2012 at 12:28:39PM -0700, Junio C Hamano wrote: > Ben Olive writes: > > > My `.git/config` can be corrupted if I try to get a local branch with > > an extremely long name to track a remote branch. > > > > Here is a (contrived) example to reproduce the issue: > > Don't do that, then ;-) > > I think we have a change that is already cooking. > > Ben (Walton), want to add a test for your 0971e99 (Remove the hard > coded length limit on variable names in config files, 2012-09-30) > before it hits 'next', perhaps? I came up with this test earlier today when responding in this thread: diff --git a/t/t7201-co.sh b/t/t7201-co.sh index be9672e..a32ecd9 100755 --- a/t/t7201-co.sh +++ b/t/t7201-co.sh @@ -454,6 +454,11 @@ test_expect_success \ 'checkout with --track, but without -b, fails with too short tracked name' ' test_must_fail git checkout --track renamer' +test_expect_success 'checkout tracking with long branch name' ' + z200=$_z40$_z40$_z40$_z40$_z40 + git checkout --track -b foo-$z200 +' + setup_conflicting_index () { rm -f .git/index && O=$(echo original | git hash-object -w --stdin) && but it feels a little fake. Why 200? Because that will test the config limit, but will not overflow the NAME_MAX limit (at least not on Linux! No clue on other platforms) when we try to create refs/heads/foo-$z200. So while this is a nice concrete user-visible impact of Ben's patch, I think it is a little flaky to be testing. We should probably have a straight config test in t1303, though. -Peff