Estoy usando gerrit Cuando quiero empujar mis commits, utilizo el siguiente comando:
git push origin HEAD:refs/for/master
¿Cómo puedo recrear el mismo comando usando Magit?
Después de un tiempo logré tener suficiente tiempo para tratar de arreglarlo yo mismo.
No conozco ninguna forma "inmediata" de hacer esto; sin embargo, puede ampliar magit para satisfacer sus necesidades.
En primer lugar, escribí una función que empujaría a gerrit:
(defun magit-push-to-gerrit ()
(interactive)
(magit-git-command "push origin HEAD:refs/for/master" (magit-toplevel)))
A continuación, lo agregué al menú push:
(transient-append-suffix 'magit-push "p"
'("m" "Push to gerrit" magit-push-to-gerrit))
Estas dos formas están en mi archivo init.
¡Y eso es! Ahora puedo usar P mpara empujar a gerrit.
Actualización : si desea impulsar una confirmación específica y no HEAD, puede usar esta función (también actualizada con magit-git-command-topdir como se menciona en el comentario):
(defun magit-push-to-gerrit (source)
"Push an arbitrary branch or commit to gerrit. The source is read in the minibuffer."
(interactive
(let ((source (magit-read-local-branch-or-commit "Push")))
(list source)))
(magit-git-command-topdir (concat "git push origin " source ":refs/for/master")))
(magit-git-command "push origin HEAD:refs/for/master" (magit-toplevel)). Querrás usar(magit-git-command-topdir "git push origin HEAD:refs/for/master")en su lugar.magit-obsolete.el:* If you add additional arguments and/or actions to Magit's popups, then you have to port that to modify the new \"transients\" instead.Ver github.com/magit/magit/wiki/…Use
!para usar un comando git genérico, luego puede escribir simplemente:push origin HEAD:refs/for/mastercasi como de costumbre.También hay un paquete dedicado
gerritaquí: https://github.com/terranpro/magit-gerrit Sin embargo, no lo he usado personalmente, así que no sé exactamente cómo usarlo.EDITAR
En una versión reciente de
magit, ahora es posible especificar un git refspec explícito desde el rsubcomando. Por lo tanto, para avanzar a lagerritespecificación de referencia, simplemente use:P r"origen" RET"HEAD: refs / for / master"
Aunque, esto no es realmente un atajo ya que tiene que presionar aún más teclas, pero está disponible de inmediato.
fuente
git push 'elsewhere'pero eso antepone 'referencias / cabezas /' al destino de la sucursal, por lo que no parece funcionar de inmediatogerrit.