summaryrefslogtreecommitdiff
path: root/infra/dgit-repos-policy-debian
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2015-03-21 14:53:34 +0000
committerIan Jackson <ijackson@chiark.greenend.org.uk>2015-03-22 15:19:54 +0000
commitfb568448c56dc58293d9b7a817f25ef1fa082efc (patch)
treef4d633c468a0a4994346c0b38db4043a2f635158 /infra/dgit-repos-policy-debian
parent996984bbcc5c1c7b4ed734fdb7a3dd844f2ff567 (diff)
WIP Debian policy
Reorg taint tag a bit
Diffstat (limited to 'infra/dgit-repos-policy-debian')
-rwxr-xr-xinfra/dgit-repos-policy-debian25
1 files changed, 15 insertions, 10 deletions
diff --git a/infra/dgit-repos-policy-debian b/infra/dgit-repos-policy-debian
index 66bf8be..0f9d70f 100755
--- a/infra/dgit-repos-policy-debian
+++ b/infra/dgit-repos-policy-debian
@@ -168,11 +168,11 @@ sub getpackage () {
$pkg_secret = !!(~(stat _)[2] & 05);
}
-sub add_taint ($$) {
- my ($gitobjid, $gitobjtype, $reason) = @_;
+sub add_taint_by_tag ($$$) {
+ my ($tagname, $refobjid, $refobjtype) = @_;
my $tf = new File::Temp or die $!;
- print $tf "$gitobjid\n" or die $!;
+ print $tf "$refobjid^0\n" or die $!;
my $gcfpid = open GCF, "-|";
defined $gcfpid or die $!;
@@ -185,14 +185,22 @@ sub add_taint ($$) {
close $tf or die $!;
$_ = <GCF>;
m/^(\w+) (\w+) (\d+)\n/ or die "$objline ?";
- $1 eq $gitobjid or die "$! $gitobjid ?";
- $2 eq $gitobjtype or die "$! $gitobjtype ?";
+ my $gitobjid = $1;
+ my $gitobjtype = $2;
my $bytes = $3;
my $gitobjdata;
- $!=0; read GCF, $gitobjdata, $bytes == $bytes or die "$gitobjid $bytes $!";
+ if ($gitobjtype eq 'commit' or $gitobjtype eq 'tag') {
+ $!=0; read GCF, $gitobjdata, $bytes == $bytes
+ or die "$gitobjid $bytes $!";
+ }
close GCF;
+ my $reason =
+ "tag $tagname referred to this object in git tree but all".
+ " previously pushed versions were found to have been".
+ " removed from NEW (ie, rejected) (or never arrived)";
+
$poldbh->do("INSERT INTO taints".
" (package, gitobjid, gitobjtype, gitobjdata, time, comment)",
" VALUES (?,?,?,?,?,?)", {},
@@ -223,10 +231,7 @@ sub action__check_package () {
git_for_each_ref('refs/tags', sub {
my ($objid,$objtype,$fullrefname,$tagname) = @_;
- add_taint($objid,$objtype,
- "tag $tagname referred to this object in git tree but all".
- " previously pushed versions were found to have been".
- " removed from NEW (ie, rejected) (or never arrived)");
+ add_taint_by_tag($tagname,$objid,$objtype);
});
$?=0; $!=0; close TAGL or die "git for-each-ref $? $!";