diff options
Diffstat (limited to 'upload-pack.c')
-rw-r--r-- | upload-pack.c | 45 |
1 files changed, 23 insertions, 22 deletions
diff --git a/upload-pack.c b/upload-pack.c index 89e832b64a..b3f6653ffd 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -130,14 +130,14 @@ static void create_pack_file(void) for (i = 0; i < want_obj.nr; i++) fprintf(pipe_fd, "%s\n", - sha1_to_hex(want_obj.objects[i].item->sha1)); + oid_to_hex(&want_obj.objects[i].item->oid)); fprintf(pipe_fd, "--not\n"); for (i = 0; i < have_obj.nr; i++) fprintf(pipe_fd, "%s\n", - sha1_to_hex(have_obj.objects[i].item->sha1)); + oid_to_hex(&have_obj.objects[i].item->oid)); for (i = 0; i < extra_edge_obj.nr; i++) fprintf(pipe_fd, "%s\n", - sha1_to_hex(extra_edge_obj.objects[i].item->sha1)); + oid_to_hex(&extra_edge_obj.objects[i].item->oid)); fprintf(pipe_fd, "\n"); fflush(pipe_fd); fclose(pipe_fd); @@ -316,17 +316,15 @@ static int reachable(struct commit *want) commit_list_insert_by_date(want, &work); while (work) { - struct commit_list *list = work->next; - struct commit *commit = work->item; - free(work); - work = list; + struct commit_list *list; + struct commit *commit = pop_commit(&work); if (commit->object.flags & THEY_HAVE) { want->object.flags |= COMMON_KNOWN; break; } if (!commit->object.parsed) - parse_object(commit->object.sha1); + parse_object(commit->object.oid.hash); if (commit->object.flags & REACHABLE) continue; commit->object.flags |= REACHABLE; @@ -493,7 +491,7 @@ static void check_non_tip(void) continue; if (!is_our_ref(o)) continue; - memcpy(namebuf + 1, sha1_to_hex(o->sha1), 40); + memcpy(namebuf + 1, oid_to_hex(&o->oid), GIT_SHA1_HEXSZ); if (write_in_full(cmd.in, namebuf, 42) < 0) goto error; } @@ -502,7 +500,7 @@ static void check_non_tip(void) o = want_obj.objects[i].item; if (is_our_ref(o)) continue; - memcpy(namebuf, sha1_to_hex(o->sha1), 40); + memcpy(namebuf, oid_to_hex(&o->oid), GIT_SHA1_HEXSZ); if (write_in_full(cmd.in, namebuf, 41) < 0) goto error; } @@ -536,7 +534,7 @@ error: o = want_obj.objects[i].item; if (!is_our_ref(o)) die("git upload-pack: not our ref %s", - sha1_to_hex(o->sha1)); + oid_to_hex(&o->oid)); } } @@ -648,8 +646,8 @@ static void receive_needs(void) struct object *object = &result->item->object; if (!(object->flags & (CLIENT_SHALLOW|NOT_SHALLOW))) { packet_write(1, "shallow %s", - sha1_to_hex(object->sha1)); - register_shallow(object->sha1); + oid_to_hex(&object->oid)); + register_shallow(object->oid.hash); shallow_nr++; } result = result->next; @@ -660,10 +658,10 @@ static void receive_needs(void) if (object->flags & NOT_SHALLOW) { struct commit_list *parents; packet_write(1, "unshallow %s", - sha1_to_hex(object->sha1)); + oid_to_hex(&object->oid)); object->flags &= ~CLIENT_SHALLOW; /* make sure the real parents are parsed */ - unregister_shallow(object->sha1); + unregister_shallow(object->oid.hash); object->parsed = 0; parse_commit_or_die((struct commit *)object); parents = ((struct commit *)object)->parents; @@ -675,14 +673,14 @@ static void receive_needs(void) add_object_array(object, NULL, &extra_edge_obj); } /* make sure commit traversal conforms to client */ - register_shallow(object->sha1); + register_shallow(object->oid.hash); } packet_flush(1); } else if (shallows.nr > 0) { int i; for (i = 0; i < shallows.nr; i++) - register_shallow(shallows.objects[i].item->sha1); + register_shallow(shallows.objects[i].item->oid.hash); } shallow_nr += shallows.nr; @@ -690,11 +688,12 @@ static void receive_needs(void) } /* return non-zero if the ref is hidden, otherwise 0 */ -static int mark_our_ref(const char *refname, const struct object_id *oid) +static int mark_our_ref(const char *refname, const char *refname_full, + const struct object_id *oid) { struct object *o = lookup_unknown_object(oid->hash); - if (ref_is_hidden(refname)) { + if (ref_is_hidden(refname, refname_full)) { o->flags |= HIDDEN_REF; return 1; } @@ -702,10 +701,12 @@ static int mark_our_ref(const char *refname, const struct object_id *oid) return 0; } -static int check_ref(const char *refname, const struct object_id *oid, +static int check_ref(const char *refname_full, const struct object_id *oid, int flag, void *cb_data) { - mark_our_ref(refname, oid); + const char *refname = strip_namespace(refname_full); + + mark_our_ref(refname, refname_full, oid); return 0; } @@ -728,7 +729,7 @@ static int send_ref(const char *refname, const struct object_id *oid, const char *refname_nons = strip_namespace(refname); struct object_id peeled; - if (mark_our_ref(refname, oid)) + if (mark_our_ref(refname_nons, refname, oid)) return 0; if (capabilities) { |