diff options
Diffstat (limited to 'modules/git/manifests')
| -rw-r--r-- | modules/git/manifests/client.pp | 3 | ||||
| -rw-r--r-- | modules/git/manifests/init.pp | 87 | ||||
| -rw-r--r-- | modules/git/manifests/mirror.pp | 20 | ||||
| -rw-r--r-- | modules/git/manifests/repository.pp | 40 | ||||
| -rw-r--r-- | modules/git/manifests/server.pp | 12 | ||||
| -rw-r--r-- | modules/git/manifests/snapshot.pp | 24 | ||||
| -rw-r--r-- | modules/git/manifests/svn.pp | 4 | ||||
| -rw-r--r-- | modules/git/manifests/svn_repository.pp | 35 |
8 files changed, 91 insertions, 134 deletions
diff --git a/modules/git/manifests/client.pp b/modules/git/manifests/client.pp new file mode 100644 index 00000000..2ba50721 --- /dev/null +++ b/modules/git/manifests/client.pp @@ -0,0 +1,3 @@ +class git::client { + include git::common +} diff --git a/modules/git/manifests/init.pp b/modules/git/manifests/init.pp index 50aa8d72..dece14f0 100644 --- a/modules/git/manifests/init.pp +++ b/modules/git/manifests/init.pp @@ -1,86 +1 @@ -class git { - 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 => '0755', - 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 => '0755', - 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 { } diff --git a/modules/git/manifests/mirror.pp b/modules/git/manifests/mirror.pp new file mode 100644 index 00000000..f7364846 --- /dev/null +++ b/modules/git/manifests/mirror.pp @@ -0,0 +1,20 @@ +define git::mirror( $source, + $description, + $refresh = '*/5') { + + include git::common + exec { "/usr/bin/git clone --mirror ${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 + } +} diff --git a/modules/git/manifests/repository.pp b/modules/git/manifests/repository.pp deleted file mode 100644 index 4f4f0615..00000000 --- a/modules/git/manifests/repository.pp +++ /dev/null @@ -1,40 +0,0 @@ -define 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, - } -} diff --git a/modules/git/manifests/server.pp b/modules/git/manifests/server.pp index 155cd9ae..3f07ed9c 100644 --- a/modules/git/manifests/server.pp +++ b/modules/git/manifests/server.pp @@ -7,10 +7,6 @@ class git::server { content => template('git/xinetd') } - file { $git_base_path: - ensure => directory - } - file { '/usr/local/bin/create_git_repo.sh': mode => '0755', source => 'puppet:///modules/git/create_git_repo.sh', @@ -24,16 +20,16 @@ class git::server { # TODO # define common syntax check, see svn - # http://stackoverflow.com/questions/3719883/git-hook-syntax-check + # https://stackoverflow.com/questions/3719883/git-hook-syntax-check # proper policy : fast-forward-only - # ( http://progit.org/book/ch7-4.html ) + # ( https://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 + # see https://www.itk.org/Wiki/Git/Hooks + # automated push to another git repo ( see https://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 diff --git a/modules/git/manifests/snapshot.pp b/modules/git/manifests/snapshot.pp new file mode 100644 index 00000000..06473efe --- /dev/null +++ b/modules/git/manifests/snapshot.pp @@ -0,0 +1,24 @@ +define git::snapshot( $source, + $refresh = '*/5', + $user = 'root', + $branch = 'master') { + include git::client + #TODO + # should handle branch -> clone -n + branch + checkout + # create a script + # Ideally, should be handled by vcsrepo + # https://github.com/bruce/puppet-vcsrepo + # once it is merged in puppet + exec { "/usr/bin/git clone -b ${branch} ${source} ${name}": + creates => $name, + user => $user + } + + if ($refresh != '0') { + cron { "update ${name}": + command => "cd ${name} && /usr/bin/git pull -q && /usr/bin/git submodule --quiet update --init --recursive", + user => $user, + minute => $refresh + } + } +} diff --git a/modules/git/manifests/svn.pp b/modules/git/manifests/svn.pp new file mode 100644 index 00000000..43df012b --- /dev/null +++ b/modules/git/manifests/svn.pp @@ -0,0 +1,4 @@ +class git::svn { + include git::client + package { 'git-svn': } +} diff --git a/modules/git/manifests/svn_repository.pp b/modules/git/manifests/svn_repository.pp new file mode 100644 index 00000000..ea215ce6 --- /dev/null +++ b/modules/git/manifests/svn_repository.pp @@ -0,0 +1,35 @@ +define git::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 => '0755', + 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 => '0755', + content => template('git/pre-receive'), + require => Exec["git svn ${name}"] + } +} |
