首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在emacs中使用git

在emacs中使用git
EN

Stack Overflow用户
提问于 2009-05-30 19:47:38
回答 3查看 5.6K关注 0票数 9

我正在尝试配置git.el。当我执行git-status时,我可以看到带有changed的状态缓冲区,我也可以使用'a‘添加文件,但是当我尝试使用c提交一个文件时,使用C-c编写提交日志并使用C-c完成它会给我提供

代码语言:javascript
复制
env: git: No such file or directory

错误,文件未提交。我在OS上使用Emacs23。我添加到我的.emacs中的唯一定制是

代码语言:javascript
复制
(setq exec-path (append exec-path '("/opt/local/bin")) )

因为emacs找不到git可执行文件。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-31 06:46:01

在Mac的.emacs中,我有以下代码:

代码语言:javascript
复制
(when (equal system-type 'darwin)
  (setenv "PATH" (concat "/opt/local/bin:/usr/local/bin:" (getenv "PATH")))
  (push "/opt/local/bin" exec-path))

问题似乎是,当您运行terminal.app时,它使用您的外壳初始化文件来设置所有环境变量,但是当您从Dock启动Emacs时,这些变量并未设置。

顺便说一句-还有其他的包可以使用来自Emacs的Git - magit,DVC,eg...您可以在my article中阅读有关它们的信息

票数 20
EN

Stack Overflow用户

发布于 2009-05-30 23:30:41

由于错误行的开头是env:,这表明git.el正在使用程序"env“来查找git并调用它。查看源代码证实了这一点,因为所有对git的调用似乎都要经过这里:

代码语言:javascript
复制
(defun git-call-process-env (buffer env &rest args)
  "Wrapper for call-process that sets environment strings."
  (if env
      (apply #'call-process "env" nil buffer nil
             (append (git-get-env-strings env) (list "git") args))
    (apply #'call-process "git" nil buffer nil args)))

浏览代码发现,在大多数情况下,Emacs直接使用call-process调用git,但它有时会使用"env“命令,特别是当它需要传递环境变量(如"GIT_INDEX_FILE")时。

问题是Emacs在通过call-process运行它时不会将它的exec-path传递给env,所以在Emacs中设置exec-path不会帮助‘`env’找到git。

实际上有两种解决方案:

  1. 想办法让env知道git在哪里。我恐怕在这个问题上帮不了你,因为我不知道如何在Mac上设置这样的东西,但它应该是一个相当简单的路径修改。
  2. Hack git.el在调用git时将PATH=/path/to/git传递给env。这不是很干净,但它也不是那么糟糕,尤其是如果你选择了进入defcustom的路径,它可能对其他人有用。

不过,我建议从1开始。您可以使用以下命令更改Emacs的环境变量:

代码语言:javascript
复制
(setenv "PATH" (concat "/opt/local/bin:" (getenv "PATH")))

然后再试试git.el。虽然Emacs不会将变量exec-path传递给子进程,但它会沿着其PATH环境变量从调用时的任何位置进行复制。由于Emacs还直接调用git,因此您还需要以已有的方式设置exec-path

希望这能有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2012-05-24 04:03:52

解决此问题的一种非常简单的方法是修改.emacs文件中的exec路径

代码语言:javascript
复制
(add-to-list 'exec-path "/usr/local/git/bin/")

这对我来说很有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/930439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档