chiark / gitweb /
git-debrebase: resolve_upstream_version: Return $used too
[dgit.git] / git-debrebase
index 79c832188c7abfefd43f0b93d1f7dbb1565956ae..20e5728ec48794bad73ba21fa9ec30df2b19dc53 100755 (executable)
@@ -47,7 +47,7 @@ usages:
   git-debrebase [<options>] prepush [--prose=...]
   git-debrebase [<options>] quick|conclude
   git-debrebase [<options>] new-upstream <new-version> [<details ...>]
-  git-debrebase [<options>] convert-from-gbp [<upstream-commitish>]
+  git-debrebase [<options>] convert-from-* ...
   ...
 See git-debrebase(1), git-debrebase(5), dgit-maint-debrebase(7) (in dgit).
 END
@@ -2008,6 +2008,7 @@ sub upstream_commitish_search ($$) {
 sub resolve_upstream_version ($$) {
     my ($new_upstream, $upstream_version) = @_;
 
+    my $used = $new_upstream;
     if (!defined $new_upstream) {
        my @tried;
        $new_upstream = upstream_commitish_search $upstream_version, \@tried;
@@ -2018,10 +2019,12 @@ sub resolve_upstream_version ($$) {
                " Check version, and specify upstream commitish explicitly.",
                "@tried";
        }
+       $used = $tried[-1];
     }
     $new_upstream = git_rev_parse $new_upstream;
 
-    return $new_upstream;
+    return ($new_upstream, $used);
+    # used is a human-readable idea of what we found
 }
 
 sub cmd_new_upstream () {
@@ -2043,7 +2046,8 @@ sub cmd_new_upstream () {
 
     my $new_upstream = shift @ARGV;
     my $new_upstream_version = upstreamversion  $new_version;
-    $new_upstream =
+    my $new_upstream_used;
+    ($new_upstream, $new_upstream_used) =
        resolve_upstream_version $new_upstream, $new_upstream_version;
 
     record_ffq_auto();
@@ -2537,6 +2541,7 @@ sub complete_convert_from ($$$$) {
     update_head_checkout $old_head, $new_head, $mrest;
 }
 
+sub cmd_convert_from_unapplied () { cmd_convert_from_gbp(); }
 sub cmd_convert_from_gbp () {
     badusage __ "want only 1 optional argument, the upstream git commitish"
        unless @ARGV<=1;
@@ -2548,7 +2553,7 @@ sub cmd_convert_from_gbp () {
     my ($upstream_spec) = @ARGV;
 
     my $upstream_version = upstreamversion $version;
-    my $upstream =
+    my ($upstream, $upstream_used) =
        resolve_upstream_version($upstream_spec, $upstream_version);
 
     my ($old_head, $gdrlastinfo) = begin_convert_from();
@@ -3031,8 +3036,7 @@ getoptions_main
 initdebug('git-debrebase ');
 enabledebug if $debuglevel;
 
-my $toplevel = cmdoutput @git, qw(rev-parse --show-toplevel);
-chdir $toplevel or fail f_ "chdir toplevel %s: %s\n", $toplevel, $!;
+changedir_git_toplevel();
 
 $rd = fresh_playground "$playprefix/misc";