SVN使用交换机合并不同分支中的中继

时间:2015-10-06 16:04:35

标签: svn version-control merge

考虑一个有五个客户的产品。产品配置文件会更改产品UI以及每个客户的一些行为更改。

版本由SVN控制。

开发在主干上完成,当发布准备就绪时,会为每个客户创建一个分支并标记产品,并且开发将保留在主干上以供下一个版本使用。

如果发生严重错误或者我们想要更快地向客户更新功能,我们承诺进行分支。

现在考虑我们开发了一个新功能。

  1. 我们将新功能提交给 trunk
  2. 我们从 branchA 进行SVN结帐。
  3. 将修订版(包含其中的功能)从 trunk 合并到 branchA
  4. 提交 branchA
  5. 我们将工作区切换为路径 branchB
  6. 在此处进行相同的合并。
  7. 尝试提交分支....我得到错误,已经  合并分支机构请测试它。
  8. 我可以通过 branchB 的新结帐来解决这个问题。我可以再次合并。

    看来他的问题是用switch命令,但我不知道为什么!!

    有任何意见吗?

1 个答案:

答案 0 :(得分:1)

错误消息“已合并分支,请测试它”不是标准的Subversion错误消息。这听起来像是您的存储库管理员设置为由预提交钩子脚本完成的测试的一部分。您应该与管理员联系,找出脚本正在执行的具体测试,以及导致它返回该特定错误消息的原因。据我们所知,这可能是钩子脚本中的错误而不是您的过程。

除了Hook脚本之外,这里有一些关于调查事情的一般建议:

我建议一次只看一步。在步骤5中的“切换”之后,在工作副本和分支B的存储库URL之间执行svn diff > after_merge.diff。此时应该完全相同。如果它们不是,那么你的'开关'没有按预期工作(如果你使用外部,你可能需要在'开关'后进行'更新')。类似的选项是将分支B的新副本签出到新文件夹中,然后将新分支B与切换后的工作副本进行比较(比较文件内容,文件夹树和颠覆元数据)。

在步骤6中合并后,运行svn diff svn://your_repo_url/your_path -c revision_number > incoming_merge.diff。同时运行VCR.configure do |c| c.cassette_library_dir = 'cassettes' c.ignore_localhost = true c.after_http_request(:ignored?, lambda { |req| req.uri =~ /foo/ }) do |request, response| puts "Response for #{request.method} #{request.uri}: #{response.body}" end end 。比较这两个文件并确保它们是相同的。它们之间的任何差异都可能表明合并未成功完成或分支不同步。