Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
sha1_name: convert struct disambiguate_state to object_id
author
brian m. carlson
<sandals@crustytoothpaste.net>
Sun, 26 Mar 2017 16:01:33 +0000
(16:01 +0000)
committer
Junio C Hamano
<gitster@pobox.com>
Tue, 28 Mar 2017 16:59:33 +0000
(09:59 -0700)
Convert struct disambiguate_state to use struct object_id by changing
the structure definition and applying the following semantic patch:
@@
struct disambiguate_state E1;
@@
- E1.bin_pfx
+ E1.bin_pfx.hash
@@
struct disambiguate_state *E1;
@@
- E1->bin_pfx
+ E1->bin_pfx.hash
@@
struct disambiguate_state E1;
@@
- E1.candidate
+ E1.candidate.hash
@@
struct disambiguate_state *E1;
@@
- E1->candidate
+ E1->candidate.hash
This conversion is needed so we can convert disambiguate_hint_fn later.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sha1_name.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
57836f1
)
diff --git
a/sha1_name.c
b/sha1_name.c
index 3db166b40b768910fb62c788bff7921672a3cf16..cf6f4be0c6539021974cc679fbed8d176d5e8320 100644
(file)
--- a/
sha1_name.c
+++ b/
sha1_name.c
@@
-16,11
+16,11
@@
typedef int (*disambiguate_hint_fn)(const unsigned char *, void *);
struct disambiguate_state {
int len; /* length of prefix in hex chars */
char hex_pfx[GIT_MAX_HEXSZ + 1];
struct disambiguate_state {
int len; /* length of prefix in hex chars */
char hex_pfx[GIT_MAX_HEXSZ + 1];
-
unsigned char bin_pfx[GIT_MAX_RAWSZ]
;
+
struct object_id bin_pfx
;
disambiguate_hint_fn fn;
void *cb_data;
disambiguate_hint_fn fn;
void *cb_data;
-
unsigned char candidate[GIT_MAX_RAWSZ]
;
+
struct object_id candidate
;
unsigned candidate_exists:1;
unsigned candidate_checked:1;
unsigned candidate_ok:1;
unsigned candidate_exists:1;
unsigned candidate_checked:1;
unsigned candidate_ok:1;
@@
-37,10
+37,10
@@
static void update_candidates(struct disambiguate_state *ds, const unsigned char
}
if (!ds->candidate_exists) {
/* this is the first candidate */
}
if (!ds->candidate_exists) {
/* this is the first candidate */
- hashcpy(ds->candidate, current);
+ hashcpy(ds->candidate
.hash
, current);
ds->candidate_exists = 1;
return;
ds->candidate_exists = 1;
return;
- } else if (!hashcmp(ds->candidate, current)) {
+ } else if (!hashcmp(ds->candidate
.hash
, current)) {
/* the same as what we already have seen */
return;
}
/* the same as what we already have seen */
return;
}
@@
-52,14
+52,14
@@
static void update_candidates(struct disambiguate_state *ds, const unsigned char
}
if (!ds->candidate_checked) {
}
if (!ds->candidate_checked) {
- ds->candidate_ok = ds->fn(ds->candidate, ds->cb_data);
+ ds->candidate_ok = ds->fn(ds->candidate
.hash
, ds->cb_data);
ds->disambiguate_fn_used = 1;
ds->candidate_checked = 1;
}
if (!ds->candidate_ok) {
/* discard the candidate; we know it does not satisfy fn */
ds->disambiguate_fn_used = 1;
ds->candidate_checked = 1;
}
if (!ds->candidate_ok) {
/* discard the candidate; we know it does not satisfy fn */
- hashcpy(ds->candidate, current);
+ hashcpy(ds->candidate
.hash
, current);
ds->candidate_checked = 0;
return;
}
ds->candidate_checked = 0;
return;
}
@@
-151,7
+151,7
@@
static void unique_in_pack(struct packed_git *p,
int cmp;
current = nth_packed_object_sha1(p, mid);
int cmp;
current = nth_packed_object_sha1(p, mid);
- cmp = hashcmp(ds->bin_pfx, current);
+ cmp = hashcmp(ds->bin_pfx
.hash
, current);
if (!cmp) {
first = mid;
break;
if (!cmp) {
first = mid;
break;
@@
-170,7
+170,7
@@
static void unique_in_pack(struct packed_git *p,
*/
for (i = first; i < num && !ds->ambiguous; i++) {
current = nth_packed_object_sha1(p, i);
*/
for (i = first; i < num && !ds->ambiguous; i++) {
current = nth_packed_object_sha1(p, i);
- if (!match_sha(ds->len, ds->bin_pfx, current))
+ if (!match_sha(ds->len, ds->bin_pfx
.hash
, current))
break;
update_candidates(ds, current);
}
break;
update_candidates(ds, current);
}
@@
-213,12
+213,12
@@
static int finish_object_disambiguation(struct disambiguate_state *ds,
* same repository!
*/
ds->candidate_ok = (!ds->disambiguate_fn_used ||
* same repository!
*/
ds->candidate_ok = (!ds->disambiguate_fn_used ||
- ds->fn(ds->candidate, ds->cb_data));
+ ds->fn(ds->candidate
.hash
, ds->cb_data));
if (!ds->candidate_ok)
return SHORT_NAME_AMBIGUOUS;
if (!ds->candidate_ok)
return SHORT_NAME_AMBIGUOUS;
- hashcpy(sha1, ds->candidate);
+ hashcpy(sha1, ds->candidate
.hash
);
return 0;
}
return 0;
}
@@
-332,7
+332,7
@@
static int init_object_disambiguation(const char *name, int len,
ds->hex_pfx[i] = c;
if (!(i & 1))
val <<= 4;
ds->hex_pfx[i] = c;
if (!(i & 1))
val <<= 4;
- ds->bin_pfx[i >> 1] |= val;
+ ds->bin_pfx
.hash
[i >> 1] |= val;
}
ds->len = len;
}
ds->len = len;