|
|
|
@ -626,15 +626,16 @@ static void find_abbrev_len_packed(struct min_abbrev_data *mad)
@@ -626,15 +626,16 @@ static void find_abbrev_len_packed(struct min_abbrev_data *mad)
|
|
|
|
|
find_abbrev_len_for_pack(p, mad); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int find_unique_abbrev_r(char *hex, const struct object_id *oid, int len) |
|
|
|
|
int repo_find_unique_abbrev_r(struct repository *r, char *hex, |
|
|
|
|
const struct object_id *oid, int len) |
|
|
|
|
{ |
|
|
|
|
struct disambiguate_state ds; |
|
|
|
|
struct min_abbrev_data mad; |
|
|
|
|
struct object_id oid_ret; |
|
|
|
|
const unsigned hexsz = the_hash_algo->hexsz; |
|
|
|
|
const unsigned hexsz = r->hash_algo->hexsz; |
|
|
|
|
|
|
|
|
|
if (len < 0) { |
|
|
|
|
unsigned long count = approximate_object_count(); |
|
|
|
|
unsigned long count = repo_approximate_object_count(r); |
|
|
|
|
/* |
|
|
|
|
* Add one because the MSB only tells us the highest bit set, |
|
|
|
|
* not including the value of all the _other_ bits (so "15" |
|
|
|
@ -659,7 +660,7 @@ int find_unique_abbrev_r(char *hex, const struct object_id *oid, int len)
@@ -659,7 +660,7 @@ int find_unique_abbrev_r(char *hex, const struct object_id *oid, int len)
|
|
|
|
|
if (len == hexsz || !len) |
|
|
|
|
return hexsz; |
|
|
|
|
|
|
|
|
|
mad.repo = the_repository; |
|
|
|
|
mad.repo = r; |
|
|
|
|
mad.init_len = len; |
|
|
|
|
mad.cur_len = len; |
|
|
|
|
mad.hex = hex; |
|
|
|
@ -681,13 +682,15 @@ int find_unique_abbrev_r(char *hex, const struct object_id *oid, int len)
@@ -681,13 +682,15 @@ int find_unique_abbrev_r(char *hex, const struct object_id *oid, int len)
|
|
|
|
|
return mad.cur_len; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const char *find_unique_abbrev(const struct object_id *oid, int len) |
|
|
|
|
const char *repo_find_unique_abbrev(struct repository *r, |
|
|
|
|
const struct object_id *oid, |
|
|
|
|
int len) |
|
|
|
|
{ |
|
|
|
|
static int bufno; |
|
|
|
|
static char hexbuffer[4][GIT_MAX_HEXSZ + 1]; |
|
|
|
|
char *hex = hexbuffer[bufno]; |
|
|
|
|
bufno = (bufno + 1) % ARRAY_SIZE(hexbuffer); |
|
|
|
|
find_unique_abbrev_r(hex, oid, len); |
|
|
|
|
repo_find_unique_abbrev_r(r, hex, oid, len); |
|
|
|
|
return hex; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|