2010-02-15 71 views
3

我正在为使用svn的开源项目的补丁工作。我没有提交访问权限,但我想要版本跟踪我自己的更改。我跟着this guide阅读并将svn回购转换为hg回购。如何在迁移到mercurial后从svn repos中提取更改

我希望能够将从官方svn回复新变化成我自己的本地副本,那该如何实现?导入后,我的本地文件夹包含未跟踪的.hgignore文件。我应该添加一个被mercurial追踪的吗?

我也看着this tool,但它似乎更适合在本地在mercurial连接到svn回购站工作。我想把我的善后回购放在bitbucket上,因为这份前指南似乎更有意义。

这可能是早期思考,但后来当我的贡献完成时,生成补丁发送上游的最佳方式是什么?是否有任何警告我应该马上意识到?

编辑:orip's answer(它的编辑部分)总结了几乎正是我想做的事:local hg copy这可以从updatesvnpush到我的网上bitbucket回购。

回答

1

你可以在TortoiseHg wiki on SVN看一看 - 使用TortoiseHg作为一个Subversion服务器部分客户,也许它会帮你做一个关于你在你的问题联系在一起的Mercurial维基介绍的工具决定。

此外,检查出由VonC对这个问题给出了答案:Mercurial from Subversion: moves, renames and tags

+0

如果TortoiseHg客户端允许我同时执行结帐和svn回购更新,同时能够推送到我的hg回购,那就太棒了。我检查一下。 – Mizipzor 2010-02-16 08:56:33

2

吸引新的变化很简单:检出svn代码,并定期'svn update'它,然后检查那些下载的文件到你的mercurial repo中。

.hgignore文件告诉mercurial哪些文件类型不要跟踪 - 即忽略。不要将此添加到您的mercurial repo中,它可能仅包含与subversion全局忽略相同的排除项。

补丁一代SVN是很容易,做svn diff > myPatch.diff(更新了svn回购后)

+0

你的意思是只是普通的文件复制到我的本地mercurial树?有没有办法像最初的进口一样保留历史? – Mizipzor 2010-02-16 00:22:53

+0

将.hgignore文件添加到回购中没有任何问题,实际上该书推荐它 – 2010-02-16 11:08:24

1

引导你使用svn涉及到汞皈依,而是意味着一次性转换,而不是持续的互操作性。

你想要类似hgsubversion

编辑:只是注意到你链接到它的问题。在bitbucket上保存资源库的克隆应该不会有问题 - 通过本地hgsubversion与SVN进行交互,并像往常一样推送到bitbucket - 您有一个常规的hg repo。

+0

您几乎将它与Im瞄准的目标(编辑部分)钉在了一起。但我仍然没有想出如果.svn和.hgsvn文件夹应该在我的副本中进行跟踪,你不知道吗?我也在等待新的东西出现在官方的svn回购站上,以便从那里尝试更新。 – Mizipzor 2010-02-16 08:54:38

2

你可以考虑用MQ工作。

  • SVN:用于熬夜到最新与主存储库
  • HG:在这里您可以每个之后执行addremove命令,这样,你将有一个项目由两个VCS在同一时间管理从SVN更新以及您将使用MQ编写补丁的位置。

这样做的话,当将时间提供给主存储库时,它会更容易。

+0

乍一看,这似乎有点矫枉过正/复杂。但也许我低估了这里的问题。我会研究它,谢谢! – Mizipzor 2010-02-16 10:53:10

+0

如果需要,请参考此处描述的工作流程:http://bitbucket.org/segv/hg-website/wiki/Workflows“处理CVS”部分 – gizmo 2010-02-16 12:05:03