创建一个忽略哨兵线之间差异的差异

时间:2011-04-04 13:41:50

标签: language-agnostic version-control diff

我正在寻找一种在处理不同分支时解决一些合并冲突的可能方法。

某些文件中的某些信息(特别是版本号)并不是不可能在不同的分支上传播,所以我正在寻找一些方法来在明确定义的标记线之间输出差异忽略文本,而且我会想知道是否有任何东西没有编码我自己的解决方案。

我想要的是:假设两个源文件看起来像

some text
DIFF_IGNORE_START
foo bar
DIFF_IGNORE_END
some other text
one

some text
DIFF_IGNORE_START
different text
DIFF_IGNORE_END
some other text
two

我希望差异为

--- original    2011-04-04 15:34:06.000000000 +0200
+++ modified    2011-04-04 15:35:13.000000000 +0200
@@ -3,4 +3,4 @@
 foo bar
 DIFF_IGNORE_END
 some other text
-one
+two

我需要一个解决方案,允许忽略的块也有不同的大小。

1 个答案:

答案 0 :(得分:0)

实现此目的的一种方法是通过custom diff driver,在.gitattributes文件中声明一个特殊的diff脚本,该脚本将:

  • 删除根,源和目标版本上的每个DIFF_IGNORE_xxx部分,将其替换为虚拟内容(三个版本之间始终相同)
  • 使用修改后的版本执行差异