diff options
author | Junio C Hamano <gitster@pobox.com> | 2007-11-14 03:13:30 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-11-14 03:13:30 -0800 |
commit | bcd2e266a6270254212603e90186251116d3cd16 (patch) | |
tree | c0ba0c5c778a770947c22b273b9492853c4d5522 /builtin-push.c | |
parent | 2d4eb71c6c06e8f15351d996a9413974e15cab0b (diff) | |
parent | ff206748158aa54196bde1462ceaf550a5c2440e (diff) | |
download | git-bcd2e266a6270254212603e90186251116d3cd16.tar.gz |
Merge branch 'aw/mirror-push' into jk/send-pack
* aw/mirror-push:
git-push: add documentation for the newly added --mirror mode
Add tests for git push'es mirror mode
git-push: plumb in --mirror mode
Teach send-pack a mirror mode
send-pack: segfault fix on forced push
send-pack: require --verbose to show update of tracking refs
receive-pack: don't mention successful updates
more terse push output
Conflicts:
transport.c
transport.h
Diffstat (limited to 'builtin-push.c')
-rw-r--r-- | builtin-push.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/builtin-push.c b/builtin-push.c index 6d1da07c46..41df717f84 100644 --- a/builtin-push.c +++ b/builtin-push.c @@ -10,7 +10,7 @@ #include "parse-options.h" static const char * const push_usage[] = { - "git-push [--all] [--dry-run] [--tags] [--receive-pack=<git-receive-pack>] [--repo=all] [-f | --force] [-v] [<repository> <refspec>...]", + "git-push [--all | --mirror] [--dry-run] [--tags] [--receive-pack=<git-receive-pack>] [--repo=all] [-f | --force] [-v] [<repository> <refspec>...]", NULL, }; @@ -91,6 +91,7 @@ int cmd_push(int argc, const char **argv, const char *prefix) { int flags = 0; int all = 0; + int mirror = 0; int dry_run = 0; int force = 0; int tags = 0; @@ -100,6 +101,7 @@ int cmd_push(int argc, const char **argv, const char *prefix) OPT__VERBOSE(&verbose), OPT_STRING( 0 , "repo", &repo, "repository", "repository"), OPT_BOOLEAN( 0 , "all", &all, "push all refs"), + OPT_BOOLEAN( 0 , "mirror", &mirror, "mirror all refs"), OPT_BOOLEAN( 0 , "tags", &tags, "push tags"), OPT_BOOLEAN( 0 , "dry-run", &dry_run, "dry run"), OPT_BOOLEAN('f', "force", &force, "force updates"), @@ -121,13 +123,21 @@ int cmd_push(int argc, const char **argv, const char *prefix) add_refspec("refs/tags/*"); if (all) flags |= TRANSPORT_PUSH_ALL; + if (mirror) + flags |= (TRANSPORT_PUSH_MIRROR|TRANSPORT_PUSH_FORCE); if (argc > 0) { repo = argv[0]; set_refspecs(argv + 1, argc - 1); } - if ((flags & TRANSPORT_PUSH_ALL) && refspec) + 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"); + usage_with_options(push_usage, options); + } + return do_push(repo, flags); } |