aboutsummaryrefslogtreecommitdiffstats
path: root/modules/git/manifests/repository.pp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/git/manifests/repository.pp')
-rw-r--r--modules/git/manifests/repository.pp40
1 files changed, 40 insertions, 0 deletions
diff --git a/modules/git/manifests/repository.pp b/modules/git/manifests/repository.pp
new file mode 100644
index 00000000..286ff45e
--- /dev/null
+++ b/modules/git/manifests/repository.pp
@@ -0,0 +1,40 @@
+class git::repository($group,
+ $description = '') {
+
+ include git::server
+ # http://eagleas.livejournal.com/18907.html
+ # TODO group permission should be handled here too
+ exec { "/usr/local/bin/create_git_repo.sh $name":
+ user => 'root',
+ group => $group,
+ creates => $name,
+ }
+
+ file { "$name/git-daemon-export-ok":
+ require => Exec["/usr/local/bin/create_git_repo.sh $name"]
+ }
+
+ file { "$name/description":
+ content => $description,
+ require => File["$name/git-daemon-export-ok"]
+ }
+
+ file { "$name/hooks/post-receive":
+ mode => '0755',
+ content => template('git/post-receive'),
+ require => File["$name/git-daemon-export-ok"]
+ }
+
+ file { "$name/config.puppet":
+ require => File["$name/git-daemon-export-ok"],
+ notify => Exec["/usr/local/bin/apply_git_puppet_config.sh $name"],
+ content => template('git/config.puppet'),
+ }
+
+ # $name is not really used, but this prevent duplicate declaration error
+ exec { "/usr/local/bin/apply_git_puppet_config.sh $name":
+ cwd => $name,
+ user => 'root',
+ refreshonly => true,
+ }
+}