Modifier la visibilité par défaut d'une section Magit

8

J'ai une fourchette de repo populaire, je veux pouvoir garder une trace des commits poussés vers ce repo tout en ayant mes propres commits personnels sur ma fourchette. Je ne veux pas vraiment que mes modifications soient fusionnées en amont, donc je suis d'accord pour fusionner / rebaser chaque fois que quelqu'un s'engage dans le référentiel en amont.

J'ai lu sur le flux de travail en triangle et le support de Magit et je l'ai trouvé génial. Il fait exactement ce dont j'ai besoin, sauf qu'il insiste pour que mes validations locales soient finalement fusionnées dans le référentiel principal, affichant ainsi une liste de mes validations locales sous la section 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>

C'est bien s'il y a quelques commits, mais plus tard mes modifications personnelles s'accumuleront et la liste s'allongera. Existe-t-il un moyen de définir la section Unmerged into upstream/masterpour qu'elle soit toujours masquée?

Ammar Alammar
la source

Réponses:

8

Bien qu'aucune telle option existait lorsque cette question a été posée, il le fait maintenant: magit-section-initial-visibility-alist.


Ancienne réponse:

Aucune option n'existe pour le faire facilement, principalement parce que cette fonctionnalité n'a pas été demandée souvent. (Je ne me souviens pas qu'elle ait déjà été demandée auparavant, ce que je trouve un peu surprenant.) J'ai l'intention d'ajouter éventuellement une telle option, mais pas avant d'avoir apporté d'autres modifications plus fondamentales au code de la section.

Mais il existe un crochet qui peut être utilisé pour ce faire. Vous devrez cependant écrire un peu de passe-partout:

(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)
  • Si magit-insert-section--oldrootest nilalors le tampon est d'abord créé (pas mis à jour). Nous voulons seulement retourner non nul dans ce cas.
  • Pour obtenir la valeur et le type d'une section, utilisez M-x magit-describe-section.
  • La valeur de retour doit être hide,, showou nil(laisser autre chose décider).
  • De telles fonctions doivent venir avant magit-section-set-visibility-from-cache dans le crochet.

C'est un peu rude sur les bords, mais là encore, cela n'était destiné qu'à des fins internes.

tarse
la source
Oh wow, merci beaucoup! C'est exactement ce dont j'ai besoin.
Ammar Alammar