diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2015-05-31 11:59:48 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2015-05-31 11:59:48 +0100 |
commit | 03894a4813bd99f86c188de61d72c0a05833e5cb (patch) | |
tree | 4c7af104cf5ca15b72672eb6b34dccf656ebbf57 /Debian/Dgit.pm | |
parent | 2f169a239c0ad428328fa2415649dc05318618bb (diff) |
Dgit.pm: git_for_each_tag_referring provides referred-to object id too
Diffstat (limited to 'Debian/Dgit.pm')
-rw-r--r-- | Debian/Dgit.pm | 12 |
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); }); } |