Make the default abbrev length configurable
The default of 7 comes from fairly early in git development, when seven hex digits was a lot (it covers about 250+ million hash values). Back then I thought that 65k revisions was a lot (it was what we were about to hit in BK), and each revision tends to be about 5-10 new objects or so, so a million objects was a big number. These days, the kernel isn't even the largest git project, and even the kernel has about 220k revisions (_much_ bigger than the BK tree ever was) and we are approaching two million objects. At that point, seven hex digits is still unique for a lot of them, but when we're talking about just two orders of magnitude difference between number of objects and the hash size, there _will_ be collisions in truncated hash values. It's no longer even close to unrealistic - it happens all the time. We should both increase the default abbrev that was unrealistically small, _and_ add a way for people to set their own default per-project in the git config file. This is the first step to first make it configurable; the default of 7 is not raised yet. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
7ed863a85a
commit
dce9648916
8
config.c
8
config.c
@ -531,6 +531,14 @@ static int git_default_core_config(const char *var, const char *value)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp(var, "core.abbrevlength")) {
|
||||
int abbrev = git_config_int(var, value);
|
||||
if (abbrev < minimum_abbrev || abbrev > 40)
|
||||
return -1;
|
||||
default_abbrev = abbrev;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp(var, "core.loosecompression")) {
|
||||
int level = git_config_int(var, value);
|
||||
if (level == -1)
|
||||
|
Reference in New Issue
Block a user