Ich benutze Gerrit. Wenn ich meine Commits verschieben möchte, verwende ich den folgenden Befehl:
git push origin HEAD:refs/for/master
Wie kann ich denselben Befehl mit neu erstellen Magit?
Ich benutze Gerrit. Wenn ich meine Commits verschieben möchte, verwende ich den folgenden Befehl:
git push origin HEAD:refs/for/master
Wie kann ich denselben Befehl mit neu erstellen Magit?
Antworten:
Nach einer Weile hatte ich genug Zeit, um es selbst zu beheben.
Ich kenne keinen "out-of-the-box" Weg, dies zu tun; Sie können Magit jedoch erweitern, um es Ihren Anforderungen anzupassen.
Erstens habe ich eine Funktion geschrieben, die zu Gerrit führen würde:
(defun magit-push-to-gerrit ()
(interactive)
(magit-git-command "push origin HEAD:refs/for/master" (magit-toplevel)))
Als nächstes habe ich es hinzugefügt, um das Menü zu drücken:
(transient-append-suffix 'magit-push "p"
'("m" "Push to gerrit" magit-push-to-gerrit))
Diese beiden Formulare befinden sich in meiner Init-Datei.
Und das ist es! Jetzt kann ich P mzum Gerrit pushen.
Update : Wenn Sie ein bestimmtes Commit und nicht HEAD pushen möchten, können Sie diese Funktion verwenden (auch aktualisiert mit magit-git-command-topdir, wie im Kommentar angegeben):
(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.Siehe github.com/magit/magit/wiki/…
Verwenden Sie !, um einen generischen git-Befehl zu verwenden, dann können Sie einfach schreiben: push origin HEAD:refs/for/masterfast wie üblich.
Hier gibt es auch ein spezielles Paket gerrit:
https://github.com/terranpro/magit-gerrit
Ich habe es jedoch nicht persönlich verwendet, weiß also nicht genau, wie ich es verwenden soll.
BEARBEITEN
In einer neueren Version von magitist es jetzt möglich, eine explizite Git-Referenz aus dem rUnterbefehl anzugeben . gerritUm zur Referenz zu gelangen, verwenden Sie einfach:
P r"origin" RET"HEAD: refs / for / master"
Dies ist zwar keine wirkliche Abkürzung, da Sie noch mehr Tastendrücke ausführen müssen , aber sie ist sofort verfügbar.
git push 'elsewhere'aber das stellt 'refs / Heads /' vor das Zweigstellenziel, so dass dies nicht sofort funktioniert gerrit.
(magit-git-command "push origin HEAD:refs/for/master" (magit-toplevel)). Sie möchten(magit-git-command-topdir "git push origin HEAD:refs/for/master")stattdessen verwenden.