chiark / gitweb /
Repos policy machinery: better docs, etc.
[dgit.git] / Debian / Dgit.pm
index 4d9b81aa83af274469dbb2f302f090a82a9e46b8..6932d14a7d07f32ae57a8ef4005643c4be1ea903 100644 (file)
@@ -23,17 +23,12 @@ our @EXPORT_OK;
 our $package_re = '[0-9a-z][-+.0-9a-z]*';
 our $branchprefix = 'dgit';
 
-
 # policy hook exit status bits
-# any unexpected bits mean failure, and then known set bits are ignored
-
+# see dgit-repos-server head comment for documentation
+# 1 is reserved in case something fails with `exit 1'
 sub NOFFCHECK () { return 2; }
-# suppress dgit-repos-server's ff check ("push" only)
-
 sub FRESHREPO () { return 4; }
-# blow away repo right away (ie, as if before push or fetch)
-# ("check-package" and "push" only)
-
+# 128 is reserved
 
 sub debiantag ($) { 
     my ($v) = @_;
@@ -64,4 +59,15 @@ sub git_for_each_ref ($$) {
     $!=0; $?=0; close $fh or die "$pattern $? $!";
 }
 
+sub git_for_each_tag_referring ($$) {
+    my ($objreferring, $func) = @_;
+    # calls $func->($objid,$fullrefname,$tagname);
+    git_for_each_ref('refs/tags', sub {
+       my ($objid,$objtype,$fullrefname,$tagname) = @_;
+       next unless $objtype eq 'tag';
+       next if defined $objreferring and $objid ne $objreferring;
+       $func->($objid,$fullrefname,$tagname);
+    });
+}
+
 1;