From f4e54d02b894064d370e461385b48701485672bd Mon Sep 17 00:00:00 2001 From: "brian m. carlson" Date: Tue, 10 Nov 2015 02:22:20 +0000 Subject: 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 Signed-off-by: Jeff King diff --git a/builtin/clone.c b/builtin/clone.c index caae43e..215d015 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -559,7 +559,7 @@ static void write_remote_refs(const struct ref *local_refs) for (r = local_refs; r; r = r->next) { if (!r->peer_ref) 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)) die("%s", err.buf); } @@ -579,9 +579,9 @@ static void write_followtags(const struct ref *refs, const char *msg) continue; if (ends_with(ref->name, "^{}")) continue; - if (!has_sha1_file(ref->old_sha1)) + if (!has_object_file(&ref->old_oid)) 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); } } @@ -601,7 +601,7 @@ static int iterate_ref_map(void *cb_data, unsigned char sha1[20]) if (!ref) return -1; - hashcpy(sha1, ref->old_sha1); + hashcpy(sha1, ref->old_oid.hash); *rm = ref->next; return 0; } @@ -650,12 +650,12 @@ static void update_head(const struct ref *our, const struct ref *remote, /* Local default branch link */ create_symref("HEAD", our->name, NULL); 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); install_branch_config(0, head, option_origin, our->name); } } 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 */ update_ref(msg, "HEAD", c->object.sha1, 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. * 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); } } @@ -1016,7 +1016,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix) * remote HEAD check. */ 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; break; } diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c index 4a6b340..19215b3 100644 --- a/builtin/fetch-pack.c +++ b/builtin/fetch-pack.c @@ -17,7 +17,7 @@ static void add_sought_entry_mem(struct ref ***sought, int *nr, int *alloc, unsigned char sha1[20]; if (namelen > 41 && name[40] == ' ' && !get_sha1_hex(name, sha1)) { - hashcpy(ref->old_sha1, sha1); + hashcpy(ref->old_oid.hash, sha1); name += 41; namelen -= 41; } @@ -210,7 +210,7 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix) while (ref) { printf("%s %s\n", - sha1_to_hex(ref->old_sha1), ref->name); + oid_to_hex(&ref->old_oid), ref->name); ref = ref->next; } diff --git a/builtin/fetch.c b/builtin/fetch.c index ed84963..d529318 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -196,7 +196,7 @@ static int will_fetch(struct ref **head, const unsigned char *sha1) { struct ref *rm = *head; while (rm) { - if (!hashcmp(rm->old_sha1, sha1)) + if (!hashcmp(rm->old_oid.hash, sha1)) return 1; 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. */ if (ends_with(ref->name, "^{}")) { - if (item && !has_sha1_file(ref->old_sha1) && - !will_fetch(head, ref->old_sha1) && + if (item && !has_object_file(&ref->old_oid) && + !will_fetch(head, ref->old_oid.hash) && !has_sha1_file(item->util) && !will_fetch(head, item->util)) item->util = NULL; @@ -251,7 +251,7 @@ static void find_non_local_tags(struct transport *transport, continue; 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); @@ -273,7 +273,7 @@ static void find_non_local_tags(struct transport *transport, { struct ref *rm = 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->next; } @@ -419,8 +419,8 @@ static int s_update_ref(const char *action, transaction = ref_transaction_begin(&err); if (!transaction || ref_transaction_update(transaction, ref->name, - ref->new_sha1, - check_old ? ref->old_sha1 : NULL, + ref->new_oid.hash, + check_old ? ref->old_oid.hash : NULL, 0, msg, &err)) goto fail; @@ -453,11 +453,11 @@ static int update_local_ref(struct ref *ref, struct branch *current_branch = branch_get(NULL); 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) - 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) strbuf_addf(display, "= %-*s %-*s -> %s", TRANSPORT_SUMMARY(_("[up to date]")), @@ -468,7 +468,7 @@ static int update_local_ref(struct ref *ref, if (current_branch && !strcmp(ref->name, current_branch->name) && !(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 * 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; } - if (!is_null_sha1(ref->old_sha1) && + if (!is_null_oid(&ref->old_oid) && starts_with(ref->name, "refs/tags/")) { int r; r = s_update_ref("updating tag", ref, 0); @@ -492,8 +492,8 @@ static int update_local_ref(struct ref *ref, return r; } - current = lookup_commit_reference_gently(ref->old_sha1, 1); - updated = lookup_commit_reference_gently(ref->new_sha1, 1); + current = lookup_commit_reference_gently(ref->old_oid.hash, 1); + updated = lookup_commit_reference_gently(ref->new_oid.hash, 1); if (!current || !updated) { const char *msg; const char *what; @@ -517,7 +517,7 @@ static int update_local_ref(struct ref *ref, if ((recurse_submodules != RECURSE_SUBMODULES_OFF) && (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); strbuf_addf(display, "%c %-*s %-*s -> %s%s", r ? '!' : '*', @@ -532,10 +532,10 @@ static int update_local_ref(struct ref *ref, int r; strbuf_add_unique_abbrev(&quickref, current->object.sha1, DEFAULT_ABBREV); 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) && (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); strbuf_addf(display, "%c %-*s %-*s -> %s%s", r ? '!' : ' ', @@ -549,10 +549,10 @@ static int update_local_ref(struct ref *ref, int r; strbuf_add_unique_abbrev(&quickref, current->object.sha1, DEFAULT_ABBREV); 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) && (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); strbuf_addf(display, "%c %-*s %-*s -> %s (%s)", r ? '!' : '+', @@ -580,7 +580,7 @@ static int iterate_ref_map(void *cb_data, unsigned char sha1[20]) if (!ref) return -1; /* end of the list */ *rm = ref->next; - hashcpy(sha1, ref->old_sha1); + hashcpy(sha1, ref->old_oid.hash); return 0; } @@ -631,7 +631,7 @@ static int store_updated_refs(const char *raw_url, const char *remote_name, continue; } - commit = lookup_commit_reference_gently(rm->old_sha1, 1); + commit = lookup_commit_reference_gently(rm->old_oid.hash, 1); if (!commit) 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) { ref = alloc_ref(rm->peer_ref->name); - hashcpy(ref->old_sha1, rm->peer_ref->old_sha1); - hashcpy(ref->new_sha1, rm->old_sha1); + oidcpy(&ref->old_oid, &rm->peer_ref->old_oid); + oidcpy(&ref->new_oid, &rm->old_oid); 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 */ case FETCH_HEAD_MERGE: fprintf(fp, "%s\t%s\t%s", - sha1_to_hex(rm->old_sha1), + oid_to_hex(&rm->old_oid), merge_status_marker, note.buf); for (i = 0; i < url_len; ++i) @@ -928,7 +928,7 @@ static int do_fetch(struct transport *transport, rm->peer_ref->name); if (peer_item) { 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); } } } diff --git a/builtin/ls-remote.c b/builtin/ls-remote.c index a310249..fa65a84 100644 --- a/builtin/ls-remote.c +++ b/builtin/ls-remote.c @@ -125,7 +125,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix) continue; if (!tail_match(pattern, ref->name)) 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 */ } return status; diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index f06f70a..ca38131 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -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) { 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) diff --git a/builtin/remote.c b/builtin/remote.c index e4c3ea1..68dec16 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -401,7 +401,7 @@ static int get_push_ref_states(const struct ref *remote_refs, if (!ref->peer_ref) 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, 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->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; - } else if (!hashcmp(ref->old_sha1, ref->new_sha1)) + } else if (!oidcmp(&ref->old_oid, &ref->new_oid)) 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; - else if (has_sha1_file(ref->old_sha1) && - ref_newer(ref->new_sha1, ref->old_sha1)) + else if (has_object_file(&ref->old_oid) && + ref_newer(ref->new_oid.hash, ref->old_oid.hash)) info->status = PUSH_STATUS_FASTFORWARD; else info->status = PUSH_STATUS_OUTOFDATE; diff --git a/connect.c b/connect.c index 108f5ab..d13a10a 100644 --- a/connect.c +++ b/connect.c @@ -166,7 +166,7 @@ struct ref **get_remote_heads(int in, char *src_buf, size_t src_len, if (!check_ref(name, flags)) continue; ref = alloc_ref(buffer + 41); - hashcpy(ref->old_sha1, old_sha1); + hashcpy(ref->old_oid.hash, old_sha1); *list = ref; list = &ref->next; got_at_least_one_head = 1; diff --git a/fetch-pack.c b/fetch-pack.c index 2dabee9..1a79db5 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -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) { - rev_list_insert_ref(NULL, ref->old_sha1); + rev_list_insert_ref(NULL, ref->old_oid.hash); } #define INITIAL_FLUSH 16 @@ -280,7 +280,7 @@ static int find_common(struct fetch_pack_args *args, fetching = 0; for ( ; refs ; refs = refs->next) { - unsigned char *remote = refs->old_sha1; + unsigned char *remote = refs->old_oid.hash; const char *remote_hex; struct object *o; @@ -570,7 +570,7 @@ static void filter_refs(struct fetch_pack_args *args, continue; if (get_sha1_hex(ref->name, sha1) || ref->name[40] != '\0' || - hashcmp(sha1, ref->old_sha1)) + hashcmp(sha1, ref->old_oid.hash)) continue; 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) { - mark_complete(ref->old_sha1); + mark_complete(ref->old_oid.hash); } 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) { struct object *o; - if (!has_sha1_file(ref->old_sha1)) + if (!has_object_file(&ref->old_oid)) continue; - o = parse_object(ref->old_sha1); + o = parse_object(ref->old_oid.hash); if (!o) 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. */ 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); 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); 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; o = lookup_object(remote); @@ -985,7 +985,7 @@ static void update_shallow(struct fetch_pack_args *args, if (!si->nr_ours && !si->nr_theirs) return; 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; if (args->update_shallow) { diff --git a/http-push.c b/http-push.c index 48f39b7..f2db3a6 100644 --- a/http-push.c +++ b/http-push.c @@ -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 * may be required for updating server info later. */ - if (repo->can_update_info_refs && !has_sha1_file(ref->old_sha1)) { - obj = lookup_unknown_object(ref->old_sha1); + if (repo->can_update_info_refs && !has_object_file(&ref->old_oid)) { + obj = lookup_unknown_object(ref->old_oid.hash); if (obj) { 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); } } @@ -1473,18 +1473,18 @@ static void add_remote_info_ref(struct remote_ls_ctx *ls) return; } - o = parse_object(ref->old_sha1); + o = parse_object(ref->old_oid.hash); if (!o) { fprintf(stderr, "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; free(ref); return; } 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) { 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) { 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); } @@ -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)); /* 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", remote_ref->name); - if (!has_sha1_file(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, sha1_to_hex(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, oid_to_hex(&remote_ref->old_oid)); /* Remote branch must be an ancestor of remote HEAD */ if (!verify_merge_base(head_sha1, remote_ref)) { @@ -1861,7 +1861,7 @@ int main(int argc, char **argv) if (!ref->peer_ref) 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) { error("Could not remove %s", ref->name); if (helper_status) @@ -1874,7 +1874,7 @@ int main(int argc, char **argv) continue; } - if (!hashcmp(ref->old_sha1, ref->peer_ref->new_sha1)) { + if (!oidcmp(&ref->old_oid, &ref->peer_ref->new_oid)) { if (push_verbosely) fprintf(stderr, "'%s': up-to-date\n", ref->name); if (helper_status) @@ -1883,11 +1883,11 @@ int main(int argc, char **argv) } if (!force_all && - !is_null_sha1(ref->old_sha1) && + !is_null_oid(&ref->old_oid) && !ref->force) { - if (!has_sha1_file(ref->old_sha1) || - !ref_newer(ref->peer_ref->new_sha1, - ref->old_sha1)) { + if (!has_object_file(&ref->old_oid) || + !ref_newer(ref->peer_ref->new_oid.hash, + ref->old_oid.hash)) { /* * We do not have the remote ref, or * we know that the remote ref is not @@ -1908,14 +1908,14 @@ int main(int argc, char **argv) continue; } } - hashcpy(ref->new_sha1, ref->peer_ref->new_sha1); + oidcpy(&ref->new_oid, &ref->peer_ref->new_oid); new_refs++; fprintf(stderr, "updating '%s'", ref->name); if (strcmp(ref->name, ref->peer_ref->name)) fprintf(stderr, " using '%s'", ref->peer_ref->name); 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 (helper_status) printf("ok %s\n", ref->name); @@ -1936,10 +1936,10 @@ int main(int argc, char **argv) /* Set up revision info for this refspec */ argv_array_push(&commit_argv, ""); /* ignored */ argv_array_push(&commit_argv, "--objects"); - argv_array_push(&commit_argv, sha1_to_hex(ref->new_sha1)); - if (!push_all && !is_null_sha1(ref->old_sha1)) + argv_array_push(&commit_argv, oid_to_hex(&ref->new_oid)); + if (!push_all && !is_null_oid(&ref->old_oid)) argv_array_pushf(&commit_argv, "^%s", - sha1_to_hex(ref->old_sha1)); + oid_to_hex(&ref->old_oid)); init_revisions(&revs, setup_git_directory()); setup_revisions(commit_argv.argc, commit_argv.argv, &revs, NULL); revs.edge_hint = 0; /* just in case */ @@ -1962,7 +1962,7 @@ int main(int argc, char **argv) run_request_queue(); /* 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; if (!rc) diff --git a/http.c b/http.c index 42f29ce..f5f2e78 100644 --- a/http.c +++ b/http.c @@ -1391,7 +1391,7 @@ int http_fetch_ref(const char *base, struct ref *ref) if (http_get_strbuf(url, &buffer, &options) == HTTP_OK) { strbuf_rtrim(&buffer); 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: ")) { ref->symref = xstrdup(buffer.buf + 5); ret = 0; diff --git a/remote-curl.c b/remote-curl.c index cc7a8a6..bc3af79 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -169,7 +169,7 @@ static struct ref *parse_info_refs(struct discovery *heads) data[i] = 0; ref_name = mid + 1; ref = alloc_ref(ref_name); - get_sha1_hex(start, ref->old_sha1); + get_oid_hex(start, &ref->old_oid); if (!refs) refs = ref; if (last_ref) @@ -348,7 +348,7 @@ static void output_refs(struct ref *refs) if (posn->symref) printf("@%s %s\n", posn->symref, posn->name); 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"); fflush(stdout); @@ -702,7 +702,7 @@ static int fetch_dumb(int nr_heads, struct ref **to_fetch) if (options.depth) die("dumb http transport does not support --depth"); 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_all = 1; @@ -763,7 +763,7 @@ static int fetch_git(struct discovery *heads, if (!*ref->name) die("cannot fetch by sha1 over smart http"); 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); @@ -815,7 +815,7 @@ static void parse_fetch(struct strbuf *buf) die("protocol error: expected sha/ref, got %s'", p); ref = alloc_ref(name); - hashcpy(ref->old_sha1, old_sha1); + hashcpy(ref->old_oid.hash, old_sha1); *list = ref; list = &ref->next; diff --git a/remote.c b/remote.c index 10f1ffc..4beebad 100644 --- a/remote.c +++ b/remote.c @@ -1075,7 +1075,7 @@ static void tail_link_ref(struct ref *ref, struct ref ***tail) static struct ref *alloc_delete_ref(void) { struct ref *ref = alloc_ref("(delete)"); - hashclr(ref->new_sha1); + oidclr(&ref->new_oid); return ref; } @@ -1095,7 +1095,7 @@ static int try_explicit_object_name(const char *name, if (match) { *match = alloc_ref(name); - hashcpy((*match)->new_sha1, sha1); + hashcpy((*match)->new_oid.hash, sha1); } return 0; } @@ -1190,7 +1190,7 @@ static int match_explicit(struct ref *src, struct ref *dst, case 0: if (starts_with(dst_value, "refs/")) 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", dst_value); 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)); for (ref = *dst; ref; ref = ref->next) { if (ref->peer_ref && - !is_null_sha1(ref->peer_ref->new_sha1)) - add_to_tips(&sent_tips, ref->peer_ref->new_sha1); + !is_null_oid(&ref->peer_ref->new_oid)) + add_to_tips(&sent_tips, ref->peer_ref->new_oid.hash); 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/")) 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 */ if (string_list_has_string(&dst_tag, ref->name)) 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 */ item = string_list_append(&src_tag, ref->name); 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 commit *commit; - if (is_null_sha1(ref->new_sha1)) + if (is_null_oid(&ref->new_oid)) continue; - commit = lookup_commit_reference_gently(ref->new_sha1, 1); + commit = lookup_commit_reference_gently(ref->new_oid.hash, 1); if (!commit) /* not pushing a commit, which is not an error */ continue; @@ -1374,7 +1374,7 @@ static void add_missing_tags(struct ref *src, struct ref **dst, struct ref ***ds /* Add it in */ 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); } } @@ -1481,7 +1481,7 @@ int match_push_refs(struct ref *src, struct ref **dst, /* Create a new one and link it */ 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, 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; 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) continue; - ref->deletion = is_null_sha1(ref->new_sha1); + ref->deletion = is_null_oid(&ref->new_oid); if (!ref->deletion && - !hashcmp(ref->old_sha1, ref->new_sha1)) { + !oidcmp(&ref->old_oid, &ref->new_oid)) { ref->status = REF_STATUS_UPTODATE; 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_no_trackback || - hashcmp(ref->old_sha1, ref->old_sha1_expect)) + oidcmp(&ref->old_oid, &ref->old_oid_expect)) 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 */ - 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/")) 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; - else if (!lookup_commit_reference_gently(ref->old_sha1, 1) || - !lookup_commit_reference_gently(ref->new_sha1, 1)) + else if (!lookup_commit_reference_gently(ref->old_oid.hash, 1) || + !lookup_commit_reference_gently(ref->new_oid.hash, 1)) 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; } @@ -1889,7 +1889,7 @@ int get_fetch_map(const struct ref *remote_refs, if (refspec->exact_sha1) { ref_map = alloc_ref(name); - get_sha1_hex(name, ref_map->old_sha1); + get_oid_hex(name, &ref_map->old_oid); } else { ref_map = get_remote_ref(remote_refs, name); } @@ -1930,7 +1930,7 @@ int resolve_remote_symref(struct ref *ref, struct ref *list) return 0; for (; list; list = list->next) if (!strcmp(ref->symref, list->name)) { - hashcpy(ref->old_sha1, list->old_sha1); + oidcpy(&ref->old_oid, &list->old_oid); return 0; } return 1; @@ -2140,7 +2140,7 @@ static int one_local_ref(const char *refname, const struct object_id *oid, len = strlen(refname) + 1; ref = xcalloc(1, sizeof(*ref) + len); - hashcpy(ref->new_sha1, oid->hash); + oidcpy(&ref->new_oid, oid); memcpy(ref->name, refname, len); **local_tail = ref; *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 (!all) { 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); } @@ -2185,7 +2185,7 @@ struct ref *guess_remote_head(const struct ref *head, for (r = refs; r; r = r->next) { if (r != head && 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 = &((*tail)->next); if (!all) @@ -2233,7 +2233,7 @@ static int get_stale_heads_cb(const char *refname, const struct object_id *oid, if (stale) { struct ref *ref = make_linked_ref(refname, &info->stale_refs_tail); - hashcpy(ref->new_sha1, oid->hash); + oidcpy(&ref->new_oid, oid); } clean_exit: @@ -2353,8 +2353,8 @@ static void apply_cas(struct push_cas_option *cas, continue; ref->expect_old_sha1 = 1; if (!entry->use_tracking) - hashcpy(ref->old_sha1_expect, cas->entry[i].expect); - else if (remote_tracking(remote, ref->name, ref->old_sha1_expect)) + hashcpy(ref->old_oid_expect.hash, cas->entry[i].expect); + else if (remote_tracking(remote, ref->name, ref->old_oid_expect.hash)) ref->expect_old_no_trackback = 1; return; } @@ -2364,7 +2364,7 @@ static void apply_cas(struct push_cas_option *cas, return; 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; } diff --git a/remote.h b/remote.h index 312b7ca..163ea5e 100644 --- a/remote.h +++ b/remote.h @@ -79,9 +79,9 @@ extern const struct refspec *tag_refspec; struct ref { struct ref *next; - unsigned char old_sha1[20]; - unsigned char new_sha1[20]; - unsigned char old_sha1_expect[20]; /* used by expect-old */ + struct object_id old_oid; + struct object_id new_oid; + struct object_id old_oid_expect; /* used by expect-old */ char *symref; unsigned int force:1, diff --git a/send-pack.c b/send-pack.c index c6a4030..047bd18 100644 --- a/send-pack.c +++ b/send-pack.c @@ -102,11 +102,11 @@ static int pack_objects(int fd, struct ref *refs, struct sha1_array *extra, stru break; while (refs) { - if (!is_null_sha1(refs->old_sha1) && - !feed_object(refs->old_sha1, po.in, 1)) + if (!is_null_oid(&refs->old_oid) && + !feed_object(refs->old_oid.hash, po.in, 1)) break; - if (!is_null_sha1(refs->new_sha1) && - !feed_object(refs->new_sha1, po.in, 0)) + if (!is_null_oid(&refs->new_oid) && + !feed_object(refs->new_oid.hash, po.in, 0)) break; refs = refs->next; } @@ -284,8 +284,8 @@ static int generate_push_cert(struct strbuf *req_buf, continue; update_seen = 1; strbuf_addf(&cert, "%s %s %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), ref->name); } if (!update_seen) @@ -487,8 +487,8 @@ int send_pack(struct send_pack_args *args, if (check_to_send_update(ref, args) < 0) continue; - old_hex = sha1_to_hex(ref->old_sha1); - new_hex = sha1_to_hex(ref->new_sha1); + old_hex = oid_to_hex(&ref->old_oid); + new_hex = oid_to_hex(&ref->new_oid); if (!cmds_sent) { packet_buf_write(&req_buf, "%s %s %s%c%s", diff --git a/transport-helper.c b/transport-helper.c index 63d5427..91cb0e7 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -346,7 +346,7 @@ static int fetch_with_fetch(struct transport *transport, continue; 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); } @@ -489,7 +489,7 @@ static int fetch_with_import(struct transport *transport, else private = xstrdup(name); 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); 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); if (!private) 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); } strbuf_release(&buf); @@ -818,7 +818,7 @@ static int push_refs_with_push(struct transport *transport, if (ref->peer_ref) strbuf_addstr(&buf, ref->peer_ref->name); else - strbuf_addstr(&buf, sha1_to_hex(ref->new_sha1)); + strbuf_addstr(&buf, oid_to_hex(&ref->new_oid)); } strbuf_addch(&buf, ':'); 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 * 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 * can enumerate them from the refs. */ if (ref->expect_old_sha1) { struct strbuf cas = STRBUF_INIT; 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)); } } @@ -884,7 +884,7 @@ static int push_refs_with_export(struct transport *transport, if (private && !get_sha1(private, sha1)) { strbuf_addf(&buf, "^%s", private); string_list_append(&revlist_args, strbuf_detach(&buf, NULL)); - hashcpy(ref->old_sha1, sha1); + hashcpy(ref->old_oid.hash, sha1); } free(private); @@ -1016,12 +1016,12 @@ static struct ref *get_refs_list(struct transport *transport, int for_push) if (buf.buf[0] == '@') (*tail)->symref = xstrdup(buf.buf + 1); else if (buf.buf[0] != '?') - get_sha1_hex(buf.buf, (*tail)->old_sha1); + get_oid_hex(buf.buf, &(*tail)->old_oid); if (eon) { if (has_attribute(eon + 1, "unchanged")) { (*tail)->status |= REF_STATUS_UPTODATE; if (read_ref((*tail)->name, - (*tail)->old_sha1) < 0) + (*tail)->old_oid.hash) < 0) die(N_("Could not read ref %s"), (*tail)->name); } diff --git a/transport.c b/transport.c index 23b2ed6..1171b05 100644 --- a/transport.c +++ b/transport.c @@ -79,7 +79,7 @@ static int read_loose_refs(struct strbuf *path, int name_offset, continue; next = alloc_ref(path->buf + name_offset); if (read_in_full(fd, buffer, 40) != 40 || - get_sha1_hex(buffer, next->old_sha1)) { + get_oid_hex(buffer, &next->old_oid)) { close(fd); free(next); continue; @@ -131,7 +131,7 @@ static void insert_packed_refs(const char *packed_refs, struct ref **list) if (!(*list)->next || cmp < 0) { struct ref *next = alloc_ref(buffer + 41); 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); free(next); continue; @@ -162,7 +162,7 @@ static void set_upstreams(struct transport *transport, struct ref *refs, continue; if (!ref->peer_ref) continue; - if (is_null_sha1(ref->new_sha1)) + if (is_null_oid(&ref->new_oid)) continue; /* 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++) { struct ref_list_entry *e = data->header.references.list + i; struct ref *ref = alloc_ref(e->name); - hashcpy(ref->old_sha1, e->sha1); + hashcpy(ref->old_oid.hash, e->sha1); ref->next = result; 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); } else update_ref("update by push", rs.dst, - ref->new_sha1, NULL, 0, 0); + ref->new_oid.hash, NULL, 0, 0); free(rs.dst); } } @@ -648,7 +648,7 @@ static void print_ok_ref_status(struct ref *ref, int porcelain) { if (ref->deletion) 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('*', (starts_with(ref->name, "refs/tags/") ? "[new tag]" : "[new branch]"), @@ -658,7 +658,7 @@ static void print_ok_ref_status(struct ref *ref, int porcelain) char type; const char *msg; - strbuf_addstr(&quickref, status_abbrev(ref->old_sha1)); + strbuf_addstr(&quickref, status_abbrev(ref->old_oid.hash)); if (ref->forced_update) { strbuf_addstr(&quickref, "..."); type = '+'; @@ -668,7 +668,7 @@ static void print_ok_ref_status(struct ref *ref, int porcelain) type = ' '; 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); strbuf_release(&quickref); @@ -1137,8 +1137,8 @@ static int run_pre_push_hook(struct transport *transport, strbuf_reset(&buf); strbuf_addf( &buf, "%s %s %s %s\n", - r->peer_ref->name, sha1_to_hex(r->new_sha1), - r->name, sha1_to_hex(r->old_sha1)); + r->peer_ref->name, oid_to_hex(&r->new_oid), + r->name, oid_to_hex(&r->old_oid)); if (write_in_full(proc.in, buf.buf, buf.len) != buf.len) { ret = -1; @@ -1218,8 +1218,8 @@ int transport_push(struct transport *transport, if ((flags & TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND) && !is_bare_repository()) { struct ref *ref = remote_refs; for (; ref; ref = ref->next) - if (!is_null_sha1(ref->new_sha1) && - !push_unpushed_submodules(ref->new_sha1, + if (!is_null_oid(&ref->new_oid) && + !push_unpushed_submodules(ref->new_oid.hash, transport->remote->name)) 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; for (; ref; ref = ref->next) - if (!is_null_sha1(ref->new_sha1) && - find_unpushed_submodules(ref->new_sha1, + if (!is_null_oid(&ref->new_oid) && + find_unpushed_submodules(ref->new_oid.hash, transport->remote->name, &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) { nr_refs++; if (rm->peer_ref && - !is_null_sha1(rm->old_sha1) && - !hashcmp(rm->peer_ref->old_sha1, rm->old_sha1)) + !is_null_oid(&rm->old_oid) && + !oidcmp(&rm->peer_ref->old_oid, &rm->old_oid)) continue; ALLOC_GROW(heads, nr_heads + 1, nr_alloc); heads[nr_heads++] = rm; diff --git a/transport.h b/transport.h index 4336dd3..8ebaaf2 100644 --- a/transport.h +++ b/transport.h @@ -74,15 +74,15 @@ struct transport { /** * Push the objects and refs. Send the necessary objects, and * then, for any refs where peer_ref is set and - * peer_ref->new_sha1 is different from old_sha1, tell the - * remote side to update each ref in the list from old_sha1 to - * peer_ref->new_sha1. + * peer_ref->new_oid is different from old_oid, tell the + * remote side to update each ref in the list from old_oid to + * peer_ref->new_oid. * * Where possible, set the status for each ref appropriately. * * The transport must modify new_sha1 in the ref to the new * 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. **/ int (*push_refs)(struct transport *transport, struct ref *refs, int flags); diff --git a/walker.c b/walker.c index cdeb63f..ce2f57a 100644 --- a/walker.c +++ b/walker.c @@ -190,7 +190,7 @@ static int interpret_target(struct walker *walker, char *target, unsigned char * if (!check_refname_format(target, 0)) { struct ref *ref = alloc_ref(target); if (!walker->fetch_ref(walker, ref)) { - hashcpy(sha1, ref->old_sha1); + hashcpy(sha1, ref->old_oid.hash); free(ref); return 0; } -- cgit v0.10.2-6-g49f6