X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=walker.c;h=0e68ee6d2e2fb1b866ecec00c5f6446af366a62e;hb=d592b3157f70c9dac6288b28c46a64826c0abd18;hp=397b80de9e949ea7d70c723f7a58c9ffdaf0a168;hpb=65c6a4696a760f518c9f262705de030323c11146;p=git.git diff --git a/walker.c b/walker.c index 397b80de9..0e68ee6d2 100644 --- a/walker.c +++ b/walker.c @@ -59,6 +59,7 @@ static int process_tree(struct walker *walker, struct tree *tree) free(tree->buffer); tree->buffer = NULL; tree->size = 0; + tree->object.parsed = 0; return 0; } @@ -190,9 +191,13 @@ static int interpret_target(struct walker *walker, char *target, unsigned char * if (!get_sha1_hex(target, sha1)) return 0; if (!check_ref_format(target)) { - if (!walker->fetch_ref(walker, target, sha1)) { + struct ref *ref = alloc_ref_from_str(target); + if (!walker->fetch_ref(walker, ref)) { + hashcpy(sha1, ref->old_sha1); + free(ref); return 0; } + free(ref); } return -1; } @@ -256,7 +261,6 @@ int walker_fetch(struct walker *walker, int targets, char **target, int i; save_commit_buffer = 0; - track_object_refs = 0; for (i = 0; i < targets; i++) { if (!write_ref || !write_ref[i]) @@ -274,7 +278,7 @@ int walker_fetch(struct walker *walker, int targets, char **target, for (i = 0; i < targets; i++) { if (interpret_target(walker, target[i], &sha1[20 * i])) { - error("Could not interpret %s as something to pull", target[i]); + error("Could not interpret response from server '%s' as something to pull", target[i]); goto unlock_and_fail; } if (process(walker, lookup_unknown_object(&sha1[20 * i])))