我一直在尝试将 emacs 作为服务器,并且遇到了 magit 的问题。我们有一个 Gitlab 服务器在工作,当我尝试使用 magit 进行推送或拉取时,我被要求输入密码。当我从命令行使用 git 时不会发生这种情况,更重要的是,如果我“直接”运行 emacs(而不是使用守护程序运行 emacsclient),则不会发生这种情况。我应该提到我在 Ubuntu 15.04 上运行,并且我使用的是 emacs 25。
我想知道其他人是否遇到过这种行为?或者可以指点我的补救措施吗?感谢您的关注!
现有答案中的建议使我找到了解决方案。我希望它对遇到此问题的其他人有所帮助。我使用 systemd 来启动 emacs 守护进程,结果发现我需要在 emacsd.service 文件中添加一个指令:
[Service]
...
Environment=SSH_AUTH_SOCK=%t/keyring/ssh
...
所以,谢谢你的线索——他们让我找到了答案。
至少可以说,您不是第一个对此有问题的人。这就是为什么在 FAQ 中提到它的原因,它将带您从 Windows 使用 Magit 进行推送。
这总结了各种选项并包含故障排除说明。但仍然不是每个人都能弄清楚(或提供足够准确的信息让我们从远处进行诊断),因此核心贡献者编写了一个包,即使在配置不充分的系统上也能做到这一点。该页面上也提到了该软件包。
这取决于上游 repo url 使用的协议。
通常,当 ssh 在$HOME/.ssh
.
并且$HOME
当服务作为守护程序启动时可能会有所不同,而不是由用户启动。
因此,如果通过 ssh url 访问上游 GitLab 存储库,则可以解释两次尝试之间的区别。