使用Mercurial处理只读SVN存储库:合并来自主干的更新

时间:2011-08-31 21:45:52

标签: svn mercurial

我可以访问一个SVN存储库,我可以偶尔获取修订版的快照(如.gz,而不是svn update)并且正在攻击代码以添加一些我无意推回的自定义到SVN回购。我正在使用mercurial来管理我的本地副本,并且已经看到了两种处理这种情况的方法。

  1. 根据https://www.mercurial-scm.org/wiki/SubversionToMercurialHowto中列出的方法,将未修改的svn repo存储在一个分支中,在另一个分支中工作,然后更新svn并拉出更改并合并冲突。

  2. 只需保留两个独立的repos并从基于svn的克隆中执行hg pull -f到工作的克隆,然后合并冲突。

  3. 我想知道一种方法是否优于另一种方法,以及如何处理我无法轻易更新svn副本的事实,而是可能必须重新编写整个回购(除非那里)是另一种选择性替换已更改文件的方法。

1 个答案:

答案 0 :(得分:1)

根据对此other SO question的回答,我会说最好使用命名分支而不是克隆,因为跟踪变化的来源不同(如果在您的情况下这很重要) 。合并从Subversion存储库传入的更改与克隆或命名分支基本相同,并且更改来自(SVN,您的提交等)也无关紧要。 Mercurial将能够处理合并。

此外,Svn2Hg操作方法解释了一种能够将unified diff返回给SVN存储库的方法。所以,如果你无法承诺,你应该能够给某人一个统一的差异来应用你想要回馈的那些变化。

最后,如果您最终获得了对SVN仓库的访问权限,那么您将需要使用hgsubversion extension来将Hg转换为SVN客户端,并允许您将更改直接推送回SVN仓库。 / p>