2010-08-12 3 views
3

diff에서 집합 연산 (결합, 교차, 차이 등)을 수행 할 수있는 도구가 있습니까?diff에서 집합 연산 수행?

예를 들어, 중복 된 두 개의 diff (예 : 동일한 변경 사항이있는 행크 포함)가있는 경우 '한 번에 차이가있는 모든 행크를 얻으십시오.'또는 ' 양쪽 diffs에 공통적 인 모든 심술쟁이를 얻으십시오. " 두 개의 차이점 AB 주어진 예를 들어

: 내가 볼 수 있도록하고 싶습니다 것들의

 
$ cat A.diff 
@@ ... @@ 
+ foo 
- bar 
@@ ... @@ 
+ baz 
$ cat B.diff 
@@ ... @@ 
+ foo 
- bar 
@@ ... @@ 
+ bam 

하나는 :

 
$ diff_symetric_difference A.diff B.diff 
@@ ... @@ 
+ baz 
@@ ... @@ 
+ bam 
$ diff_subtract A.diff B.diff 
@@ ... @@ 
+ baz 

내가 가장 자주이 때 원하는 코드 검토를하고 있습니다 (예 : 차이점을 검토했기 때문에 AC). 변경 사항 A..D - A - C을보고 싶습니다.

답변

1

diff3을 비교하려면 diff-match-patch (dmp)을 사용하면됩니다. mailing list에 설명 된대로 diff_linesToChars 함수를 사용하여 각 diff의 행을 char 표현으로 사전 처리하고 char의 해시 테이블을 행에 다시 수신합니다. 그런 다음 char 표현을 dmp로 전달합니다. 출력은 삭제, 평등 및 임의의 배열을 char 대표 형식으로 나타냅니다. 삭제 및 추가는 고유 한 행입니다. 해시 테이블을 사용하여 데이터를 다시 해당 행으로 변환합니다.