Sonderfall mit mehreren Repos in mehreren getrennten Gruppen
Es sollen zwei getrennte GIT-Verzeichnisse (de,fr) mit jeweils zwei Projekten (proj1,proj2) erstellt werden. su www-data mkdir /daten/git/de mkdir /daten/git/fr cp -avr /daten/git/static /daten/git/de/static mv -avr /daten/git/static /daten/git/fr/static cp /daten/git/gitweb.cgi /daten/git/de/ mv /daten/git/gitweb.cgi /daten/git/fr/ cp /etc/gitweb.conf /daten/git/de/git.conf mv /etc/gitweb.cgi /daten/git/fr/git.conf
die Dateien our $projectroot = "/daten/git/de"; #bzw. our $projectroot = "/daten/git/fr";
die Dateien $projectroot = "/daten/git/de"; $site_name = GIT-Repository Deutschland"; #bzw. $projectroot = "/daten/git/fr"; $site_name = GIT-Repository Frankreich";
Datei #!/bin/bash verz=$1 cd /daten/git/de mkdir /daten/git/de/$verz cd /daten/git/de/$verz pwd git init --bare mv hooks/post-update.sample hooks/post-update echo "$verz-Repository">/daten/git/de/$verz/description chown -R www-data:www-data /daten/git/de/$verz cd .. ###Ende datei /daten/git/de/createRepoDE.sh
Datei #!/bin/bash verz=$1 cd /daten/git/fr mkdir /daten/git/fr/$verz cd /daten/git/fr/$verz pwd git init --bare mv hooks/post-update.sample hooks/post-update echo "$verz-Repository">/daten/git/fr/$verz/description chown -R www-data:www-data /daten/git/fr/$verz cd .. ###Ende datei /daten/git/fr/createRepoFR.sh chmod +x /daten/git/de/createRepoDE.sh /daten/git/fr/createRepoFR.sh Jetzt können die Repositories schonmal erstellt werden: cd /daten/git/de/ ./createRepoDE.sh proj1 ./createRepoDE.sh proj2 cd /daten/git/fr/ ./createRepoFR.sh proj1 ./createRepoFR.sh proj2 jetzt muss das jeweilige Repo einmalig auf dem Server per file ausgecheckt und wieder eingecheckt werden: cd /home/www-data
Datei #!/bin/bash git clone /daten/git/de/$1 cd $1 git branch echo "Willkommen im Repo $1!">Willkommen.txt git add . git commit -a -m "Initialer Commit von Scheffe" git push origin master cd .. ###Ende datei chmod /home/www-data/createfirstFileDE.sh
Datei #!/bin/bash git clone /daten/git/fr/$1 cd $1 git branch echo "Willkommen im Repo $1!">Willkommen.txt git add . git commit -a -m "Initialer Commit von Scheffe" git push origin master cd .. ###Ende datei chmod /home/www-data/createfirstFileFR.sh Jetzt die Datei einmalig ausführen : ./createfirstFileDE.sh proj1 ./createfirstFileDE.sh proj2 ./createfirstFileFR.sh proj1 ./createfirstFileFR.sh proj2 exit ##weiter als root
Datei Alias /git/de "/daten/git/de" <Directory "/daten/git/de"> DAV On Allow from all AllowOverride all Order allow,deny DirectoryIndex gitweb.cgi SetEnv GITWEB_CONFIG /daten/git/de/git.conf <Files gitweb.cgi> SetHandler cgi-script </Files> AuthType Basic AuthPAM_Enabled On AuthName "Git Repositories DE erfordern eine Anmeldung" AuthUserFile /dev/null AuthPAM_FallThrough On AuthBasicAuthoritative Off AuthGroup_Enabled On Require group grp_de </Directory> #Frankreich Alias /git/fr "/daten/git/fr" <Directory "/daten/git/fr"> DAV On Allow from all AllowOverride all Order allow,deny DirectoryIndex gitweb.cgi SetEnv GITWEB_CONFIG /daten/git/fr/git.conf <Files gitweb.cgi> SetHandler cgi-script </Files> AuthType Basic AuthPAM_Enabled On AuthName "Git Repositories FR erfordern eine Anmeldung" AuthUserFile /dev/null AuthPAM_FallThrough On AuthBasicAuthoritative Off AuthGroup_Enabled On Require group grp_fr </Directory> dann apache neu starten: apachectl restart Jetzt sind die Repos komischerweise auch per web von jedem anderen Rechner aus erreichbar: cd git clone http://domaenenbenutzer@meinserver/git/de/proj1 password: git clone http://domaenenbenutzer@meinserver/git/de/proj2 git clone http://domaenenbenutzer@meinserver/git/fr/proj1 git clone http://domaenenbenutzer@meinserver/git/fr/proj2 |