summaryrefslogtreecommitdiff
path: root/upload-pack.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-04-27 11:36:42 -0700
committerJunio C Hamano <gitster@pobox.com>2011-04-27 11:36:42 -0700
commit982f6c90ee94b4a2afe1394c1bc62b9914d8a978 (patch)
treefece1ff30082b18be11efbf30a74e9b84db5cdd9 /upload-pack.c
parent18b33bf425a2e4a142f5666dc6e76e2ed579a5ca (diff)
parentb9612197798dbfc622c766e83b1fe4c20bffae5c (diff)
downloadgit-982f6c90ee94b4a2afe1394c1bc62b9914d8a978.tar.gz
Merge branch 'jk/maint-upload-pack-shallow'
* jk/maint-upload-pack-shallow: upload-pack: start pack-objects before async rev-list
Diffstat (limited to 'upload-pack.c')
-rw-r--r--upload-pack.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/upload-pack.c b/upload-pack.c
index bba053f0aa..ce5cbbea6b 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -157,15 +157,8 @@ static void create_pack_file(void)
const char *argv[10];
int arg = 0;
- if (shallow_nr) {
- memset(&rev_list, 0, sizeof(rev_list));
- rev_list.proc = do_rev_list;
- rev_list.out = -1;
- if (start_async(&rev_list))
- die("git upload-pack: unable to fork git-rev-list");
- argv[arg++] = "pack-objects";
- } else {
- argv[arg++] = "pack-objects";
+ argv[arg++] = "pack-objects";
+ if (!shallow_nr) {
argv[arg++] = "--revs";
if (create_full_pack)
argv[arg++] = "--all";
@@ -183,7 +176,7 @@ static void create_pack_file(void)
argv[arg++] = NULL;
memset(&pack_objects, 0, sizeof(pack_objects));
- pack_objects.in = shallow_nr ? rev_list.out : -1;
+ pack_objects.in = -1;
pack_objects.out = -1;
pack_objects.err = -1;
pack_objects.git_cmd = 1;
@@ -192,8 +185,14 @@ static void create_pack_file(void)
if (start_command(&pack_objects))
die("git upload-pack: unable to fork git-pack-objects");
- /* pass on revisions we (don't) want */
- if (!shallow_nr) {
+ if (shallow_nr) {
+ memset(&rev_list, 0, sizeof(rev_list));
+ rev_list.proc = do_rev_list;
+ rev_list.out = pack_objects.in;
+ if (start_async(&rev_list))
+ die("git upload-pack: unable to fork git-rev-list");
+ }
+ else {
FILE *pipe_fd = xfdopen(pack_objects.in, "w");
if (!create_full_pack) {
int i;