Diff分支,同时排除subversion的合并

时间:2015-01-08 21:07:16

标签: svn merge branch diff

我正在使用subversion,我想将我的分支的开头区分到我所有文件的当前状态。另外,我想从diff中排除某些修订。例如,请考虑以下事项:

注意:将下面每个文件中的每个字符视为一段代码。 (" A"是代码块," B"是不同的代码块)

ID 0:我从Trunk开始:

  • File_A(包含" A")
  • File_B(包含" B")
  • File_C(包含" C")
  • File_D(包含" D")

ID 1:我创建了一个分支:

  • File_A(包含" A")
  • File_B(包含" B")
  • File_C(包含" C")
  • File_D(包含" D")

ID 2:我修改了File_A,File_B和File_D。我附加到File_A和File_B并更改File_D的内容。

  • File_A(包含" A1")
  • File_B(包含" B1")
  • File_C(包含" C")
  • File_D(包含" F")

ID 3:我发现主干中的File_B,File_C和File_D已经发生了变化。行李箱现在是:

  • File_A(包含" A")
  • File_B(包含" B2")
  • File_C(包含" C2")
  • File_D(包含" E")

ID 4:然后我从主干合并到我的分支:

  • File_A(包含" A1")
  • File_B(包含" B12")
  • File_C(包含" C2")
  • File_D(包含" EF")

ID 5:我修改了我的分支中的B和C.修订版是24015:

  • File_A(包含" A1")
  • File_B(包含" B123")
  • File_C(包含" C3")
  • File_D(包含" EF")

现在我想在我开始分支(ID 1)和完成分支(ID 5)之间进行差异,同时排除合并中的更改。

ID 6:我希望差异显示以下内容:

  • File_A(它是" A"现在是" A1" / diff显示" 1")
  • File_B(它是" B"现在是" B13" / diff显示" 13")
  • File_C(它是" C"现在是" C3" / diff显示" 3")
  • File_D(它是" D"现在是" F" / diff显示D和F之间的所有差异)

我想创建一个补丁文件,其中包含上述四个文件的更改。因此,当应用于ID 1时,我会得到ID 6.有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

两种明显的方式

  • 简短svn help diff,第4种形式。只是对分支和主干的头部进行区分:两边的相同深度(AC2B)将被跳过(如果他们仅在没有编辑的情况下执行合并,您将有效地忽略合并集)

  • 愚蠢的方式,按要求svn help diff,带有-c选项的第二种形式。你可以多次使用-c REV来扩展分支(分支或HEAD的开始 - 无法回想起来,也懒得测试),以便在没有 mergeset的情况下枚举分支中的所有修订版(多个)

文本差异可能略有不同,因为SVN的统一差异工作在上下文中(默认情况下围绕hunk 3行)和“瘦”更改它将(可能)可见