1

我的服务器上有一些带有 gitosis 的存储库。其中之一是 Main,它包括所有其他。我在本地机器上使用它们,并且子模块层次结构是在我的本地机器上构建的。Gitosis 的 repos 是裸露的(?)所以,不可能在服务器上包含子模块。问题是,Main repo 有一个 Redmine 的裸克隆(项目管理。Redmine 显示统计信息、提交和文件的历史记录。它还允许直接在 wiki 中编写提交或文件或文件修订的引用链接)。但是当文件放在子模块中时,redmine 无法访问它们。那么,如何使子模块统计信息在裸仓库中可见?


=== 更新 ===

我不确定我的子模块是否总是包含在内。Redmine 使用一个裸仓库的克隆,并且总是可以显示任何文件的统计信息,但子模块显示为大小为 0 的文件。我已经尝试过默认方案git@123.456.789.001:Main.git,现在ssh://git@123.456.789.001/Main.git子模块仍然显示为零长度文件。

git-status工作正常并显示来自子模块的未推送提交,但是 repos 是文件。这很奇怪,但是 redmine 现在显示来自子模块的提交,但是以它自己奇怪的方式,看看这个:

git子模块的redmine视图差异问题

现在我将尝试为每个子模块创建一个子项目,然后它可能会被引用。http://www.redmine.org/issues/3169是完全相关的。

4

1 回答 1

1

gitosis(或其更新版本gitolite)始终管理仓库,以允许任何用户(他们授权)推送而不担心与索引不同步的工作树。

并且子模块始终“包含”在裸仓库中:子模块只是对相关提交的引用(加上子模块仓库的地址)。

可能会绊倒Redmine的是:

  • .gitmodules 中指定的地址(url)在 Redmine 上下文中是未知的。
    例如,它使用 gitolite:aRepoName,其中 gitolite 是在您的 ~/config 文件中定义的 ssh 快捷方式(请参阅此处以获取配置文件的示例):尝试使用完整的 ssh uri 方案:ssh://[user@]host [:port][/path],并检查该地址在您的工作站和 Redmine 服务器上都有效。

  • 使用某些选项(例如默认为 false git status --ignore-submodules=allstatus.submodulesummary阻止状态显示已修改子模块的提交摘要):至少尝试确保 Redmine 处于status.submodulesummary设置为 true 的 git 环境中。

于 2011-08-05T06:12:18.567 回答