Magitセクションのデフォルトの可視性を変更する


8

私は人気のあるレポのフォークを持っています。そのレポにプッシュされているコミットを追跡しながら、自分のフォークへの個人的なコミットも行いたいです。私は自分の変更を上流にマージしたくないので、誰かが上流のレポにコミットするたびにマージ/リベースしても問題ありません。

私は三角形のワークフローとそれに対するMagitのサポートについて読み、素晴らしいと思いました。それは私のローカルコミットが最終的にメインリポジトリにマージされ、セクションの下に私のローカルコミットのリストを表示する必要があることを除いて、私が必要とするものを正確に実行します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>

いくつかのコミットがある場合はこれで問題ありませんが、後で私の個人的な変更が積み重なって、リストが大きくなります。セクションUnmerged into upstream/masterを常に非表示にする方法はありますか?

回答:


8

この質問が尋ねられたとき、そのようなオプションは存在しませんでしたが、現在は次のようになっていますmagit-section-initial-visibility-alist


古い答え:

これを簡単に行うオプションはありません。これは、この機能が頻繁に要求されていないためです。(これまでに要求されたことを思い出せません。少し意外と思います。)最終的にそのようなオプションを追加するつもりですが、セクションコードに他のより根本的な変更を加えるまではそうしません。

しかし、これを行うために使用できるフックが存在します。ただし、定型文を少し書く必要があります。

(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)
  • 場合magit-insert-section--oldrootnil、バッファが最初に作成されている(更新されていません)。その場合は、nil以外を返すだけです。
  • セクションの値とタイプを取得するには、を使用しますM-x magit-describe-section
  • 戻り値がなければならないhideshowまたはnil(他の何かを決めましょう)。
  • そのような関数はフックの magit-section-set-visibility-from-cacheに来る必要があります。

これはエッジの周りがやや荒れているので、これも内部での使用のみを目的としています。


わあ、どうもありがとう!これはまさに私が必要とするものです。
Ammar Alammar 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.