diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2015-05-02 17:44:11 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2015-05-31 11:54:07 +0100 |
commit | 2965f30cca23b1cb7c1cf1d764b4f6b571f0a78e (patch) | |
tree | d0c51c9a8038b1ffb698613c1f3bef7fd2663f96 /infra/dgit-repos-policy-debian | |
parent | 08350aa0ad7092bd26e7fff5a563dec7a4e682e7 (diff) |
Policy hook sets mode of NEW repos (and policy protocol passes new repo pathname for this purpose)
Diffstat (limited to 'infra/dgit-repos-policy-debian')
-rwxr-xr-x | infra/dgit-repos-policy-debian | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/infra/dgit-repos-policy-debian b/infra/dgit-repos-policy-debian index cdfa80e..41a5551 100755 --- a/infra/dgit-repos-policy-debian +++ b/infra/dgit-repos-policy-debian @@ -247,6 +247,10 @@ sub action_push () { } sub action_push_confirm () { + getpackage(); + die unless @ARGV; + my $freshrepo = shift @ARGV; + my $initq = $poldbh->prepare(<<END); SELECT taint_id, gitobjid FROM taints t WHERE (package = ? OR package = '') @@ -355,6 +359,17 @@ END return 1; } + if (length $freshrepo) { + if (!good_suite_has_vsn_in_our_history()) { + stat $freshrepo or die "$freshrepo $!"; + my $oldmode = ((stat _)[2]); + my $oldwrites = $oldmode & 0222; + # remove r and x bits which have corresponding w bits clear + my $newmode = $oldmode & ($oldwrites << 1) & ($oldwrites > 1); + chmod $newmode, $freshrepo or die $!; + } + } + return 0; } |