¿Cómo puedo obtener el directorio raíz del repositorio git actual? Podría correr shell-command-to-stringen algo así git rev-parse --show-toplevel. ¿Hay una mejor manera? ¿ magitO cualquier otro git front-end expone esta información?
¿Cómo puedo obtener el directorio raíz del repositorio git actual? Podría correr shell-command-to-stringen algo así git rev-parse --show-toplevel. ¿Hay una mejor manera? ¿ magitO cualquier otro git front-end expone esta información?
Respuestas:
En Magit, esto está disponible como magit-toplevel(pero estoy de acuerdo con @ abo-abo en que tiene sentido usarlo vc-root-dir).
vc-root-dirEs seguramente el más genérico. Sin embargo, no puedo hacer que funcione de esa forma como mencioné en los comentarios sobre la respuesta de @ abo-abo. Pero este funcionó directamente. ¡Gracias!
Es necesario vc-root-dir. Funciona por más que git.
vces demasiado viejo? Tengo el incorporado con emacs 24.3. No veo vc-rooten vc.elo con aproposetc. Mirando vc.el, veo cosas como (setq rootdir (vc-call-backend...)). Y de hecho, (vc-call-backend 'Git 'root default-directory)funciona.
vc-root-dirsolo está en el baúl en esta etapa. Ciertamente no está en 24.4. Presumiblemente estará disponible en Emacs 25.
Como se menciona por abo-abo, en Emacs 25, hay una función llamada vc-root-dirque hace lo que necesita de una manera independiente del backend. Para versiones anteriores de Emacs, el siguiente es un reemplazo adecuado:
(defun vc-root-dir ()
(let ((backend (vc-deduce-backend)))
(and backend
(ignore-errors
(vc-call-backend backend 'root default-directory)))))
Como mencionó Kyle, Magit proporciona la función magit-get-top-dir, que simplemente llama git rev-parse --show-cdupe interpreta el resultado.
vc-root-diff, lo intenté vc-deduce-backend. De alguna manera, eso regresa nilen mi git-repo. Sin embargo, vc-responsible-backend default-directoryvuelve Git.
vc, entonces vc-deduce-backendregresa nil. ¿Eso lo explica?
ielmy esperaba vc-deduce-backendusarlo default-directory. ¡Gracias!
vc-root-dirlugar de vc-root-diff?
git rev-parse --show-toplevellugar degit rev-parse --git-dir?