3

我最近开始在 emacs 中使用 magit 包,它非常有用和方便。我想做一些调整。

如何使 magit pull 始终具有变基选项?目前它显示开关,我必须选择 -r --rebase。在我的开发过程中,我们总是变基。

我使用 gtags+global 进行代码浏览。在 magit pull 之后,如果我能有一个钩子来再次重建 gtags,那就太好了。git pull 成功后是否有钩子?

4

3 回答 3

4

我不知道任何特定于 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

于 2013-11-24T08:59:41.530 回答
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 的 answer的编辑,但 3-out-of-4 wokks 拒绝了该编辑。他们中没有人接触过 Emacs.SE,他们的 SO 或 LinkedIn 个人资料中也没有提到 Emacs 或 Lisp。显然,不应该赋予不懂相关语言的人拒绝编辑的权力。

我来这里是为了寻找这个问题的答案,找到了 doublep 的答案,通过使代码更清晰和可扩展来改进它,并花费我自己宝贵的时间将改进回馈给社区,结果却被那些不知道的人否决了甚至不知道他们在做什么。每次发生这种情况(到目前为止,每次都发生这种情况),我想知道为什么我要浪费时间为这个网站做贡献。

于 2016-03-10T06:12:08.623 回答
1

将以下内容添加到您的.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)
于 2015-05-04T12:26:41.997 回答