summaryrefslogtreecommitdiff
path: root/Debian/Dgit.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Debian/Dgit.pm')
-rw-r--r--Debian/Dgit.pm12
1 files changed, 8 insertions, 4 deletions
diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm
index f20f1bc..a53cb82 100644
--- a/Debian/Dgit.pm
+++ b/Debian/Dgit.pm
@@ -200,14 +200,18 @@ sub git_for_each_ref ($$) {
sub git_for_each_tag_referring ($$) {
my ($objreferring, $func) = @_;
- # calls $func->($objid,$fullrefname,$tagname);
+ # calls $func->($tagobjid,$refobjid,$fullrefname,$tagname);
printdebug "git_for_each_tag_referring ",
($objreferring // 'UNDEF'),"\n";
git_for_each_ref('refs/tags', sub {
- my ($objid,$objtype,$fullrefname,$tagname) = @_;
+ my ($tagobjid,$objtype,$fullrefname,$tagname) = @_;
return unless $objtype eq 'tag';
- return if defined $objreferring and $objid ne $objreferring;
- $func->($objid,$fullrefname,$tagname);
+ my $refobjid = git_rev_parse $tagobjid;
+ return unless
+ !defined $objreferring # caller wants them all
+ or $tagobjid eq $objreferring
+ or $refobjid eq $objreferring;
+ $func->($tagobjid,$refobjid,$fullrefname,$tagname);
});
}