Sonderfall mit mehreren Repos in mehreren getrennten Gruppen

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