From: Junio C Hamano <gitster@pobox.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ingo Molnar <mingo@elte.hu>, "Theodore Ts'o" <tytso@mit.edu>,
linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: -tip: origin tree build failure
Date: Thu, 28 Oct 2010 14:39:13 -0700 [thread overview]
Message-ID: <7veiba9ev2.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <AANLkTin62vAwJxcsrFk6Yn7Q6tzr-D=EmKKwPazuAJ11@mail.gmail.com> (Linus Torvalds's message of "Thu\, 28 Oct 2010 10\:00\:26 -0700")
Linus Torvalds <torvalds@linux-foundation.org> writes:
> Yes. Except for the kernel the default git commit abbreviation is
> borderline too short. Seven hex-chars can easily alias with a few more
> pulls from me: git will not give aliases at the time it gives a
> shorthand, but a month or two later the abbreviated commit may no
> longer be unique.
>
> So I suggest using --abbrev=12 or similar.
Would a new configuration to specify how many more letters to ensure the
uniqueness at the time of generation make sense?
By the way, I noticed that you started sending patches as attachments
lately. What made you change your mind?
Documentation/config.txt | 9 +++++++++
cache.h | 1 +
config.c | 7 +++++++
environment.c | 1 +
sha1_name.c | 4 +++-
5 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 538ebb5..6994338 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -374,6 +374,15 @@ core.warnAmbiguousRefs::
If true, git will warn you if the ref name you passed it is ambiguous
and might match multiple refs in the .git/refs/ tree. True by default.
+core.abbrevguard::
+ Even though git makes sure that it uses enough hexdigits to show
+ an abbreviated object name unambiguously, as more objects are
+ added to the repository over time, a short name that used to be
+ unique will stop being unique. Git uses this many extra hexdigits
+ that are more than necessary to make the object name currently
+ unique, in the hope that its output will stay unique a bit longer.
+ Defaults to 0.
+
core.compression::
An integer -1..9, indicating a default compression level.
-1 is the zlib default. 0 means no compression,
diff --git a/cache.h b/cache.h
index 33decd9..931fb59 100644
--- a/cache.h
+++ b/cache.h
@@ -545,6 +545,7 @@ extern int assume_unchanged;
extern int prefer_symlink_refs;
extern int log_all_ref_updates;
extern int warn_ambiguous_refs;
+extern int unique_abbrev_extra_length;
extern int shared_repository;
extern const char *apply_default_whitespace;
extern const char *apply_default_ignorewhitespace;
diff --git a/config.c b/config.c
index 4b0a820..1aa72c2 100644
--- a/config.c
+++ b/config.c
@@ -489,6 +489,13 @@ static int git_default_core_config(const char *var, const char *value)
return 0;
}
+ if (!strcmp(var, "core.abbrevguard")) {
+ unique_abbrev_extra_length = git_config_int(var, value);
+ if (unique_abbrev_extra_length < 0)
+ unique_abbrev_extra_length = 0;
+ return 0;
+ }
+
if (!strcmp(var, "core.bare")) {
is_bare_repository_cfg = git_config_bool(var, value);
return 0;
diff --git a/environment.c b/environment.c
index de5581f..92e16b1 100644
--- a/environment.c
+++ b/environment.c
@@ -21,6 +21,7 @@ int prefer_symlink_refs;
int is_bare_repository_cfg = -1; /* unspecified */
int log_all_ref_updates = -1; /* unspecified */
int warn_ambiguous_refs = 1;
+int unique_abbrev_extra_length;
int repository_format_version;
const char *git_commit_encoding;
const char *git_log_output_encoding;
diff --git a/sha1_name.c b/sha1_name.c
index 484081d..4a226ad 100644
--- a/sha1_name.c
+++ b/sha1_name.c
@@ -206,7 +206,9 @@ const char *find_unique_abbrev(const unsigned char *sha1, int len)
if (exists
? !status
: status == SHORT_NAME_NOT_FOUND) {
- hex[len] = 0;
+ int cut_at = len + unique_abbrev_extra_length;
+ cut_at = (cut_at < 40) ? cut_at : 40;
+ hex[cut_at] = 0;
return hex;
}
len++;
next prev parent reply other threads:[~2010-10-28 21:39 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-28 4:52 [GIT PULL] ext4 update for 2.6.37 Theodore Ts'o
2010-10-28 7:50 ` Markus Trippelsdorf
2010-10-28 7:56 ` -tip: origin tree build failure (was: [GIT PULL] ext4 update for 2.6.37) Ingo Molnar
2010-10-28 12:12 ` Theodore Tso
2010-10-28 16:30 ` Linus Torvalds
2010-10-28 16:38 ` Ingo Molnar
2010-10-28 16:55 ` Ted Ts'o
2010-10-28 17:00 ` Linus Torvalds
2010-10-28 17:17 ` Ingo Molnar
2010-10-28 17:27 ` Minimum git commit abbrev length (Was Re: -tip: origin tree build failure (was: [GIT PULL] ext4 update) " Ted Ts'o
2010-10-28 18:28 ` Linus Torvalds
2010-10-28 18:54 ` Linus Torvalds
2010-10-28 21:39 ` Junio C Hamano [this message]
2010-10-28 21:50 ` -tip: origin tree build failure Linus Torvalds
-- strict thread matches above, loose matches on Subject: below --
2009-12-17 9:40 Ingo Molnar
2009-12-17 12:23 ` Ingo Molnar
2009-12-17 12:55 ` Andi Kleen
2009-12-18 11:23 ` Ingo Molnar
2009-12-18 11:45 ` Andi Kleen
2009-12-17 7:50 Ingo Molnar
2009-12-17 21:53 ` Myron Stowe
2009-12-26 12:36 ` Geert Uytterhoeven
2009-12-26 19:50 ` Len Brown
2009-12-27 0:24 ` Henrique de Moraes Holschuh
2009-12-28 8:26 ` Ingo Molnar
2009-12-17 6:17 Ingo Molnar
2009-12-17 10:04 ` Henrique de Moraes Holschuh
2009-12-17 12:16 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7veiba9ev2.fsf@alter.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=torvalds@linux-foundation.org \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome