繁体   English   中英

有没有一种方法可以将子模块添加到裸露的git存储库中?

[英]Is there a way to add submodules to a bare git repository?

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


===更新===

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

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

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

现在,我将尝试为每个子模块创建一个子项目,也许然后它将按原样进行引用。 http://www.redmine.org/issues/3169完全相关。

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

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

可以使Redmine跳闸的是:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM