gerrit设置

我最近在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)))

我自己这边测试通过了.

现在版本的 magit 可以直接使用 P r “origin” RET “some_branch:refs/to/some_branch”