aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Hengeveld <nickh@reactrix.com>2006-06-05 13:02:29 -0700
committerJunio C Hamano <junkio@cox.net>2006-06-05 17:39:44 -0700
commit441c823e892ba7408e87d26b6e77def5975c1c60 (patch)
treef99e963b45deb2a5cd0193a079eda7c077b1338b
parentce0bd64299ae148ef61a63edcac635de41254cb5 (diff)
downloadgit-441c823e892ba7408e87d26b6e77def5975c1c60.tar.gz
git-441c823e892ba7408e87d26b6e77def5975c1c60.tar.xz
builtin-push: don't pass --thin to HTTP transport
git-http-push does not currently use packs to transfer objects. Signed-off-by: Nick Hengeveld <nickh@reactrix.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--builtin-push.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/builtin-push.c b/builtin-push.c
index e53002282..66b940782 100644
--- a/builtin-push.c
+++ b/builtin-push.c
@@ -214,7 +214,7 @@ static int do_push(const char *repo)
{
const char *uri[MAX_URI];
int i, n;
- int remote;
+ int common_argc;
const char **argv;
int argc;
@@ -231,23 +231,25 @@ static int do_push(const char *repo)
argv[argc++] = "--force";
if (execute)
argv[argc++] = execute;
- if (thin)
- argv[argc++] = "--thin";
- remote = argc;
- argv[argc++] = "dummy-remote";
- while (refspec_nr--)
- argv[argc++] = *refspec++;
- argv[argc] = NULL;
+ common_argc = argc;
for (i = 0; i < n; i++) {
int error;
+ int dest_argc = common_argc;
+ int dest_refspec_nr = refspec_nr;
+ const char **dest_refspec = refspec;
const char *dest = uri[i];
const char *sender = "git-send-pack";
if (!strncmp(dest, "http://", 7) ||
!strncmp(dest, "https://", 8))
sender = "git-http-push";
+ else if (thin)
+ argv[dest_argc++] = "--thin";
argv[0] = sender;
- argv[remote] = dest;
+ argv[dest_argc++] = dest;
+ while (dest_refspec_nr--)
+ argv[dest_argc++] = *dest_refspec++;
+ argv[dest_argc] = NULL;
error = run_command_v(argc, argv);
if (!error)
continue;