如何在迁移到mercurial后从svn repos中提取更改

时间:2010-02-15 23:59:51

标签: svn mercurial migration

我正在开发一个使用svn的开源项目的补丁。我没有提交权限,但我想版本跟踪我自己的更改。我跟着this guide读取并将svn repos转换为hg。

我希望能够将官方svn repos中的新更改添加到我自己的本地副本中,如何实现?导入后,我的本地文件夹包含一个未跟踪的.hgignore文件。我应该添加一个由mercurial跟踪的那个吗?

我也调查了this tool,但它似乎更倾向于在与svn repos连接的mercurial本地工作。我想把我的善变回归bitbucket,因为前指南似乎更有意义。

可能要提前思考,但稍后当我的贡献完成时,生成补丁以发送上游的最佳方法是什么?我是否应该立即注意到任何警告?

修改: orip's answer(编辑部分)总结了我想要做的事情:local hg copy update来自svn 1}}还push到我的在线bitbucket回购。

4 个答案:

答案 0 :(得分:2)

轻松获取新的更改:检查svn代码,并定期“svn update”,然后将这些下载的文件检入您的mercurial repo。

.hgignore文件告诉mercurial哪些文件类型不跟踪 - 即忽略。不要将它添加到你的mercurial repo中,它可能只包含与你的subversion global-ignores相同的排除。

SVN中的补丁生成很简单,执行svn diff > myPatch.diff(更新svn repo后)

答案 1 :(得分:2)

您可以考虑使用MQ。因此,您将同时由两个VCS管理项目:

  • SVN:曾经与主存储库保持同步
  • HG:从SVN每次更新后你将在哪里执行addremove命令,以及你将使用MQ编写补丁的地方。

这样做,当您将补丁提供给主存储库时,它会变得更加容易。

答案 2 :(得分:1)

您使用的指南将svn转换为hg,但是用于一次性转换,而不是用于持续的互操作性。

你需要像hgsubversion这样的东西。

编辑:刚刚注意到你在问题中与它相关联。在bitbucket上保存你的存储库的克隆应该没有问题 - 在本地使用hgsubversion与SVN交互,并像往常一样推送到bitbucket - 你有一个常规的hg repo。

答案 3 :(得分:1)

您可以查看TortoiseHg wiki on SVN - 使用TortoiseHg作为Subversion服务器的客户端部分,也许它可以帮助您做出关于Mercurial wiki中提供的工具的决定在您的问题中链接。

另外,请查看VonC就此问题给出的答案:Mercurial from Subversion: moves, renames and tags