emacs 守护进程和 magit

emacs daemon and magit

我一直在尝试将 emacs 作为服务器,但 运行 遇到了 magit 的问题。我们有一个 Gitlab 服务器在工作,当我尝试使用 magit 进行推送或拉取时,我被要求输入密码。当我从命令行使用 git 时不会发生这种情况,更重要的是,如果我 运行 emacs "directly" (相对于 运行使用守护进程连接 emacsclient)。 我应该提一下,我 运行 宁 Ubuntu 15.04,我使用的是 emacs 25.

我想知道其他人是否有 运行 这种行为?或者可以指点我一个补救措施?感谢您的关注!

这取决于上游存储库使用的协议 url。

通常,当 ssh 在 $HOME/.ssh 中找不到正确的 private/public 密钥时,系统会询问密码。
并且 $HOME 当服务作为守护程序启动时可能会有所不同,而不是由用户启动。

因此,如果通过 ssh url 访问上游 GitLab 存储库,这将解释两次尝试之间的区别。

至少可以说,您不是第一个对此有疑问的人。这就是常见问题解答中提到它的原因,它会将您带到 Pushing with Magit from Windows

总结了各种选项并包含疑难解答说明。但仍然不是每个人都能弄清楚(或为我们提供足够准确的信息以供远程诊断),因此核心贡献者编写了一个包,即使在配置不足的系统上也能正常工作。该页面上也提到了该软件包。

现有答案中的建议让我找到了解决方案。我希望它能对 运行 遇到此问题的其他人有所帮助。我正在使用 systemd 来启动 emacs 守护进程,结果我需要在 emacsd.service 文件中添加一个附加指令:

[Service]
...
Environment=SSH_AUTH_SOCK=%t/keyring/ssh
...

所以,感谢您的线索 - 他们让我走上了正确的轨道来找到答案。