4

我在我的桌面本机 Windows emacs 24.2 上使用配置为使用 cygwin bash

当我从 cygwin bash 运行 SVN 时,一切正常。它会记住我的授权凭据并连接到存储库。但是当我尝试从 emacs 中运行任何版本控制命令时,我总是会收到以下消息:

svn:E170001:无法连接到 URL ' https://address.to.repo ' svn:E170001:' https://address.to.repo '的选项:授权失败:无法向服务器验证:拒绝基本挑战

我还尝试连接 PSVN 接口,但最终也出现相同的错误消息。奇怪的是,它与 cygwin 终端和 emacs 的工作方式不同。对此的任何帮助将不胜感激。

4

2 回答 2

0

现在解决了。问题是 Emacs NT cygwin 集成仍然使用 windows HOME 路径而不是使用 cygwinized HOME 目录。

于 2012-12-06T11:03:30.027 回答
0

我认为完整的答案应该是这样的:

  1. SVN 依赖于 HOME 路径来查找每个用户的设置(与大多数 unix 程序一样)。
  2. 在 cygwin 中,该变量具有类似“/home/pablo”的内容。
  3. "/home/pablo" 真的翻译成 "drive:\cygwin_dir\home\pablo"
  4. Emacs-nt 从 windows 环境中获取它的 HOME,因此它与 cygwin 的 HOME 不同
  5. emac 的 vc-svn 使用错误的路径来查找其设置。

所以有两种解决方案(也许更多):

  1. 让 emacs-nt 使用 cygwin 的 HOME(这就是 cygwin 化的意思!!:O),为此您需要 setup-cygwin,但特别需要一个依赖于 cygwin-mount 的脚本。所以emacs-nt可以理解cygwin的路径“风格”。
  2. (不推荐)反过来,这就是我所做的,使 cygwin 通过软 cygwin 链接使用窗口的 HOME。ln -s /cygdrive/c/Users/pablo/Roaming/ /home/pablo
  3. 建立一个软链接,使 cygwin 的 subversion 目录指向 windows oneln -s /cygdrive/c/users/pablo/AppData/Roaming/.subversion /home/pablo/.subversion

第二种解决方案将导致 cygwin 的“.bashrc”未执行。所以那里定义的环境变量和别名不会被定义。我仍然认为可以做到,但我没有调整该解决方案所需的适当 cygwin 知识。所以现在我正在使用解决方案 3。

于 2014-09-17T00:51:06.403 回答