Wie kann ich das Stammverzeichnis des aktuellen Git-Repos erhalten? Ich könnte shell-command-to-string
auf so etwas laufen git rev-parse --show-toplevel
. Gibt es einen besseren Weg? Enthüllt magit
oder irgendein anderes Git-Frontend diese Informationen?
9
git rev-parse --show-toplevel
stattgit rev-parse --git-dir
?Antworten:
In Magit ist dies verfügbar als
magit-toplevel
(aber ich stimme @ abo-abo zu, dass die Verwendung sinnvoll istvc-root-dir
).quelle
vc-root-dir
ist sicherlich die allgemeinste. Ich kann es jedoch nicht in dieser Form zum Laufen bringen, wie ich in den Kommentaren zu @ abo-abos Antwort erwähnt habe. Aber dieser hat gerade funktioniert. Vielen Dank!Du brauchst
vc-root-dir
. Funktioniert für mehr als nur Git.quelle
vc-root-dir
. Das einzige, was nah ist, istvc-root-diff
. Und bei einervc
verwandten Suche finde ich das .vc
zu alt? Ich habe die mit Emacs 24.3 eingebaut. Ich sehe nichtvc-root
invc.el
oder mitapropos
usw. Beim Betrachtenvc.el
sehe ich Dinge wie(setq rootdir (vc-call-backend...))
. Und in der Tat(vc-call-backend 'Git 'root default-directory)
funktioniert.vc-root-dir
ist zu diesem Zeitpunkt nur im Kofferraum. Es ist sicherlich nicht in 24.4.Wie von abo-abo erwähnt, gibt es in Emacs 25 eine Funktion namens
vc-root-dir
backend-agnostisch, die das tut, was Sie brauchen. Für frühere Versionen von Emacs ist Folgendes ein geeigneter Ersatz:Wie von Kyle erwähnt, stellt Magit die Funktion bereit
magit-get-top-dir
, diegit rev-parse --show-cdup
das Ergebnis einfach aufruft und interpretiert.quelle
vc-root-diff
ich es versucht , nachdem ich mir die Implementierung von angesehen hattevc-deduce-backend
. Irgendwie kehrt dasnil
in meinem Git-Repo zurück. Gibt jedochvc-responsible-backend default-directory
zurückGit
.vc
, wirdvc-deduce-backend
zurückgegebennil
. Erklärt das das?ielm
und erwartet, esvc-deduce-backend
zu verwendendefault-directory
. Vielen Dank!vc-root-dir
stattvc-root-diff
?