Wie automatisiere ich Git-Aufgaben, die eine Commit-Nachricht erfordern?

1

Ich schreibe ein Skript, um eine Git-Aufgabe zu automatisieren. Wenn ich das manuell mache, gibt es ein paar Punkte, an denen git vim öffnet, um eine Commit-Nachricht zu bearbeiten, und ich muss etwas eingeben :wq. Gibt es eine Möglichkeit, diese Tastenanschläge von meinem Skript aus vorab zu senden, aber nur, wenn vim geöffnet wird? Gibt es eine Möglichkeit, das Öffnen von vim zu vermeiden?

Ich benutze tcsh.

JETM
quelle
Und welche Git-Aufgabe genau ist das?
Daniel B
@DanielBgit subtree pull --prefix foo/bar/path repo branch --squash
JETM
1
Haben Sie versucht, mit git subtreeder Option --message=(oder -m) eine Commit-Nachricht im Voraus bereitzustellen? Das sollte in erster Linie vermeiden, Vim zu öffnen.
8bittree
@ 8bittree Gute Idee. Es ist vorzuziehen, dass ich die automatisch generierte Nachricht behalte, aber ich bin mir sicher, ich kann ein bisschen hacken, um sie abzuleiten, wenn es nichts Einfacheres gibt.
JETM
@ 8bittree Perfekt!
JETM

Antworten:

2

Sie könnten es einfach vermeiden, Vim zu öffnen.

Eine Möglichkeit besteht darin, die --message=<message>(oder -m <message>kurz) Option zu nutzen git subtree pull. Der Nachteil ist, dass Sie die von git bereitgestellte Standardnachricht nicht verwenden können und stattdessen Ihre eigene erstellen müssen. Der Vorteil ist, dass dies praktisch überall funktionieren sollte, wo git eine Commit-Nachricht benötigt.

Eine weitere Option , die funktioniert die Standardmeldung verwenden ist , den „Editor“ zu ändern , dass git Katze öffnet. Denken Sie daran, es sofort wieder zu ändern, nachdem:

git config --local core.editor /path/to/cat
git subtree pull --prefix foo/bar/path repo branch --squash
git config --local core.editor /path/to/vim-or-other-editor

Der Vorteil ist, dass Sie die von git bereitgestellte Standardnachricht verwenden können. Der Nachteil ist, dass dies nicht funktioniert, wenn die Standard-Festschreibungsnachricht leer ist, wie es typisch ist, wenn eine einfache Festschreibung durchgeführt wird git commit.

8bittree
quelle