Frage Was sind die Schritte, um git-http-backend w / Apache unter Windows zu installieren?


Ich möchte einen Git Server mit dem einrichten "Smart-HTTP" -Ansatz. Allerdings habe ich Schwierigkeiten, es in Windows zu arbeiten, und ich bin neu bei Apache. Meine httpd.conf, teilweise:

SetEnv GIT_PROJECT_ROOT "d:/repositories"
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ "C:/Program Files/Git/libexec/git-core/git-http-backend.exe"

<VirtualHost 172.16.0.5:80>
    <LocationMatch "^/git/.*/git-receive-pack$">
            AuthType Basic
            AuthName "Git Access"
            Require group committers
    </LocationMatch>
</VirtualHost>

Könnte jemand die Schritte zum Einrichten eines Git-Servers mit git-http-backend unter Windows bereitstellen?


6
2018-03-14 03:26


Ursprung




Antworten:


Es gibt ein paar kleine Details, damit dies unter Windows funktioniert, aber ich habe es mit der folgenden Konfiguration geschafft:

SetEnv GIT_PROJECT_ROOT d:/Export/GIT/
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ "C:/Progra~1/Git/libexec/git-core/git-http-backend.exe/"

<Directory "C:/Program Files/Git/libexec/git-core/">
  Options +ExecCGI
  Allow From All
</Directory>

Ich empfehle dringend, die Apache-Logs und Event Viewer zu sehen, was schief läuft.

Zum Beispiel,

  • libiconv.dll kann nicht gefunden werden. In Windows müssen DLL-Dateien in der $PATHoder der gleiche Ordner wie der .exe Datei. Am einfachsten ist es, die Datei zu kopieren.
  • In Apache müssen Berechtigungen gesetzt werden, um die ausführbare Datei auszuführen (ExecCGI Möglichkeit).

Nun, um das Debuggen fortzusetzen, hier ein paar Hinweise.

Der einfachste Weg, die Apache-Logs zu überwachen, besteht darin, die "Git bash" -Shell zu öffnen und den folgenden Befehl auszuführen:

tail -f /c/Program\ Files/Apache\ Software\ Foundation/Apache2.2/logs/{access,error}.log &

Sie können diesen Befehl und Pfad mit der TAB-Beendigung eingeben und 2x TAB drücken, um eine Liste von Vorschlägen zu erhalten. Das & am Ende verwandelt es sich in einen Hintergrundprozess. Jedes Mal, wenn Sie eine Anfrage stellen oder Apache neu starten, scrollen die neuen Protokollzeilen durch Ihren Bildschirm.

Das tail Prozess kann gestoppt werden, indem entweder:

jobs         # See the background jobs
kill %1      # Kill the specific process

oder:

fg           # Bring the first job in the foreground
Ctrl+C       # Kill the foreground process

Versuchen Sie nicht, die Git-URL in Ihrem Browser zu öffnen, das wird nicht funktionieren. Führen Sie stattdessen in der gleichen GIT Bash Shell die git clone Befehl. z.B.:

git clone http://localhost/git/somefolder.git

... und Sie werden sehen, dass die Logs blättern, indem Sie angeben, wo die Dinge schief gelaufen sind.


Seit der git-http-backend bietet kein HTML-Frontend, kann ich von ganzem Herzen empfehlen Gitphp dafür (beachte, dass es mehrere Projekte gibt, die fast gleich sind). Es ist einfach einzurichten und auch mit Unterstützung von msysGit erstellt. Dies sollte Ihnen ein nettes Web-Interface geben, um alle verfügbaren Repositories zu durchsuchen.

Ich bekomme Probleme mit Leerzeichen im Git-Ordner, diese sind am besten zu vermeiden.

Das Klonen der HTTP-URL erfordert mindestens msysGit 1.7.1, wenn Sie sich Passwörter merken möchten. Die Passwörter können in einem gespeichert werden _netrc Datei in Ihrem Profilordner (%USERPROFILE%) mit folgendem Layout:

machine git.mydomain.com login MyAccount password MyPassword

Alternativ können Sie die Anmeldeinformationen in der Klon-URL angeben, wodurch jedoch Submodule unterbrochen werden.


Fußnote: Wenn Ihr Server auch IIS 7 und .NET 4 unterstützt, sollten Sie auch einen Blick darauf werfen http://www.jeremyskinner.co.uk/2010/06/25/hosting-a-git-server-under-iis7-on-windows/ oder http://github.com/yysun/Git-Web-Access Diese Projekte bieten ein HTTP-Backend für Git, basierend auf .NET. Ich konnte diese Tools nicht verwenden, da auf dem Server weiterhin Windows 2003 ausgeführt wird.


7
2017-07-22 13:59





<comment_to_the_question>

Ich habe Schwierigkeiten, es in Windows zu verwenden

  1. Welche Schwierigkeiten?
  2. "In Windows" bedeutet von GNU / Linux, es funktioniert gut?

Sie sollten auch Protokolle anhängen apache und git, die Version von git um das Problem leichter zu finden.

</comment_to_the_question>

Die Konfigurationsdatei sieht für mich auf den ersten Blick gut aus. Versuchen Sie, die Authentifizierungsanforderung zu entfernen und ohne sie zuerst zu testen.


-1
2018-03-20 00:55