windows - 使用 MSysgit 的 Perl intrepretor 在 Windows 上的 Apache 下 GitWeb 非常慢

标签 windows apache msysgit gitweb

我使用 Apache 2.2.22 (win64) 在 Windows Server 2008 R2 上运行 GitWeb。我按照这里的说明操作:https://git.wiki.kernel.org/index.php/MSysGit:GitWeb 说明上说我们应该使用msysgit版本的perl作为gitweb.cgi脚本中perl的第一行。

GitWeb 可以工作,但速度极慢,加载一个页面大约需要 10 秒。我注意到,即使我使用 msysgit 的 Perl 版本作为第一行编写“Hello World”脚本,Apache 执行该脚本的速度也很慢。但是,如果换成不同版本的Perl,比如cygwin的perl(C:/cygwin/bin/perl),又会很快。除了 msysgit 之外,我无法使用任何其他类型的 perl 来执行 gitweb.cgi,因为当我这样做时,我会收到“找不到项目”错误。

最佳答案

几个小时后,我找到了替代解决方案。我们不使用 msysgit 的 git 和 perl 版本,而是使用 cygwin 的:

1) 安装 Cygwin,并选择以下 cygwin 包:git(如果需要,还有 perl)

2) 修改gitweb.cgi文件3处。
gitweb.cgi 的第一行应该是:

#!C:/cygwin/bin/perl

确保正确设置 $GIT 变量,并采用“cygwin”格式:

our $GIT = "C:/cygwin/bin/git";

项目根目录必须是“cygwin”格式,而不是msysgit格式:

our $projectroot = "/cygdrive/c/temp/repos";

出于某种原因,cygwin 的 perl 版本在 apache 下的执行速度比在 msysgit 下的快得多。

关于windows - 使用 MSysgit 的 Perl intrepretor 在 Windows 上的 Apache 下 GitWeb 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14917230/

相关文章:

windows - 如何在 Go 中读取文件属性

git - 在 GIT 中撤消 checkout

git - windows上的Git Bash如何退出 'git diff'的结果?

java - Apache James 邮件服务器 - 将附件保存在文件系统上

linux - 在Linux上更改apachectl

GIT .mailmap 按 repo 协议(protocol)工作,但在全局范围内不工作,为什么?

c++ - 机器异常后重新执行程序

Java 代码意外地将 "&#13"附加到行尾

c++ - 位图到电影?

Apache2 重定向