Windows

在 Windows 上使用 Apache 設置 git-http-backend 的步驟是什麼?

  • July 2, 2013

我想使用“Smart-HTTP”方法設置一個 Git 伺服器。但是,我很難讓它在 Windows 中工作,而且我是 Apache 的新手。我的 httpd.conf,部分:

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>

有人可以提供在 Windows 上使用 git-http-backend 設置 Git 伺服器的步驟嗎?

有一些小細節可以讓它在 Windows 上執行,但我已經通過以下配置成功地做到了這一點:

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>

我強烈建議您查看 apache 日誌和事件查看器以查看問題所在。

例如,

  • libiconv.dll找不到。在 Windows 中,DLL 文件需要存在於$PATH, 或與文件相同的文件夾中.exe。最簡單的解決方法是複製文件。
  • 在 Apache 中,需要設置權限才能執行執行檔(ExecCGI選項)。

現在,要繼續調試,這裡有一些指示。

監控 apache 日誌的最簡單方法是打開“Git bash”外殼,然後執行以下命令:

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

您可以使用 TAB 補全輸入此命令和路徑,然後按 2x TAB 以獲取建議列表。最後&將其變成後台程序。每次您發出請求或重新啟動 apache 時,新的日誌行都會在您的螢幕上滾動。

tail可以使用以下任一方法停止該過程:

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

要麼:

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

不要嘗試在瀏覽器中打開 git URL,那是行不通的。相反,在同一個 GIT Bash shell 中,執行git clone命令。例如:

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

…您會看到日誌滾動顯示哪裡出了問題。


由於git-http-backend不提供任何 HTML 前端,我可以為此全心推薦gitphp(注意有多個項目名稱幾乎相同)。它易於設置,並且在建構時也考慮到了 msysGit 支持。這應該為您提供一個很好的 Web 界面來瀏覽所有可用的儲存庫。

我遇到了 git 文件夾中的空格問題,最好避免這些問題。

如果您想記住密碼,複製 HTTP url 至少需要 msysGit 1.7.1。密碼可以儲存在_netrc配置文件文件夾 ( %USERPROFILE%) 中的文件中,佈局如下:

machine git.mydomain.com login MyAccount password MyPassword

或者,您可以在複製 URL 中指定憑據,但這會破壞子模組。


腳註:當您的伺服器也支持 IIS 7 和 .NET 4 時,您可能還想查看http://www.jeremyskinner.co.uk/2010/06/25/hosting-a-git-server-under-iis7 -on-windows/http://github.com/yysun/Git-Web-Access這些項目為 Git 提供基於 .NET 的 HTTP 後端。我一直無法使用這些工具,因為伺服器仍然執行 Windows 2003。

引用自:https://serverfault.com/questions/122296