Skip to content

Commit 32d0462

Browse files
peffgitster
authored andcommitted
fetch-pack: remove dead assignment to ref->new_sha1
In everything_local(), we used to assign the current ref's value found in ref->old_sha1 to ref->new_sha1 when we already have all the necessary objects to complete the history leading to that commit. This copying was broken at 49bb805 (Do not ask for objects known to be complete., 2005-10-19) and ever since we instead stuffed a random bytes in ref->new_sha1 here. No code complained or failed due to this breakage. It turns out that no code path that comes after this assignment even looks at ref->new_sha1 at all. - The only caller of everything_local(), do_fetch_pack(), returns this list of refs, whose element has bogus new_sha1 values, to its caller. It does not look at the elements itself, but does pass them to find_common, which looks only at the name and old_sha1 fields. - The only caller of do_fetch_pack(), fetch_pack(), returns this list to its caller. It does not look at the elements nor act on them. - One of the two callers of fetch_pack() is cmd_fetch_pack(), the top-level that implements "git fetch-pack". The only thing it looks at in the elements of the returned ref list is the old_sha1 and name fields. - The other caller of fetch_pack() is fetch_refs_via_pack() in the transport layer, which is a helper that implements "git fetch". It only cares about whether the returned list is empty (i.e. failed to fetch anything). Just drop the bogus assignment, that is not even necessary. The remote-tracking refs are updated based on a different list and not using the ref list being manipulated by this code path; the caller do_fetch_pack() created a copy of that real ref list and passed the copy down to this function, and modifying the elements here does not affect anything. Noticed-by: Kyle J. McKay <[email protected]> Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 626df76 commit 32d0462

File tree

1 file changed

+0
-3
lines changed

1 file changed

+0
-3
lines changed

fetch-pack.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -628,7 +628,6 @@ static int everything_local(struct fetch_pack_args *args,
628628

629629
for (retval = 1, ref = *refs; ref ; ref = ref->next) {
630630
const unsigned char *remote = ref->old_sha1;
631-
unsigned char local[20];
632631
struct object *o;
633632

634633
o = lookup_object(remote);
@@ -641,8 +640,6 @@ static int everything_local(struct fetch_pack_args *args,
641640
ref->name);
642641
continue;
643642
}
644-
645-
hashcpy(ref->new_sha1, local);
646643
if (!args->verbose)
647644
continue;
648645
fprintf(stderr,

0 commit comments

Comments
 (0)