Language agnostic 创建忽略哨兵线之间差异的差异

Language agnostic 创建忽略哨兵线之间差异的差异,language-agnostic,version-control,diff,Language Agnostic,Version Control,Diff,我正在寻找一种可能的方法,在处理不同分支时避免一些合并冲突 有些文件(特别是版本号)中的某些信息不可能在不同的分支之间传播,因此我正在寻找某种方法来输出定义良好的哨兵行之间的差异忽略文本,我想知道在不编写我自己的解决方案的情况下是否有任何内容 这就是我想要的:假设两个源文件 some text DIFF_IGNORE_START foo bar DIFF_IGNORE_END some other text one 及 我希望差别是 --- original 2011-04-04 15:

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

有些文件(特别是版本号)中的某些信息不可能在不同的分支之间传播,因此我正在寻找某种方法来输出定义良好的哨兵行之间的差异忽略文本,我想知道在不编写我自己的解决方案的情况下是否有任何内容

这就是我想要的:假设两个源文件

some text
DIFF_IGNORE_START
foo bar
DIFF_IGNORE_END
some other text
one

我希望差别是

--- 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

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

实现这一点的一种方法是,在
.gittributes
文件中声明一个特殊的diff脚本,它将:

  • 删除根版本、源版本和目标版本上的每个
    DIFF\u IGNORE\u xxx
    部分,用虚拟内容替换它们(三个版本之间始终相同)
  • 使用修改后的版本执行差异

    • 实现这一点的一种方法是通过,在
      .gittributes
      文件中声明一个特殊的diff脚本,它将:

      • 删除根版本、源版本和目标版本上的每个
        DIFF\u IGNORE\u xxx
        部分,用虚拟内容替换它们(三个版本之间始终相同)
      • 使用修改后的版本执行差异

      与git挂钩是容易的部分,但是定制的diff驱动程序并不像您想象的那么容易-您不能用虚拟内容替换两个标记之间的内容,因为虚拟内容通常会以diff的形式出现在diff上下文中。与git挂钩是容易的部分,但是定制的diff驱动程序并不像您想象的那么简单-您不能用虚拟内容替换两个标记之间的内容,因为虚拟内容通常会作为diff上下文出现在diff中。
      --- 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