Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 如何将修订从mercurial推回subversion?_Svn_Mercurial_Synchronization - Fatal编程技术网

Svn 如何将修订从mercurial推回subversion?

Svn 如何将修订从mercurial推回subversion?,svn,mercurial,synchronization,Svn,Mercurial,Synchronization,您好,我已经将一个本地svn存储库转换为mercurial,在hg中提交了几次修订,现在希望将这些更改恢复到svn中。 有人能建议怎么做吗 我发现了,但不幸的是,我没有按照那里描述的那样进行转换(只是在本地repo上进行了hg转换),也没有使用MQ 有没有可能将单个修订推回到subversion,或者我能做的就是在更改上与本地进行区分 我个人在工作中使用Mercurial来处理我们的subversion存储库。我强烈建议您使用hgsubversion进行克隆,因为在进行简单推送时,它能够提交回s

您好,我已经将一个本地svn存储库转换为mercurial,在hg中提交了几次修订,现在希望将这些更改恢复到svn中。
有人能建议怎么做吗

我发现了,但不幸的是,我没有按照那里描述的那样进行转换(只是在本地repo上进行了hg转换),也没有使用MQ


有没有可能将单个修订推回到subversion,或者我能做的就是在更改上与本地进行区分

我个人在工作中使用Mercurial来处理我们的subversion存储库。我强烈建议您使用hgsubversion进行克隆,因为在进行简单推送时,它能够提交回subversion存储库。唯一的问题是,您必须学习如何重新设置更改的基础,因为您无法使用mercurial的合并功能(subversion根本无法理解更改集可能有两个父级)

如果您想要删除subversion repo并用mercurial替换它,那么您已经转换的存储库是非常有用的。不幸的是,这是不可能回退的(除非你想开始玩diff)


但是,如果您使用hgsubversion克隆svn repo,您可能(假设没有合并)能够将您在当前转换的mercurial depot上所做的更改拉入其中。如果有合并,您必须在传输更改之前对其进行“线性化”。

我个人在工作中使用Mercurial来处理我们的subversion存储库。我强烈建议您使用hgsubversion进行克隆,因为在进行简单推送时,它能够提交回subversion存储库。唯一的问题是,您必须学习如何重新设置更改的基础,因为您无法使用mercurial的合并功能(subversion根本无法理解更改集可能有两个父级)

如果您想要删除subversion repo并用mercurial替换它,那么您已经转换的存储库是非常有用的。不幸的是,这是不可能回退的(除非你想开始玩diff)


但是,如果您使用hgsubversion克隆svn repo,您可能(假设没有合并)能够将您在当前转换的mercurial depot上所做的更改拉入其中。如果存在合并,您必须在传输更改之前对其进行“线性化”。

我认为您可以使用

我会尝试这样做:

  • 使用hgsubversion克隆SVN存储库
  • 尝试将更改从旧存储库移动到此新存储库。这可能是个棘手的问题。以下是一些解决方案:
    • ,它使用
      导出
      导入
      命令,或
      移植
      扩展
    • 也许您可以使用
      hgpull--force
      从无关的存储库中提取变更集。(请参阅)但之后,您需要运行
      merge
      ,当您将更改推回到SVN时,这可能会出现错误。因此,您可以尝试使用
      rebase
      mq
      扩展
    • 也许您可以使用
      mq
      扩展在旧存储库上生成一组补丁,将它们复制到新存储库,然后应用它们
    • 如果所有其他操作都失败了,您可以通过重新执行以前所做的更改,一个接一个地“手动”应用每个更改集。(
      hg diff-c rev_id
      命令将非常有用)
  • 在hgsubversion副本中进行所有更改后,只需推送它们,它们就会添加到SVN存储库中
  • 利润
    我想你也许可以用

    我会尝试这样做:

  • 使用hgsubversion克隆SVN存储库
  • 尝试将更改从旧存储库移动到此新存储库。这可能是个棘手的问题。以下是一些解决方案:
    • ,它使用
      导出
      导入
      命令,或
      移植
      扩展
    • 也许您可以使用
      hgpull--force
      从无关的存储库中提取变更集。(请参阅)但之后,您需要运行
      merge
      ,当您将更改推回到SVN时,这可能会出现错误。因此,您可以尝试使用
      rebase
      mq
      扩展
    • 也许您可以使用
      mq
      扩展在旧存储库上生成一组补丁,将它们复制到新存储库,然后应用它们
    • 如果所有其他操作都失败了,您可以通过重新执行以前所做的更改,一个接一个地“手动”应用每个更改集。(
      hg diff-c rev_id
      命令将非常有用)
  • 在hgsubversion副本中进行所有更改后,只需推送它们,它们就会添加到SVN存储库中
  • 利润
    这并不像人们想象的那么难。从长远来看,我确实建议您像其他答案所建议的那样使用hgsubversion,但有一个非常简单的短期解决方案

  • 检查您的hg回购中的所有内容
  • hg up-r[从svn转换而来的最新版本]
  • 从svn签出到一个干净的目录中
  • 将.hg目录从hg repo复制到svn签出
  • 将所有这些svn更改检查到您的hg repo中(记住添加/删除文件…这一步需要一些时间,因为hg这次必须扫描所有内容)
  • 使用hg合并您现在拥有的两个头部(假设svn已经走在您前面)
  • 通过将更改拉回到原始hg repo并在那里进行测试来测试构建(如果需要的话)(想法是保持“hg+svn repo”干净,以便在相应的工具中容易发现丢失/添加的文件)
  • 使用svn签入所有更改(记住添加/删除文件)
  • 一旦你有了这一点,它实际上并不太难使用两个系统在彼此之上。。。但是,如果您需要长期支持,hgsubversion可能是一个更好的解决方案。我个人使用上述系统是因为hgsubversion没有ha