我正在开发一个使用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
回购。
答案 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管理项目:
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