将文件夹与SVN存储库合并
我有一个文件夹,其中包含要与SVN存储库合并的子目录和文件。我该怎么做?请注意,我要合并的文件夹中的文件可以位于不同的文件夹下。例如, 文件夹中的将文件夹与SVN存储库合并,svn,Svn,我有一个文件夹,其中包含要与SVN存储库合并的子目录和文件。我该怎么做?请注意,我要合并的文件夹中的文件可以位于不同的文件夹下。例如, 文件夹中的/folder/dir1/file.cpp可能位于 /src/dir2/file.cpp在存储库中我会这样做: 将回购协议签入工作副本。然后将要合并的文件移动(替换!)到适当的文件中。因为这并不明显,你必须一个接一个地做。完成后,您可以svn diff更改 (从技术上讲,这不是一个合并,但我不确定你是否真的想要合并:)前言:你真的必须读一本SVN的书
/folder/dir1/file.cpp
可能位于
/src/dir2/file.cpp
在存储库中我会这样做:
将回购协议签入工作副本。然后将要合并的文件移动(替换!)到适当的文件中。因为这并不明显,你必须一个接一个地做。完成后,您可以svn diff
更改
(从技术上讲,这不是一个合并,但我不确定你是否真的想要合并:)前言:你真的必须读一本SVN的书 因为根据你们对问题的描述,不可能对初始状态做出明确的结论,所以我将描述这两种选择 两个版本的起点 你有:
somefile的旧版本
修补了一些旧版本的文件
- 更新了新版本的
somefile
- 获取此版本:
如果缺少WC,svn公司REPO@R1
如果存在WCsvn up-r R1
- 在WC
somefile旧版本中替换为
patched somefile旧版本
- 获取其他更改:
。R1和HEAD之间出现在svn up
中的所有更改将合并到somefile
:如果未检测到冲突,则自动合并,或使用合并工具手动解决冲突(如果配置了合并工具),因此,旧版本的修补somefile
将在WC中显示为未提交的本地更改,您必须提交才能保存新版本的修补文件
- 使用OS diff,从旧版本的
和somefile
旧版本的补丁somefile
- 获取新版本的
(请参阅somefile
或svn up
)svn co
- 尝试将p.1中的修补程序应用到新版本的
somefile
- 将修订版0转储到文件中李>
- 将对的修订转储到另一个文件中李>
- 创建新的回购并导入第一个转储李>
- 签出新的回购头,替换文件并签入李>
- 将第二次转储的修订导入新回购协议李>
这样,您可以在存储库的中间注入一个附加的修订。我自己从来没有这样做过,但为什么不呢?只要确保你的旧回购协议保留一段时间。。。你永远不知道……
从你的问题上看,并不清楚你到底想做什么。“合并”到底是什么意思?正在添加文件?没有。。合并文件;i、 例如,用“文件夹”中包含的修复程序修补repo。好的,在这种情况下,只需签出并用您已更正的版本替换其中的文件。对于svn,这就像编辑文件一样。完全一样。完成后,只需再次签入即可。好的,如果我将repos中的文件a.cpp替换为“文件夹”中的文件a.cpp,我将丢失签出“文件夹”后提交给a.cpp的更改。。您能指出一个可能的解决方案吗?我想这样做是因为“文件夹”中的a.cpp有一些修复程序。这样做会导致我丢失最近在“文件夹”签出后在回购协议中提交的更改。啊!所以,这毕竟是一次合并。然后检查您生成版本的版本。照我说的做,然后执行svn up
,从而接收从那时(spawn)到现在的所有更改。在那之后,svn diff
和/或svn ci
。是的,这就是我的想法。。替换文件,然后执行svn upI执行svn up。。它说它已与最新版本同步。。但实际上与最新修订并不同步,因为回购协议中的一些最新变化已经丢失。我正在使用Macintosh终端的SVN。有什么想法吗?没有。你确定“旧”版本是正确的吗?您是否妥善处理了所有冲突?你确定你正确地解释了“回购协议的某些最新变更丢失时的最新修订”吗?你怎么知道?它不可能来自回购协议,因为它刚刚同步到最新版本。谢谢你的回答。在场景(b)中,如果我没有某个文件的修订号,我如何使用OS diff从某个旧版本的文件和修补了某个旧版本的文件生成修补程序?@Iceman:diff-u“旧版本的某个文件”“修补了某个旧版本的某个文件”>文件。修补程序
我不会有“旧版本的某个文件”如果我不知道版本。@Iceman:如果您只修改了文件,基于未知源-忘记了SCM和合并更改