2013-04-16 3 views
2

다음과 같은 마커가있는 Linux diff 명령을 사용하여 diff 파일을 만들려고합니다.) diff3 사람이 페이지에서 :"<<<<<<< mine"및 ">>>>>>>> yours"유형 마커가있는 주석이 달린 diff 파일

  <<<<<<< mine 
      lines from mine 
      ======= 
      lines from yours 
      >>>>>>> yours   

이 형식은 나에게 매우 직관적이고 나를 쉽게 정력에 병합 충돌을 해결 할 수 있으며 사용) 나는 세 개의 파일 (광산을 병합 당신을 시도하고 원래하고 때 좋은 작품 diff3하지만 나는 평범한 diff에서 동일한 형식을 원합니다. 나는 이것이 간단 할 것이기를 바라고 있었지만 나는 그것을 얻을 수 없었다. 대부분의 주요 옵션 (-e, - ed 등)을 시도해 보았지만 --changed-group-format을 만들려고 시도했지만 성공하지 못했습니다.

바라건대 이것은 내가 간과 한 것입니다.

UPDATE : 추가 라인 제거 라인과 충돌 라인

두 파일은 diff 예 :

enter image description here

+0

마커 파일에 충돌하는 변경을 보여줍니다. 변경 사항이 충돌하려면 3 개의 파일이 있어야합니다. 나는. 기본 파일 A와 A의 버전 인 두 개의 다른 파일 B와 C가 있습니다. 마커는 B와 C의 변경 사항을 나타내지 만 동의하지 않습니다. 두 파일에서 충돌이있을 수 있습니까 ?? – kan

+0

아니요, 두 파일 만 충돌 할 수 있습니다. 추가 한 예제를 참조하십시오. – stephenmm

+0

그것은 충돌이 아니며, 변경된 행이며, 텍스트 diff에 +와 -로 표시됩니다. – kan

답변

4

당신은 diff 옵션을 재생할 수 있습니다. 스크린 샷에서와 같이

diff \ 
    --unchanged-group-format='%=' \ 
    --old-group-format='' \ 
    --new-group-format='%>' \ 
    --changed-group-format='<<<<<<< mine 
%<======= 
%>>>>>>>> yours 
' \ 
orig.txt new.txt 

출력 파일에 대한

This has some stuff 
in that gets 
modified in 
a later version 
<<<<<<< mine 
and there is a conflict 
======= 
and there is a conflict (like here) 
>>>>>>> yours 
about which version 
should be used. 
newline 

아래의 쉘 스크립트. 문서에서 diff의 형식 옵션을 더 볼 수 있습니다 (예 : here.

하나 라이너는 (적어도 리눅스에서 명령 줄에서 작동) :

diff --unchanged-group-format="%=" --old-group-format="" --new-group-format="%>" --changed-group-format="<<<<<<< mine%c'\\12'%<=======%c'\\12'%>>>>>>>> yours%c'\\12'" orig.txt new.txt 
+0

그게 내가 찾고 있던 결과와 정확히 일치합니다. 나는 diff 명령을 출력 할 수 없습니다. 오류는 'Unmatched'입니다 .' 그 명령을 파일에 넣고 소스를 넣었습니까, 아니면 실제로 실행 파일로 만들었습니까? 어떤 셸을 사용하고 있습니까? – stephenmm

+0

예, 쉘 스크립트를 만들었습니다. 다중 행 매개 변수를 작성하는 것은 쉽지 않습니다. "GNU bash, 버전 4.2.25 (1) -release (i686-pc-linux-gnu)". 링크를 따라 가면 "% c"형식으로되어 있으므로 개행 문자를 넣을 수 있습니다. – kan

+0

예, 며칠 전 "% c"형식으로 개행 문자를 얻으려고 약 30 시간을 보냈지만 정상적으로 작동하지는 못합니다. 나는 내가 그것을 할 수 있다는 것을 알기 때문에 오늘 밤에 그것을하려고 노력하는 데 더 많은 시간을 할애한다고 생각한다. * – stephenmm

관련 문제