On Tue, May 01, 2018 at 06:40:15PM +0000, Ævar Arnfjörð Bjarmason wrote: > The core.disambiguate variable was added in > 5b33cb1fd7 ("get_short_sha1: make default disambiguation > configurable", 2016-09-27) but never documented. Thanks, this seems reasonable. It was originally added as a tool to let people experiment with different defaults, and I never really expected it to be something normal people would set. But I'm not sure if anybody really did much experimentation (I still suspect that setting it to "commit" or "committish" would make most people happy). > diff --git a/Documentation/config.txt b/Documentation/config.txt > index 2659153cb3..14a3d57e77 100644 > --- a/Documentation/config.txt > +++ b/Documentation/config.txt > @@ -910,6 +910,19 @@ core.abbrev:: > abbreviated object names to stay unique for some time. > The minimum length is 4. > > +core.disambiguate:: > + If Git is given a SHA-1 that's ambigous it'll suggest what > + objects you might mean. By default it'll print out all > + potential objects with that prefix regardless of their > + type. This setting, along with the `^{<type>}` peel syntax > + (see linkgit:gitrevisions[7]), allows for narrowing that down. This isn't just about what we print, but also about excluding objects from consideration that don't match. > +Is set to `none` by default to show all object types. Can also be > +`commit` (peel syntax: `$sha1^{commit}`), `committish` (commits and > +tags), `tree` (peel: `$sha1^{tree}`), `treeish` (everything except > +blobs, peel syntax: `$sha1:`), `blob` (peel: `$sha1^{blob}`) or `tag` > +(peel: `$sha1^{tag}`). The peel syntax will override any config value. These peel references would need updating pending the discussion over the earlier patches. I suspect there are other things besides peel syntax which may override this. It's really just the fallback when the caller does not give the lookup machinery any other context. Certainly the peel specifiers are one way to get syntax, but I think there are others. Grepping for GET_OID_, I see that the revision dot syntax infers committish context, as does anything that passes REVARG_COMMITTISH (so git-log, for example). -Peff