Re: [PATCH 4/4] core.abbrev: raise the default abbreviation to 12 hexdigits
- From
SZEDER Gábor <szeder@ira.uka.de>
- Date
- Sep 29, 2016, 12:52 UTC
- Message-ID
- <20160929145210.Horde.g9CV6T-OpWCeozsbBpTood-@webmail.informatik.kit.edu>
- In-Reply-To
- <20160929091509.2n4mdrevwxechqol@sigill.intra.peff.net>
Quoting Jeff King <peff@peff.net>:
Show 26 quoted lines
> On Thu, Sep 29, 2016 at 04:44:00AM +0200, SZEDER Gábor wrote: > >> > So 12 seems reasonable, and the only downside for it (or for "13", for >> > that matter) is a few extra bytes. I dunno, maybe people will really >> > hate that, but I have a feeling these are mostly >> cut-and-pasted anyway. >> >> I for one raise my hand in protest... >> >> "few extra bytes" is not the only downside, and it's not at all about >> how many characters are copy-and-pasted. In my opinion it's much more >> important that this change wastes 5 columns worth of valuable screen >> real estate e.g. for 'git blame' or 'git log --oneline' in projects >> that don't need it and certainly won't ever need it. > > True. The core of the issue is that we really only care about this > minimum length when _storing_ an abbreviation, but we don't know when > the user is just looking at it in the moment, and when they are going to > stick it in a commit message, email, or bug tracker. > > In an ideal world, anybody who was about to store it would run "git > describe" or something to come up with some canonical reference format. > And we could just bump the default minimum there. Personally, I almost > exclusively cite commits as the output of: > > git log -1 --pretty='tformat:%h (%s, %ad)' --date=short
Interesting, I have a pretty format alias that looks almost like this, except that I carry a patch locally allowing me to say %as for short date format :)
What I sometimes wished for is a pretty format specifier for 'git describe --contains', which would make it convenient to cite commits like this: v0.99~954 (Initial revision of "git", the information manager from hell, 2005-04-07). It's better than the abbreviated object name, because it will stay unique, assuming that the chosen tag is never deleted, and it carries extra information for humans (the first release containing the referenced commit), while the abbreviated object name is completely meaningless.
The obvious drawback that makes it a non-solution for the problem at hand is that this format can only refer to commits that are reachable from a tag and can't be used for commits that are descendants of the most recent tag, e.g. when fixing a bug introduced after the last release. Oh, and the user has to fetch the tag first to be able to make sense of such a reference.
Show 13 quoted lines
> and I'd be fine to stick "--abbrev=12" in there for future-proofing. But > I don't know what the kernel or other projects do. > > I'd also be curious to know if the patch I sent in [1] to more > aggressively prefer commits would make this less of an issue, and people > wouldn't care as much about using longer hashes in the first place. So > one option is to merge that (and possibly even make it the default) and > see if people still care in 6 months. > > -Peff > > [1] > http://public-inbox.org/git/20160927123801.3bpdg3hap3kzzfmv@sigill.intra.peff.net/