【发布时间】:2018-11-22 22:36:23
【问题描述】:
我正在帮助维护一个开源项目,在该项目上,我们经常遇到子模块破坏我们历史构建的问题,因为它们会强制推送到其接受的 git 存储库。我意识到您可能需要强制推送到公共存储库可能有正当理由(例如,从代码库和历史记录中删除代码的监管或法律原因)。我想知道的是,在利用 git 子模块来减轻我们受到未来强制推送影响的风险时,我们可以做些什么吗?
我建议我们按分支跟踪子模块,尤其是在这些子模块利用发布分支最佳实践的情况下,但这似乎无济于事。即使在跟踪分支时,git 哈希仍然会提交到我们的仓库,如果他们重写提交历史,代码可能会从我们的子模块的远程仓库中删除。我是否正确地假设这意味着跟踪分支不会为我们提供任何额外的保护以防止未来的强制推送?有没有其他技术可以用来避免这个问题?
参考,子模块更新不使用分支:https://github.com/apache/incubator-mxnet/pull/13322 跟踪分支的子模块更新(注意两者都提交了当前哈希):https://github.com/apache/incubator-mxnet/pull/13378
【问题讨论】:
标签: git github git-submodules