chiark / gitweb /
git-debrebase: Use git-deborig style upstream commitish finding
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 17 Jun 2018 12:04:39 +0000 (13:04 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 17 Jun 2018 12:14:21 +0000 (13:14 +0100)
As discussed in email with Sean.

We could use git-deborig --just-print --version= but its error
handling is rather troublesome.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
git-debrebase
git-debrebase.1.pod
tests/tests/gdr-newupstream-v0

index 769b9b943644b91e0ca9893602c6da66aeff059c..3de0aa9f1c1f62c569634e832b861e0f0dba0fc1 100755 (executable)
@@ -1140,7 +1140,23 @@ sub cmd_new_upstream_v0 () {
     my $new_version = (new Dpkg::Version scalar(shift @ARGV), check => 1);
     my $new_upstream_version = $new_version->version();
 
-    my $new_upstream = git_rev_parse (shift @ARGV // 'upstream');
+    my $new_upstream = shift @ARGV;
+    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;
+       }
+       if (!length $new_upstream) {
+           fail "Could not determine appropriate upstream commitish.\n".
+               " (Tried these tags: @tried)\n".
+               " Check version, and specify upstream commitish explicitly.";
+       }
+    }
+    $new_upstream = git_rev_parse $new_upstream;
 
     record_ffq_auto();
 
index 4d4c85a94992b7e83f68d5e8a20212176ee658c6..f17f1d670e3f5ffb529ecb5fa228f2109bcbab87 100644 (file)
@@ -142,7 +142,10 @@ The <upstream-details> are, optionally, in order:
 =item <upstream-commit-ish>
 
 The new upstream branch (or commit-ish).
-Default is C<upstream>.
+The default is to look for one of these tags, in this order:
+U vU upstream/U;
+where U is the new upstream version.
+(This is the same algorithm as L<git-deborig(1)>.)
 
 It is a snag if the upstream contains a debian/ directory;
 if forced to proceed,
index 9b283c0b7e328bf0b527c4973117247de819274c..485c8084893ca9c0a8050c0f61d06652e81324c6 100755 (executable)
@@ -30,6 +30,11 @@ v=2.1-1
 
 git checkout master
 
+t-expect-fail F:'Could not determine appropriate upstream commitish' \
+t-git-debrebase new-upstream-v0 $v
+
+git tag v2.1 upstream
+
 t-git-debrebase new-upstream-v0 $v
 t-gdr-good laundered
 
@@ -49,7 +54,7 @@ anchor=$(perl <../anal.anch -ne '
        exit;
 ')
 
-t-git-debrebase --anchor=$anchor -fanchor-treated new-upstream-v0 $v
+t-git-debrebase --anchor=$anchor -fanchor-treated new-upstream-v0 $v upstream
 t-gdr-good laundered
 
 t-git-debrebase stitch