Ubah visibilitas default bagian Magit

8

Saya memiliki garpu repo populer, saya ingin dapat melacak komitmen yang mendorong repo itu sementara juga memiliki komitmen pribadi saya untuk garpu saya. Saya tidak benar-benar ingin perubahan saya digabung menjadi hulu jadi saya baik-baik saja dengan menggabungkan / mem-rebasing setiap kali seseorang melakukan repo hulu.

Saya membaca tentang alur kerja segitiga dan dukungan Magit untuknya dan menganggapnya hebat. Itu melakukan persis apa yang saya butuhkan, kecuali bahwa itu menegaskan komit lokal saya akhirnya harus digabungkan ke repo utama sehingga menampilkan daftar komit lokal saya di bawah bagian Unmerged into upstream/master:

Head:     <local commit>
Merge:    upstream/master <upstream commit>
Push:     origin/master <local commit>

Unpulled from upstream/master (1)
987ac90 upstream/master <upstream commit>

Unmerged into upstream/master (1)
123baf8 master origin/master <local commit>

Ini bagus jika ada beberapa komitmen, tetapi kemudian modifikasi pribadi saya akan menumpuk dan daftar akan bertambah. Apakah ada cara untuk mengatur bagian Unmerged into upstream/masteragar selalu disembunyikan?

Ammar Alammar
sumber

Jawaban:

8

Meskipun tidak ada opsi tersebut ada ketika pertanyaan ini diminta, sekarang tidak: magit-section-initial-visibility-alist.


Jawaban lama:

Tidak ada opsi untuk melakukan ini dengan mudah, terutama karena fitur ini belum sering diminta. (Saya tidak ingat bahwa itu pernah diminta sebelumnya, yang menurut saya sedikit mengejutkan.) Saya bermaksud untuk akhirnya menambahkan opsi seperti itu, tetapi tidak sampai saya membuat perubahan lain, yang lebih mendasar, pada kode bagian.

Tetapi ada kait yang dapat digunakan untuk melakukan ini. Anda harus menulis sedikit boilerplate:

(defun local-magit-initially-hide-unmerged (section)
  (and (not magit-insert-section--oldroot)
       (eq (magit-section-type section) 'unpushed)
       (equal (magit-section-value section) "@{upstream}..")
       'hide))

(add-hook 'magit-section-set-visibility-hook
          'local-magit-initially-hide-unmerged)
  • Jika magit-insert-section--oldrootsudah nilmaka buffer sedang dibuat pertama kali (tidak diperbarui). Kami hanya ingin mengembalikan nihil dalam kasus itu.
  • Untuk mendapatkan nilai dan jenis bagian digunakan M-x magit-describe-section.
  • Nilai kembali harus hide, showatau nil(membiarkan sesuatu yang lain memutuskan).
  • Fungsi seperti harus datang sebelum magit-section-set-visibility-from-cache di hook.

Itu agak kasar di sekitar tepi, sekali lagi ini hanya dimaksudkan untuk keperluan internal.

tarsius
sumber
Oh wow, terima kasih banyak! Inilah yang saya butuhkan.
Ammar Alammar