svn mergeinfo属性,如何查找、删除或忽略

svn mergeinfo属性,如何查找、删除或忽略,svn,version-control,merge,tortoisesvn,Svn,Version Control,Merge,Tortoisesvn,我有一个具有标准branchs/tags/trunk目录结构的存储库。主干包含一些svnexternals内容(不确定这对这个问题是否重要,只是为了以防万一指出它) 这是一个全新的项目,我们还没有发布产品,所以这个问题并不像几个月后那么重要 我正在尝试将主干(开发)中的[修订集]合并到测试分支中。现在,我得到了臭名昭著的合并信息错误。有关更多信息,请参阅。为了暂时克服这个错误,我正在删除测试分支,然后重新创建它。但是,这显然不是一个好办法,尤其是在我们开始越来越多的构建和代码迁移到我们的测试分支

我有一个具有标准branchs/tags/trunk目录结构的存储库。主干包含一些svnexternals内容(不确定这对这个问题是否重要,只是为了以防万一指出它)

这是一个全新的项目,我们还没有发布产品,所以这个问题并不像几个月后那么重要

我正在尝试将主干(开发)中的[修订集]合并到测试分支中。现在,我得到了臭名昭著的合并信息错误。有关更多信息,请参阅。为了暂时克服这个错误,我正在删除测试分支,然后重新创建它。但是,这显然不是一个好办法,尤其是在我们开始越来越多的构建和代码迁移到我们的测试分支之后

所以…我已经检查了测试分支级别的所有文件夹,以及上面的所有内容,没有设置任何mergeinfo属性。事实上,我发现唯一设置的属性是一个文件夹上的我的svnexternals。从我上面的链接中,另一个选项是设置IgnoreSectority选项。我的乌龟版本已经默认了,它不起作用

是否有其他方法可以查找mergeinfo属性以便删除它?或者,有没有其他方法可以忽略mergeinfo属性,这样我就可以完成这些合并,而不是吹走我的分支

编辑:顺便说一下,我使用的是乌龟版本1.8.4.24972(64位)

Edit2:我在用OrtoiseSVN Gui客户端做所有事情(也就是说,我没有用命令行做任何事情)

Edit3:嗨,大卫,我不通过命令行做任何事情。以下是我尝试过的步骤和错误:右键单击“test”分支,TortoiseSVN->Merge…选择“Merge a range of revisions”。要合并的URL:…../trunk,“要合并的修订范围”=“所有修订”。忽略祖先是正确的。单击“确定”时,错误显示:“错误,无法在忽略合并信息时自动合并”


另外,“如何创建测试分支?”。如果它已经存在,我打开OrtoiseSVN->Repo浏览器。导航到“分支”目录。在右侧窗格中,右键单击“test”分支,选择“Delete”,并给出我的评论“merge对新手来说很难”。接下来,返回到Windows资源管理器,我的源代码位于该位置。右键单击“主干”,选择“分支/标记…”。选择创建分支/标记的位置,即../branchs/test。完成。

您如何创建该测试分支

正确的方法 走错路 要进行合并,需要做三件事:

  • 你要合并到的地方
  • 你要合并的地方
  • 两人之间最后的共同祖先
使用
svn cp
时,Subversion可以从原始分支(或主干)跟踪文件的历史记录。当您在中复制文件并使用
svn add-R.
时,Subversion认为这些文件与您从中复制它们的文件完全不同

当您进行合并时,分支被错误地创建,Subversion将遇到大量冲突和大量本地文件/远程添加错误,因为Subversion将尝试将文件添加到分支,但已经看到具有相同名称的文件

这是否可能是您通过添加来创建分支而不是
svn cp
?您收到的确切错误消息是什么?您使用的是什么版本的Subversion客户端?您是从测试到主干合并,还是从主干到测试合并,还是只有一种方式?你在挑樱桃吗


附录:嗨,大卫,我不通过命令行做任何事情。 然后,看看测试分支是如何创建的。这可能有助于解决这个问题。为
测试
分支选择日志消息。在底部,取消选择复制/重命名时停止。然后查看列表中最旧的版本。我的看起来像这样:

Path                 Action    Copy from Path    Revision
-------------------  --------  ----------------  ---------
/branches/5.1/proj   Added     /trunk/proj       12344
请注意“从路径复制”列。这向我展示了分支是通过相当于
svncp
命令复制主干来完成的。如果我关闭复制/重命名时的停止,随着历史沿着分支继续,我将看到更多日志

我在TortoiseSVN中看到的一个大问题是,通过创建分支,然后将trunk的工作目录中的文件拖动到新分支中,然后从菜单中选择TortoiseSVN->Add,可以很容易地进行分支

创建分支的正确方法是在主干项目的存储库浏览器上单击鼠标右键,然后选择“复制到…”。。。从上下文菜单中。这将向您显示一个“复制到”对话框,您可以键入分支的新URL


如果查看Show log,您没有看到“从路径复制”列,而是看到每个文件的“添加”,您就知道分支创建不正确。这将导致合并出现问题

怎么办?你无能为力。您可以忽略合并的历史记录,这可能会有所帮助,但是
svn:mergeinfo
将无效,您必须手动跟踪以前合并的内容。另外,很有可能你最终还是会有很多冲突

要做到这一点,请选择“正常合并一系列修订”,并在最后一个屏幕上选择“忽略祖先”

如果您使用TortoiseSVN复制而不是通过Windows copy and add创建分支,则可能存在另一个问题。我需要看看你得到的确切错误。有几个问题会导致合并冲突。例如,某人在分支上所做的更改与对主干所做的更改相同。想象一下,有人在树枝上发现了一个问题,把它修好了,然后想我还是在树干上修好吧。在这种情况下,由于添加或删除了相同的文件,或者在同一文件中更改了相同的行,因此会发生冲突。这些类型的更改很容易解决,但却是一个难题

为了避免出现这些错误,开发人员没有在分支和主干上重复更改,而是
$ svn mkdir $REPO/branches/branch_name/proj
$ svn co $REPO/branches/branch_name/proj      # This will be empty
$ svn export $REPO/trunk/proj                 # Copy in the files from prom
$ svn add -R .                                # Add the files back in
$ svn commit
Path                 Action    Copy from Path    Revision
-------------------  --------  ----------------  ---------
/branches/5.1/proj   Added     /trunk/proj       12344