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
Svn 我是否可以在本地使用Mercurial,并从/推送到Subversion存储库进行更新?_Svn_Mercurial_Hgsubversion - Fatal编程技术网

Svn 我是否可以在本地使用Mercurial,并从/推送到Subversion存储库进行更新?

Svn 我是否可以在本地使用Mercurial,并从/推送到Subversion存储库进行更新?,svn,mercurial,hgsubversion,Svn,Mercurial,Hgsubversion,作为一名自由职业者,我经常在使用Subversion存储库的公司工作 如果我可以使用Mercurial从这些存储库中获取代码,在脱机时跟踪我的更改,然后在恢复联机时将所有本地更改提交到公司的Subversion服务器,那将非常方便 这行吗?你有没有阅读过关于细节的好教程?你可以找到一些相关信息。试试看。它允许你这样做。您可以在本地将svn存储库(部分)克隆到hg存储库,并在本地和远程使用hg和svn(按您的期望推拉) 我在过去使用过它并取得了一些成功,但没有丰富的经验。我在一家使用CVS的公司工

作为一名自由职业者,我经常在使用Subversion存储库的公司工作

如果我可以使用Mercurial从这些存储库中获取代码,在脱机时跟踪我的更改,然后在恢复联机时将所有本地更改提交到公司的Subversion服务器,那将非常方便


这行吗?你有没有阅读过关于细节的好教程?

你可以找到一些相关信息。

试试看。它允许你这样做。您可以在本地将svn存储库(部分)克隆到hg存储库,并在本地和远程使用hg和svn(按您的期望推拉)


我在过去使用过它并取得了一些成功,但没有丰富的经验。

我在一家使用CVS的公司工作,因此HgSubversion不是一个选择。几天前我也遇到了同样的问题,并基于此开发了一个工作流:

我在CVS存储库所在的位置创建了一个Mercurial存储库,我将其视为“只读”。然后,我将这个“只读”hg repo克隆到工作存储库中,在本地进行更改/修复。我一直在为我制作的每个特性和修复克隆repo,但是您也可以只拥有一个repo,并使用不同的分支策略来管理您的开发。下面是这些策略的示例

此工作流的关键是拥有“只读”存储库。我曾经在我创建的第一个Mercurial存储库中进行更改,该存储库位于CVS之上。这是可行的,但在从CVS更新时会变得混乱。通过使用这个附加层,您可以分别处理自己的更改和从CV更新

与CVS保持同步

每当CVS中发生更改时,我都会进行CVS更新。对于“只读”hg存储库,这将显示为修改过的文件。为了同步Mercurial,我只需做一个

hg ci -m "Updated from CVS."
(因此,您将在我的hg日志中看到许多这样的消息)。此时,我的“只读”存储库与CVS同步。现在我可以去我克隆的任何存储库,发布
hg pull
,然后
hg update
来同步它们

将更改从hg提交回CVS

另一方面,当我想要提交到CVS时,我将进入我的一个工作存储库,在那里我已经将我的更改提交到了hg。然后我
hg将我的更改推回到“readonly”,跳到“readonly”存储库,执行
hg更新。从CVS的角度来看,这将显示为新修改的。然后我将
cvs提交
返回到cvs中。在这里,我必须在日志消息中重复/总结我在hg存储库中所做的工作

诚然,在这个工作流程中存在一些困难。您可以在hg中进行多个更改,这些更改加起来只在CVS/SVN中进行一个更改,这样历史记录就不会保存在CVS/SVN中,您必须总结提交消息。您必须手动管理保持CVS和“只读”存储库同步。这样做的好处是,您不需要安装任何额外的扩展名,您只需要从两个角度处理文件本身。正在发生的一切都是透明的,在你的控制之下

我仍在努力学习hg,但到目前为止,这个工作流程运行得相当好

提供了一个很好的图表,并指出此工作流适用于任何其他VCS:



(来源:)

这里有类似的问题:。我认为我的问题也应该继续存在;这是其中一个可以用很多不同的方式表达的问题。aa而这一个:关于窑溢出,或者不管它叫什么,这里有一个相同的问题:@bentsai:这是一个很好的解释,可能是将mercurial与任何其他风投一起使用的最基本的方式。对顾问来说很好。它需要一个图表,你可以把它放进你的答案中:我发现这种方法的唯一问题是你的Mercurial存储库中没有CVS历史记录,所以你在回顾更改时必须小心。这在很多情况下都是可以接受的。@Harvey:这个图表现在是一个断开的链接,有可能更新吗?