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/master
casi como de costumbre.También hay un paquete dedicado
gerrit
aquí: 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 lagerrit
especificació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
.