2

我有以下通过 grok mirror 填充的结构:

/var/opt/git/git-data/repositories
   /organization1  
      /teamA
        /repo1
        /repo2
      /teamB
        /repo3
        /repo4
  /organizationN          
      /teamN
        /repoN

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).

这是真的,因为父目录中没有 repo,但是如果我执行git instawebfrom/var/opt/git/git-data/repositories/organization/teamA/ 我会得到相同的错误,并且在该目录中是裸 repos 所在的位置(每个 repo 的 repoN.git 目录)

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

正如我在项目文档中所读到的,git instaweb 可以为多个 repos 服务,而不仅仅是一个,它在某个目录下查找 repos。

我究竟做错了什么?

4

1 回答 1

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

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

于 2017-02-20T13:00:28.633 回答