Es sollen zwei getrennte GIT-Verzeichnisse (de,fr) mit jeweils zwei Projekten (proj1,proj2) erstellt werden.
Es soll zwei getrennte Gruppen grp_de und grp_fr geben die jeweils auf ihre repos zugreifen können.
Die Gruppen sind auflösbar mittels winbind.
Zuerst muss eine normales Git-Verzeichnis /daten/git/
erstellt werden, dass über web erreichbar ist.(s.o.)
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 /daten/git/de/gitweb.cgi
und /daten/git/fr/gitweb.cgi
müssen entsprechend editiert werden.
our $projectroot = "/daten/git/de"; #bzw. our $projectroot = "/daten/git/fr";
die Dateien /daten/git/de/git.conf
und /daten/git/fr/git.conf
müssen entsprechend editiert werden.
$projectroot = "/daten/git/de"; $site_name = GIT-Repository Deutschland"; #bzw. $projectroot = "/daten/git/fr"; $site_name = GIT-Repository Frankreich";
Datei /daten/git/de/createRepoDE.sh
erstellen wie folgt:
#!/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 /daten/git/fr/createRepoFR.sh
erstellen wie folgt:
#!/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 /home/www-data/createfirstFileDE.sh
erstellen wie folgt:
#!/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 /home/www-data/createfirstFileFR.sh
erstellen wie folgt:
#!/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 /etc/apache2/conf/git
erstellen wie folgt:
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