Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Problem using git and Emacs eshell mode on Windows

Tags:

git

emacs

eshell

when i try to make a git commit in emacs eshell mode:

git commit -a -m "message"

I receive an error:

'c:\Program' is not recognized as an internal or external command,
operable program or batch file.  

and at the same time this problem is absent in emacs shell mode. How to force eshell work correctly with git?

like image 852
Andreo Avatar asked Jun 17 '09 11:06

Andreo


4 Answers

This seems to be a problem with the whitespace in the directory name of the program you want to execute; this whitespace seems to be not properly escaped.

For example, if what you want to execute is "C:\Program Files\git\git.exe commit ...", then that first whitespace needs to be escaped, or the whole pathname enclosed in quotes, otherwise this line will be parsed into the tokens "C:\Program", "Files\git\git.exe", "...", the first token being the command to execute.

A first workaround would be to expand the full name by hand and enclose it in quotes, e.g.:

"C:\Program Files\git\git.exe" commit ...
like image 133
Svante Avatar answered Sep 20 '22 07:09

Svante


Had a similar problem, this is for magit, (on MacOS). Add the following in your emacs startup file:

(add-to-list 'exec-path "/usr/local/git/bin")
(setq magit-git-executable "/usr/local/git/bin/git")
like image 20
Schpaencoder Avatar answered Sep 22 '22 07:09

Schpaencoder


Don't know about specifically with git and emacs, but with other applications it has worked for me to replace Program Files with Progra~1 in your PATH.

like image 20
Zwergner Avatar answered Sep 20 '22 07:09

Zwergner


I had the very same problem, and "solved" it by changing PATH such that git.exe (in c:\Program Files\Git\bin) comes before git.cmd (in c:\program files\git\cmd, IIRC).

like image 32
legoscia Avatar answered Sep 20 '22 07:09

legoscia