我有一个gitlab版本7.3,当我使用普通存储库时工作完全正常。 但是,我在gitlab项目中添加了一个github子模块。 在我的回购中,我在提交和推送之后做了(git push --recurse-submodules = check)并且它运行良好。
但是现在,我可以在gitlab上看到我的提交,但是当我在带有chrome的gitlab上浏览它时,差异没有显示出来。 同时很好地显示了子模块外部文件的所有提交。 这是一个已知问题吗?
我还有别的办法吗?
答案 0 :(得分:2)
这是一个已知问题......关于Git本身。
今天解决了Git 2.11及其新git diff --submodule=diff
:
(来自What is new in Git 2.11的“Tim Pettersen”图片
这不能通过GitLab GUI获得,因为它刚刚在Git中发布。
注意:只有Git 2.13(2017年第二季度)修复了该功能中的错误:
commit 17b254c见Stefan Beller (stefanbeller
)(2017年3月31日)
(Junio C Hamano -- gitster
--合并于commit 1776a71,2017年4月17日)
在子模块中运行git diff --submodule=diff
,子模块中有自己的子模块有变化会收到错误:
fatal: bad object.
这种情况发生了,因为我们没有正确初始化环境 差异在子模块中运行 这意味着我们从主进程继承环境,主进程设置环境变量。 (显然我们设置环境变量,当不在子模块中时我们没有设置,即
.git
目录已链接)
注意:Git 2.14仍然改进了命令“git diff --submodule=diff
”,现在它会递归到嵌套的子模块中。
commit 5a52214见Stefan Beller (stefanbeller
)(2017年5月4日)
(Junio C Hamano -- gitster
--于2017年5月29日commit a531ecf合并)
diff
:递归嵌套子模块以进行内联差异当fd47ae6(
diff
:教diff
显示与内联差异的子模块差异时,2016-08-31,Git 2.11)被引入,我们没有想到递归到嵌套子模块。显示子模块的内联差异时,会自动递归 嵌套子模块以及内联子模块差异。