在没有--svn的Rebase之后修复HgSubversion Repo

时间:2012-01-16 15:37:19

标签: mercurial hgsubversion

我很高兴使用HgSubversion一段时间,今天我忘了将--svn添加到rebase命令。 现在我得到了可怕的未知版本''

有没有办法从中恢复?

2 个答案:

答案 0 :(得分:5)

你应该可以做“hg svn rebuildmeta”,然后做“hg pull”并让它修复。

注意:这是未经测试的,因此我会处理本地仓库的副本,以防它搞砸了。我对代码的记忆表明这将有效。

答案 1 :(得分:1)

我尝试使用transplant扩展来解决此问题:

  1. 将SVN存储库重新克隆到新的本地存储库。
  2. 检查原始存储库的历史记录并记录需要移动的更改
  3. 将更改从旧存储库移植到新存储库
  4. 例如 - 修复名为hgsubversion的{​​{1}}仓库:

    project

    然后检查原始项目文件夹的日志,并从> hg clone svn+http://svnrepo/project project-tmp 文件夹中执行以下操作:

    project-tmp

    > hg transplant -s ../project 1234 是您想要移动的修订版。重复此操作,直到复制完所有修订。

    当你完成后,你应该可以通过从SVN重新拉动来开始使用新文件夹代替旧文件夹,重新定义你的更改并推回它们(不要忘记--svn)