svn - 为什么 Mercurial 在提交之前不检查最新版本?

标签 svn mercurial dvcs

在 SVN 中,如果您的本地修订版本未与主存储库保持同步,则您无法提交。 Mercurial 不会对此进行检查并允许您提交。然后你必须做一个 merge 。

如果有很多程序员在工作,那么这可能会导致一个大问题。有什么办法解决这个问题吗?

最佳答案

Mercurial 和 SVN 有两种截然不同的工作方式。

SVN 是中心化的,您提交的所有内容都可以立即被其他人访问。这就是为什么您必须始终在所有其他更改之上提交。因此,您可以确定您所做的仍然适用于其他人所做的修改。

使用 Mercurial,提交是在您的工作目录本地进行的。只有 push 会分发给其他人。这就是为什么没有检查每一次提交的原因。 (这样,您也可以离线工作,即无需连接到存储库)。

只有当您尝试推送您的更改时,Mercurial 才会检查您正在工作的分支上是否有新的提交。如果是这样,您可以强制推送(这将创建一个新头)或 merge 其他修改,从而承认其他人的工作。

据我所知,每个 DVCS(D 代表分布式)都有相同的处理提交/推送的方式,这是它们的众多优势之一。只要正确完成 merge ,您就不会因此遇到问题。

如果你真的想在每次提交时检查新的变更集,我认为可以用一些钩子(Hook)来做,但我真的不明白为什么。也许有人会提出这样的事情。

关于svn - 为什么 Mercurial 在提交之前不检查最新版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9139526/

相关文章:

svn - git svn dcommit 与 svn 用户名

Git:将部分分支复制到另一个分支

mercurial - Mercurial 错误:存储库不相关

version-control - 如何退出 Mercurial 中的 merge ,然后与该分支重新 merge ?

svn-externals 与自己的 svn-externals : how to recursively checkout?

iphone - 如何在Xcode中使用svn合并冲突(文件project.pbxproj)?

mercurial - 如何从 Mercurial 导出到化石?

linux - Mercurial 卡在 'hg pull' 上

version-control - 是否有可以管理大文件的分布式 VCS?

git - 我可以从另一个分支添加对暂存区的更改吗?