2013-11-23 2 views
5

Ich habe vor kurzem begonnen, Magit-Paket in Emacs zu verwenden und es ist wirklich nützlich und praktisch. Ich würde gerne ein paar Verbesserungen vornehmen.Wie man magit ziehen lässt, um Rebase-Option standardmäßig zu haben?

Wie mache ich Magit ziehen, um immer Rebase-Option zu haben ?. Momentan zeigt es Schalter und ich muss -r --rebase wählen. In meinem Entwicklungsprozess haben wir immer eine Neudefinition vorgenommen.

Ich benutze gtags + global für Code Browsing. Nach dem Magit-Pull wäre es großartig, wenn ich einen Haken hätte, um die gtags wieder aufzubauen. Gibt es einen Haken nach dem git pull Erfolg?

+0

Man könnte argumentieren, dass Sie Ihren Entwicklungsprozess so ändern sollten, dass Sie fast keine Notwendigkeit haben, "git pull" zu verschmelzen. Arbeiten Sie nicht an einem freigegebenen Zweig, sondern erstellen Sie eigene Feature-Zweige. – lunaryorn

+0

Hinweis, in Magit 2 ist dies in alle Befehle integriert. Öffnen Sie einfach das Popup für den Modus, legen Sie die Option fest und klicken Sie dann auf "C-x C-s", um sie als Standard zu speichern. – blujay

Antwort

3

Ich kenne keine Magit spezifische Einstellung, aber Sie können sich einfach konfigurieren git entsprechend:

git config --global pull.rebase true 

ich streng gegen auf die Aktivierung dieser Einstellung global beraten würde.

Wie ich in meinem Kommentar gesagt habe, sollten Sie wirklich Ihren Entwicklungsprozess ändern, so dass es keine Notwendigkeit für die Zusammenführung/Neuausrichtung auf git pull gibt. Arbeiten Sie nicht an freigegebenen Zweigen, sondern erstellen Sie immer eigene Feature-Zweige für Ihre Arbeit und führen Sie sie bei Bedarf explizit zusammen.

Sie können dann explizit einzelne freigegebene Zweige in Ihrem Repository für die Umbasierung konfigurieren, z.

git config --local branch.my-fancy-feature.rebase true 

Wie für den Haken, gibt es keinen speziellen Haken für git pull. Es ist jedoch nicht schaden, die Tag-Datei auf andere Änderungen an der Struktur zu aktualisieren, so können Sie nur die (für git rebase) und post-merge (für git merge) Haken.

Siehe Tim Popes Post Effortless Ctags with Git für Details zu einem solchen Setup.

+0

danke für die Eingabe.Ich suche nach magit Lösung, da ich es viel in Emacs benutze. Über gtags update habe ich diese Lösung gefunden. https://github.com/rvoicilas/inotify-tools/wiki Es kann aktualisieren, wenn die Datei geändert wurde. – sudurais

+0

Magit Betreuer hier. Es gibt keine magit-spezifische Option dafür und ich denke nicht, dass es eine gute Idee wäre, eine hinzuzufügen. (Wenn wir hier eine elisp-Option hinzufügen, warum nicht für jede andere git-Variable?). Das lokal mit git-config als @lunaryorn vorgeschlagen zu setzen, ist eine gute Lösung. Alternativ sollten Sie nur den Rebase-Befehl ('R') verwenden. Wie der Zusammenführungsbefehl ('m'), der standardmäßig die Änderungen aus dem konfigurierten Upstream-Zweig einbringt. – tarsius

+0

Ich habe eine Frage, die ich denke, ist verwandt. In dem von l (og) aufgerufenen Popup gibt es den Schalter "-al: All (--all)". Gibt es eine Möglichkeit, dies standardmäßig über die Konfiguration zu aktivieren? Ich war in der Lage, es über die Bearbeitung Magit-Key-Mode-Generator-Funktion im magit-key-mode.el wie (Protokollierung '(Liste "--graph" "--all"))) Aber ich würde gerne vermeiden, die Originaldatei zu bearbeiten. –

2

Fügen Sie folgendes zu Ihrem .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

Dieser Code wird das tun, was Sie wollen, und machen es einfach, Standardoptionen für weitere Modi hinzugefügt:

(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) 

Hinweis: Dies sollte eine Bearbeitung zu doublep's answer, aber 3-von-4-Wonks abgelehnt die Bearbeitung. Keiner von ihnen hat Emacs.SE berührt, noch haben sie Emacs oder Lisp auf ihren SO- oder LinkedIn-Profilen erwähnt. Es ist klar, dass Personen, die die fragliche Sprache nicht kennen, nicht die Macht haben sollten, Bearbeitungen abzulehnen.

Ich kam hier nach einer Antwort suchen auf diese Frage fand Antwort doublep die, es verbessert den Code klarer und erweiterbar, indem sie und verbrachte meine eigene wertvolle Zeit, um die Verbesserungen zurück in die Gemeinschaft beitragen, nur sie haben geschossen von Leuten, die nicht einmal wissen, was sie tun. Jedes Mal, wenn dies passiert (und bisher ist es jedes Mal passiert), frage ich mich, warum ich meine Zeit damit verscherbe, zu dieser Seite beizutragen.

Verwandte Themen