将文件夹与SVN存储库合并

时间:2012-12-03 15:41:12

标签: svn

我有一个包含子目录和文件的文件夹,我想与SVN存储库合并。我怎样才能做到这一点?请注意,我要合并的文件夹中的文件可以位于不同的文件夹下。例如, 文件夹中的/folder/dir1/file.cpp可能在 存储库中的/src/dir2/file.cpp

3 个答案:

答案 0 :(得分:3)

前言:真的必须阅读 SVN Book!

因为从你对问题的描述中无法对初始状态做出明确的结论,我将描述两种选择

两个版本的起点

你有:

  • somefile of old version
  • patched somefile of old version
  • 已更新somefile of new version

您知道somefile of old version

的修订版

让旧版本 R1

  • 获取此修订版:svn co REPO@R1以防丢失WC,svn up -r R1以防现有WC
  • somefile of old version
  • 的WC patched somefile of old version中替换
  • 获取其他更改:svn upsomefile中出现的R1和HEAD之间的所有更改将合并到patched somefile of old version:如果未检测到冲突或使用合并工具手动解决冲突(如果已配置合并工具),则会自动合并;因此,patched somefile of new version将在WC中显示为not-commited-local-change,您必须提交才能保存

您不知道somefile of old version

的修订版
  • 使用操作系统差异,从somefile of old versionpatched somefile of old version
  • 生成补丁
  • 获取somefile of new version(请参阅svn upsvn co
  • 尝试将补丁从第1页应用到somefile of new version

答案 1 :(得分:0)

我会这样做:

将存储库复制到工作副本中。然后使用适当的文件移动(替换!)要合并的文件。由于这不是很明显,你必须逐个进行。完成后,您可以svn diff更改。

(从技术上讲,这不是合并,但我不确定你是否真的想合并:))

答案 2 :(得分:0)

如果其他答案中提供的解决方案由于某种原因确实无效,那么您可以尝试一下。虽然它更复杂但我没有看到它不应该起作用的原因:

  • 将修订版0转储到文件中。
  • 将修订版转储到另一个文件中。
  • 创建一个新的仓库并导入第一个转储。
  • 检查新的回购头,更换文件并签入。
  • 将第二个转储的修订版导入新的仓库。

这样,您可以在存储库中间注入其他修订。从来没有这样做过,但为什么不呢?只要确保你保留旧的回购......你永远不会知道...