diff options
author | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-07-06 12:30:25 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-11-23 10:56:30 +0000 |
commit | 14431b4087125e247c1e2322e0cd043b78974ce2 (patch) | |
tree | 405665b1630d67824f546c69814a5e187157524e | |
parent | d8d7f5f9d26b0a6fa9aa0e8766b8efc889e434c2 (diff) |
gpush: modernize syntax for specifying source and target
initially, git-gpush was just a glorified git-push, and hence it started
out accepting the same command line. however, one of the main
motivations for the script's existence was _avoiding_ the need to
specify things we already know, and therefore the regular push syntax
actually isn't very useful here in the common case.
to that effect, we deprecated the bare remote syntax over two years ago,
in favor of the (very rarely used) --remote option. this allows us now
to interpret a bare word as something more useful: the source of the
push, avoiding the need to always use a colon.
following the same logic, we now introduce the --branch option for
specifying the target branch, expecting that it will not be used much.
these two together allow us to deprecate the old way of specifying both
source and target.
Change-Id: I0964252d911b6e9fe32458cf309c6b5ee4f646ae
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
-rwxr-xr-x | bin/git-gpush | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/bin/git-gpush b/bin/git-gpush index 0e24c6f..d2db42d 100755 --- a/bin/git-gpush +++ b/bin/git-gpush @@ -23,7 +23,7 @@ sub usage { print << "EOM"; Usage: - git gpush [opts] [[sha1/ref-from]:[ref-to]] [+<reviewer>] [=<CC user>] + git gpush [opts] [sha1/ref-from] [+<reviewer>] [=<CC user>] Pushes Changes to Gerrit and adds reviewers and CC to the PatchSets. @@ -36,9 +36,6 @@ Description: If no sha1 or ref-from is specified, 'HEAD' is used. - If no ref-to is specified, the upstream branch for 'ref-from' is - used as the target branch. - Note that this program can be used in the middle of an interactive rebase, to push out the amended commits instantly. @@ -55,6 +52,10 @@ Options: -r, --remote Specify the git remote to push to. + -b, --branch + Specify the git branch to push for. If not specified, the + upstream branch for 'ref-from' is used as the target branch. + --aliases Report all registered aliases and quit. @@ -300,6 +301,9 @@ sub parse_arguments(@) } elsif ($arg eq "-r" || $arg eq "--remote") { die("--remote needs an argument.\n") if (!@_ || ($_[0] =~ /^-/)); $remote = shift @_; + } elsif ($arg eq "-b" || $arg eq "--branch") { + die("--branch needs an argument.\n") if (!@_ || ($_[0] =~ /^-/)); + $ref_to = shift @_; } elsif ($arg eq "--aliases") { foreach my $key (sort(keys %aliases)) { print "$key = $aliases{$key}\n"; @@ -314,12 +318,18 @@ sub parse_arguments(@) push @CCs, split(/,/, lookup_alias($1)); } elsif ($arg !~ /^\-/) { if ($arg =~ /(.*):(.*)/) { - $ref_from = $1 if (defined $1 && $1 ne ""); - $ref_to = $2 if (defined $2 && $2 ne ""); + if (length($1)) { + $ref_from = $1; + print STDERR "Warning: Specifying <ref-from>: is deprecated.". + " Use just <ref-from> instead.\n"; + } + if (length($2)) { + $ref_to = $2; + print STDERR "Warning: Specifying :<ref-to> is deprecated.". + " Use --branch instead.\n"; + } } else { - print STDERR "Warning: Specifying a bare remote is deprecated.". - " Use --remote instead.\n"; - $remote = $arg; + $ref_from = $arg; } } else { die("Unrecognized option '$arg'.\n"); |