具有多个存储库的Git Instaweb无法正常工作

RuB*_*iCK 2 git instaweb

我通过grok镜像填充了以下estructure:

/var/opt/git/git-data/repositories
   /organization1  
      /teamA
        /repo1
        /repo2
      /teamB
        /repo3
        /repo4
  /organizationN          
      /teamN
        /repoN
Run Code Online (Sandbox Code Playgroud)

git instaweb对于单个存储库工作正常,但是如果我要自动git instaweb在“存储库”目录下显示所有存储库,则它不起作用:

fatal: Not a git repository (or any parent up to mount point /var/opt/git/git-data)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Run Code Online (Sandbox Code Playgroud)

这是正确的,因为在父目录中没有存储库,但是如果我git instaweb/var/opt/git/git-data/repositories/organization/teamA/ 那里执行,则会遇到相同的错误,并且该目录内是裸存储库所在的位置(每个存储库的repoN.git目录)

我设置了GIT_DISCOVERY_ACROSS_FILESYSTEM无结果的环境变量。我还设置/etc/gitweb.conf了以下条目:our $projectroot = "/var/opt/git/git-data/repositories";

正如我在该项目的文档中所读到的那样,git instaweb可以服务于多个存储库,而不仅仅是一个,而且它可以在特定目录下查找存储库。

我究竟做错了什么?

小智 5

我通过创建一个空的存储库并链接到我要浏览的存储库来做到这一点。由于instaweb运行gitweb并设置项目根目录的复杂方式,因此必须采取这种解决方法。

git init instaweb
cd instaweb
ln -s /var/opt/git/git-data/repositories/org1/teama/repo1 repo1-a-1
ln -s /var/opt/git/git-data/repositories/org2/teamb/repo2 repo2-b-2
git instaweb --httpd webrick
Run Code Online (Sandbox Code Playgroud)

服务器现在已经启动并运行,并且主页上将列出一个.git项目(这是您刚初始化的空存储库)以及您链接到的两个实际项目。