Convert struct ref to use object_id.

Use struct object_id in three fields in struct ref and convert all the
necessary places that use it.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Jeff King <peff@peff.net>
This commit is contained in:
brian m. carlson 2015-11-10 02:22:20 +00:00 committed by Jeff King
parent b419aa25d5
commit f4e54d02b8
18 changed files with 151 additions and 151 deletions

View File

@ -559,7 +559,7 @@ static void write_remote_refs(const struct ref *local_refs)
for (r = local_refs; r; r = r->next) { for (r = local_refs; r; r = r->next) {
if (!r->peer_ref) if (!r->peer_ref)
continue; continue;
if (ref_transaction_create(t, r->peer_ref->name, r->old_sha1, if (ref_transaction_create(t, r->peer_ref->name, r->old_oid.hash,
0, NULL, &err)) 0, NULL, &err))
die("%s", err.buf); die("%s", err.buf);
} }
@ -579,9 +579,9 @@ static void write_followtags(const struct ref *refs, const char *msg)
continue; continue;
if (ends_with(ref->name, "^{}")) if (ends_with(ref->name, "^{}"))
continue; continue;
if (!has_sha1_file(ref->old_sha1)) if (!has_object_file(&ref->old_oid))
continue; continue;
update_ref(msg, ref->name, ref->old_sha1, update_ref(msg, ref->name, ref->old_oid.hash,
NULL, 0, UPDATE_REFS_DIE_ON_ERR); NULL, 0, UPDATE_REFS_DIE_ON_ERR);
} }
} }
@ -601,7 +601,7 @@ static int iterate_ref_map(void *cb_data, unsigned char sha1[20])
if (!ref) if (!ref)
return -1; return -1;
hashcpy(sha1, ref->old_sha1); hashcpy(sha1, ref->old_oid.hash);
*rm = ref->next; *rm = ref->next;
return 0; return 0;
} }
@ -650,12 +650,12 @@ static void update_head(const struct ref *our, const struct ref *remote,
/* Local default branch link */ /* Local default branch link */
create_symref("HEAD", our->name, NULL); create_symref("HEAD", our->name, NULL);
if (!option_bare) { if (!option_bare) {
update_ref(msg, "HEAD", our->old_sha1, NULL, 0, update_ref(msg, "HEAD", our->old_oid.hash, NULL, 0,
UPDATE_REFS_DIE_ON_ERR); UPDATE_REFS_DIE_ON_ERR);
install_branch_config(0, head, option_origin, our->name); install_branch_config(0, head, option_origin, our->name);
} }
} else if (our) { } else if (our) {
struct commit *c = lookup_commit_reference(our->old_sha1); struct commit *c = lookup_commit_reference(our->old_oid.hash);
/* --branch specifies a non-branch (i.e. tags), detach HEAD */ /* --branch specifies a non-branch (i.e. tags), detach HEAD */
update_ref(msg, "HEAD", c->object.sha1, update_ref(msg, "HEAD", c->object.sha1,
NULL, REF_NODEREF, UPDATE_REFS_DIE_ON_ERR); NULL, REF_NODEREF, UPDATE_REFS_DIE_ON_ERR);
@ -665,7 +665,7 @@ static void update_head(const struct ref *our, const struct ref *remote,
* HEAD points to a branch but we don't know which one. * HEAD points to a branch but we don't know which one.
* Detach HEAD in all these cases. * Detach HEAD in all these cases.
*/ */
update_ref(msg, "HEAD", remote->old_sha1, update_ref(msg, "HEAD", remote->old_oid.hash,
NULL, REF_NODEREF, UPDATE_REFS_DIE_ON_ERR); NULL, REF_NODEREF, UPDATE_REFS_DIE_ON_ERR);
} }
} }
@ -1016,7 +1016,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
* remote HEAD check. * remote HEAD check.
*/ */
for (ref = refs; ref; ref = ref->next) for (ref = refs; ref; ref = ref->next)
if (is_null_sha1(ref->old_sha1)) { if (is_null_oid(&ref->old_oid)) {
complete_refs_before_fetch = 0; complete_refs_before_fetch = 0;
break; break;
} }

View File

@ -17,7 +17,7 @@ static void add_sought_entry_mem(struct ref ***sought, int *nr, int *alloc,
unsigned char sha1[20]; unsigned char sha1[20];
if (namelen > 41 && name[40] == ' ' && !get_sha1_hex(name, sha1)) { if (namelen > 41 && name[40] == ' ' && !get_sha1_hex(name, sha1)) {
hashcpy(ref->old_sha1, sha1); hashcpy(ref->old_oid.hash, sha1);
name += 41; name += 41;
namelen -= 41; namelen -= 41;
} }
@ -210,7 +210,7 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix)
while (ref) { while (ref) {
printf("%s %s\n", printf("%s %s\n",
sha1_to_hex(ref->old_sha1), ref->name); oid_to_hex(&ref->old_oid), ref->name);
ref = ref->next; ref = ref->next;
} }

View File

