我有一个文件夹,其中包含要与 SVN 存储库合并的子目录和文件。我怎样才能做到这一点?请注意,我要合并的文件夹中的文件可以位于不同的文件夹下。例如,
/folder/dir1/file.cpp
在文件夹中可能
/src/dir2/file.cpp
在存储库中
问问题
73 次
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 version
为patched 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 up
或svn 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 回答