我在一个团队中工作,我们在一个带有几个子存储库的Mercurial存储库中有一个代码:
main/
main/subrepo1/
main/subrepo1/subrepo2/
Mercurial的默认行为是,在“ main”中执行
hg commit
时,子存储库“ subrepo1”和“ subrepo2”中任何未完成的更改也将被提交。同样,当推送“ main”时,“ subrepo1”和“ subrepo2”中的所有传出提交也将被推送。我们发现人们经常无意间在其子存储库中提交和推送更改(因为他们忘记了更改,并且默认情况下
hg status
不会显示递归更改)。我们还发现,这样的全局提交/推送在我们的团队中几乎总是偶然的。Mercurial 1.7最近通过
hg status -S
和hg outgoing -S
改善了情况,这表明子存储库有所变化。但这仍然需要人们注意。如果子目录中发生更改/提交,否则Mercurial中是否有办法使
hg commit
和hg push
中止? 最佳答案
从Mercurial 1.8开始,有一个配置设置disables recursive commits。在父存储库.hg/hgrc
中,您可以添加:
[ui]
commitsubrepos = no
如果父存储库中的提交在子存储库中发现未提交的更改,则整个提交都将中止,而不是静默地提交子存储库。
关于version-control - Mercurial子存储库:防止意外的递归提交和推送,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4856883/