我最近在Spacemacs中使用magit,大部分情况下都很好用.
特殊情况是,公司使用gerrit做代码review.gerrit和普通git仓库的一个重要区别在于推送commit的命令变为git push origin HEAD:refs/for/master
.在命令行,我可以通过.gitconfig文件做一个alias,来简化操作.那么在magit里面我要怎么修改呢?
我在stack exchange上找到最相似的一个回答是:Magit + gerrit - push to other branch
但是我参照着添加到user-config
中,重启Spacemacs后.报错:(Spacemacs) Error in dotspacemacs/user-config: Symbol’s function definition is void: magit-define-popup-action.
Any help is welcome:)
在(with-eval-after-load magit-popup ...)
里面加配置。
等你对Emacs Lisp有所了解以后就会知道这是为了避免使用未加载的函数,报错信息原因是使用了未定义的函数。
with eval after load 使得这段配置延迟到加载相应的包以后求值。
虽然我没试过,但是magit本质上是用命令行git操作的,所以我觉得改 gitconfig 应该就可以了。
非常感谢,在你的提示下.我去看了下子龙山人的配置,照猫画虎,代码如下:
(defun magit-push-to-gerrit ()
(interactive)
(magit-git-command "push origin HEAD:refs/for/master" (magit-toplevel)))
(with-eval-after-load 'magit
(progn
(magit-define-popup-action 'magit-push-popup
?g
"Push to gerrit"
'magit-push-to-gerrit)))
我自己这边测试通过了.
gulei
4
现在版本的 magit 可以直接使用 P r
“origin” RET
“some_branch:refs/to/some_branch”