我最近开始在 emacs 中使用 magit 包,它非常有用和方便。我想做一些调整。
如何使 magit pull 始终具有变基选项?目前它显示开关,我必须选择 -r --rebase。在我的开发过程中,我们总是变基。
我使用 gtags+global 进行代码浏览。在 magit pull 之后,如果我能有一个钩子来再次重建 gtags,那就太好了。git pull 成功后是否有钩子?
我最近开始在 emacs 中使用 magit 包,它非常有用和方便。我想做一些调整。
如何使 magit pull 始终具有变基选项?目前它显示开关,我必须选择 -r --rebase。在我的开发过程中,我们总是变基。
我使用 gtags+global 进行代码浏览。在 magit pull 之后,如果我能有一个钩子来再次重建 gtags,那就太好了。git pull 成功后是否有钩子?
我不知道任何特定于 Magit 的设置,但您可以git
相应地配置自己:
git config --global pull.rebase true
我强烈建议不要在全球范围内启用此设置。
正如我在评论中所说,你应该真正改变你的开发过程,这样就不需要合并/重新基于git pull
. 不要在共享分支上工作,而是始终为您的工作创建自己的功能分支,并在需要时显式合并。
然后,您可以显式配置存储库中的各个共享分支以进行变基,例如
git config --local branch.my-fancy-feature.rebase true
至于钩子,没有具体的钩子git pull
。但是,在树的其他更改上更新标记文件也没有什么害处,因此您可以只使用post-rewrite
(for git rebase
) 和post-merge
(for git merge
) 钩子。
有关此类设置的详细信息,请参阅 Tim Pope 的文章Effortless Ctags with Git。
此代码将执行您想要的操作,并可以轻松地为更多模式添加默认选项:
(defun magit-key-mode--add-default-options (arguments)
(let* ((mode (car arguments))
(options (cadr arguments))
(default-options (cdr (assoc mode my/magit-default-options))))
(list mode (delete-dups (delq nil (append options default-options))))))
(setq my/magit-default-options
`(
(pulling "--rebase")
))
(advice-add 'magit-key-mode :filter-args #'magit-key-mode--add-default-options)
注意:这应该是对doublep 的 answer的编辑,但 3-out-of-4 wokks 拒绝了该编辑。他们中没有人接触过 Emacs.SE,他们的 SO 或 LinkedIn 个人资料中也没有提到 Emacs 或 Lisp。显然,不应该赋予不懂相关语言的人拒绝编辑的权力。
我来这里是为了寻找这个问题的答案,找到了 doublep 的答案,通过使代码更清晰和可扩展来改进它,并花费我自己宝贵的时间将改进回馈给社区,结果却被那些不知道的人否决了甚至不知道他们在做什么。每次发生这种情况(到目前为止,每次都发生这种情况),我想知道为什么我要浪费时间为这个网站做贡献。
将以下内容添加到您的.emacs
:
(defun magit-key-mode--add-default-options (arguments)
(if (eq (car arguments) 'pulling)
(list 'pulling (list "--rebase"))
arguments))
(advice-add 'magit-key-mode :filter-args #'magit-key-mode--add-default-options)