Bagaimana cara memperbaiki buffer terhadap revisi?

8

Saya ingin menjalankan ediff untuk membandingkan versi file saya saat ini (in git) dengan versi file pada cabang berbeda.

Saya menjalankan M-x ediff-revisiondari dalam buffer terbuka untuk file yang dimaksud. Saya menjawab dua pertanyaan:

  • Bandingkan revisi untuk file: Saya mengosongkan jawaban ini (defaultnya adalah buffer saat ini yang benar).
  • Revisi 1 untuk membandingkan: Saya menerima default lagi ("versi terbaru file default").
  • Revisi 2 untuk membandingkan: Saya memasukkan nama cabang git

Ini berfungsi baik untuk melihat perbedaan antara dua file. Namun, saya ingin dapat mengedit versi saat ini (yaitu, dengan menekan aatau bdi ediff untuk menyalin atau menghapus blok-blok diff) dan buffer "versi sekarang" adalah buffer read-only dengan nama yang dibuat ( file.~git-branch~). Saya ingin buffer "versi saat ini" menjadi buffer baca-tulis yang saya mulai dengan, bukan buffer baca-saja pada versi cabang saat ini.

PT
sumber

Jawaban:

7

Emacs melakukan apa yang Anda perintahkan untuk dilakukan alih-alih apa yang Anda maksudkan. ediff-revisionmeminta tiga informasi:

  1. File untuk dikerjakan - default: file yang dikunjungi oleh buffer saat ini.
  2. Revisi lama - default: revisi terbaru.
  3. Revisi baru - default: keadaan saat ini.

Pada langkah 1, Anda memilih file, Anda tidak memberi tahu Emacs bahwa Anda ingin menggunakan file itu seperti di buffer. Default untuk langkah 2 adalah revisi terbaru, bukan copy pekerjaan saat ini. Default untuk langkah 3 adalah konten buffer, yang merupakan copy pekerjaan jika buffer tidak dimodifikasi. Dengan apa yang Anda lakukan, Anda membandingkan apa yang telah Anda periksa (biasanya revisi terbaru pada cabang saat ini) dengan beberapa cabang lain, bukan copy pekerjaan dengan beberapa cabang lainnya.

Anda perlu memberikan nama cabang sebagai revisi pertama (langkah 2), dan biarkan pertanyaan ketiga kosong untuk mengatakan Anda ingin menggunakan negara penyangga. Anda hanya dapat memilih status buffer saat ini untuk revisi 2, bukan untuk revisi 1 (ini dibangun ke dalam ediff-vc-internal).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
7

Saat menggunakan magit :

  1. Gunakan l -al luntuk melihat revisi semua cabang dalam sejarah Anda
  2. buka baris yang berisi revisi yang ingin Anda bandingkan dengan konten buffer Anda saat ini.
  3. Ketik ddan Anda akan ditanya revisi mana yang membandingkan pohon kerja saat ini dengan (standarnya adalah revisi pada titik). Konfirmasi.
  4. Anda akan mendapatkan tinjauan umum berbeda atas perubahan semua perbedaan file antara pohon yang sedang bekerja dan revisi. Tunjukkan poin pada file yang Anda minati dan tekan euntuk meminta sesi ediff di atasnya.

Magit menawarkan sejumlah opsi untuk menampilkan revisi (langkah 1). Anda dapat memilih Jika Anda memiliki struktur cabang yang sangat kompleks, Anda mungkin ingin menggunakan lebih banyak penyaringan untuk menemukan revisi yang diinginkan.

Dfeich
sumber
Bagus! Inilah yang saya cari. Hanya satu hal ... Apa maksudmu -al? Saya biasanya melakukan l latau l apada buffer status-magit.
nephewtom
Ini untuk tata letak antarmuka pengguna yang lebih lama dari magit. Dalam versi saat ini yang dapat Anda gunakan l a. Tata letak Magit berubah beberapa kali selama 3 tahun terakhir.
dfeich