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?
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?
Respuestas:
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-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 la gerritespecificació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.
git push 'elsewhere'pero eso antepone 'referencias / cabezas /' al destino de la sucursal, por lo que no parece funcionar de inmediato gerrit.
(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.