Cambiar la visibilidad predeterminada de una sección Magit


8

Tengo una bifurcación de repositorio popular, quiero poder hacer un seguimiento de los compromisos que se empujan a ese repositorio al mismo tiempo que tengo mis propios compromisos personales en mi bifurcación. Realmente no quiero que mis cambios se fusionen en sentido ascendente, así que estoy de acuerdo con fusionar / rebase cada vez que alguien se compromete con el repositorio ascendente.

Leí sobre el flujo de trabajo del triángulo y el apoyo de Magit para él y me pareció genial. Hace exactamente lo que necesito, excepto que insiste en que mis confirmaciones locales deberían fusionarse finalmente en el repositorio principal, mostrando así una lista de mis confirmaciones locales en la sección 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>

Esto está bien si hay un par de confirmaciones, pero más tarde mis modificaciones personales se acumularán y la lista crecerá. ¿Hay alguna forma de configurar la sección Unmerged into upstream/masterpara que siempre esté oculta?

Respuestas:


8

Si bien no existe la opción existía cuando se hizo esta pregunta, se hace ahora: magit-section-initial-visibility-alist.


Vieja respuesta:

No existe ninguna opción para hacer esto fácilmente, principalmente porque esta característica no se ha solicitado con frecuencia. (No recuerdo que alguna vez se haya solicitado antes, lo cual me parece un poco sorprendente). Tengo la intención de agregar eventualmente esa opción, pero no hasta que realice otros cambios más fundamentales en el código de sección.

Pero existe un gancho que se puede utilizar para hacer esto. Sin embargo, tendrás que escribir un poco de repetitivo:

(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--oldrootes nilasí, el búfer se está creando por primera vez (no se está actualizando). Solo queremos devolver un valor nulo en ese caso.
  • Para obtener el valor y el tipo de una sección, use M-x magit-describe-section.
  • El valor de retorno tiene que ser hide, showo nil(dejar que otra cosa decidir).
  • Dichas funciones tienen que venir antes magit-section-set-visibility-from-cache en el gancho.

Eso es un poco áspero en los bordes, de nuevo, esto solo estaba destinado a fines internos.


Oh wow, muchas gracias! Esto es exactamente lo que necesito.
Ammar Alammar
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.