git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 9/9] core.abbrev: raise the default abbreviation to 12 hexdigits

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 29, 2016, 21:00 UTC
Message-ID
<20160929210014.3874-10-gitster@pobox.com>
In-Reply-To
<20160929210014.3874-1-gitster@pobox.com>

As Peff said, responding in a thread started by Linus's suggestion to raise the default abbreviation to 12 hexdigits:

    I actually think "12" might be sane for a long time. That's 48
    bits of sha1, so we'd expect a 50% chance of a single collision
    at 2^24, or 16 million.  The biggest repository I know about (in
    number of objects) is the one holding all of the objects for all
    of the forks of torvalds/linux on GitHub. It's at about 15
    million objects.
    Which seems close, but remember that's the size where we expect
    to see a single collision. They don't become common until much
    later (I didn't compute an exact number, but Linus's 16x sounds
    about right). I know that the growth of the kernel isn't really
    linear, but I think the need to bump to "13" might not just be
    decades, but possibly a century or more.
    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.
And this does exactly that.

Keep the tests working by explicitly asking for the old 7 hexdigits setting in the fake system-wide configuration file used for tests.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 environment.c        | 2 +-
 t/gitconfig-for-test | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/environment.c b/environment.c
index ca72464a9850..25daddbc13d6 100644
--- a/environment.c
+++ b/environment.c
@@ -16,7 +16,7 @@ int trust_executable_bit = 1;
 int trust_ctime = 1;
 int check_stat = 1;
 int has_symlinks = 1;
-int minimum_abbrev = 4, default_abbrev = 7;
+int minimum_abbrev = 4, default_abbrev = 12;
 int ignore_case;
 int assume_unchanged;
 int prefer_symlink_refs;
diff --git a/t/gitconfig-for-test b/t/gitconfig-for-test
index 4598885ed5c3..8c284425d725 100644
--- a/t/gitconfig-for-test
+++ b/t/gitconfig-for-test
@@ -4,3 +4,6 @@
 ;; [user]
 ;;	name = A U Thor
 ;;	email = author@example.com
+
+[core]
+	abbrev = 7
-- 
2.10.0-589-g5adf4e1
Previous: Junio C Hamano
Message 10 of 10 in “allow customizing /etc/gitconfig location with an environment”
  1. 0/9 allow customizing /etc/gitconfig location with an environmentJunio C Hamano, Sep 29, 2016
  2. 1/9 config: allow customizing /etc/gitconfig location with an environmentJunio C Hamano, Sep 29, 2016
  3. 2/9 t1300: always compare expect to actualJunio C Hamano, Sep 29, 2016
  4. 3/9 t1308: ignore system-wide config in the iteration testJunio C Hamano, Sep 29, 2016
  5. 4/9 t1300: check also system-wide configuration file in --show-origin testsJunio C Hamano, Sep 29, 2016
  6. 5/9 t1300: disable system-wide config for tests that wants to read from -cJunio C Hamano, Sep 29, 2016
  7. 6/9 t1300: take contents of system-wide configuration into account in "--list" testJunio C Hamano, Sep 29, 2016
  8. 7/9 t1300: be explicit in local configuration testsJunio C Hamano, Sep 29, 2016
  9. 8/9 worktree: honor configuration variablesJunio C Hamano, Sep 29, 2016
  10. 9/9 core.abbrev: raise the default abbreviation to 12 hexdigitsJunio C Hamano, Sep 29, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.