chiark / gitweb /
dgit: infopair tag fetch: Support multiple tags
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 22 Sep 2016 11:52:16 +0000 (12:52 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 26 Sep 2016 00:16:59 +0000 (01:16 +0100)
No functional change with existing callers.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
dgit

diff --git a/dgit b/dgit
index cb6a17787a3152ec3326ab32c81bffb667949de0..216a9c3ed6112aece96bb25659330cd959b55c89 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -2367,15 +2367,22 @@ END
 };
 
 sub infopair_lrf_tag_lookup ($$) {
-    my ($tagname, $what) = @_;
-    printdebug "infopair_lrfetchref_tag_lookup $what\n";
-    my $lrefname = lrfetchrefs."/tags/$tagname";
-    my $tagobj = $lrfetchrefs_f{$lrefname};
-    defined $tagobj or fail <<END;
-Wanted tag $tagname ($what) on dgit server, but not found
+    my ($tagnames, $what) = @_;
+    # $tagname may be an array ref
+    my @tagnames = ref $tagnames ? @$tagnames : ($tagnames);
+    printdebug "infopair_lrfetchref_tag_lookup $what @tagnames\n";
+    foreach my $tagname (@tagnames) {
+       my $lrefname = lrfetchrefs."/tags/$tagname";
+       my $tagobj = $lrfetchrefs_f{$lrefname};
+       next unless defined $tagobj;
+       printdebug "infopair_lrfetchref_tag_lookup $tagobj $tagname $what\n";
+       return [ git_rev_parse($tagobj), $what ];
+    }
+    fail @tagnames==1 ? <<END : <<END;
+Wanted tag $what (@tagnames) on dgit server, but not found
+END
+Wanted tag $what (one of: @tagnames) on dgit server, but not found
 END
-    printdebug "infopair_lrfetchref_tag_lookup $tagobj $what\n";
-    return [ git_rev_parse($tagobj), $what ];
 }
 
 sub infopair_cond_ff ($$) {