Como posso obter o diretório raiz do repositório git atual? Eu poderia correr shell-command-to-string
em algo como git rev-parse --show-toplevel
. Existe uma maneira melhor? Algum magit
outro front-end do git expõe essas informações?
9
git rev-parse --show-toplevel
vez degit rev-parse --git-dir
?Respostas:
No Magit, isso está disponível como
magit-toplevel
(mas eu concordo com @ abo-abo que faz sentido usarvc-root-dir
).fonte
vc-root-dir
é certamente o mais genérico. No entanto, não consigo fazê-lo funcionar dessa forma, como mencionei nos comentários na resposta do @ abo-abo. Mas este funcionou direito. Obrigado!Você precisa
vc-root-dir
. Funciona para mais do que git.fonte
vc-root-dir
. A única coisa que está perto évc-root-diff
. E em umavc
pesquisa relacionada, acho isso .vc
seja velho demais? Eu tenho esse embutido no emacs 24.3. Não vejovc-root
dentrovc.el
ou comapropos
etc. Olhandovc.el
, vejo coisas como(setq rootdir (vc-call-backend...))
. E, de fato,(vc-call-backend 'Git 'root default-directory)
funciona.vc-root-dir
é apenas no porta-malas nesta fase. Certamente não está em 24.4. Presumivelmente, estarão disponíveis em Emacs 25.Conforme mencionado por abo-abo, no Emacs 25, existe uma função chamada
vc-root-dir
que faz o que você precisa de uma maneira independente de back-end. Para versões anteriores do Emacs, o seguinte é um substituto adequado:Como mencionado por Kyle, o Magit fornece a função
magit-get-top-dir
, que simplesmente chamagit rev-parse --show-cdup
e interpreta o resultado.fonte
vc-root-diff
, tenteivc-deduce-backend
. De alguma forma, isso retornanil
no meu git-repo. No entanto,vc-responsible-backend default-directory
retornaGit
.vc
,vc-deduce-backend
retornaránil
. Isso explica isso?ielm
e esperandovc-deduce-backend
usardefault-directory
. Obrigado!vc-root-dir
vez devc-root-diff
?