# This class handles a gitolite installation, with /var/git as the root for # git repositories. class gitolite inherits git { # directory for gitolite user and repositories file { "/var/git": ensure => directory, mode => 0755, owner => gitolite, group => gitolite, } # repositories folder file { "/var/git/repositories": ensure => directory, owner => gitolite, group => gitolite, mode => 0755, recurse => false, } # symbolic link file { "/var/cache/git": ensure => "/var/git/repositories", force => true, backup => false, require => File['/var/git/repositories'], } # the needed packages package { "gitolite": ensure => installed } # make sure this is not installed package { "gitosis": ensure => purged } # ensures that the group exists group { "gitolite": ensure => present, allowdupe => false, require => Package["gitolite"], } # alters the user's home dir user { "gitolite": allowdupe => false, comment => "git repository hosting,,,", ensure => present, home => "/var/git", shell => "/bin/sh", gid => "gitolite", groups => [ "puppet" ], require => Group["gitolite"], } # tries to get rid of ugly directory structure file { "/srv/gitolite": ensure => absent, force => true, backup => false, require => User["gitolite"], } # we also don't need /var/gitolite file { "/var/lib/gitolite": ensure => absent, force => true, backup => false, require => User["gitolite"], } file { "/var/git/.gitolite.rc": ensure => present, owner => gitolite, group => gitolite, mode => 0644, source => "puppet:///modules/git/gitolite.rc.${::lsbdistcodename}", require => [ File['/var/git'], User['gitolite'] ], } file { "/var/git/projects.list": ensure => present, owner => gitolite, group => gitolite, mode => 0644, require => [ File['/var/git'], User['gitolite'] ], } # mass update script file { "/usr/local/sbin/git-mass-update-server-info": ensure => present, owner => root, group => root, mode => 0755, source => "puppet:///modules/git/git-mass-update-server-info", } # mass update hourly cron { "/usr/local/sbin/git-mass-update-server-info": command => "/usr/local/sbin/git-mass-update-server-info &> /dev/null", user => root, hour => "*/1", minute => "20", ensure => present, require => File['/usr/local/sbin/git-mass-update-server-info'], } # git-annex integration package { 'git-annex': ensure => present, } # wheezy onwards # http://git-annex.branchable.com/tips/using_gitolite_with_git-annex/ file { [ '/var/git/adc', '/var/git/adc/ua' ]: ensure => $::lsbdistcodename ? { 'squeeze' => absent, default => directory, }, owner => gitolite, group => gitolite, mode => 0755, require => File['/var/git'], } exec { 'git-annex-shell-copier': command => 'cp /usr/share/doc/gitolite/examples/adc/git-annex-shell /var/git/adc/ua/git-annex-shell', user => root, creates => '/var/git/adc/ua/git-annex-shell', onlyif => "test -f /usr/share/doc/gitolite/examples/adc/git-annex-shell", require => [ Package['git-annex'], File['/var/git/adc/ua'] ], } }