version-control - Mercurial子存储库:防止意外的递归提交和推送

标签 version-control mercurial dvcs mercurial-subrepos

我在一个团队中工作,我们在一个带有几个子存储库的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/

相关文章:

Mercurial:在 "hg pull -u"之前强制执行 "hg commit"

svn - 从源代码控制开始

version-control - 在 Emacs Lisp 中获取 VC 根

version-control - Mercurial/Kiln 如何在不影响其他文件的情况下获取已删除的文件?

python - 尝试在 Windows 上克隆 pypy 的 Mercurial 存储库

mercurial - 在保存时间戳的同时备份Mercurial存储库

java - 推送project.properties问题

Mercurial,定义我自己的模板/关键字 : hostname

git - 像 perforce 一样具有 "pending changesets"的 DRCS(git、bzr、merc)?

linux - 如何使用 git 跟踪我的 Linux 发行版的变化?