Mengapa komunitas Git tampaknya mengabaikan perbedaan berdampingan [ditutup]

33

Saya dulu menggunakan Windows, SVN, Tortoise SVN, dan Beyond Compare. Itu adalah kombinasi yang bagus untuk melakukan tinjauan kode.

Sekarang saya menggunakan OSX dan Git. Saya telah berhasil menggabungkan skrip bash bersama dengan Gitx dan DiffMerge untuk menghasilkan solusi yang hampir tidak dapat diterima.

Saya telah kacau dengan pengaturan ini, dan yang serupa, selama lebih dari setahun. Saya juga sudah mencoba menggunakan penampil diff Github dan penampil diff Gitx, jadi saya tidak memberi mereka kesempatan.

Ada begitu banyak orang pintar melakukan hal-hal hebat dengan Git. Mengapa tidak bersebelahan dengan opsi melihat seluruh file? Dengan orang-orang yang telah menggunakan keduanya, saya belum pernah mendengar ada orang yang menyukai tampilan +/- lebih baik, setidaknya untuk lebih dari sekadar pemeriksaan cepat.

Kyle Heironimus
sumber
Anda dapat mengatur TortoiseGit untuk menggunakan Beyond Compare untuk diiff, dalam hal ini Anda akan melihat seluruh file berdampingan (namun saya tidak pernah menguji pengaturan ini secara pribadi [tetapi rencanakan untuk, satu hari ini]).
wildpeaks
1
Hanya komentar, saya gunakan untuk menggunakan Windows, SVN dan Beyond Compare. Tapi, sekarang saya menggunakan Ubuntu + Git. Untungnya, saya masih bisa menggunakan teman lama saya Beyond Compare. Ini berfungsi dengan baik di Ubuntu. Dan sementara tidak gratis, itu bernilai setiap sen bagi saya. :) Maaf, saya tidak dapat menawarkan Anda solusi di OSX, tetapi tidak ingin orang berpikir bahwa Beyond Compare adalah solusi khusus Windows.
David S
7 tahun kemudian, saya masih merasa seperti ini, tetapi saya telah melatih diri saya untuk lebih memilih diff sebaris dalam semua kasus kecuali yang paling kompleks. Lalu aku menjebol teman lamaku Beyond Compare.
Kyle Heironimus

Jawaban:

19

Saya tidak dapat berbicara untuk Linus mengenai hal ini, tetapi cara git menangani difftools sangat tidak umum, secara filosofis. git melakukan apa yang dilakukannya dengan sangat baik, dan menggunakan alat-alat eksternal untuk yang lainnya, termasuk diffing dan penggabungan yang lebih canggih.

Saya menggunakan DiffMerge dengan git di OS X juga, dan saya tidak perlu menggunakan shell bash. Itu rumit, tetapi saya mengkonfigurasi pengaturan gt's difftool dan mergetool untuk memanggil DiffMerge secara langsung, dan sekarang saya dapat melihat diff dan menyelesaikan konflik penggabungan dalam alat pihak ketiga visual yang luar biasa.

Ini konfigurasi saya:

[mergetool "diffmerge"]
        cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
        trustExitCode = false
[difftool "diffmerge"]
        cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
[merge]
        tool = diffmerge
[diff]
        tool = diffmerge
Dan Ray
sumber
1
Ini tidak apa-apa, tetapi ketika beberapa file berubah, saya bisa melihatnya satu per satu, dalam urutan yang git memutuskan untuk menunjukkannya kepada saya. Saya harus menutup satu untuk membuka yang lain. Itu sebabnya saya juga menggunakan skrip bash ketika saya ingin melihat semua file sekaligus.
Kyle Heironimus
Saya tidak tahu apa yang Anda harapkan untuk dilihat dalam "melihat semuanya sekaligus". Tapi lihat git diff --stat. Memberi Anda daftar grafis yang bagus dari semua file yang diubah, dengan jumlah baris yang diubah.
Dan Ray
Berpikir lebih banyak tentang hal "buka semuanya sekaligus" ... Berapa banyak file yang dapat Anda edit / lihat sekaligus? Saya hanya dapat melihat satu file pada saat tertentu. Saya kira saya tidak mengerti apa yang Anda inginkan.
Dan Ray
2
Contoh terbaik adalah TortoiseSVN dengan Beyond Compare. Misalnya, jika komit terakhir rekan kerja saya memiliki 3 file berubah, itu akan menampilkan tiga file dalam daftar. Saya kemudian dapat mengklik file yang sesuai untuk melihat perbedaannya. Saya juga bisa membuka 3 jendela terpisah, masing-masing dengan file yang berbeda. Saya kemudian bisa bolak-balik di antara mereka, sesuai kebutuhan untuk memeriksa perubahan. Pada dasarnya, ini memungkinkan Anda untuk melihat semua perubahan dengan persyaratan Anda sendiri, tidak secara berurutan sesuai urutan yang ditentukan oleh vcs Anda.
Kyle Heironimus
1
Anda tahu, Anda harus memeriksa Tower. Ini adalah Mac git gui terbaik yang pernah saya lihat, dan melakukan apa yang Anda bicarakan dan CARA lebih. git-tower.com
Dan Ray
16

