Membuat keluaran diff lebih mudah dibaca

12

Saya mencari alat yang akan mengambil keluaran diff / debdiff ( dan lebih khusus lagi, keluaran skrip ini ) dan menampilkan hasil perbandingan dengan cara yang sangat mudah dibaca dan grafis. Pointer apa pun akan dihargai.

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

Meld, Diffuse dan perangkat lunak sejenis tidak cocok untuk tujuan ini, karena mereka dimaksudkan untuk bekerja mandiri, dan jangan mengambil input dari stdin.

senapan
sumber

Jawaban:

8

Kompare dapat melakukan ini (dan merupakan IMO diff-viewer GUI terbaik):

./whatchanged package_name | kompare -

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

scottl
sumber
Ya, saya mencobanya dengan Meld, tetapi yang terjadi adalah bahwa Meld diluncurkan segera dan mendapatkan output perantara dari skrip, alih-alih meluncurkan setelah skrip selesai dan mendapatkan keluaran 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, daripada mode perbandingan file.
senapan
Saya memecahkan masalah mode VCS dengan meluncurkan Meld dengan opsi -a. Kompare juga berfungsi. Yang tersisa adalah membuat script pipe-aware.
senapan
3

Jika Anda hanya memiliki konsol, colordiffadalah solusi yang cukup bagus.

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

Mnementh
sumber
2

Saya suka menggunakan penyorotan sintaksis internal vim sebagai pager, sehingga saya dapat melihat diff berwarna. Misalnya, meletakkan ini di .bashrc:

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

(Dan kemudian re-source .bashrcdengan Anda . ~/.bashrc.) Kemudian Anda dapat menjalankan vlesssebagai pager Anda:

vless /path/to/your.diff

Ini tidak grafis, tetapi setidaknya disorot.

Kees Cook
sumber
Tapi dia tidak meminta file diff berwarna, dia meminta diff grafis. Yang mengisyaratkan bahwa Anda harus dapat membaca file asli sebanyak diff itu sendiri.
Martin Owens -doctormo-
Nah, "baca dari stdin" adalah syarat. Jika "Meld" telah dikesampingkan, tidak ada banyak yang tersisa. Jawaban lain yang menciptakan diff dan membuka Meld adalah taruhan terbaik untuk grafis. Atau malah bisa diluncurkan gedit.
Kees Cook
Anda tidak memasukkan "sudo apt-get install vim" di .bashrc Anda, harap edit untuk membuatnya jelas.
Capi Etheriel
2

Meskipun aplikasi KDE dapat diinstal tanpa terlalu banyak ketergantungan, kdiff adalah alat pengeditan / penggabungan yang luar biasa.

Johanna Larsson
sumber
1
Walaupun kdiff (alias kdiff3 dalam arsip ubuntu) adalah alat yang hebat, itu juga tidak memuaskan pertanyaan OP, karena mereka mencari alat yang akan mengambil perbedaan pada STDIN dan menampilkannya, dan dari penjelajahan terbatas yang saya lakukan, Saya tidak bisa melihat cara untuk membuatnya melakukannya. Juga, jika mengurangi ketergantungan KDE adalah masalah, arsip ubuntu menyertakan kdiff3-qt, yang hanya bergantung pada qt dan bukan pustaka dari tumpukan KDE.
Steve Beattie
2

Saya akan menggunakan skrip sederhana ini untuk menggunakan berbaur (atau salah satu 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 berbaur dan output dari bzr diff, jadi salin ini ke / usr / bin dan chmod 755 dan saya melakukan ini:

bzr diff | meld-diff

Hasilnya menunjukkan seperti yang diharapkan.

Martin Owens -doctormo-
sumber
4
Meskipun ini bukan masalah besar pada mesin pengguna tunggal, Anda harus menggunakan mktempdan mktemp -dmembuat file sementara dan direktori Anda dengan aman, jika tanpa alasan lain selain agar Anda dapat melakukan diff pada beberapa pohon pada saat yang sama tanpa satu clobbering yang lain.
Steve Beattie
Ini bekerja dengan bzr diff, tetapi hanya dalam mode perbandingan direktori. Saya ingin dapat membandingkan file individual juga. Saya akan mencoba memperbaikinya untuk benar-benar bekerja dengan skrip saya juga, yang saat ini tidak; Terima kasih.
senapan
Tandai saya jika menurut saya ide saya menggunakan skrip itu bagus. Sejauh ini saya terlalu banyak ditandai.
Martin Owens -doctormo-
1

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

  • Untuk case emacs , Anda akan menggunakan Ediff Mode ( diaktifkan secara default). Lihatlah halaman wiki ini atau bacalah manual resmi

  • Menggunakan emacs sederhana, cukup ketik Alt + xdan ketik ediff.

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

crncosta
sumber
Maukah Anda menunjukkan contoh cepat cara mengedit cabang git yang dilacak dari jarak jauh dengan copy pekerjaan saat ini (beberapa file)?
mlt