我在一个团队中工作,我们在一个带有几个子存储库的Mercurial存储库中有一个代码:

main/
main/subrepo1/
main/subrepo1/subrepo2/


Mercurial的默认行为是,在“ main”中执行hg commit时,子存储库“ subrepo1”和“ subrepo2”中任何未完成的更改也将被提交。同样,当推送“ main”时,“ subrepo1”和“ subrepo2”中的所有传出提交也将被推送。

我们发现人们经常无意间在其子存储库中提交和推送更改(因为他们忘记了更改,并且默认情况下hg status不会显示递归更改)。我们还发现,这样的全局提交/推送在我们的团队中几乎总是偶然的。

Mercurial 1.7最近通过hg status -Shg outgoing -S改善了情况,这表明子存储库有所变化。但这仍然需要人们注意。

如果子目录中发生更改/提交,否则Mercurial中是否有办法使hg commithg push中止?

最佳答案

从Mercurial 1.8开始,有一个配置设置disables recursive commits。在父存储库.hg/hgrc中,您可以添加:

[ui]
commitsubrepos = no


如果父存储库中的提交在子存储库中发现未提交的更改,则整个提交都将中止,而不是静默地提交子存储库。

关于version-control - Mercurial子存储库:防止意外的递归提交和推送,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4856883/

10-15 15:58