当前位置:  开发笔记 > IOS > 正文

使用git与emacs

如何解决《使用git与emacs》经验,为你挑选了2个好方法。

我正在尝试配置git.el. 当我执行git-status时我可以看到状态缓冲区已更改我也可以使用'a'添加文件但是当我尝试使用c写提交日志并使用Cc Cc完成它时提交文件给了我

env: git: No such file or directory

错误和文件未提交.我在OS X上使用emacs 23.我添加到.emacs的唯一自定义是

(setq exec-path (append exec-path '("/opt/local/bin")) )

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



1> Alex Ott..:

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

(when (equal system-type 'darwin)
  (setenv "PATH" (concat "/opt/local/bin:/usr/local/bin:" (getenv "PATH")))
  (push "/opt/local/bin" exec-path))

似乎问题是,当你运行terminal.app时,它使用你的shell初始化文件来设置所有环境变量,但是当你从Dock启动Emacs时,这些变量就没有设置.

PS顺便说一句 - 还有其他软件包可以与Emacs的Git一起使用 - magit,DVC,egg ......你可以在我的文章中阅读它们



2> haxney..:

好吧,因为错误行的开头是env:,它表明git.el正在使用程序"env"来查找git并调用它.查看源代码确认了这一点,因为所有对git的调用似乎都在这里进行:

(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直接调用git call-process,但它有时使用"env"命令,特别是当它需要传递环境变量(如"GIT_INDEX_FILE")时.

问题是,Emacs的没有通过它exec-pathenv通过在运行它时call-process,所以设置exec-path在Emacs不会帮助'ENV"找到饭桶.

有两种解决方案:

    弄清楚如何env知道git在哪里.我担心我不能真正帮助你,因为我不知道如何在Mac上设置那种东西,但它应该是对PATH的一个相当简单的修改.

    hait git.el PATH=/path/to/git在调用git时传递给env.这不是很干净,但它并不是一个糟糕的黑客,特别是如果你选择了路径defcustom,它可能对其他人有用.

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

(setenv "PATH" (concat "/opt/local/bin:" (getenv "PATH")))

然后尝试git.el.虽然Emacs不会将变量传递exec-path给子进程,但它会根据其调用的任何内容复制其PATH环境变量.由于Emacs也直接调用git,你还需要设置exec-path你已经存在的方式.

希望有所帮助.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有