X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=git-debrebase;h=35284d52ed8391436aed027f18e7cb9e089ef82b;hb=3e041f7eae8fcac38d485e17df481b9b0aeef9b8;hp=b61970ce2f57bbef33a8915334a12a73e0272d28;hpb=df9078a9e956ea6be6af328fcdbd2e22331077c1;p=dgit.git diff --git a/git-debrebase b/git-debrebase index b61970ce..35284d52 100755 --- a/git-debrebase +++ b/git-debrebase @@ -61,11 +61,15 @@ sub badusage ($) { finish 8; } -sub getoptions { +sub getoptions_main { my $m = shift; local $SIG{__WARN__}; # GetOptions calls `warn' to print messages GetOptions @_ or badusage $m; } +sub getoptions { + my $sc = shift; + getoptions_main "bad options follow \`git-debrebase $sc'", @_; +} sub cfg ($;$) { my ($k, $optional) = @_; @@ -1180,21 +1184,23 @@ sub do_stitch ($;$) { stitch($dangling_head, $ffq_prev, $gdrlast, $ffq_prev_commitish, $prose); } -sub resolve_upstream_version ($$) { - my ($new_upstream, $version) = @_; +sub upstream_commitish_search ($$) { + my ($upstream_version, $tried) = @_; + # todo: at some point maybe use git-deborig to do this + foreach my $tagpfx ('', 'v', 'upstream/') { + my $tag = $tagpfx.(dep14_version_mangle $upstream_version); + my $new_upstream = git_get_ref "refs/tags/$tag"; + return $new_upstream if length $new_upstream; + push @$tried, $tag; + } +} - my $new_upstream_version = "$version"; - $new_upstream_version =~ s/-.*?$//;; +sub resolve_upstream_version ($$) { + my ($new_upstream, $upstream_version) = @_; if (!defined $new_upstream) { my @tried; - # todo: at some point maybe use git-deborig to do this - foreach my $tagpfx ('', 'v', 'upstream/') { - my $tag = $tagpfx.(dep14_version_mangle $new_upstream_version); - $new_upstream = git_get_ref "refs/tags/$tag"; - last if length $new_upstream; - push @tried, $tag; - } + $new_upstream = upstream_commitish_search $upstream_version, \@tried; if (!length $new_upstream) { fail "Could not determine appropriate upstream commitish.\n". " (Tried these tags: @tried)\n". @@ -1203,7 +1209,7 @@ sub resolve_upstream_version ($$) { } $new_upstream = git_rev_parse $new_upstream; - return ($new_upstream, $new_upstream_version); + return $new_upstream; } sub cmd_new_upstream () { @@ -1223,9 +1229,9 @@ sub cmd_new_upstream () { } my $new_upstream = shift @ARGV; - my $new_upstream_version; - ($new_upstream, $new_upstream_version) = - resolve_upstream_version $new_upstream, $new_version; + my $new_upstream_version = upstreamversion $new_version; + $new_upstream = + resolve_upstream_version $new_upstream, $new_upstream_version; record_ffq_auto(); @@ -1536,7 +1542,7 @@ sub cmd_status () { sub cmd_stitch () { my $prose = 'stitch'; - getoptions("bad options follow \`git-debrebase stitch'", + getoptions("stitch", 'prose=s', \$prose); badusage "no arguments allowed" if @ARGV; do_stitch $prose, 0; @@ -1600,7 +1606,7 @@ sub make_patches ($) { sub cmd_make_patches () { my $opt_quiet_would_amend; - getoptions("bad options follow \`git-debrebase make-patches'", + getoptions("make-patches", 'quiet-would-amend!', \$opt_quiet_would_amend); badusage "no arguments allowed" if @ARGV; my $old_head = get_head(); @@ -1632,8 +1638,9 @@ sub cmd_convert_from_gbp () { my ($upstream_spec) = @ARGV; - my ($upstream, $upstream_version) = - resolve_upstream_version($upstream_spec, $version); + my $upstream_version = upstreamversion $version; + my $upstream = + resolve_upstream_version($upstream_spec, $upstream_version); my $old_head = get_head(); @@ -1821,7 +1828,8 @@ sub cmd_downstream_rebase_launder_v0 () { } } -getoptions("bad options\n", +getoptions_main + ("bad options\n", "D+" => \$debuglevel, 'noop-ok', => \$opt_noop_ok, 'f=s' => \@snag_force_opts,