зеркало из https://github.com/microsoft/git.git
Merge branch 'jc/abbrev-guard'
* jc/abbrev-guard: core.abbrevguard: Ensure short object names stay unique a bit longer
This commit is contained in:
Коммит
63ae595c6d
|
@ -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,
|
||||
|
|
1
cache.h
1
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;
|
||||
|
|
7
config.c
7
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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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++;
|
||||
|
|
Загрузка…
Ссылка в новой задаче