差异分支,同时排除合并以进行颠覆
Diff branches while excluding merge for subversion
我正在使用 subversion,我想将我的分支的开始与我所有文件的当前状态进行比较。此外,我想从差异中排除某些修订。例如,请考虑以下内容:
注意:将下面每个文件中的每个字符视为一个代码块。 ("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:我希望 diff 显示以下内容:
- 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。有人有什么想法吗?
两种明显的方式
简写:svn help diff
,第 4 形式。只是分支和主干的不同头部:两侧相同的大块头(A
、C2
、B
)将被跳过(如果它们只执行合并而没有编辑,你将有效地忽略合并集)
愚蠢的方式,根据要求:svn help diff
,带有 -c
选项的第二个形式。您将通过多次使用 -c REV
区分分支(分支或 HEAD 的开始 - 无法回忆起并且懒得测试)以便枚举 分支中的所有修订而没有 合并集
文本差异可能略有不同,因为 SVN 的统一差异在上下文中工作(默认情况下围绕大块 3 行)并且对于 "thin" 更改它将(可能)可见
我正在使用 subversion,我想将我的分支的开始与我所有文件的当前状态进行比较。此外,我想从差异中排除某些修订。例如,请考虑以下内容:
注意:将下面每个文件中的每个字符视为一个代码块。 ("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:我希望 diff 显示以下内容:
- 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。有人有什么想法吗?
两种明显的方式
简写:
svn help diff
,第 4 形式。只是分支和主干的不同头部:两侧相同的大块头(A
、C2
、B
)将被跳过(如果它们只执行合并而没有编辑,你将有效地忽略合并集)愚蠢的方式,根据要求:
svn help diff
,带有-c
选项的第二个形式。您将通过多次使用-c REV
区分分支(分支或 HEAD 的开始 - 无法回忆起并且懒得测试)以便枚举 分支中的所有修订而没有 合并集
文本差异可能略有不同,因为 SVN 的统一差异在上下文中工作(默认情况下围绕大块 3 行)并且对于 "thin" 更改它将(可能)可见