aboutsummaryrefslogtreecommitdiffstats
path: root/modules/git/manifests
diff options
context:
space:
mode:
Diffstat (limited to 'modules/git/manifests')
-rw-r--r--modules/git/manifests/client.pp3
-rw-r--r--modules/git/manifests/init.pp87
-rw-r--r--modules/git/manifests/mirror.pp20
-rw-r--r--modules/git/manifests/repository.pp40
-rw-r--r--modules/git/manifests/server.pp12
-rw-r--r--modules/git/manifests/snapshot.pp24
-rw-r--r--modules/git/manifests/svn.pp4
-rw-r--r--modules/git/manifests/svn_repository.pp35
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}"]
+ }
+}