2010-07-29 8 views
5

diff은 보통 우둔한 출력을 생성합니다. 여기에 좋은 예가 있습니다. 우리가 시작하는 경우 :GNU diff의 대안은 무엇입니까?

class World 
    def hello 
    puts "Hello, world" 
    end 
    def goodbye 
    puts "Goodbye, world" 
    end 
end 

는 두 번째 방법을 삭제하고 변경 첫째 :

class World 
    def hello 
    puts "Hello, #{self}" 
    end 
end 

diff -u는 총 엉망이 될 것입니다 - 두 가지 방법을 제안 병합되었습니다

class World 
    def hello 
- puts "Hello, world" 
- end 
- def goodbye 
- puts "Goodbye, world" 
+ puts "Hello, #{self}" 
    end 
end 

훨씬 더 합리적인 대신에 :

class World 
    def hello 
- puts "Hello, world" 
+ puts "Hello, #{self}" 
    end 
- def goodbye 
- puts "Goodbye, world" 
- end 
end 

이것은 단지 장난감의 예일 뿐이므로 diff의 출력을 이해할 수 있습니다. 실제로는 대개 훨씬 나 빠지게됩니다.

다소 똑똑 할 수도있는 diff의 대안이 있습니까?

+1

CLI 만 원하거나 KDIFF와 같은 그래픽 응용 프로그램을 사용할 수 있습니까? –

+0

그래, 내가 말할거야. Kompare는 실제로 거기 밖으로 제일 diffs의 한개, IMO이다. 출력을 파싱하지 않으면 CLI diff보다 GUI 기반 diff가 훨씬 쉽게 작업 할 수 있습니다. – Gilead

+1

나는 나쁜 diffs에 대한 더 나은 디스플레이 싶지 않아, 나는 좋은 diffs 싶습니다. [관련성이있는 것처럼 보입니다.] (http://alfedenzo.livejournal.com/170301.html). – taw

답변

1

SD Smart Differencer을 고려해 볼 수 있습니다. "라인 차이"가 아닌 코드 구조를 기반으로 차이점을 제공하므로 언어 ​​요소 (표현식, 명령문, 블록, 메서드) 및 편집 작업 (삭제, 삽입, 복사, 바꾸기, 이름 바꾸기)에 중점을 둡니다.

언어마다 다릅니다. 그것은 언어 구조를 지침으로 사용해야합니다. 명시 적 언어 정의를 사용합니다. 나는 당신이 사용하고있는 언어 (파이썬?)를 확실히 말할 수 없다. C, C++, C#, Java, Python, Fortran, COBOL 등 많은 langauges를위한 Smart Differencer 도구가 있습니다 ...

+1

예제는 Ruby에 있습니다. Smart Differencer는 내가 원하는 대부분의 언어를 지원하지 않는 Windows 전용으로 보이며 (C 전처리 기가 C 언어를 대부분 차용 할 수 없다는 의미에서), 닫힌 소스 (개발 도구의 경우 매우 나쁜 아이디어), 시험판을 다운로드하여 전혀 작동하는지 확인하지 못하겠다. 아마도 다른 사람들이 유용하다고 생각할 것입니다. – taw

+0

어떤 언어를 원하셨습니까? 예, 전 처리기 지시문과 매크로 호출을 임의로 배치하기 때문에 C 코드에는 제한이 있습니다. 이것들은 임의의 C 코드에서 코드 구조를 식별하는 것을 매우 어렵게 만든다. Ruby는 현재 작동하지 않습니다. 우리는 Ruby 언어 정의로 놀았지만 아직 준비가 안된 상태입니다. 예, 닫힌 소스입니다. 오픈 소스 버전을 작성하실 수 있습니다.질문에 제약 조건으로 언급하지 않았습니다. Java, C# 및 C++를 비롯한 다양한 언어에 사용할 수있는 평가판이 있습니다. 웹 사이트에서 질문해야 할 수도 있습니다. –

1

나는 원하는 알고리즘을 사용하고 있습니다. 작업은 diff 프로세스의 소스 수에 제한이 없습니다. 현재 베타 버전이며 테스트 중이며이 테스트가 완료 될 때까지는 인라인보기가 작동하지 않습니다. 그것을 확인하고 적절한 수정을 제공 할 수 있도록 diff 보고서를 해독 할 수 있는지 그리고 어떻게 알 수 있는지 알려주십시오.

이 사이트 :

enter image description here

이 도구는 GNU diff 명령과 wdiff을 사용 http://prettydiff.com/ (GitHub)

관련 문제