summaryrefslogtreecommitdiff
path: root/src/triggers/post-compile/update-git-daemon-access-list
diff options
context:
space:
mode:
authorDavid Bremner <bremner@debian.org>2017-07-03 21:09:50 -0300
committerDavid Bremner <bremner@debian.org>2017-07-03 21:09:50 -0300
commitabea1a643d0afd8fd56658048d46aac2c215dc63 (patch)
treed82dee8ad23b57e0507b9f4253657b53341108a7 /src/triggers/post-compile/update-git-daemon-access-list
Import gitolite3_3.6.7.orig.tar.gz
[dgit import orig gitolite3_3.6.7.orig.tar.gz]
Diffstat (limited to 'src/triggers/post-compile/update-git-daemon-access-list')
-rwxr-xr-xsrc/triggers/post-compile/update-git-daemon-access-list41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/triggers/post-compile/update-git-daemon-access-list b/src/triggers/post-compile/update-git-daemon-access-list
new file mode 100755
index 0000000..446b0da
--- /dev/null
+++ b/src/triggers/post-compile/update-git-daemon-access-list
@@ -0,0 +1,41 @@
+#!/usr/bin/perl
+
+# update git-daemon-export-ok files in each repo
+# ----------------------------------------------------------------------
+
+use lib $ENV{GL_LIBDIR};
+use Gitolite::Rc;
+use Gitolite::Easy;
+use Gitolite::Common;
+
+use strict;
+use warnings;
+
+# ----------------------------------------------------------------------
+# skip if arg-0 is POST_CREATE and no arg-2 (user name) exists; this means
+# it's been triggered by a *normal* (not "wild") repo creation, which in turn
+# means a POST_COMPILE should be following so there's no need to waste time
+# running this once for each new repo
+exit 0 if @ARGV and $ARGV[0] eq 'POST_CREATE' and not $ARGV[2];
+
+my $EO = "git-daemon-export-ok";
+my $RB = $rc{GL_REPO_BASE};
+
+for my $d (`gitolite list-phy-repos | gitolite access % daemon R any`) {
+ my @F = split "\t", $d;
+ if ($F[2] =~ /DENIED/) {
+ unlink "$RB/$F[0].git/$EO";
+ } else {
+ textfile( file => $EO, repo => $F[0], text => "" );
+ }
+}
+
+# As a quick recap, the gitolite output looks somewhat like this:
+
+# bar^Idaemon^IR any bar daemon DENIED by fallthru$
+# foo^Idaemon^Irefs/.*$
+# fubar^Idaemon^Irefs/.*$
+# gitolite-admin^Idaemon^IR any gitolite-admin daemon DENIED by fallthru$
+# testing^Idaemon^Irefs/.*$
+
+# where I've typed "^I" to denote a tab.