我最近开始在emacs中使用magit包,它非常实用且方便。我想做几个调整。
如何使magit pull始终具有rebase选项?目前它显示了交换机,我必须选择-r --rebase。在我的开发过程中,我们总是反思。
我使用gtags + global进行代码浏览。在magit pull,如果我能有一个钩子再次重建gtags那将是很好的。 git拉成功后有钩子吗?。
答案 0 :(得分:3)
我不知道任何特定于Magit的设置,但您可以相应地配置git
:
git config --global pull.rebase true
我严格建议反对全局启用此设置。
正如我在评论中所说,你应该真正改变你的开发过程,这样就不需要在git pull
上合并/变基。不要在共享分支上工作,而是始终为您的工作创建自己的功能分支,并在需要时显式合并。
然后,您可以在存储库中显式配置各个共享分支以进行重新定位,例如
git config --local branch.my-fancy-feature.rebase true
对于钩子,git pull
没有特定的钩子。但是,在对树的其他更改中更新标记文件也没有什么害处,因此您可能只是post-rewrite
(针对git rebase
)和post-merge
(针对git merge
})钩子。
有关此类设置的详细信息,请参阅Tim Pope的帖子Effortless Ctags with Git。
答案 1 :(得分:2)
将以下内容添加到.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)
答案 2 :(得分:2)
此代码可以满足您的需求,并可以轻松为更多模式添加默认选项:
(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's answer的编辑,但是4个中的3个人拒绝编辑。其中没有一个人甚至触及过Emacs.SE,也没有在他们的SO或LinkedIn个人资料中提及过Emacs或Lisp。显然,不了解有关语言的人不应被赋予拒绝编辑的权力。
我来到这里寻找这个问题的答案,找到了doublep的答案,通过使代码更清晰和可扩展来改进它,并花费我自己宝贵的时间将改进贡献给社区,只是为了拍摄那些甚至不知道自己在做什么的人都会失望。每当这种情况发生时(而且,到目前为止,它每次都发生过),我想知道为什么我在浪费时间为这个网站做贡献。