diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-05-05 19:15:39 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-05-05 19:15:39 -0700 |
commit | dc484f2213a34ced5abe5eb968650035204b6035 (patch) | |
tree | 1e1d0d7563cc91bd52ffcb895b9f21a0ed2607c8 /builtin-push.c | |
parent | 2b3e60c245684fd68bab36c07fee9888ff24f4b4 (diff) | |
parent | 84bb2dfd9f4873c9ca19537efe62219b09ec03bf (diff) | |
download | git-dc484f2213a34ced5abe5eb968650035204b6035.tar.gz git-dc484f2213a34ced5abe5eb968650035204b6035.tar.xz |
Merge branch 'pb/remote-mirror-config'
* pb/remote-mirror-config:
Add a remote.*.mirror configuration option
Diffstat (limited to 'builtin-push.c')
-rw-r--r-- | builtin-push.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/builtin-push.c b/builtin-push.c index b68c6813b..b35aad68e 100644 --- a/builtin-push.c +++ b/builtin-push.c @@ -56,6 +56,17 @@ static int do_push(const char *repo, int flags) if (!remote) die("bad repository '%s'", repo); + if (remote->mirror) + flags |= (TRANSPORT_PUSH_MIRROR|TRANSPORT_PUSH_FORCE); + + if ((flags & (TRANSPORT_PUSH_ALL|TRANSPORT_PUSH_MIRROR)) && refspec) + return -1; + + if ((flags & (TRANSPORT_PUSH_ALL|TRANSPORT_PUSH_MIRROR)) == + (TRANSPORT_PUSH_ALL|TRANSPORT_PUSH_MIRROR)) { + return error("--all and --mirror are incompatible"); + } + if (!refspec && !(flags & TRANSPORT_PUSH_ALL) && remote->push_refspec_nr) { @@ -95,6 +106,7 @@ int cmd_push(int argc, const char **argv, const char *prefix) int dry_run = 0; int force = 0; int tags = 0; + int rc; const char *repo = NULL; /* default repository */ struct option options[] = { @@ -130,14 +142,10 @@ int cmd_push(int argc, const char **argv, const char *prefix) repo = argv[0]; set_refspecs(argv + 1, argc - 1); } - if ((flags & (TRANSPORT_PUSH_ALL|TRANSPORT_PUSH_MIRROR)) && refspec) - usage_with_options(push_usage, options); - if ((flags & (TRANSPORT_PUSH_ALL|TRANSPORT_PUSH_MIRROR)) == - (TRANSPORT_PUSH_ALL|TRANSPORT_PUSH_MIRROR)) { - error("--all and --mirror are incompatible"); + rc = do_push(repo, flags); + if (rc == -1) usage_with_options(push_usage, options); - } - - return do_push(repo, flags); + else + return rc; } |