在 Windows 上使用 Apache 设置 git-http-backend 的步骤是什么?

在 Windows 上使用 Apache 设置 git-http-backend 的步骤是什么?

我想使用以下方式设置 Git 服务器“智能 HTTP” 方法。但是,我在 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 服务器的步骤吗?

答案1

在 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”shell,并运行以下命令:

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

您可以使用 TAB 补全输入此命令和路径,然后按 2 次 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。

答案2

<comment_to_the_question>

我在 Windows 中无法使用它

  1. 有什么困难?
  2. “在 Windows 中”是否意味着在 GNU/Linux 中它可以正常工作?

您还应该附加apache和的日志git(版本),git以便更容易地追踪问题。

</comment_to_the_question>

配置文件乍一看没什么问题。请先尝试删除身份验证要求,然后在没有身份验证要求的情况下进行测试。

相关内容