我目前正在尝试在Win7 64位上使用Magit和Emacs 23.1,但Magit无法识别我的git存储库。请记住,我是一个完整的Emacs新手。
我运行magit-status命令,它要求一个包含repo的目录,我明显输入,然后每次尝试时都会说:“e:/ path / to /中没有Git存储库目录“。当存在一个存储库时,创建一个?(y或n)”。
还有其他人遇到过这个吗?我已经读过,可能是因为找不到实际的git.exe而且我已经尝试使用我的Path变量,但我没有做任何事情就是允许Magit识别我的存储库。有什么想法吗?
答案 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-executable
(M-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))