X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=bundle.c;h=f82baae3bd2736cd0abca6b2412e3c4fd363b1e6;hb=9b55aa03daebf43067021b7d58abea249229987b;hp=f48fd7d4c1c706b68e879e4dfabdd3fb8597a328;hpb=9fddaf78964a835160a0b27cdac724c27aab09bf;p=git.git diff --git a/bundle.c b/bundle.c index f48fd7d4c..f82baae3b 100644 --- a/bundle.c +++ b/bundle.c @@ -122,11 +122,8 @@ int verify_bundle(struct bundle_header *header, int verbose) req_nr = revs.pending.nr; setup_revisions(2, argv, &revs, NULL); - memset(&refs, 0, sizeof(struct object_array)); - for (i = 0; i < revs.pending.nr; i++) { - struct object_array_entry *e = revs.pending.objects + i; - add_object_array(e->item, e->name, &refs); - } + refs = revs.pending; + revs.leak_pending = 1; if (prepare_revision_walk(&revs)) die("revision walk setup failed"); @@ -144,8 +141,8 @@ int verify_bundle(struct bundle_header *header, int verbose) refs.objects[i].name); } - for (i = 0; i < refs.nr; i++) - clear_commit_marks((struct commit *)refs.objects[i].item, -1); + clear_commit_marks_for_object_array(&refs, ALL_REV_FLAGS); + free(refs.objects); if (verbose) { struct ref_list *r; @@ -380,12 +377,15 @@ int create_bundle(struct bundle_header *header, const char *path, return 0; } -int unbundle(struct bundle_header *header, int bundle_fd) +int unbundle(struct bundle_header *header, int bundle_fd, int flags) { const char *argv_index_pack[] = {"index-pack", - "--fix-thin", "--stdin", NULL}; + "--fix-thin", "--stdin", NULL, NULL}; struct child_process ip; + if (flags & BUNDLE_VERBOSE) + argv_index_pack[3] = "-v"; + if (verify_bundle(header, 0)) return -1; memset(&ip, 0, sizeof(ip));