2

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

4

3 回答 3

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
  • 在 WC 中替换somefile of old versionpatched somefile of old version
  • 获取其他更改:svn up. 出现在 R1 和 HEAD 之间的所有更改somefile将被合并到patched somefile of old version: 如果没有检测到冲突,则自动合并或使用合并工具手动解决冲突(如果配置了合并工具),结果patched somefile of new version将在 WC 中显示为 not- commited-local-change,你必须提交才能保存

你不知道修改somefile of old version

  • 使用 OS diff,从somefile of old version和生成补丁patched somefile of old version
  • 得到somefile of new version(见svn upsvn co
  • 尝试将p.1的补丁应用到somefile of new version
于 2012-12-03T17:45:52.243 回答
0

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

  • 将修订版 0 转储到文件中。
  • 将修订转储到另一个文件中。
  • 创建一个新的仓库并导入第一个转储。
  • 签出那个新的 repos 头,替换文件并签入。
  • 将第二个转储的修订版导入新的存储库。

这样你就可以在存储库中间注入一个额外的修订。我自己从来没有这样做过,但为什么不呢?只要确保你保留你的旧回购一段时间......你永远不知道......

于 2012-12-03T19:15:15.670 回答
0

我会这样做:

将 repos 签出到工作副本中。然后用正确的文件移动(替换!)要合并的文件。由于这并不明显,因此您必须一个接一个地进行。完成后,您可以svn diff进行更改。

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

于 2012-12-03T15:46:18.770 回答