Re: Super long branch names corrupt `.git/config`

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 04, 2012 at 01:15:25PM -0400, Ben Olive wrote:

> 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:
> 
> 
>     $ cd /tmp
>     $ mkdir buggyrepo otherrepo
>     $ cd buggyrepo/ && git init && cd -
>     $ cd otherrepo/ && git init && cd -
>     $ cd buggyrepo/
>     $ echo foo > MYFILE
>     $ git add MYFILE && git commit -m "Initial"
>     $ git remote add otherrepo ../otherrepo/
>     $ git checkout -b `ruby -e "puts 'a'*200"`
>     $ git push -u otherrepo `ruby -e "puts 'a'*200"`
>     fatal: bad config file line 11 in .git/config
>     $ git status
>     fatal: bad config file line 11 in .git/config
> 
> Workaround available: Just delete the offending entry.
> 
> I tested this with 1.7.12.2

This is fixed by Ben Walton's 0971e99 (Remove the hard coded length
limit on variable names in config files, 2012-09-30). Not sure yet
whether it will make it into v1.8.0 or not.

However, note that the tracking config is only one limit to branch name
length. On many filesystems, you are limited to 256 bytes (or some other
number) per path component, and writing to "refs/heads/aaa{256}.lock"
will fail.

-Peff
--
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


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]