2011-04-04 20 views
2

我正在寻找解决一些合并冲突时通过不同分支工作的可能方式。创建diff,忽略前哨线之间的差异

某些文件(特别是版本号)中的某些信息不是不可能分布在不同的分支周围,所以我正在寻找某种方式来输出差异,忽略定义好的定点线之间的差异文本, d想知道是否有任何东西没有编码我自己的解决方案。

那想什么我:假设看起来像

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 

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

回答

0

一种方式来实现,这将是通过一个custom diff driver,在.gitattributes文件,宣告一个特殊的diff脚本,这会:

  • 去除根,源和目的版本每DIFF_IGNORE_xxx部分,用虚拟替换它们内容(三个版本之间始终相同)
  • 与修改后的版本
+0

挂钩使用Git进行差异是比较容易的部分,但自定义DIFF驱动程序不一样简单您认为 - 您无法用虚拟内容替换两个标签之间的内容,因为这通常会在diff中作为diff范围出现。 – 2011-04-05 13:38:57