Làm cho đầu ra khác dễ đọc hơn


12

Tôi đang tìm kiếm một công cụ sẽ lấy đầu ra diff / debdiff ( cụ thể hơn là đầu ra của tập lệnh này ) và hiển thị kết quả so sánh theo cách đồ họa rất dễ đọc. Bất kỳ con trỏ sẽ được đánh giá cao.

Lý tưởng nhất, nó sẽ là GTK +, FOSS tương đương với MDR .

Meld, Diffuse và phần mềm tương tự không phù hợp cho mục đích này, vì chúng dự định hoạt động độc lập và không lấy đầu vào từ stdin.

Câu trả lời:


8

Kompare có thể làm điều này (và là IMO cho người xem khác biệt GUI tốt nhất):

./whatchanged package_name | kompare -

Lưu ý '-' được đưa ra làm đối số tệp đầu vào. Hầu hết các chương trình * nix đều có giao diện này để chấp nhận đầu vào theo đường ống, vì vậy bạn có thể sử dụng bất cứ thứ gì bạn thích.


Có, tôi đã thử điều đó với Meld, nhưng điều xảy ra là Meld được khởi chạy ngay lập tức và nhận đầu ra trung gian của tập lệnh, thay vì khởi chạy một khi tập lệnh kết thúc và nhận đầu ra khác. Tôi có lẽ cần phải điều chỉnh luồng của tập lệnh để hoạt động chính xác với Meld và các phần mềm khác mà nó được chuyển sang. Và với "bzr diff" và đầu ra khác thường, Meld được khởi chạy ở chế độ VCS, thay vì chế độ so sánh tệp.
mgunes

Tôi đã giải quyết vấn đề chế độ VCS bằng cách khởi chạy Meld với tùy chọn -a. Kompare hoạt động là tốt. Tất cả chỉ còn lại là làm cho kịch bản nhận thức được.
mgunes

3

Nếu bạn chỉ có một giao diện điều khiển, colordifflà một giải pháp khá tốt.

Để cài đặt nó, hãy chạy lệnh này sudo apt-get install colordifftrong một thiết bị đầu cuối


2

Tôi thích sử dụng tô sáng cú pháp nội bộ của vim như một máy nhắn tin, để tôi có thể xem các khác biệt được tô màu. Ví dụ: đặt cái này trong .bashrc:

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

(Và sau đó lấy lại nguồn của bạn .bashrcvới . ~/.bashrc.) Sau đó, bạn có thể chạy vlessnhư máy nhắn tin của mình:

vless /path/to/your.diff

Nó không phải là đồ họa, nhưng ít nhất nó được làm nổi bật.


Nhưng anh ta không yêu cầu các tập tin khác màu, anh ta yêu cầu các đồ họa khác. Những gợi ý mà bạn cần để có thể đọc các tệp gốc nhiều như chính diff.
Martin Owens -doctormo-

Chà, "đọc từ stdin" là một yêu cầu. Nếu "Meld" đã bị loại trừ, sẽ không còn nhiều. Câu trả lời khác tạo ra Meld và mở Meld là đặt cược tốt nhất cho đồ họa. Hoặc nó có thể khởi chạy geditthay thế.
Kees Cook

bạn không đặt "sudo apt-get install vim" trong .bashrc của mình, vui lòng chỉnh sửa để làm cho rõ ràng.
Capi Etheriel

2

Mặc dù một ứng dụng KDE có thể được cài đặt mà không cần quá nhiều phụ thuộc, kdiff là một công cụ chỉnh sửa / hợp nhất khác biệt tuyệt vời.


1
Mặc dù kdiff (còn gọi là kdiff3 trong kho lưu trữ ubfox) là một công cụ tuyệt vời, nhưng nó cũng không thỏa mãn câu hỏi của OP, vì họ đang tìm kiếm một công cụ khác biệt với STDIN và hiển thị nó, và từ việc khám phá hạn chế tôi đã làm, Tôi không thể thấy một cách để làm cho nó làm điều đó. Ngoài ra, nếu giảm phụ thuộc KDE là một vấn đề, kho lưu trữ ubfox bao gồm kdiff3-qt, chỉ phụ thuộc vào qt chứ không phụ thuộc vào các thư viện từ ngăn xếp KDE.
Steve Beattie

2

Tôi sẽ sử dụng tập lệnh đơn giản này để sử dụng meld (hoặc bất kỳ công cụ hiện có nào khác), theo cách đó bạn có được một chút linh hoạt:

#!/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

Đã thử nghiệm với meld và đầu ra từ bzr diff, vì vậy đã sao chép nó vào / usr / bin và chmod 755 và tôi đã làm điều này:

bzr diff | meld-diff

Kết quả cho thấy như mong đợi.


4
Mặc dù nó không phải là vấn đề lớn đối với các máy một người dùng, bạn nên sử dụng mktempmktemp -dtạo tệp và thư mục tạm thời của mình một cách an toàn, nếu không có lý do nào khác ngoài việc bạn có thể thực hiện khác biệt trên nhiều cây cùng một lúc mà không cần ghi đè cai khac.
Steve Beattie

Nó hoạt động với bzr diff, nhưng chỉ trong chế độ so sánh thư mục. Tôi muốn có thể so sánh các tập tin cá nhân là tốt. Tôi cũng sẽ cố gắng tinh chỉnh nó để thực sự hoạt động với kịch bản của mình, điều mà hiện tại nó không hoạt động; cảm ơn.
mgunes

Đánh dấu tôi nếu bạn nghĩ rằng ý tưởng của tôi về việc sử dụng kịch bản là tốt. Cho đến nay tôi đã bị đánh dấu quá nhiều.
Martin Owens -doctormo-

1

Tôi biết bạn không yêu cầu công cụ tìm khác biệt được tích hợp với trình chỉnh sửa, nhưng tôi chắc chắn rằng bạn có thể tránh chuyển đổi ngữ cảnh (từ trình chỉnh sửa sang thiết bị đầu cuối và quay lại trình chỉnh sửa) sau khi tìm hiểu một chút về những gì trình soạn thảo của bạn có thể cung cấp. Cả hai, emacs và vim đều đi kèm với các công cụ diff.

  • Đối với trường hợp emacs , bạn sẽ sử dụng Chế độ Ediff (mặc định theo mặc định). Nhìn vào trang wiki này hoặc tham khảo hướng dẫn chính thức

  • Sử dụng emacs rất đơn giản, chỉ cần gõ Alt + xvà gõ ediff.

  • Bạn có thể sử dụng ediff để trình duyệt khác biệt giữa các nhánh và phiên bản của kho lưu trữ của bạn (bzr, git, svn, v.v.).


Bạn có phiền hiển thị một ví dụ nhanh về cách chỉnh sửa nhánh git được theo dõi từ xa với một bản sao làm việc hiện tại (nhiều tệp) không?
mlt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.