diff options
Diffstat (limited to 'modules/git/manifests/init.pp')
| -rw-r--r-- | modules/git/manifests/init.pp | 173 |
1 files changed, 1 insertions, 172 deletions
diff --git a/modules/git/manifests/init.pp b/modules/git/manifests/init.pp index 5b1ef9ed..dece14f0 100644 --- a/modules/git/manifests/init.pp +++ b/modules/git/manifests/init.pp @@ -1,172 +1 @@ -class git { - class common { - package { 'git-core': } - } - - class server inherits common { - # http://www.kernel.org/pub/software/scm/git/docs/everyday.html#Repository%20Administration - $git_base_path = '/git/' - - xinetd::service { "git": - content => template('git/xinetd') - } - - file { "$git_base_path": - ensure => directory - } - - file { "/usr/local/bin/create_git_repo.sh": - mode => 755, - source => 'puppet:///modules/git/create_git_repo.sh', - } - - file { "/usr/local/bin/apply_git_puppet_config.sh": - mode => 755, - source => 'puppet:///modules/git/apply_git_puppet_config.sh', - } - - - # TODO - # define common syntax check, see svn - # http://stackoverflow.com/questions/3719883/git-hook-syntax-check - # proper policy : fast-forward-only - # ( http://progit.org/book/ch7-4.html ) - # no branch ? - # no binary - # no big file - # no empty commit message - # no commit from root - # see http://www.itk.org/Wiki/Git/Hooks - # 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 ? - # mail sending - # - } - - define repository($description = '', - $group ) { - - 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 => 755, - 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 - } - } - - define mirror($source, - $description, - $refresh = '*/5') { - - exec { "/usr/bin/git clone --bare $source $name": - alias => "git mirror $name", - creates => $name, - before => File["$name/description"], - } - - file { "$name/description": - content => $description, - } - - cron { "update $name": - command => "cd $name ; /usr/bin/git fetch -q", - minute => $refresh - } - } - - define svn_repository($source, - $std_layout = true, - $refresh = '*/5') { - include git::svn - include git::server - # a cron job - # a exec - if $std_layout { - $options = "-s" - } else { - $options = " " - } - - exec { "/usr/bin/git svn init $options $source $name": - alias => "git svn $name", - creates => $name, - } - - file { "/usr/local/bin/update_git_svn.sh": - mode => 755, - source => 'puppet:///modules/git/update_git_svn.sh', - } - - cron { "update $name": - # done in 2 times, so fetch can fill the repo after init - command => "/usr/local/bin/update_git_svn.sh $name" , - minute => $refresh - } - - file { "$name/.git/hooks/pre-receive": - mode => 755, - content => template('git/pre-receive'), - require => Exec["git svn $name"] - } - } - - class client inherits common { - - - } - - class svn inherits client { - package { "git-svn": } - } - - 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 - } - } -} +class git { } |
