有没有办法将子模块添加到裸git存储库?

时间:2011-08-05 04:55:53

标签: git gitosis git-submodules git-bare

我的gitosis服务器上有一些回购。其中一个是Main,它包括所有其他的。我从本地机器上使用它们,子模块层次结构是在我的本地机器上构建的。 Gitosis将repos作为裸(?),因此,不可能在服务器上包含子模块。问题是,Main repo有一个Redmine的裸克隆(项目管理.Redmine显示统计信息,提交'和文件的历史记录。它还允许在wiki中直接写入提交或文件或文件修订的reflink)。但是当文件放在子模块中时,redmine无法访问它们。那么,如何在裸仓库中显示子模块统计数据?


=== upd ===

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

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

redmine view differences issue with git submodules

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

1 个答案:

答案 0 :(得分:1)

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

子模块总是“包含”在一个简单的仓库中:子模块只是对相关提交的引用(加上子模块的repo的地址)。

Redmine的旅程是什么:

  • 在Redmine上下文中,.gitmodules中指定的地址(url)未知。
    例如,它使用gitolite:aRepoName,其中gitolite是在〜/ config文件中定义的ssh快捷方式(请参阅here for an example of config file):尝试使用完整的ssh uri方案:ssh:// [user @] host [:端口] [/ path],并检查该地址是否适用于您的工作站和Redmine服务器。

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

相关问题