aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/git/manifests/init.pp54
1 files changed, 54 insertions, 0 deletions
diff --git a/modules/git/manifests/init.pp b/modules/git/manifests/init.pp
new file mode 100644
index 00000000..a11ea9fc
--- /dev/null
+++ b/modules/git/manifests/init.pp
@@ -0,0 +1,54 @@
+class git {
+ class common {
+ package { 'git-core':
+ }
+ }
+
+ class server inherits common {
+ # TODO
+ # integration with xinetd for anonymous co
+ # creation of /git
+ # define common syntax check, see svn
+ # proper policy : no-fast-forward
+ # no branch ?
+ # no binary
+ # no big file
+ # no empty commit message, no root
+ # automated push to another git repo ( see http://noone.org/blog/English/Computer/VCS/Thoughts%20on%20Gitorious%20and%20GitHub%20plus%20a%20useful%20git%20hook.futile
+ #
+ # how do we handle commit permission ?
+ }
+
+ define repository {
+ # TODO
+
+ }
+
+ class client inherits common {
+
+
+ }
+
+ define snapshot($source, $refresh ='*/5', $user = 'root') {
+ include git::client
+ #TODO
+ # should handle branch -> clone -n + branch + checkout
+ # create a script
+ # Idealy, should be handled by vcsrepo https://github.com/bruce/puppet-vcsrepo
+ # once it is merged in puppet
+ exec { "/usr/bin/git clone $source $name":
+ creates => $name,
+ user => $user
+ }
+
+ cron { "update $name":
+ # FIXME no -q ?
+ command => "cd $name && /usr/bin/git pull",
+ user => $user,
+ minute => $refresh
+ }
+ }
+}
+
+
+