Anda akan melihat bahwa SVN sendiri tidak menawarkan solusi berdampingan. Apa yang Anda daftarkan adalah alat pihak ketiga. Seperti kebanyakan hal di git, ini sangat dapat dikonfigurasi, dan memiliki dukungan alat luar biasa. Apakah Anda memiliki mergetool yang diatur? Jika tidak, Anda harus melakukannya. Jika ya, coba git difftool. Kemudian lihat halaman manual untuk opsi-opsi konfigurasi.

Saya menggunakan KDiff3 sebagai mergetool saya karena ini adalah alat lintas platform yang bagus, dan tanpa konfigurasi lebih lanjut, git difftoolmelakukan persis apa yang Anda minta.

Ryan Stewart
sumber
2
Sebenarnya, itu ok dengan difftool, tetapi masih gagal ketika melihat banyak file. Mereka harus dibuka satu per satu. Untuk membuka semuanya sekaligus, saya harus melakukan hacking bash script.
Kyle Heironimus
9

Ini adalah filosofi * nix. Banyak orang yang menggunakan alat ini menghabiskan banyak waktu di terminal. Terminal tidak mengharuskan kita untuk memindahkan tangan kita dari keyboard ke mouse. Saya tahu bahwa saya lebih suka gaya +/- daripada alat diff / penggabungan visual, terutama karena saya hanya peduli dengan perbedaannya. Saya peduli dengan 3-4 baris di sekitar perubahan dan perubahan itu sendiri. Yang lebih penting adalah informasi tambahan yang benar-benar tidak membantu saya.

Diff's biasanya digunakan untuk melihat sekilas apa yang telah diubah. Tidak membaca kodenya.

Saya belum pernah menemukan alat diff visual yang sangat berguna dibandingkan dengan diff default pada sistem GNU. Yang mereka pernah lakukan adalah mulai mengacaukan mouse dan memaksa saya untuk menggulir file, mencari tahu antarmuka pengguna mereka, dan kemudian berjuang untuk kembali ke baris perintah di mana saya dapat melakukan sesuatu tentang masalah yang saya lihat di .

jsternberg
sumber
1
vimdiff tidak apa-apa, biasanya hanya menampilkan bagian-bagiannya. Saya menggunakannya untuk penggabungan; tidak perlu mouse.
alternatif
8
Apakah Anda pernah melihat perubahan yang dilakukan oleh rekan kerja? Ke area kode yang tidak Anda kenal? Saya melakukan semua waktu, dan saya tidak bisa membayangkan melakukannya tanpa berdampingan, semua kode. Bagi saya, +/- bagus untuk perubahan yang dilakukan oleh be, tetapi tidak untuk orang lain. Tidak mengatakan Anda salah atau buruk atau apa pun. Hanya bertanya.
Kyle Heironimus
1
Saya sering terpental ke kode yang diubah oleh rekan kerja, sering di area yang tidak saya kenal. Saya pikir saya telah menggunakan berdampingan mungkin 3 atau 4 kali, dan bisa dengan mudah dilakukan tanpa. Itu hanya tergantung pada apa gaya operasi pilihan Anda. Ini bekerja untuk Anda, saya merasa tidak perlu.
Brian Knoblauch
0

Dari penggunaan pribadi saya, saya pikir jawabannya adalah sebagian besar diffs cukup pendek sehingga tidak masalah.

Untuk ulasan kode, saya menggunakan alat review kode berfitur lengkap, yang memberi saya semua hal yang saya suka - seperti komentar, penyorotan sintaksis, dan tampilan berdampingan.

Saya menggunakan git diffhampir secara eksklusif selama saat pementasan kode untuk melakukan; Ketika itu terjadi, perbedaannya cukup kecil, dan cukup baru, sehingga saya tidak perlu melihat konteksnya untuk mengingat apa yang terjadi.

Alat peninjau kode saya untuk Phabricator pilihan , atau mungkin alat yang terintegrasi IDE, yang sadar konteks bahasa. Saya pikir aliran tarik-permintaan github mengerikan untuk review kode, sebagian besar karena itu menunjukkan unified diff dan tidak berdampingan.

aviv
sumber