#Git
Git Error "Schwerwiegend Repository nicht gefunden" beim clonen über http
Beim Einrichten eines Read only Git Repositories bin ich über den Fehler Schwerwiegend: Repository 'http://wega/testrepo.git/' nicht gefunden
gestolpert. Das Repo befindet sich auf einem Web Server auf dem der User git das Verzeichnis lesen und schreiben kann. Der www-data ist Mitglied in der Gruppe git und darf nur lesend auf die gehosteten Repos zugreifen.
git@wega:/var/www$ ls -lh
insgesamt 4,0K
drwxr-x--- 3 git git 4,0K 11. Feb 14:41 git
git@wega:/var/www$ ls -lh git/
insgesamt 4,0K
drwxr-xr-x 7 git git 4,0K 11. Feb 14:50 testrepo.git
Git Repository auf dem Web Server anlegen
Das Repo wurde mit der Git Option --bare
erzeugt und auf den Server kopiert.
marcel@puck:~/Git$ git clone --bare Blog testrepo.git
Klone in Bare-Repository 'testrepo.git' ...
Fertig.
marcel@puck:~/Git$ scp -r testrepo.git/ root@wega:/var/www/git/
Wenn man nun die Adresse des Webserver mit dem Unterverzeichnis des Repos aufruft, wird das Directory Listing richtig angezeigt.
Index of /testrepo.git
[ICO] Name Last modified Size Description
[PARENTDIR] Parent Directory -
[ ] HEAD 2023-02-11 14:41 21
[DIR] branches/ 2023-02-11 14:41 -
[ ] config 2023-02-11 14:41 118
[ ] description 2023-02-11 14:41 73
[DIR] hooks/ 2023-02-11 14:49 -
[DIR] info/ 2023-02-11 14:50 -
[DIR] objects/ 2023-02-11 14:50 -
[ ] packed-refs 2023-02-11 14:41 159
[DIR] refs/ 2023-02-11 14:41 -
Apache/2.4.55 (Debian) Server at wega Port 80
Git Repository über http clonen
Möchte man das Repo aber jetzt über http clonen, wird das mit der Fehlermeldung “Schwerwiegend Repository nicht gefunden” abgebrochen.
marcel@puck:~$ git clone http://wega/testrepo.git
Klone nach 'testrepo'...
Schwerwiegend: Repository 'http://wega/testrepo.git/' nicht gefunden
Der Grund dafür ist, dass Git zusätzliche Dateien erzeugen muss, damit man über http clonen kann. Diese Dateien müssen jedes mal, wenn sich das** Repository ändert, mit dem Befehl git update-server-info
**aktualisiert werden.
git@wega:/var/www/git/testrepo.git$ git update-server-info
Jetzt funktioniert das clonen über http.
marcel@puck:~$ git clone http://wega/testrepo.git/
Klone nach 'testrepo'...
Git Server Info automatisch mit Git Hook updaten
Praktischerweise bringt Git einen Beispiel Hook mit, der diese Dateien automatisch nach jedem Push aktualisiert. Um den Hook zu aktivieren, muss nur die Endung .sample
entfernt werden.
git@wega:/var/www/git/testrepo.git$ cat hooks/post-update.sample
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".
exec git update-server-info
git@wega:/var/www/git/testrepo.git$ mv hooks/post-update.sample hooks/post-update