diff 출력을 더 읽기 쉽게 만들기


12

나는 / debdiff 출력을 사랑하는 걸릴 (하는 도구를 찾고 있어요 그리고 보다 구체적으로 출력 이 스크립트 )과는 매우 읽을 수있는 그래픽 방식의 비교 결과를 표시합니다. 모든 조언을 부탁드립니다.

이상적으로는 MDR 과 동등한 FOSS 인 GTK + 입니다.

Meld, Diffuse 및 유사한 소프트웨어는 독립형으로 작동하도록 설계되었으며 stdin에서 입력을받지 않기 때문에이 목적에 적합하지 않습니다.

답변:


8

Kompare 는이를 수행 할 수 있습니다 (최고의 GUI diff-viewer IMO입니다).

./whatchanged package_name | kompare -

입력 파일 인수로 제공된 '-'에 유의하십시오. 대부분의 * nix 프로그램에는 파이프 입력을 수용하기위한이 인터페이스가 있으므로 원하는 것을 사용할 수 있습니다.


예, Meld로 시도했지만 Meld가 즉시 시작되고 스크립트가 완료되면 diff 출력을 얻는 대신 시작하는 대신 스크립트의 중간 출력을 얻습니다. Meld 및 파이프 된 다른 소프트웨어에서 제대로 작동하도록 스크립트 흐름을 조정해야 할 수도 있습니다. "bzr diff"및 일반 diff 출력을 사용하면 Meld가 파일 비교 모드가 아닌 VCS 모드에서 시작됩니다.
mgunes

-a 옵션으로 Meld를 ​​시작하여 VCS 모드 문제를 해결했습니다. Kompare도 작동합니다. 남은 것은 스크립트를 파이프 인식하는 것입니다.
mgunes

3

콘솔 만있는 경우 colordiff매우 좋은 솔루션입니다.

설치하려면 sudo apt-get install colordiff터미널 에서이 명령 을 실행하십시오.


2

사용 등 I 정력 I는 색상 화 차이점을 볼 수 있도록하는 것이, 페이저로 강조 내부 신택스 S는 '. 예를 들어, 이것을 당신의 .bashrc:

sudo apt-get install vim
alias vless='vim -u /usr/share/vim/vimcurrent/macros/less.vim'

(그리고 재 - 소스 당신 .bashrc과 함께 . ~/.bashrc.) 그럼 당신은 실행할 수 있습니다 vless호출기로 :

vless /path/to/your.diff

그래픽이 아니지만 적어도 강조 표시되어 있습니다.


그러나 그는 컬러 diff 파일을 요구하지 않고 그래픽 diff를 요구했습니다. diff 자체만큼 원본 파일을 읽을 수 있어야한다는 힌트입니다.
Martin Owens -doctormo-

글쎄, "stdin에서 읽기"는 요구 사항이었다. "금형"이 배제 된 경우, 그다지 남지 않았습니다. diff를 만들고 Meld를 ​​여는 다른 대답은 그래픽에 가장 좋은 방법입니다. 또는 gedit대신 시작할 수 있습니다.
Kees Cook

.bashrc에 "sudo apt-get install vim"을 넣지 않았습니다. 명확하게 편집하십시오.
Capi Etheriel

2

KDE 응용 프로그램은 너무 많은 종속성없이 설치할 수 있지만 kdiff는 멋진 diff 편집 / 병합 도구입니다.


1
kdiff (우분투 아카이브에서 kdiff3이라고도 함)는 훌륭한 도구이지만 STDIN을 이해하고 표시하는 도구를 찾고 있으며 제한된 탐색을 통해 OP의 질문을 충족시키지 못합니다. 나는 그것을 할 수있는 방법을 찾지 못했습니다. 또한 KDE 종속성을 줄이는 것이 문제인 경우, 우분투 아카이브에는 kdiff3-qt가 포함되어 있으며 Kd 스택의 라이브러리가 아닌 qt에만 의존합니다.
Steve Beattie

2

이 간단한 스크립트를 사용하여 meld (또는 다른 기존 도구)를 사용하면 약간의 유연성을 얻을 수 있습니다.

#!/bin/bash

TMPDIR=`mktemp -d`
DIFF_FILE=`mktemp`
TARGET='./'

cat /proc/$$/fd/0 > $DIFF_FILE
cd $TARGET
rsync -apvz --delete --stats --compress --progress $TARGET $TMPDIR
patch -R -p0 -d $TMPDIR < $DIFF_FILE
meld $TARGET $TMPDIR

meld와 bzr diff의 출력으로 테스트 했으므로 이것을 / usr / bin 및 chmod 755에 복사하고 다음과 같이했습니다.

bzr diff | meld-diff

결과가 예상대로 표시됩니다.


4
단일 사용자 컴퓨터에서는 그다지 큰 문제 는 아니지만, 다른 이유가 없다면 한 번의 클로버 링없이 동시에 여러 트리에서 diff를 수행 할 수 있도록하려면 임시 파일과 디렉토리를 안전하게 사용 mktemp하고 mktemp -d생성해야합니다 다른.
Steve Beattie

bzr diff와 함께 작동하지만 디렉토리 비교 모드에서만 작동합니다. 개별 파일도 비교하고 싶습니다. 실제로 스크립트와도 작동하도록 수정하려고 노력할 것입니다. 감사.
mgunes

스크립트 사용에 대한 내 생각이 좋다고 생각하면 표시해주세요. 지금까지 나는 너무 많이 표시되었습니다.
Martin Owens -doctormo-

1

편집기에 통합 된 diff 도구를 요구하지는 않지만 편집기가 제공 할 수있는 것에 대해 조금 배우면 컨텍스트 편집기 (편집기에서 터미널로, 다시 편집기로)를 피할 수 있다고 확신합니다. emacs와 vim은 diff 도구와 함께 제공됩니다.

  • 들어 이맥스 경우, 당신은 사용 는 Ediff 모드 (기본적으로 instaled을). 이 위키 페이지를 보거나 공식 매뉴얼을 참조하십시오

  • emacs를 사용하는 것은 간단하다 . type Alt + x과 type ediff이다.

  • ediff를 사용하여 브랜치와 리포지토리의 개정판 (bzr, git, svn 등) 사이의 차이점을 찾아 볼 수 있습니다.


현재 작업중 인 사본 (여러 파일)으로 원격으로 추적 된 자식 분기를 식별하는 방법에 대한 간단한 예를 보여 주시겠습니까?
mlt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.