我在桌面上使用的是配置为使用cygwin-bash的本机windows emacs 24.2。
当我从cygwin-bash运行SVN时,一切都很好。它会记住我的授权凭据并连接到存储库。但是,当我尝试从emacs中运行任何版本控制命令时,我总是会收到以下消息:
svn:E170001:无法连接到URL处的存储库'https://address.to.repo'svn:E170001:选项'https://address.to.repo':授权失败:无法向服务器进行身份验证:拒绝基本质询
我还尝试连接PSVN接口,结果也显示了相同的错误消息。奇怪的是,它与cygwin终端和emacs的工作方式不同。如有任何帮助,我们将不胜感激。
现在已解决。问题是Emacs NT cygwin集成仍然使用windows HOME路径,而不是使用cygwinized HOME目录。
我认为完整的答案应该是这样的:
- SVN依赖于HOME路径来查找其每个用户的设置(就像大多数unix程序一样)
- 在cygwin中,variable有类似"/home/pablo"的含义
- "/home/pablo"实际翻译为"drive:\cygwin_dir\home\pablo">
- Emacs nt从windows环境中获取其HOME,因此它与cygwin的HOME不同
- emac的vc-svn使用错误的路径来查找其设置
所以有两种解决方案(可能更多):
- 让emacs-nt使用cygwin的HOME(所以这就是cygwinization的意思!!:O),您需要为此设置cygwin,但特别需要一个脚本,它取决于cygwin装载。因此emacs-nt可以理解cygwin的路径"风格">
- (不推荐)另一种方式,也就是我所做的,让cygwin通过一个软的cygwin链接使用窗口的HOME。
ln -s /cygdrive/c/Users/pablo/Roaming/ /home/pablo
- 制作一个软链接,使cygwin的subversion目录指向windows one
ln -s /cygdrive/c/users/pablo/AppData/Roaming/.subversion /home/pablo/.subversion
第二个解决方案将导致cygwin的".bashrc"未执行。所以在那里定义的环境变量和别名不会被定义。我仍然认为这是可以做到的,但我没有调整该解决方案所需的适当的cygwin知识。现在我使用的是3号解决方案。