Ändern Sie die Standardsichtbarkeit eines Magit-Abschnitts

8

Ich habe eine Gabelung mit populärem Repo. Ich möchte in der Lage sein, die Commits zu verfolgen, die auf dieses Repo übertragen werden, und gleichzeitig meine eigenen persönlichen Commits für meine Gabelung zu haben. Ich möchte nicht, dass meine Änderungen stromaufwärts zusammengeführt werden, daher kann ich jedes Mal, wenn sich jemand für das vorgelagerte Repo einsetzt, problemlos zusammenführen / neu gründen.

Ich habe über den Dreieck-Workflow und die Unterstützung von Magit gelesen und fand ihn großartig. Es macht genau das, was ich brauche, außer dass es darauf besteht, dass meine lokalen Commits endgültig in das Haupt-Repo integriert werden, wodurch eine Liste meiner lokalen Commits unter dem Abschnitt angezeigt wird 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>

Dies ist in Ordnung, wenn es ein paar Commits gibt, aber später werden sich meine persönlichen Änderungen häufen und die Liste wird wachsen. Gibt es eine Möglichkeit, den Abschnitt so einzustellen Unmerged into upstream/master, dass er immer ausgeblendet ist?

Ammar Alammar
quelle

Antworten:

8

Als diese Frage gestellt wurde, gab es zwar keine solche Option, jetzt jedoch : magit-section-initial-visibility-alist.


Alte Antwort:

Es gibt keine Möglichkeit, dies einfach zu tun, hauptsächlich weil diese Funktion nicht oft angefordert wurde. (Ich kann mich nicht erinnern, dass es jemals zuvor angefordert wurde, was ich etwas überraschend finde.) Ich beabsichtige, irgendwann eine solche Option hinzuzufügen, aber erst, wenn ich andere, grundlegendere Änderungen am Abschnittscode vornehme.

Es gibt jedoch einen Haken, mit dem dies möglich ist. Sie müssen jedoch ein bisschen Boilerplate schreiben:

(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)
  • Wenn dies der Fall ist, magit-insert-section--oldrootwird nilder Puffer zuerst erstellt (nicht aktualisiert). In diesem Fall möchten wir nur ungleich Null zurückgeben.
  • Um den Wert und den Typ eines Abschnitts zu erhalten, verwenden Sie M-x magit-describe-section.
  • Der Rückgabewert muss sein hide, showoder nil(etwas anderes entscheiden lassen).
  • Solche Funktionen müssen vorher magit-section-set-visibility-from-cache in den Haken kommen.

Das ist ein bisschen rau an den Rändern, dann war dies wiederum nur für interne Zwecke gedacht.

Tarsius
quelle
Oh wow, vielen Dank! Genau das brauche ich.
Ammar Alammar