diff options
-rwxr-xr-x | dgit | 23 |
1 files changed, 15 insertions, 8 deletions
@@ -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 ($$) { |