Saya suka undo-tree
(tangkapan layar di bawah). Ini memberikan cara mudah untuk menavigasi melalui berbagai versi file (jendela atas) dengan membiarkan pengguna bergerak di sekitar pohon sejarah file di jendela terpisah (jendela bawah) dengan kunci sederhana seperti n
, p
dan C-b
dan C-f
untuk beralih melintasi keturunan yang sama. induk.
Terutama, undo-tree
memperbarui buffer yang menahan file dengan versi yang sesuai berdasarkan pilihan dalam tampilan hierarki, secara otomatis.
Tentu saja, magit
ini fenomenal untuk git, dan akan luar biasa jika memiliki kemampuan yang sama, yaitu membiarkan pengguna menavigasi riwayat git file secara interaktif sambil secara bersamaan memperbarui buffer yang memegang file secara otomatis.
Apakah ini mungkin dengan magit
hari ini?
sumber
undo-tree
menggunakan pohon (itu dalam nama :-p), sedangkan sejarah Git adalah grafik asiklik diarahkan . Mungkin tidak sepele.Jawaban:
Magit baru-baru ini mendapatkan dukungan untuk sesuatu seperti ini, tetapi fitur ini masih agak kasar di sekitar tepi dan harus diaktifkan secara eksplisit.
Fitur serupa telah ada untuk waktu yang lama - ketika Anda berpindah dari satu komit ke komit lain dalam buffer log, dan jendela lain di frame yang sama adalah buffer revisi repositori, maka buffer itu di-refresh untuk menunjukkan komit daripada komit apa pun yang melakukannya. sebelumnya ditampilkan.
Sampai baru-baru ini buffer revisi dibuat ketika Anda pertama kali berpindah dari satu komit ke yang lain. Saya telah mengubah perilaku itu dan sekarang buffer revisi hanya diperbarui . Jika tidak ada jendela dalam bingkai yang sama sudah menampilkan buffer itu, maka bergerak di sekitar log tidak akan lagi menyebabkan buffer ditampilkan di beberapa jendela baru atau jendela yang sudah ada yang sebelumnya menampilkan beberapa buffer lain.
Jadi sekarang Anda harus menekan SPCsekali untuk menampilkan buffer revisi. Hanya kemudian akan mulai diperbarui ketika Anda bergerak di sekitar buffer log.
Jika Anda tidak ingin buffer revisi diperbarui, maka lakukan ini:
Jika di sisi lain Anda juga ingin buffer revisi diperbarui ketika bergerak di buffer status, maka gunakan ini:
Sekarang mungkin untuk buffer gumpalan diperbarui secara otomatis dengan cara yang sama. Pertama tambahkan ini:
Dan mungkin juga:
Kemudian, di dalam buffer log (atau status) tekan RETuntuk menampilkan atau memperbarui buffer revisi, dan juga untuk beralih ke buffer itu. Pindah ke file yang Anda minati dan tekan RETlagi. Anda sekarang berada di buffer "blob-visiting", yang mirip dengan buffer kunjungan-file, kecuali bahwa itu tidak mengunjungi file di pohon kerja tetapi file seperti di beberapa komit.
Beralih kembali ke buffer log (atau status) dan pindah ke komit lain. Buffer gumpalan sedang diperbarui.
Perhatikan bahwa menampilkan gumpalan lain, sebenarnya tidak menggunakan kembali gumpalan buffer yang ada. Alih-alih itu menciptakan buffer baru yang mengunjungi gumpalan itu dan kemudian menampilkan buffer itu di jendela yang sebelumnya menampilkan buffer gumpalan lainnya. Buffer lain itu tidak sedang dihapus, yang sayangnya berarti bahwa beberapa buffer dapat terakumulasi dalam waktu singkat. Yang akan menjadi salah satu ujung yang kasar, saya sebutkan sebelumnya. Menekan qdalam buffer gumpalan tidak menghapusnya, sehingga Anda dapat membersihkan dengan pergi ke jendela yang digunakan untuk menampilkan berbagai buffer gumpalan dan terus menekan qsampai semua buffer telah dihapus.
Selain itu dimungkinkan untuk menavigasi ke gumpalan berikutnya atau sebelumnya dari dalam buffer gumpalan menggunakan pdan n. Saya berasumsi bahwa dalam kebanyakan kasus Anda mulai dengan gumpalan baru dan kemudian pindah kembali ke gumpalan yang lebih tua menggunakan p. Jika Anda melakukan itu dan kemudian ingin bergerak ke arah lain, saya sarankan Anda gunakan quntuk membunuh buffer saat ini dan dengan demikian pindah ke buffer sebelumnya yaitu gumpalan berikutnya .
Perhatikan juga bahwa Anda tidak harus terlebih dahulu mengunjungi revisi untuk dapat mengunjungi gumpalan. Anda juga bisa menggunakan
M-x magit-find-file RET <revision> RET <file> RET
secara langsung, tetapi saya merasa kurang nyaman.sumber
20151014.231
(terbaru sejauh yang saya tahu). Saya mencoba mengikuti langkah-langkah yang Anda jelaskan di atas. Aku pergi kemagit-log-buffer-file
yang memungkinkan saya untuk menavigasi komit ke atas dan ke bawah dengann
danp
tetapi ketika saya menekanSPC
atauRET
pada salah satu dari mereka saya dapatkan:Symbol's value as variable is void: magit-blame-mode
magit-blame-maybe-update-revision-buffer
kemagit-section-movement-hook
oleh kesalahan.