【问题标题】:how to make emacs + egg (git) work with remote files (accessed via ssh)如何使 emacs + egg (git) 与远程文件一起工作(通过 ssh 访问)
【发布时间】:2012-12-14 16:22:35
【问题描述】:

在访问本地系统中的 repos/dirs/文件时,我的 emacs + egg 工作正常。

此外,通过 ssh 打开和编辑文件也可以正常工作,例如

ctrl-f /ssh:jds@dev.acme.com:/home/jds/src/test.py

但是当执行 egg-status 时,我得到...

Opening input file: no such file or directory, /HEAD

请注意,如果我打开一个 shell 并 ssh 进入远程系统,所有 git 命令都可以正常工作。

感谢您提供任何帮助以使其正常工作。

【问题讨论】:

    标签: git emacs ssh tramp sshfs


    【解决方案1】:

    我同意Alex's answer 的观点,您应该使用更高级、更棒的magit package

    关于为什么 egg 不能按你想要的方式工作的更长的故事是这样的:egg 的编写方式 不能 使用 TRAMP 对远程文件进行操作,因为 egg.el 使用 call-process 函数,而magit 使用start-file-process,如Remote Processes section of the TRAMP manual 中所述支持:

    5.4 Integration with other Emacs packages.
    
    tramp supports running processes on a remote host. This allows to
    exploit Emacs packages without modification for remote file names.
    [...]
    process-file and start-file-process work on the remote host when the
    variable default-directory is remote:
    
         (let ((default-directory "/ssh:remote.host:"))
           (start-file-process "grep" (get-buffer-create "*grep*")
                               "/bin/sh" "-c" "grep -e tramp *"))
    

    【讨论】:

    • 感谢您解释为什么 egg 不能工作(目前已实施);这解释了 ssh (TRAMP) 问题(以及一个足够好的理由来寻找鸡蛋的替代品);仍然想知道 sshfs 的问题,其中 emacs 没有使用 ssh/TRAMP 并且似乎正在像打开任何其他常规本地文件一样打开挂载的文件。
    • 我不确定为什么 sshfs 不起作用。您可以使用重现问题的确切说明更新您的问题吗?另外,您使用的是什么版本的 emacs 和 egg? M-x emacs-versionM-: egg-version
    • 正在收集一些信息,并注意到即使是常规的 git 命令(即从 shell 执行)在从挂载的目录(即它不是 emacs)执行时也不起作用。如果我 ssh 到删除系统,git 命令可以正常工作。我会更新问题。感谢您的帮助。
    【解决方案2】:

    magit package 可以很好地处理远程文件(只需重新检查 :-)。而且我认为,它是所有 Emacs/Git 软件包中最先进的。

    【讨论】:

    • 对我来说,magit 不能在 ssh 上使用 tramp。它总是在提交时失败。我可以进行阶段和其他操作,但提交总是失败。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    相关资源
    最近更新 更多