@ -196,7 +196,7 @@ static int will_fetch(struct ref **head, const unsigned char *sha1)
{ {
struct ref *rm = *head; struct ref *rm = *head;
while (rm) { while (rm) {
if (!hashcmp(rm->old_sha1, sha1)) if (!hashcmp(rm->old_oid.hash, sha1))
return 1; return 1;
rm = rm->next; rm = rm->next;
} }
@ -224,8 +224,8 @@ static void find_non_local_tags(struct transport *transport,
* as one to ignore by setting util to NULL. * as one to ignore by setting util to NULL.
*/ */
if (ends_with(ref->name, "^{}")) { if (ends_with(ref->name, "^{}")) {
if (item && !has_sha1_file(ref->old_sha1) && if (item && !has_object_file(&ref->old_oid) &&
!will_fetch(head, ref->old_sha1) && !will_fetch(head, ref->old_oid.hash) &&
!has_sha1_file(item->util) && !has_sha1_file(item->util) &&
!will_fetch(head, item->util)) !will_fetch(head, item->util))
item->util = NULL; item->util = NULL;
@ -251,7 +251,7 @@ static void find_non_local_tags(struct transport *transport,
continue; continue;
item = string_list_insert(&remote_refs, ref->name); item = string_list_insert(&remote_refs, ref->name);
item->util = (void *)ref->old_sha1; item->util = (void *)&ref->old_oid;
} }
string_list_clear(&existing_refs, 1); string_list_clear(&existing_refs, 1);
@ -273,7 +273,7 @@ static void find_non_local_tags(struct transport *transport,
{ {
struct ref *rm = alloc_ref(item->string); struct ref *rm = alloc_ref(item->string);
rm->peer_ref = alloc_ref(item->string); rm->peer_ref = alloc_ref(item->string);
hashcpy(rm->old_sha1, item->util); oidcpy(&rm->old_oid, item->util);
**tail = rm; **tail = rm;
*tail = &rm->next; *tail = &rm->next;
} }
@ -419,8 +419,8 @@ static int s_update_ref(const char *action,
transaction = ref_transaction_begin(&err); transaction = ref_transaction_begin(&err);
if (!transaction || if (!transaction ||
ref_transaction_update(transaction, ref->name, ref_transaction_update(transaction, ref->name,
ref->new_sha1, ref->new_oid.hash,
check_old ? ref->old_sha1 : NULL, check_old ? ref->old_oid.hash : NULL,
0, msg, &err)) 0, msg, &err))
goto fail; goto fail;
@ -453,11 +453,11 @@ static int update_local_ref(struct ref *ref,
struct branch *current_branch = branch_get(NULL); struct branch *current_branch = branch_get(NULL);
const char *pretty_ref = prettify_refname(ref->name); const char *pretty_ref = prettify_refname(ref->name);
type = sha1_object_info(ref->new_sha1, NULL); type = sha1_object_info(ref->new_oid.hash, NULL);
if (type < 0) if (type < 0)
die(_("object %s not found"), sha1_to_hex(ref->new_sha1)); die(_("object %s not found"), oid_to_hex(&ref->new_oid));
if (!hashcmp(ref->old_sha1, ref->new_sha1)) { if (!oidcmp(&ref->old_oid, &ref->new_oid)) {
if (verbosity > 0) if (verbosity > 0)
strbuf_addf(display, "= %-*s %-*s -> %s", strbuf_addf(display, "= %-*s %-*s -> %s",
TRANSPORT_SUMMARY(_("[up to date]")), TRANSPORT_SUMMARY(_("[up to date]")),
@ -468,7 +468,7 @@ static int update_local_ref(struct ref *ref,
if (current_branch && if (current_branch &&
!strcmp(ref->name, current_branch->name) && !strcmp(ref->name, current_branch->name) &&
!(update_head_ok || is_bare_repository()) && !(update_head_ok || is_bare_repository()) &&
!is_null_sha1(ref->old_sha1)) { !is_null_oid(&ref->old_oid)) {
/* /*
* If this is the head, and it's not okay to update * If this is the head, and it's not okay to update
* the head, and the old value of the head isn't empty... * the head, and the old value of the head isn't empty...
@ -480,7 +480,7 @@ static int update_local_ref(struct ref *ref,
return 1; return 1;
} }
if (!is_null_sha1(ref->old_sha1) && if (!is_null_oid(&ref->old_oid) &&
starts_with(ref->name, "refs/tags/")) { starts_with(ref->name, "refs/tags/")) {
int r; int r;
r = s_update_ref("updating tag", ref, 0); r = s_update_ref("updating tag", ref, 0);
@ -492,8 +492,8 @@ static int update_local_ref(struct ref *ref,
return r; return r;
} }
current = lookup_commit_reference_gently(ref->old_sha1, 1); current = lookup_commit_reference_gently(ref->old_oid.hash, 1);
updated = lookup_commit_reference_gently(ref->new_sha1, 1); updated = lookup_commit_reference_gently(ref->new_oid.hash, 1);
if (!current || !updated) { if (!current || !updated) {
const char *msg; const char *msg;
const char *what; const char *what;
@ -517,7 +517,7 @@ static int update_local_ref(struct ref *ref,
if ((recurse_submodules != RECURSE_SUBMODULES_OFF) && if ((recurse_submodules != RECURSE_SUBMODULES_OFF) &&
(recurse_submodules != RECURSE_SUBMODULES_ON)) (recurse_submodules != RECURSE_SUBMODULES_ON))
check_for_new_submodule_commits(ref->new_sha1); check_for_new_submodule_commits(ref->new_oid.hash);
r = s_update_ref(msg, ref, 0); r = s_update_ref(msg, ref, 0);
strbuf_addf(display, "%c %-*s %-*s -> %s%s", strbuf_addf(display, "%c %-*s %-*s -> %s%s",
r ? '!' : '*', r ? '!' : '*',
@ -532,10 +532,10 @@ static int update_local_ref(struct ref *ref,
int r; int r;
strbuf_add_unique_abbrev(&quickref, current->object.sha1, DEFAULT_ABBREV); strbuf_add_unique_abbrev(&quickref, current->object.sha1, DEFAULT_ABBREV);
strbuf_addstr(&quickref, ".."); strbuf_addstr(&quickref, "..");
strbuf_add_unique_abbrev(&quickref, ref->new_sha1, DEFAULT_ABBREV); strbuf_add_unique_abbrev(&quickref, ref->new_oid.hash, DEFAULT_ABBREV);
if ((recurse_submodules != RECURSE_SUBMODULES_OFF) && if ((recurse_submodules != RECURSE_SUBMODULES_OFF) &&
(recurse_submodules != RECURSE_SUBMODULES_ON)) (recurse_submodules != RECURSE_SUBMODULES_ON))
check_for_new_submodule_commits(ref->new_sha1); check_for_new_submodule_commits(ref->new_oid.hash);
r = s_update_ref("fast-forward", ref, 1); r = s_update_ref("fast-forward", ref, 1);
strbuf_addf(display, "%c %-*s %-*s -> %s%s", strbuf_addf(display, "%c %-*s %-*s -> %s%s",
r ? '!' : ' ', r ? '!' : ' ',
@ -549,10 +549,10 @@ static int update_local_ref(struct ref *ref,
int r; int r;
strbuf_add_unique_abbrev(&quickref, current->object.sha1, DEFAULT_ABBREV); strbuf_add_unique_abbrev(&quickref, current->object.sha1, DEFAULT_ABBREV);
strbuf_addstr(&quickref, "..."); strbuf_addstr(&quickref, "...");
strbuf_add_unique_abbrev(&quickref, ref->new_sha1, DEFAULT_ABBREV); strbuf_add_unique_abbrev(&quickref, ref->new_oid.hash, DEFAULT_ABBREV);
if ((recurse_submodules != RECURSE_SUBMODULES_OFF) && if ((recurse_submodules != RECURSE_SUBMODULES_OFF) &&
(recurse_submodules != RECURSE_SUBMODULES_ON)) (recurse_submodules != RECURSE_SUBMODULES_ON))
check_for_new_submodule_commits(ref->new_sha1); check_for_new_submodule_commits(ref->new_oid.hash);
r = s_update_ref("forced-update", ref, 1); r = s_update_ref("forced-update", ref, 1);
strbuf_addf(display, "%c %-*s %-*s -> %s (%s)", strbuf_addf(display, "%c %-*s %-*s -> %s (%s)",
r ? '!' : '+', r ? '!' : '+',
@ -580,7 +580,7 @@ static int iterate_ref_map(void *cb_data, unsigned char sha1[20])
if (!ref) if (!ref)
return -1; /* end of the list */ return -1; /* end of the list */
*rm = ref->next; *rm = ref->next;
hashcpy(sha1, ref->old_sha1); hashcpy(sha1, ref->old_oid.hash);
return 0; return 0;
} }
@ -631,7 +631,7 @@ static int store_updated_refs(const char *raw_url, const char *remote_name,
continue; continue;
} }
commit = lookup_commit_reference_gently(rm->old_sha1, 1); commit = lookup_commit_reference_gently(rm->old_oid.hash, 1);
if (!commit) if (!commit)
rm->fetch_head_status = FETCH_HEAD_NOT_FOR_MERGE; rm->fetch_head_status = FETCH_HEAD_NOT_FOR_MERGE;
@ -640,8 +640,8 @@ static int store_updated_refs(const char *raw_url, const char *remote_name,
if (rm->peer_ref) { if (rm->peer_ref) {
ref = alloc_ref(rm->peer_ref->name); ref = alloc_ref(rm->peer_ref->name);
hashcpy(ref->old_sha1, rm->peer_ref->old_sha1); oidcpy(&ref->old_oid, &rm->peer_ref->old_oid);
hashcpy(ref->new_sha1, rm->old_sha1); oidcpy(&ref->new_oid, &rm->old_oid);
ref->force = rm->peer_ref->force; ref->force = rm->peer_ref->force;
} }
@ -686,7 +686,7 @@ static int store_updated_refs(const char *raw_url, const char *remote_name,
/* fall-through */ /* fall-through */
case FETCH_HEAD_MERGE: case FETCH_HEAD_MERGE:
fprintf(fp, "%s\t%s\t%s", fprintf(fp, "%s\t%s\t%s",
sha1_to_hex(rm->old_sha1), oid_to_hex(&rm->old_oid),
merge_status_marker, merge_status_marker,
note.buf); note.buf);
for (i = 0; i < url_len; ++i) for (i = 0; i < url_len; ++i)
@ -928,7 +928,7 @@ static int do_fetch(struct transport *transport,
rm->peer_ref->name); rm->peer_ref->name);
if (peer_item) { if (peer_item) {
struct object_id *old_oid = peer_item->util; struct object_id *old_oid = peer_item->util;
hashcpy(rm->peer_ref->old_sha1, old_oid->hash); oidcpy(&rm->peer_ref->old_oid, old_oid);
} }
} }
} }

View File

@ -125,7 +125,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
continue; continue;
if (!tail_match(pattern, ref->name)) if (!tail_match(pattern, ref->name))
continue; continue;
printf("%s %s\n", sha1_to_hex(ref->old_sha1), ref->name); printf("%s %s\n", oid_to_hex(&ref->old_oid), ref->name);
status = 0; /* we found something */ status = 0; /* we found something */
} }
return status; return status;

View File

@ -246,7 +246,7 @@ static void show_one_alternate_sha1(const unsigned char sha1[20], void *unused)
static void collect_one_alternate_ref(const struct ref *ref, void *data) static void collect_one_alternate_ref(const struct ref *ref, void *data)
{ {
struct sha1_array *sa = data; struct sha1_array *sa = data;
sha1_array_append(sa, ref->old_sha1); sha1_array_append(sa, ref->old_oid.hash);
} }
static void write_head_info(void) static void write_head_info(void)

View File

@ -401,7 +401,7 @@ static int get_push_ref_states(const struct ref *remote_refs,
if (!ref->peer_ref) if (!ref->peer_ref)
continue; continue;
hashcpy(ref->new_sha1, ref->peer_ref->new_sha1); oidcpy(&ref->new_oid, &ref->peer_ref->new_oid);
item = string_list_append(&states->push, item = string_list_append(&states->push,
abbrev_branch(ref->peer_ref->name)); abbrev_branch(ref->peer_ref->name));
@ -410,14 +410,14 @@ static int get_push_ref_states(const struct ref *remote_refs,
info->forced = ref->force; info->forced = ref->force;
info->dest = xstrdup(abbrev_branch(ref->name)); info->dest = xstrdup(abbrev_branch(ref->name));
if (is_null_sha1(ref->new_sha1)) { if (is_null_oid(&ref->new_oid)) {
info->status = PUSH_STATUS_DELETE; info->status = PUSH_STATUS_DELETE;
} else if (!hashcmp(ref->old_sha1, ref->new_sha1)) } else if (!oidcmp(&ref->old_oid, &ref->new_oid))
info->status = PUSH_STATUS_UPTODATE; info->status = PUSH_STATUS_UPTODATE;
else if (is_null_sha1(ref->old_sha1)) else if (is_null_oid(&ref->old_oid))
info->status = PUSH_STATUS_CREATE; info->status = PUSH_STATUS_CREATE;
else if (has_sha1_file(ref->old_sha1) && else if (has_object_file(&ref->old_oid) &&
ref_newer(ref->new_sha1, ref->old_sha1)) ref_newer(ref->new_oid.hash, ref->old_oid.hash))
info->status = PUSH_STATUS_FASTFORWARD; info->status = PUSH_STATUS_FASTFORWARD;
else else
info->status = PUSH_STATUS_OUTOFDATE; info->status = PUSH_STATUS_OUTOFDATE;

View File

@ -166,7 +166,7 @@ struct ref **get_remote_heads(int in, char *src_buf, size_t src_len,
if (!check_ref(name, flags)) if (!check_ref(name, flags))
continue; continue;
ref = alloc_ref(buffer + 41); ref = alloc_ref(buffer + 41);
hashcpy(ref->old_sha1, old_sha1); hashcpy(ref->old_oid.hash, old_sha1);
*list = ref; *list = ref;
list = &ref->next; list = &ref->next;
got_at_least_one_head = 1; got_at_least_one_head = 1;

View File

@ -238,7 +238,7 @@ static void send_request(struct fetch_pack_args *args,
static void insert_one_alternate_ref(const struct ref *ref, void *unused) static void insert_one_alternate_ref(const struct ref *ref, void *unused)
{ {
rev_list_insert_ref(NULL, ref->old_sha1); rev_list_insert_ref(NULL, ref->old_oid.hash);
} }
#define INITIAL_FLUSH 16 #define INITIAL_FLUSH 16
@ -280,7 +280,7 @@ static int find_common(struct fetch_pack_args *args,
fetching = 0; fetching = 0;
for ( ; refs ; refs = refs->next) { for ( ; refs ; refs = refs->next) {
unsigned char *remote = refs->old_sha1; unsigned char *remote = refs->old_oid.hash;
const char *remote_hex; const char *remote_hex;
struct object *o; struct object *o;
@ -570,7 +570,7 @@ static void filter_refs(struct fetch_pack_args *args,
continue; continue;
if (get_sha1_hex(ref->name, sha1) || if (get_sha1_hex(ref->name, sha1) ||
ref->name[40] != '\0' || ref->name[40] != '\0' ||
hashcmp(sha1, ref->old_sha1)) hashcmp(sha1, ref->old_oid.hash))
continue; continue;
ref->matched = 1; ref->matched = 1;
@ -583,7 +583,7 @@ static void filter_refs(struct fetch_pack_args *args,
static void mark_alternate_complete(const struct ref *ref, void *unused) static void mark_alternate_complete(const struct ref *ref, void *unused)
{ {
mark_complete(ref->old_sha1); mark_complete(ref->old_oid.hash);
} }
static int everything_local(struct fetch_pack_args *args, static int everything_local(struct fetch_pack_args *args,
@ -599,10 +599,10 @@ static int everything_local(struct fetch_pack_args *args,
for (ref = *refs; ref; ref = ref->next) { for (ref = *refs; ref; ref = ref->next) {
struct object *o; struct object *o;
if (!has_sha1_file(ref->old_sha1)) if (!has_object_file(&ref->old_oid))
continue; continue;
o = parse_object(ref->old_sha1); o = parse_object(ref->old_oid.hash);
if (!o) if (!o)
continue; continue;
@ -630,7 +630,7 @@ static int everything_local(struct fetch_pack_args *args,
* Don't mark them common yet; the server has to be told so first. * Don't mark them common yet; the server has to be told so first.
*/ */
for (ref = *refs; ref; ref = ref->next) { for (ref = *refs; ref; ref = ref->next) {
struct object *o = deref_tag(lookup_object(ref->old_sha1), struct object *o = deref_tag(lookup_object(ref->old_oid.hash),
NULL, 0); NULL, 0);
if (!o || o->type != OBJ_COMMIT || !(o->flags & COMPLETE)) if (!o || o->type != OBJ_COMMIT || !(o->flags & COMPLETE))
@ -646,7 +646,7 @@ static int everything_local(struct fetch_pack_args *args,
filter_refs(args, refs, sought, nr_sought); filter_refs(args, refs, sought, nr_sought);
for (retval = 1, ref = *refs; ref ; ref = ref->next) { for (retval = 1, ref = *refs; ref ; ref = ref->next) {
const unsigned char *remote = ref->old_sha1; const unsigned char *remote = ref->old_oid.hash;
struct object *o; struct object *o;
o = lookup_object(remote); o = lookup_object(remote);
@ -985,7 +985,7 @@ static void update_shallow(struct fetch_pack_args *args,
if (!si->nr_ours && !si->nr_theirs) if (!si->nr_ours && !si->nr_theirs)
return; return;
for (i = 0; i < nr_sought; i++) for (i = 0; i < nr_sought; i++)
sha1_array_append(&ref, sought[i]->old_sha1); sha1_array_append(&ref, sought[i]->old_oid.hash);
si->ref = &ref; si->ref = &ref;
if (args->update_shallow) { if (args->update_shallow) {

View File

@ -1438,11 +1438,11 @@ static void one_remote_ref(const char *refname)
* Fetch a copy of the object if it doesn't exist locally - it * Fetch a copy of the object if it doesn't exist locally - it
* may be required for updating server info later. * may be required for updating server info later.
*/ */
if (repo->can_update_info_refs && !has_sha1_file(ref->old_sha1)) { if (repo->can_update_info_refs && !has_object_file(&ref->old_oid)) {
obj = lookup_unknown_object(ref->old_sha1); obj = lookup_unknown_object(ref->old_oid.hash);
if (obj) { if (obj) {
fprintf(stderr, " fetch %s for %s\n", fprintf(stderr, " fetch %s for %s\n",
sha1_to_hex(ref->old_sha1), refname); oid_to_hex(&ref->old_oid), refname);
add_fetch_request(obj); add_fetch_request(obj);
} }
} }
@ -1473,18 +1473,18 @@ static void add_remote_info_ref(struct remote_ls_ctx *ls)
return; return;
} }
o = parse_object(ref->old_sha1); o = parse_object(ref->old_oid.hash);
if (!o) { if (!o) {
fprintf(stderr, fprintf(stderr,
"Unable to parse object %s for remote ref %s\n", "Unable to parse object %s for remote ref %s\n",
sha1_to_hex(ref->old_sha1), ls->dentry_name); oid_to_hex(&ref->old_oid), ls->dentry_name);
aborted = 1; aborted = 1;
free(ref); free(ref);
return; return;
} }
strbuf_addf(buf, "%s\t%s\n", strbuf_addf(buf, "%s\t%s\n",
sha1_to_hex(ref->old_sha1), ls->dentry_name); oid_to_hex(&ref->old_oid), ls->dentry_name);
if (o->type == OBJ_TAG) { if (o->type == OBJ_TAG) {
o = deref_tag(o, ls->dentry_name, 0); o = deref_tag(o, ls->dentry_name, 0);
@ -1581,7 +1581,7 @@ static void fetch_symref(const char *path, char **symref, unsigned char *sha1)
static int verify_merge_base(unsigned char *head_sha1, struct ref *remote) static int verify_merge_base(unsigned char *head_sha1, struct ref *remote)
{ {
struct commit *head = lookup_commit_or_die(head_sha1, "HEAD"); struct commit *head = lookup_commit_or_die(head_sha1, "HEAD");
struct commit *branch = lookup_commit_or_die(remote->old_sha1, remote->name); struct commit *branch = lookup_commit_or_die(remote->old_oid.hash, remote->name);
return in_merge_bases(branch, head); return in_merge_bases(branch, head);
} }
@ -1644,11 +1644,11 @@ static int delete_remote_branch(const char *pattern, int force)
return error("Remote HEAD resolves to object %s\nwhich does not exist locally, perhaps you need to fetch?", sha1_to_hex(head_sha1)); return error("Remote HEAD resolves to object %s\nwhich does not exist locally, perhaps you need to fetch?", sha1_to_hex(head_sha1));
/* Remote branch must resolve to a known object */ /* Remote branch must resolve to a known object */
if (is_null_sha1(remote_ref->old_sha1)) if (is_null_oid(&remote_ref->old_oid))
return error("Unable to resolve remote branch %s", return error("Unable to resolve remote branch %s",
remote_ref->name); remote_ref->name);
if (!has_sha1_file(remote_ref->old_sha1)) if (!has_object_file(&remote_ref->old_oid))
return error("Remote branch %s resolves to object %s\nwhich does not exist locally, perhaps you need to fetch?", remote_ref->name, sha1_to_hex(remote_ref->old_sha1)); return error("Remote branch %s resolves to object %s\nwhich does not exist locally, perhaps you need to fetch?", remote_ref->name, oid_to_hex(&remote_ref->old_oid));
/* Remote branch must be an ancestor of remote HEAD */ /* Remote branch must be an ancestor of remote HEAD */
if (!verify_merge_base(head_sha1, remote_ref)) { if (!verify_merge_base(head_sha1, remote_ref)) {
@ -1861,7 +1861,7 @@ int main(int argc, char **argv)
if (!ref->peer_ref) if (!ref->peer_ref)
continue; continue;
if (is_null_sha1(ref->peer_ref->new_sha1)) { if (is_null_oid(&ref->peer_ref->new_oid)) {
if (delete_remote_branch(ref->name, 1) == -1) { if (delete_remote_branch(ref->name, 1) == -1) {
error("Could not remove %s", ref->name); error("Could not remove %s", ref->name);
if (helper_status) if (helper_status)
@ -1874,7 +1874,7 @@ int main(int argc, char **argv)
continue; continue;
} }
if (!hashcmp(ref->old_sha1, ref->peer_ref->new_sha1)) { if (!oidcmp(&ref->old_oid, &ref->peer_ref->new_oid)) {
if (push_verbosely) if (push_verbosely)
fprintf(stderr, "'%s': up-to-date\n", ref->name); fprintf(stderr, "'%s': up-to-date\n", ref->name);
if (helper_status) if (helper_status)
@ -1883,11 +1883,11 @@ int main(int argc, char **argv)
} }
if (!force_all && if (!force_all &&
!is_null_sha1(ref->old_sha1) && !is_null_oid(&ref->old_oid) &&
!ref->force) { !ref->force) {
if (!has_sha1_file(ref->old_sha1) || if (!has_object_file(&ref->old_oid) ||
!ref_newer(ref->peer_ref->new_sha1, !ref_newer(ref->peer_ref->new_oid.hash,
ref->old_sha1)) { ref->old_oid.hash)) {
/* /*
* We do not have the remote ref, or * We do not have the remote ref, or
* we know that the remote ref is not * we know that the remote ref is not
@ -1908,14 +1908,14 @@ int main(int argc, char **argv)
continue; continue;
} }
} }
hashcpy(ref->new_sha1, ref->peer_ref->new_sha1); oidcpy(&ref->new_oid, &ref->peer_ref->new_oid);
new_refs++; new_refs++;
fprintf(stderr, "updating '%s'", ref->name); fprintf(stderr, "updating '%s'", ref->name);
if (strcmp(ref->name, ref->peer_ref->name)) if (strcmp(ref->name, ref->peer_ref->name))
fprintf(stderr, " using '%s'", ref->peer_ref->name); fprintf(stderr, " using '%s'", ref->peer_ref->name);
fprintf(stderr, "\n from %s\n to %s\n", fprintf(stderr, "\n from %s\n to %s\n",
sha1_to_hex(ref->old_sha1), sha1_to_hex(ref->new_sha1)); oid_to_hex(&ref->old_oid), oid_to_hex(&ref->new_oid));
if (dry_run) { if (dry_run) {
if (helper_status) if (helper_status)
printf("ok %s\n", ref->name); printf("ok %s\n", ref->name);
@ -1936,10 +1936,10 @@ int main(int argc, char **argv)
/* Set up revision info for this refspec */ /* Set up revision info for this refspec */
argv_array_push(&commit_argv, ""); /* ignored */ argv_array_push(&commit_argv, ""); /* ignored */
argv_array_push(&commit_argv, "--objects"); argv_array_push(&commit_argv, "--objects");
argv_array_push(&commit_argv, sha1_to_hex(ref->new_sha1)); argv_array_push(&commit_argv, oid_to_hex(&ref->new_oid));
if (!push_all && !is_null_sha1(ref->old_sha1)) if (!push_all && !is_null_oid(&ref->old_oid))
argv_array_pushf(&commit_argv, "^%s", argv_array_pushf(&commit_argv, "^%s",
sha1_to_hex(ref->old_sha1)); oid_to_hex(&ref->old_oid));
init_revisions(&revs, setup_git_directory()); init_revisions(&revs, setup_git_directory());
setup_revisions(commit_argv.argc, commit_argv.argv, &revs, NULL); setup_revisions(commit_argv.argc, commit_argv.argv, &revs, NULL);
revs.edge_hint = 0; /* just in case */ revs.edge_hint = 0; /* just in case */
@ -1962,7 +1962,7 @@ int main(int argc, char **argv)
run_request_queue(); run_request_queue();
/* Update the remote branch if all went well */ /* Update the remote branch if all went well */
if (aborted || !update_remote(ref->new_sha1, ref_lock)) if (aborted || !update_remote(ref->new_oid.hash, ref_lock))
rc = 1; rc = 1;
if (!rc) if (!rc)

2
http.c
View File

@ -1391,7 +1391,7 @@ int http_fetch_ref(const char *base, struct ref *ref)
if (http_get_strbuf(url, &buffer, &options) == HTTP_OK) { if (http_get_strbuf(url, &buffer, &options) == HTTP_OK) {
strbuf_rtrim(&buffer); strbuf_rtrim(&buffer);
if (buffer.len == 40) if (buffer.len == 40)
ret = get_sha1_hex(buffer.buf, ref->old_sha1); ret = get_oid_hex(buffer.buf, &ref->old_oid);
else if (starts_with(buffer.buf, "ref: ")) { else if (starts_with(buffer.buf, "ref: ")) {
ref->symref = xstrdup(buffer.buf + 5); ref->symref = xstrdup(buffer.buf + 5);
ret = 0; ret = 0;

View File

@ -169,7 +169,7 @@ static struct ref *parse_info_refs(struct discovery *heads)
data[i] = 0; data[i] = 0;
ref_name = mid + 1; ref_name = mid + 1;
ref = alloc_ref(ref_name); ref = alloc_ref(ref_name);
get_sha1_hex(start, ref->old_sha1); get_oid_hex(start, &ref->old_oid);
if (!refs) if (!refs)
refs = ref; refs = ref;
if (last_ref) if (last_ref)
@ -348,7 +348,7 @@ static void output_refs(struct ref *refs)
if (posn->symref) if (posn->symref)
printf("@%s %s\n", posn->symref, posn->name); printf("@%s %s\n", posn->symref, posn->name);
else else
printf("%s %s\n", sha1_to_hex(posn->old_sha1), posn->name); printf("%s %s\n", oid_to_hex(&posn->old_oid), posn->name);
} }
printf("\n"); printf("\n");
fflush(stdout); fflush(stdout);
@ -702,7 +702,7 @@ static int fetch_dumb(int nr_heads, struct ref **to_fetch)
if (options.depth) if (options.depth)
die("dumb http transport does not support --depth"); die("dumb http transport does not support --depth");
for (i = 0; i < nr_heads; i++) for (i = 0; i < nr_heads; i++)
targets[i] = xstrdup(sha1_to_hex(to_fetch[i]->old_sha1)); targets[i] = xstrdup(oid_to_hex(&to_fetch[i]->old_oid));
walker = get_http_walker(url.buf); walker = get_http_walker(url.buf);
walker->get_all = 1; walker->get_all = 1;
@ -763,7 +763,7 @@ static int fetch_git(struct discovery *heads,
if (!*ref->name) if (!*ref->name)
die("cannot fetch by sha1 over smart http"); die("cannot fetch by sha1 over smart http");
packet_buf_write(&preamble, "%s %s\n", packet_buf_write(&preamble, "%s %s\n",
sha1_to_hex(ref->old_sha1), ref->name); oid_to_hex(&ref->old_oid), ref->name);
} }
packet_buf_flush(&preamble); packet_buf_flush(&preamble);
@ -815,7 +815,7 @@ static void parse_fetch(struct strbuf *buf)
die("protocol error: expected sha/ref, got %s'", p); die("protocol error: expected sha/ref, got %s'", p);
ref = alloc_ref(name); ref = alloc_ref(name);
hashcpy(ref->old_sha1, old_sha1); hashcpy(ref->old_oid.hash, old_sha1);
*list = ref; *list = ref;
list = &ref->next; list = &ref->next;

View File

@ -1075,7 +1075,7 @@ static void tail_link_ref(struct ref *ref, struct ref ***tail)
static struct ref *alloc_delete_ref(void) static struct ref *alloc_delete_ref(void)
{ {
struct ref *ref = alloc_ref("(delete)"); struct ref *ref = alloc_ref("(delete)");
hashclr(ref->new_sha1); oidclr(&ref->new_oid);
return ref; return ref;
} }
@ -1095,7 +1095,7 @@ static int try_explicit_object_name(const char *name,
if (match) { if (match) {
*match = alloc_ref(name); *match = alloc_ref(name);
hashcpy((*match)->new_sha1, sha1); hashcpy((*match)->new_oid.hash, sha1);
} }
return 0; return 0;
} }
@ -1190,7 +1190,7 @@ static int match_explicit(struct ref *src, struct ref *dst,
case 0: case 0:
if (starts_with(dst_value, "refs/")) if (starts_with(dst_value, "refs/"))
matched_dst = make_linked_ref(dst_value, dst_tail); matched_dst = make_linked_ref(dst_value, dst_tail);
else if (is_null_sha1(matched_src->new_sha1)) else if (is_null_oid(&matched_src->new_oid))
error("unable to delete '%s': remote ref does not exist", error("unable to delete '%s': remote ref does not exist",
dst_value); dst_value);
else if ((dst_guess = guess_ref(dst_value, matched_src))) else if ((dst_guess = guess_ref(dst_value, matched_src)))
@ -1321,10 +1321,10 @@ static void add_missing_tags(struct ref *src, struct ref **dst, struct ref ***ds
memset(&sent_tips, 0, sizeof(sent_tips)); memset(&sent_tips, 0, sizeof(sent_tips));
for (ref = *dst; ref; ref = ref->next) { for (ref = *dst; ref; ref = ref->next) {
if (ref->peer_ref && if (ref->peer_ref &&
!is_null_sha1(ref->peer_ref->new_sha1)) !is_null_oid(&ref->peer_ref->new_oid))
add_to_tips(&sent_tips, ref->peer_ref->new_sha1); add_to_tips(&sent_tips, ref->peer_ref->new_oid.hash);
else else
add_to_tips(&sent_tips, ref->old_sha1); add_to_tips(&sent_tips, ref->old_oid.hash);
if (starts_with(ref->name, "refs/tags/")) if (starts_with(ref->name, "refs/tags/"))
string_list_append(&dst_tag, ref->name); string_list_append(&dst_tag, ref->name);
} }
@ -1338,7 +1338,7 @@ static void add_missing_tags(struct ref *src, struct ref **dst, struct ref ***ds
continue; /* not a tag */ continue; /* not a tag */
if (string_list_has_string(&dst_tag, ref->name)) if (string_list_has_string(&dst_tag, ref->name))
continue; /* they already have it */ continue; /* they already have it */
if (sha1_object_info(ref->new_sha1, NULL) != OBJ_TAG) if (sha1_object_info(ref->new_oid.hash, NULL) != OBJ_TAG)
continue; /* be conservative */ continue; /* be conservative */
item = string_list_append(&src_tag, ref->name); item = string_list_append(&src_tag, ref->name);
item->util = ref; item->util = ref;
@ -1358,9 +1358,9 @@ static void add_missing_tags(struct ref *src, struct ref **dst, struct ref ***ds
struct ref *dst_ref; struct ref *dst_ref;
struct commit *commit; struct commit *commit;
if (is_null_sha1(ref->new_sha1)) if (is_null_oid(&ref->new_oid))
continue; continue;
commit = lookup_commit_reference_gently(ref->new_sha1, 1); commit = lookup_commit_reference_gently(ref->new_oid.hash, 1);
if (!commit) if (!commit)
/* not pushing a commit, which is not an error */ /* not pushing a commit, which is not an error */
continue; continue;
@ -1374,7 +1374,7 @@ static void add_missing_tags(struct ref *src, struct ref **dst, struct ref ***ds
/* Add it in */ /* Add it in */
dst_ref = make_linked_ref(ref->name, dst_tail); dst_ref = make_linked_ref(ref->name, dst_tail);
hashcpy(dst_ref->new_sha1, ref->new_sha1); oidcpy(&dst_ref->new_oid, &ref->new_oid);
dst_ref->peer_ref = copy_ref(ref); dst_ref->peer_ref = copy_ref(ref);
} }
} }
@ -1481,7 +1481,7 @@ int match_push_refs(struct ref *src, struct ref **dst,
/* Create a new one and link it */ /* Create a new one and link it */
dst_peer = make_linked_ref(dst_name, &dst_tail); dst_peer = make_linked_ref(dst_name, &dst_tail);
hashcpy(dst_peer->new_sha1, ref->new_sha1); oidcpy(&dst_peer->new_oid, &ref->new_oid);
string_list_insert(&dst_ref_index, string_list_insert(&dst_ref_index,
dst_peer->name)->util = dst_peer; dst_peer->name)->util = dst_peer;
} }
@ -1533,13 +1533,13 @@ void set_ref_status_for_push(struct ref *remote_refs, int send_mirror,
int reject_reason = 0; int reject_reason = 0;
if (ref->peer_ref) if (ref->peer_ref)
hashcpy(ref->new_sha1, ref->peer_ref->new_sha1); oidcpy(&ref->new_oid, &ref->peer_ref->new_oid);
else if (!send_mirror) else if (!send_mirror)
continue; continue;
ref->deletion = is_null_sha1(ref->new_sha1); ref->deletion = is_null_oid(&ref->new_oid);
if (!ref->deletion && if (!ref->deletion &&
!hashcmp(ref->old_sha1, ref->new_sha1)) { !oidcmp(&ref->old_oid, &ref->new_oid)) {
ref->status = REF_STATUS_UPTODATE; ref->status = REF_STATUS_UPTODATE;
continue; continue;
} }
@ -1558,7 +1558,7 @@ void set_ref_status_for_push(struct ref *remote_refs, int send_mirror,
*/ */
if (ref->expect_old_sha1) { if (ref->expect_old_sha1) {
if (ref->expect_old_no_trackback || if (ref->expect_old_no_trackback ||
hashcmp(ref->old_sha1, ref->old_sha1_expect)) oidcmp(&ref->old_oid, &ref->old_oid_expect))
reject_reason = REF_STATUS_REJECT_STALE; reject_reason = REF_STATUS_REJECT_STALE;
} }
@ -1582,15 +1582,15 @@ void set_ref_status_for_push(struct ref *remote_refs, int send_mirror,
* passing the --force argument * passing the --force argument
*/ */
else if (!ref->deletion && !is_null_sha1(ref->old_sha1)) { else if (!ref->deletion && !is_null_oid(&ref->old_oid)) {
if (starts_with(ref->name, "refs/tags/")) if (starts_with(ref->name, "refs/tags/"))
reject_reason = REF_STATUS_REJECT_ALREADY_EXISTS; reject_reason = REF_STATUS_REJECT_ALREADY_EXISTS;
else if (!has_sha1_file(ref->old_sha1)) else if (!has_object_file(&ref->old_oid))
reject_reason = REF_STATUS_REJECT_FETCH_FIRST; reject_reason = REF_STATUS_REJECT_FETCH_FIRST;
else if (!lookup_commit_reference_gently(ref->old_sha1, 1) || else if (!lookup_commit_reference_gently(ref->old_oid.hash, 1) ||
!lookup_commit_reference_gently(ref->new_sha1, 1)) !lookup_commit_reference_gently(ref->new_oid.hash, 1))
reject_reason = REF_STATUS_REJECT_NEEDS_FORCE; reject_reason = REF_STATUS_REJECT_NEEDS_FORCE;
else if (!ref_newer(ref->new_sha1, ref->old_sha1)) else if (!ref_newer(ref->new_oid.hash, ref->old_oid.hash))
reject_reason = REF_STATUS_REJECT_NONFASTFORWARD; reject_reason = REF_STATUS_REJECT_NONFASTFORWARD;
} }
@ -1889,7 +1889,7 @@ int get_fetch_map(const struct ref *remote_refs,
if (refspec->exact_sha1) { if (refspec->exact_sha1) {
ref_map = alloc_ref(name); ref_map = alloc_ref(name);
get_sha1_hex(name, ref_map->old_sha1); get_oid_hex(name, &ref_map->old_oid);
} else { } else {
ref_map = get_remote_ref(remote_refs, name); ref_map = get_remote_ref(remote_refs, name);
} }
@ -1930,7 +1930,7 @@ int resolve_remote_symref(struct ref *ref, struct ref *list)
return 0; return 0;
for (; list; list = list->next) for (; list; list = list->next)
if (!strcmp(ref->symref, list->name)) { if (!strcmp(ref->symref, list->name)) {
hashcpy(ref->old_sha1, list->old_sha1); oidcpy(&ref->old_oid, &list->old_oid);
return 0; return 0;
} }
return 1; return 1;
@ -2140,7 +2140,7 @@ static int one_local_ref(const char *refname, const struct object_id *oid,
len = strlen(refname) + 1; len = strlen(refname) + 1;
ref = xcalloc(1, sizeof(*ref) + len); ref = xcalloc(1, sizeof(*ref) + len);
hashcpy(ref->new_sha1, oid->hash); oidcpy(&ref->new_oid, oid);
memcpy(ref->name, refname, len); memcpy(ref->name, refname, len);
**local_tail = ref; **local_tail = ref;
*local_tail = &ref->next; *local_tail = &ref->next;
@ -2177,7 +2177,7 @@ struct ref *guess_remote_head(const struct ref *head,
/* If refs/heads/master could be right, it is. */ /* If refs/heads/master could be right, it is. */
if (!all) { if (!all) {
r = find_ref_by_name(refs, "refs/heads/master"); r = find_ref_by_name(refs, "refs/heads/master");
if (r && !hashcmp(r->old_sha1, head->old_sha1)) if (r && !oidcmp(&r->old_oid, &head->old_oid))
return copy_ref(r); return copy_ref(r);
} }
@ -2185,7 +2185,7 @@ struct ref *guess_remote_head(const struct ref *head,
for (r = refs; r; r = r->next) { for (r = refs; r; r = r->next) {
if (r != head && if (r != head &&
starts_with(r->name, "refs/heads/") && starts_with(r->name, "refs/heads/") &&
!hashcmp(r->old_sha1, head->old_sha1)) { !oidcmp(&r->old_oid, &head->old_oid)) {
*tail = copy_ref(r); *tail = copy_ref(r);
tail = &((*tail)->next); tail = &((*tail)->next);
if (!all) if (!all)
@ -2233,7 +2233,7 @@ static int get_stale_heads_cb(const char *refname, const struct object_id *oid,
if (stale) { if (stale) {
struct ref *ref = make_linked_ref(refname, &info->stale_refs_tail); struct ref *ref = make_linked_ref(refname, &info->stale_refs_tail);
hashcpy(ref->new_sha1, oid->hash); oidcpy(&ref->new_oid, oid);
} }
clean_exit: clean_exit:
@ -2353,8 +2353,8 @@ static void apply_cas(struct push_cas_option *cas,
continue; continue;
ref->expect_old_sha1 = 1; ref->expect_old_sha1 = 1;
if (!entry->use_tracking) if (!entry->use_tracking)
hashcpy(ref->old_sha1_expect, cas->entry[i].expect); hashcpy(ref->old_oid_expect.hash, cas->entry[i].expect);
else if (remote_tracking(remote, ref->name, ref->old_sha1_expect)) else if (remote_tracking(remote, ref->name, ref->old_oid_expect.hash))
ref->expect_old_no_trackback = 1; ref->expect_old_no_trackback = 1;
return; return;
} }
@ -2364,7 +2364,7 @@ static void apply_cas(struct push_cas_option *cas,
return; return;
ref->expect_old_sha1 = 1; ref->expect_old_sha1 = 1;
if (remote_tracking(remote, ref->name, ref->old_sha1_expect)) if (remote_tracking(remote, ref->name, ref->old_oid_expect.hash))
ref->expect_old_no_trackback = 1; ref->expect_old_no_trackback = 1;
} }

View File

@ -79,9 +79,9 @@ extern const struct refspec *tag_refspec;
struct ref { struct ref {
struct ref *next; struct ref *next;
unsigned char old_sha1[20]; struct object_id old_oid;
unsigned char new_sha1[20]; struct object_id new_oid;
unsigned char old_sha1_expect[20]; /* used by expect-old */ struct object_id old_oid_expect; /* used by expect-old */
char *symref; char *symref;
unsigned int unsigned int
force:1, force:1,

View File

@ -102,11 +102,11 @@ static int pack_objects(int fd, struct ref *refs, struct sha1_array *extra, stru
break; break;
while (refs) { while (refs) {
if (!is_null_sha1(refs->old_sha1) && if (!is_null_oid(&refs->old_oid) &&
!feed_object(refs->old_sha1, po.in, 1)) !feed_object(refs->old_oid.hash, po.in, 1))
break; break;
if (!is_null_sha1(refs->new_sha1) && if (!is_null_oid(&refs->new_oid) &&
!feed_object(refs->new_sha1, po.in, 0)) !feed_object(refs->new_oid.hash, po.in, 0))
break; break;
refs = refs->next; refs = refs->next;
} }
@ -284,8 +284,8 @@ static int generate_push_cert(struct strbuf *req_buf,
continue; continue;
update_seen = 1; update_seen = 1;
strbuf_addf(&cert, "%s %s %s\n", strbuf_addf(&cert, "%s %s %s\n",
sha1_to_hex(ref->old_sha1), oid_to_hex(&ref->old_oid),
sha1_to_hex(ref->new_sha1), oid_to_hex(&ref->new_oid),
ref->name); ref->name);
} }
if (!update_seen) if (!update_seen)
@ -487,8 +487,8 @@ int send_pack(struct send_pack_args *args,
if (check_to_send_update(ref, args) < 0) if (check_to_send_update(ref, args) < 0)
continue; continue;
old_hex = sha1_to_hex(ref->old_sha1); old_hex = oid_to_hex(&ref->old_oid);
new_hex = sha1_to_hex(ref->new_sha1); new_hex = oid_to_hex(&ref->new_oid);
if (!cmds_sent) { if (!cmds_sent) {
packet_buf_write(&req_buf, packet_buf_write(&req_buf,
"%s %s %s%c%s", "%s %s %s%c%s",

View File

@ -346,7 +346,7 @@ static int fetch_with_fetch(struct transport *transport,
continue; continue;
strbuf_addf(&buf, "fetch %s %s\n", strbuf_addf(&buf, "fetch %s %s\n",
sha1_to_hex(posn->old_sha1), oid_to_hex(&posn->old_oid),
posn->symref ? posn->symref : posn->name); posn->symref ? posn->symref : posn->name);
} }
@ -489,7 +489,7 @@ static int fetch_with_import(struct transport *transport,
else else
private = xstrdup(name); private = xstrdup(name);
if (private) { if (private) {
if (read_ref(private, posn->old_sha1) < 0) if (read_ref(private, posn->old_oid.hash) < 0)
die("Could not read ref %s", private); die("Could not read ref %s", private);
free(private); free(private);
} }
@ -756,7 +756,7 @@ static int push_update_refs_status(struct helper_data *data,
private = apply_refspecs(data->refspecs, data->refspec_nr, ref->name); private = apply_refspecs(data->refspecs, data->refspec_nr, ref->name);
if (!private) if (!private)
continue; continue;
update_ref("update by helper", private, ref->new_sha1, NULL, 0, 0); update_ref("update by helper", private, ref->new_oid.hash, NULL, 0, 0);
free(private); free(private);
} }
strbuf_release(&buf); strbuf_release(&buf);
@ -818,7 +818,7 @@ static int push_refs_with_push(struct transport *transport,
if (ref->peer_ref) if (ref->peer_ref)
strbuf_addstr(&buf, ref->peer_ref->name); strbuf_addstr(&buf, ref->peer_ref->name);
else else
strbuf_addstr(&buf, sha1_to_hex(ref->new_sha1)); strbuf_addstr(&buf, oid_to_hex(&ref->new_oid));
} }
strbuf_addch(&buf, ':'); strbuf_addch(&buf, ':');
strbuf_addstr(&buf, ref->name); strbuf_addstr(&buf, ref->name);
@ -827,14 +827,14 @@ static int push_refs_with_push(struct transport *transport,
/* /*
* The "--force-with-lease" options without explicit * The "--force-with-lease" options without explicit
* values to expect have already been expanded into * values to expect have already been expanded into
* the ref->old_sha1_expect[] field; we can ignore * the ref->old_oid_expect[] field; we can ignore
* transport->smart_options->cas altogether and instead * transport->smart_options->cas altogether and instead
* can enumerate them from the refs. * can enumerate them from the refs.
*/ */
if (ref->expect_old_sha1) { if (ref->expect_old_sha1) {
struct strbuf cas = STRBUF_INIT; struct strbuf cas = STRBUF_INIT;
strbuf_addf(&cas, "%s:%s", strbuf_addf(&cas, "%s:%s",
ref->name, sha1_to_hex(ref->old_sha1_expect)); ref->name, oid_to_hex(&ref->old_oid_expect));
string_list_append(&cas_options, strbuf_detach(&cas, NULL)); string_list_append(&cas_options, strbuf_detach(&cas, NULL));
} }
} }
@ -884,7 +884,7 @@ static int push_refs_with_export(struct transport *transport,
if (private && !get_sha1(private, sha1)) { if (private && !get_sha1(private, sha1)) {
strbuf_addf(&buf, "^%s", private); strbuf_addf(&buf, "^%s", private);
string_list_append(&revlist_args, strbuf_detach(&buf, NULL)); string_list_append(&revlist_args, strbuf_detach(&buf, NULL));
hashcpy(ref->old_sha1, sha1); hashcpy(ref->old_oid.hash, sha1);
} }
free(private); free(private);
@ -1016,12 +1016,12 @@ static struct ref *get_refs_list(struct transport *transport, int for_push)
if (buf.buf[0] == '@') if (buf.buf[0] == '@')
(*tail)->symref = xstrdup(buf.buf + 1); (*tail)->symref = xstrdup(buf.buf + 1);
else if (buf.buf[0] != '?') else if (buf.buf[0] != '?')
get_sha1_hex(buf.buf, (*tail)->old_sha1); get_oid_hex(buf.buf, &(*tail)->old_oid);
if (eon) { if (eon) {
if (has_attribute(eon + 1, "unchanged")) { if (has_attribute(eon + 1, "unchanged")) {
(*tail)->status |= REF_STATUS_UPTODATE; (*tail)->status |= REF_STATUS_UPTODATE;
if (read_ref((*tail)->name, if (read_ref((*tail)->name,
(*tail)->old_sha1) < 0) (*tail)->old_oid.hash) < 0)
die(N_("Could not read ref %s"), die(N_("Could not read ref %s"),
(*tail)->name); (*tail)->name);
} }

View File

@ -79,7 +79,7 @@ static int read_loose_refs(struct strbuf *path, int name_offset,
continue; continue;
next = alloc_ref(path->buf + name_offset); next = alloc_ref(path->buf + name_offset);
if (read_in_full(fd, buffer, 40) != 40 || if (read_in_full(fd, buffer, 40) != 40 ||
get_sha1_hex(buffer, next->old_sha1)) { get_oid_hex(buffer, &next->old_oid)) {
close(fd); close(fd);
free(next); free(next);
continue; continue;
@ -131,7 +131,7 @@ static void insert_packed_refs(const char *packed_refs, struct ref **list)
if (!(*list)->next || cmp < 0) { if (!(*list)->next || cmp < 0) {
struct ref *next = alloc_ref(buffer + 41); struct ref *next = alloc_ref(buffer + 41);
buffer[40] = '\0'; buffer[40] = '\0';
if (get_sha1_hex(buffer, next->old_sha1)) { if (get_oid_hex(buffer, &next->old_oid)) {
warning ("invalid SHA-1: %s", buffer); warning ("invalid SHA-1: %s", buffer);
free(next); free(next);
continue; continue;
@ -162,7 +162,7 @@ static void set_upstreams(struct transport *transport, struct ref *refs,
continue; continue;
if (!ref->peer_ref) if (!ref->peer_ref)
continue; continue;
if (is_null_sha1(ref->new_sha1)) if (is_null_oid(&ref->new_oid))
continue; continue;
/* Follow symbolic refs (mainly for HEAD). */ /* Follow symbolic refs (mainly for HEAD). */
@ -412,7 +412,7 @@ static struct ref *get_refs_from_bundle(struct transport *transport, int for_pus
for (i = 0; i < data->header.references.nr; i++) { for (i = 0; i < data->header.references.nr; i++) {
struct ref_list_entry *e = data->header.references.list + i; struct ref_list_entry *e = data->header.references.list + i;
struct ref *ref = alloc_ref(e->name); struct ref *ref = alloc_ref(e->name);
hashcpy(ref->old_sha1, e->sha1); hashcpy(ref->old_oid.hash, e->sha1);
ref->next = result; ref->next = result;
result = ref; result = ref;
} }
@ -608,7 +608,7 @@ void transport_update_tracking_ref(struct remote *remote, struct ref *ref, int v
delete_ref(rs.dst, NULL, 0); delete_ref(rs.dst, NULL, 0);
} else } else
update_ref("update by push", rs.dst, update_ref("update by push", rs.dst,
ref->new_sha1, NULL, 0, 0); ref->new_oid.hash, NULL, 0, 0);
free(rs.dst); free(rs.dst);
} }
} }
@ -648,7 +648,7 @@ static void print_ok_ref_status(struct ref *ref, int porcelain)
{ {
if (ref->deletion) if (ref->deletion)
print_ref_status('-', "[deleted]", ref, NULL, NULL, porcelain); print_ref_status('-', "[deleted]", ref, NULL, NULL, porcelain);
else if (is_null_sha1(ref->old_sha1)) else if (is_null_oid(&ref->old_oid))
print_ref_status('*', print_ref_status('*',
(starts_with(ref->name, "refs/tags/") ? "[new tag]" : (starts_with(ref->name, "refs/tags/") ? "[new tag]" :
"[new branch]"), "[new branch]"),
@ -658,7 +658,7 @@ static void print_ok_ref_status(struct ref *ref, int porcelain)
char type; char type;
const char *msg; const char *msg;
strbuf_addstr(&quickref, status_abbrev(ref->old_sha1)); strbuf_addstr(&quickref, status_abbrev(ref->old_oid.hash));
if (ref->forced_update) { if (ref->forced_update) {
strbuf_addstr(&quickref, "..."); strbuf_addstr(&quickref, "...");
type = '+'; type = '+';
@ -668,7 +668,7 @@ static void print_ok_ref_status(struct ref *ref, int porcelain)
type = ' '; type = ' ';
msg = NULL; msg = NULL;
} }
strbuf_addstr(&quickref, status_abbrev(ref->new_sha1)); strbuf_addstr(&quickref, status_abbrev(ref->new_oid.hash));
print_ref_status(type, quickref.buf, ref, ref->peer_ref, msg, porcelain); print_ref_status(type, quickref.buf, ref, ref->peer_ref, msg, porcelain);
strbuf_release(&quickref); strbuf_release(&quickref);
@ -1137,8 +1137,8 @@ static int run_pre_push_hook(struct transport *transport,
strbuf_reset(&buf); strbuf_reset(&buf);
strbuf_addf( &buf, "%s %s %s %s\n", strbuf_addf( &buf, "%s %s %s %s\n",
r->peer_ref->name, sha1_to_hex(r->new_sha1), r->peer_ref->name, oid_to_hex(&r->new_oid),
r->name, sha1_to_hex(r->old_sha1)); r->name, oid_to_hex(&r->old_oid));
if (write_in_full(proc.in, buf.buf, buf.len) != buf.len) { if (write_in_full(proc.in, buf.buf, buf.len) != buf.len) {
ret = -1; ret = -1;
@ -1218,8 +1218,8 @@ int transport_push(struct transport *transport,
if ((flags & TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND) && !is_bare_repository()) { if ((flags & TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND) && !is_bare_repository()) {
struct ref *ref = remote_refs; struct ref *ref = remote_refs;
for (; ref; ref = ref->next) for (; ref; ref = ref->next)
if (!is_null_sha1(ref->new_sha1) && if (!is_null_oid(&ref->new_oid) &&
!push_unpushed_submodules(ref->new_sha1, !push_unpushed_submodules(ref->new_oid.hash,
transport->remote->name)) transport->remote->name))
die ("Failed to push all needed submodules!"); die ("Failed to push all needed submodules!");
} }
@ -1230,8 +1230,8 @@ int transport_push(struct transport *transport,
struct string_list needs_pushing = STRING_LIST_INIT_DUP; struct string_list needs_pushing = STRING_LIST_INIT_DUP;
for (; ref; ref = ref->next) for (; ref; ref = ref->next)
if (!is_null_sha1(ref->new_sha1) && if (!is_null_oid(&ref->new_oid) &&
find_unpushed_submodules(ref->new_sha1, find_unpushed_submodules(ref->new_oid.hash,
transport->remote->name, &needs_pushing)) transport->remote->name, &needs_pushing))
die_with_unpushed_submodules(&needs_pushing); die_with_unpushed_submodules(&needs_pushing);
} }
@ -1284,8 +1284,8 @@ int transport_fetch_refs(struct transport *transport, struct ref *refs)
for (rm = refs; rm; rm = rm->next) { for (rm = refs; rm; rm = rm->next) {
nr_refs++; nr_refs++;
if (rm->peer_ref && if (rm->peer_ref &&
!is_null_sha1(rm->old_sha1) && !is_null_oid(&rm->old_oid) &&
!hashcmp(rm->peer_ref->old_sha1, rm->old_sha1)) !oidcmp(&rm->peer_ref->old_oid, &rm->old_oid))
continue; continue;
ALLOC_GROW(heads, nr_heads + 1, nr_alloc); ALLOC_GROW(heads, nr_heads + 1, nr_alloc);
heads[nr_heads++] = rm; heads[nr_heads++] = rm;

View File

@ -74,15 +74,15 @@ struct transport {
/** /**
* Push the objects and refs. Send the necessary objects, and * Push the objects and refs. Send the necessary objects, and
* then, for any refs where peer_ref is set and * then, for any refs where peer_ref is set and
* peer_ref->new_sha1 is different from old_sha1, tell the * peer_ref->new_oid is different from old_oid, tell the
* remote side to update each ref in the list from old_sha1 to * remote side to update each ref in the list from old_oid to
* peer_ref->new_sha1. * peer_ref->new_oid.
* *
* Where possible, set the status for each ref appropriately. * Where possible, set the status for each ref appropriately.
* *
* The transport must modify new_sha1 in the ref to the new * The transport must modify new_sha1 in the ref to the new
* value if the remote accepted the change. Note that this * value if the remote accepted the change. Note that this
* could be a different value from peer_ref->new_sha1 if the * could be a different value from peer_ref->new_oid if the
* process involved generating new commits. * process involved generating new commits.
**/ **/
int (*push_refs)(struct transport *transport, struct ref *refs, int flags); int (*push_refs)(struct transport *transport, struct ref *refs, int flags);

View File

@ -190,7 +190,7 @@ static int interpret_target(struct walker *walker, char *target, unsigned char *
if (!check_refname_format(target, 0)) { if (!check_refname_format(target, 0)) {
struct ref *ref = alloc_ref(target); struct ref *ref = alloc_ref(target);
if (!walker->fetch_ref(walker, ref)) { if (!walker->fetch_ref(walker, ref)) {
hashcpy(sha1, ref->old_sha1); hashcpy(sha1, ref->old_oid.hash);
free(ref); free(ref);
return 0; return 0;
} }