Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文件夹与SVN存储库合并_Svn - Fatal编程技术网

将文件夹与SVN存储库合并

将文件夹与SVN存储库合并,svn,Svn,我有一个文件夹,其中包含要与SVN存储库合并的子目录和文件。我该怎么做?请注意,我要合并的文件夹中的文件可以位于不同的文件夹下。例如, 文件夹中的/folder/dir1/file.cpp可能位于 /src/dir2/file.cpp在存储库中我会这样做: 将回购协议签入工作副本。然后将要合并的文件移动(替换!)到适当的文件中。因为这并不明显,你必须一个接一个地做。完成后,您可以svn diff更改 (从技术上讲,这不是一个合并,但我不确定你是否真的想要合并:)前言:你真的必须读一本SVN的书

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

我会这样做:

将回购协议签入工作副本。然后将要合并的文件移动(替换!)到适当的文件中。因为这并不明显,你必须一个接一个地做。完成后,您可以
svn diff
更改


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

前言:你真的必须读一本SVN的书

因为根据你们对问题的描述,不可能对初始状态做出明确的结论,所以我将描述这两种选择

两个版本的起点 你有:

  • somefile的旧版本
  • 修补了一些旧版本的文件
  • 更新了新版本的
    somefile
您知道旧版本文件的修订版 让旧版本为R1

  • 获取此版本:
    svn公司REPO@R1
    如果缺少WC,
    svn up-r R1
    如果存在WC
  • 在WC
    somefile旧版本中替换为
    patched somefile旧版本
  • 获取其他更改:
    svn up
    。R1和HEAD之间出现在
    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和合并更改