Modifica la visibilità predefinita di una sezione Magit


8

Ho un fork di repository popolari, voglio essere in grado di tenere traccia dei commit inviati a quel repository pur avendo anche i miei commit personali sul mio fork. Non voglio davvero che le mie modifiche vengano unite a monte, quindi sto bene con l'unione / rebasing ogni volta che qualcuno si impegna nel repository upstream.

Ho letto del flusso di lavoro triangolare e del supporto di Magit e l'ho pensato alla grande. Fa esattamente quello di cui ho bisogno, tranne per il fatto che insiste sul fatto che i miei commit locali dovrebbero essere finalmente uniti nel repository principale, visualizzando quindi un elenco dei miei commit locali nella sezione 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>

Questo va bene se ci sono un paio di commit, ma in seguito le mie modifiche personali si accumuleranno e l'elenco crescerà. C'è un modo per impostare la sezione Unmerged into upstream/masterda nascondere sempre?

Risposte:


8

Mentre tale opzione esisteva quando questa domanda è stato chiesto, ora fa: magit-section-initial-visibility-alist.


Vecchia risposta:

Non esiste alcuna opzione per farlo facilmente, soprattutto perché questa funzione non è stata richiesta spesso. (Non ricordo che sia mai stato richiesto prima, il che trovo un po 'sorprendente.) Ho intenzione di aggiungere eventualmente tale opzione, ma non fino a quando non apporterò altre, più fondamentali, modifiche al codice della sezione.

Ma esiste un gancio che può essere usato per fare questo. Dovrai scrivere un po 'di boilerplate però:

(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)
  • Se magit-insert-section--oldrootè nilallora il buffer viene creato per la prima (non in fase di aggiornamento). In questo caso vogliamo solo restituire un valore non nullo.
  • Per ottenere il valore e il tipo di una sezione, utilizzare M-x magit-describe-section.
  • Il valore di ritorno deve essere hide, showo nil(lasciare qualcos'altro decidere).
  • Tali funzioni devono venire prima magit-section-set-visibility-from-cache nel gancio.

È un po 'ruvido attorno ai bordi, quindi di nuovo questo era destinato solo a scopi interni.


Oh caspita, grazie mille! Questo è esattamente ciò di cui ho bisogno.
Ammar Alammar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.