Pertanyaan Membuat output diff lebih mudah dibaca


Saya mencari alat yang akan mengambil output diff / debdiff (dan lebih spesifik, output dari skrip ini) dan menampilkan hasil perbandingan dengan cara grafis yang sangat mudah dibaca. Setiap pointer akan dihargai.

Idealnya, itu akan menjadi GTK +, setara dengan FOSS MDR.

Perangkat lunak Meld, Diffuse dan sejenisnya tidak sesuai untuk tujuan ini, karena mereka dimaksudkan untuk bekerja secara mandiri, dan tidak mengambil input dari stdin.


12
2017-11-09 01:00


asal




Jawaban:


Kompare dapat melakukan ini (dan IMO IMO penampil GUI terbaik):

./whatchanged package_name | kompare -

Perhatikan '-' yang diberikan sebagai argumen file input. Sebagian besar program * nix memiliki antarmuka ini untuk menerima input piped, jadi Anda mungkin dapat menggunakan yang mana saja yang Anda suka.


8
2017-11-12 02:38



Ya, saya mencoba dengan Meld, tetapi yang terjadi adalah Meld diluncurkan segera dan mendapatkan output menengah dari skrip, daripada meluncurkan setelah skrip selesai dan mendapatkan output diff. Saya mungkin perlu menyesuaikan alur skrip agar berfungsi dengan baik dengan Meld dan perangkat lunak lain yang disalurkan. Dan dengan "bzr diff" dan output diff biasa, Meld diluncurkan dalam mode VCS, bukan mode perbandingan file. - mgunes
Saya memecahkan masalah mode VCS dengan meluncurkan Meld dengan opsi -a. Kompare juga bekerja. Yang tersisa hanyalah membuat skrip sadar pipa. - mgunes


Jika Anda hanya memiliki konsol, colordiff adalah solusi yang cukup bagus.

Untuk menginstalnya, jalankan perintah ini sudo apt-get install colordiff di terminal


3
2017-11-14 12:13





Saya suka menggunakan vimSintaksis internal menyoroti sebagai pager, sehingga saya bisa melihat diff berwarna. Misalnya, meletakkan ini di Anda .bashrc:

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

(Dan kemudian re-sumber Anda .bashrc dengan . ~/.bashrc.) Lalu Anda bisa berlari vless sebagai pager Anda:

vless /path/to/your.diff

Ini bukan grafis, tetapi setidaknya disorot.


2
2017-11-09 05:45



Tapi dia tidak meminta file diff berwarna, dia meminta diff grafis. Petunjuk apa yang Anda butuhkan untuk dapat membaca file asli sebanyak diff itu sendiri. - Martin Owens -doctormo-
Nah, "baca dari stdin" adalah persyaratan. Jika "Meld" telah dikesampingkan, tidak banyak yang tersisa. Jawaban lain yang menciptakan diff dan membuka Meld adalah taruhan terbaik untuk grafis. Atau bisa diluncurkan gedit sebagai gantinya. - Kees Cook
Anda tidak menempatkan "sudo apt-get install vim" di .bashrc Anda, silakan edit untuk membuatnya lebih jelas. - Capi Etheriel


Meskipun aplikasi KDE dapat diinstal tanpa terlalu banyak dependensi, kdiff adalah alat edit / penggabungan diff yang luar biasa.


2
2017-11-09 12:23



Sementara kdiff (alias kdiff3 dalam arsip ubuntu) adalah alat yang hebat, itu juga tidak memenuhi pertanyaan OP, karena mereka mencari alat yang akan mengambil diff pada STDIN dan menampilkannya, dan dari penjelajahan terbatas yang saya lakukan, Saya tidak bisa melihat cara untuk membuatnya melakukan itu. Juga, jika mengurangi dependensi KDE adalah masalah, arsip ubuntu termasuk kdiff3-qt, yang hanya bergantung pada qt dan bukan pustaka dari tumpukan KDE. - Steve Beattie


Saya akan menggunakan skrip sederhana ini untuk menggunakan meld (atau alat lain yang ada), dengan cara itu Anda mendapatkan sedikit fleksibilitas:

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

Diuji dengan meld dan output dari bzr diff, jadi disalin ini ke / usr / bin dan chmod 755 dan saya melakukan ini:

bzr diff | meld-diff

Hasilnya menunjukkan seperti yang diharapkan.


2
2017-11-09 05:11



Meskipun tidak sebanyak masalah pada mesin pengguna tunggal, Anda harus menggunakannya mktemp dan mktemp -d untuk menghasilkan file dan direktori sementara Anda dengan aman, jika tidak ada alasan lain selain sehingga Anda dapat melakukan diff pada beberapa pohon pada saat yang bersamaan tanpa satu clobbering yang lain. - Steve Beattie
Diperbarui, terima kasih Steve! - Martin Owens -doctormo-
Ia bekerja dengan bzr diff, tetapi hanya dalam mode perbandingan direktori. Saya ingin dapat membandingkan file individual juga. Saya akan mencoba untuk memperbaikinya untuk benar-benar bekerja dengan skrip saya juga, yang tidak pada saat ini; Terima kasih. - mgunes
Tandai saya jika Anda berpikir ide saya menggunakan skrip itu bagus. Sejauh ini saya telah ditandai terlalu banyak. - Martin Owens -doctormo-


Saya tahu Anda tidak meminta alat diff yang terintegrasi dengan editor, tetapi saya yakin Anda dapat menghindari pengalih konteks (dari editor ke terminal, dan kembali ke editor) setelah mempelajari sedikit tentang apa yang dapat disediakan oleh editor Anda. Kedua, emacs dan vim dilengkapi dengan alat diff.

  • Untuk emacs kasus, Anda akan menggunakan Mode Ediff (instaled secara default). Lihat ini halaman wiki atau konsultasi panduan resmi 

  • Menggunakan emacs itu sederhana, ketikkan saja Alt + x dan ketik ediff.

  • Anda dapat menggunakan ediff untuk membedakan browser antara cabang dan revisi repositori Anda (bzr, git, svn, dll).


1
2017-11-12 16:54



Maukah Anda menunjukkan contoh cepat bagaimana cara ediff jarak jauh dilacak cabang git dengan copy pekerjaan saat ini (beberapa file)? - mlt