Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 为什么';在提交之前,是否对最新版本进行Mercurial检查?_Svn_Mercurial_Dvcs - Fatal编程技术网

Svn 为什么';在提交之前,是否对最新版本进行Mercurial检查?

Svn 为什么';在提交之前,是否对最新版本进行Mercurial检查?,svn,mercurial,dvcs,Svn,Mercurial,Dvcs,在SVN中,如果主存储库中的本地版本不是最新的,则无法提交。Mercurial不检查这一点,允许您提交。然后你必须进行合并 如果有很多程序员在工作,那么这可能会导致一个大问题。有什么办法可以解决这个问题吗?Mercurial和SVN有两种截然不同的工作方式 SVN是集中式的,您提交的所有内容都将立即被所有其他人访问。这就是为什么您必须始终在每次更改之前提交。因此,您可以确定您所做的工作与其他人所做的修改仍然有效 使用Mercurial,提交是工作目录的本地提交。只有推送会分发给其他人。这就是为什

在SVN中,如果主存储库中的本地版本不是最新的,则无法提交。Mercurial不检查这一点,允许您提交。然后你必须进行合并


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

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

SVN是集中式的,您提交的所有内容都将立即被所有其他人访问。这就是为什么您必须始终在每次更改之前提交。因此,您可以确定您所做的工作与其他人所做的修改仍然有效

使用Mercurial,提交是工作目录的本地提交。只有
推送
会分发给其他人。这就是为什么每次提交都没有检查的原因。(这样,您也可以脱机工作,即不连接到存储库)

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

我所知道的每个DVC(D代表分布式)都有相同的处理提交/推送的方法,这是它们的许多优点之一。只要合并操作正确,就不会因此而出现问题

如果您真的想在每次提交时检查新的变更集,我认为可以使用一些钩子,但我真的不明白为什么。也许有人会提出这样的建议。

你暗示的“大问题”与Subversion和Mercurial没有什么不同。在一个系统中,您在
svn update
时隐式执行合并,在另一个系统中,您在
hg pull
之后显式执行合并。