Magit + gerrit-他のブランチにプッシュ


7

私はgerritを使用しています。コミットをプッシュしたいときは、次のコマンドを使用します。

git push origin HEAD:refs/for/master

どのようにして同じコマンドを再作成できMagitますか?

回答:


6

しばらくして、自分で修正するのに十分な時間をどうにかして過ごしました。

これを行うための「すぐに使える」方法は知りません。ただし、ニーズに合わせてmagitを拡張できます。

最初に、私はgerritにプッシュする関数を書きました:

(defun magit-push-to-gerrit ()
  (interactive)
  (magit-git-command "push origin HEAD:refs/for/master" (magit-toplevel)))

次に、それをプッシュメニューに追加しました。

(transient-append-suffix 'magit-push "p"
  '("m" "Push to gerrit" magit-push-to-gerrit))

これらの2つのフォームは私のinitファイルにあります。

以上です!今、私はP mgerritへのプッシュに使用できます。

更新:HEADではなく特定のコミットをプッシュしたい場合は、この関数を使用できます(コメントで参照されているmagit-git-command-topdirでも更新されます)。

(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")))

2
最新のMagitを使用している場合、実行するとエラーが発生します(magit-git-command "push origin HEAD:refs/for/master" (magit-toplevel))(magit-git-command-topdir "git push origin HEAD:refs/for/master")代わりに使用する必要があります。
user30747 2017

差出人magit-obsolete.elgithub.com/magit/magit/wiki/…を* If you add additional arguments and/or actions to Magit's popups, then you have to port that to modify the new \"transients\" instead.参照してください
user30747

3

使用!:それからすることができます簡単な書き込み、ジェネリックのgitコマンドを使用してpush origin HEAD:refs/for/master、ほぼ通常通り。

ここには専用のパッケージもありgerritます:https : //github.com/terranpro/magit-gerrit ただし、私は個人的には使用していません。そのため、使用方法を正確に知りません。

編集

の最近のバージョンではmagitrサブコマンドから明示的なgit refspecを指定できるようになりました。したがって、gerritrefspec にプッシュするには、次のように使用します。

P r「原点」RET「HEAD:refs / for / master」

けれども、あなたも多くのキーの押下をしなければならないので、これは本当にショートカットはありませんが、それは、あるボックスの利用可能アウト。


いくつかのショートカットはどうですか?:)
MatthewRock 2016年

恐れ入りますが、具体的なショートカットはわかりません。私は定期的に試してみましたgit push 'elsewhere'が、それはブランチの宛先に「refs / heads /」を付加するため、そのままでは機能しないようですgerrit
Xaldew、2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.