Magit没有识别git存储库

时间:2009-10-04 12:50:54

标签: windows git emacs

我目前正在尝试在Win7 64位上使用Magit和Emacs 23.1,但Magit无法识别我的git存储库。请记住,我是一个完整的Emacs新手。

我运行magit-status命令,它要求一个包含repo的目录,我明显输入,然后每次尝试时都会说:“e:/ path / to /中没有Git存储库目录“。当存在一个存储库时,创建一个?(y或n)”。

还有其他人遇到过这个吗?我已经读过,可能是因为找不到实际的git.exe而且我已经尝试使用我的Path变量,但我没有做任何事情就是允许Magit识别我的存储库。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

magit运行以下命令以查找.git目录:

git rev-parse --git-dir

如果Emacs真的看到你的git二进制文件,我会先尝试一下。为此,请在emacs中打开git存储库中的任何文件。接下来执行M-x: shell-command并在提示符中键入以上git命令:git rev-parse --git-dir

作为输出,您应该获得类似.git的内容。如果你得到'git' is not recognized as an internal or external command, ...,那么你需要确保emacs / magit可以找到git。您可以通过自定义magit-git-executableM-x: customize-variable)并将其指向绝对路径或确保git目录位于Windows PATH中(如果使用msysgit)来执行此操作你在安装过程中被问过。)

希望这有帮助!

干杯, 丹尼尔

答案 1 :(得分:1)

发现问题,它是magit-escape-for-shell函数,它逃避了Windows无法处理的可执行文件。在检查了我之前安装的代码之后,很明显他们在不更改版本的情况下更改了代码,很糟糕!这是一个应该修复该bug的补丁:

--- magit.el.orig       2010-02-19 16:48:43.671875000 -0500
+++ magit.el    2010-02-19 16:49:30.078125000 -0500
@@ -320,7 +320,9 @@
                     prop val))

 (defun magit-escape-for-shell (str)
-  (concat "'" (replace-regexp-in-string "'" "'\\''" str) "'"))
+  (if (not (equal system-type 'windows-nt))
+      (concat "'" (replace-regexp-in-string "'" "'\\''" str) "'")
+    str))

 (defun magit-format-commit (commit format)
   (magit-git-string "log --max-count=1 --pretty=format:%s %s" format commit))