在Netbeans中执行SVN操作-8.0.2,但版本不相关-如"显示注释"或"搜索历史记录",使用内置客户端(如CLI、JavaHL或SvnKit),通过SVN+ssh连接到远程存储库,以及ssh隧道-在.ssh/config中配置-我从Netbeans收到连接错误,但在从终端执行SVN时不会。我使用的是OS X.
隧道在~/.ssh/config
中设置正确,因为我可以通过终端在命令行上执行SVN操作,这些操作会进入远程存储库,例如签出、指责、日志,但当我试图在Netbeans中显示注释时,我会遇到连接失败。
我从Netbeans得到的错误是
org.apache.subversion.javahl.ClientException: E210002: There was a problem while connecting to [URL] on port 22
我尝试了Netbeans Subversion SSH常见问题解答中的一些建议,但它并没有完全解决我的问题。
也就是说,我尝试编辑~/.subversion/config
,并将ssh = $SVN_SSH ssh
的默认行更改为ssh = $SVN_SSH ssh -q
,因为我连接的服务器返回了一个横幅,并重新启动了Netbeans,但我得到了同样的错误。
您还可以在~/Library/Application Support/NetBeans/8.0/var/log/messages.log
(在OS X上)上检查Netbeans错误消息
服务器横幅仍然显示在这条消息中,因为我有两个ssh跳到远程服务器(在我的.ssh/config
中使用nc
),所以查找man ssh_confg
时,我发现了一个LogLevel QUIET
参数,我将它添加到了隧道中涉及的主机中。
这从错误消息中删除了服务器横幅,但我仍然收到这个错误
/etc/profile.d/lang.sh: line 19: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
svnserve: warning: cannot set LC_CTYPE locale
svnserve: warning: environment variable LC_CTYPE is UTF-8
svnserve: warning: please check that your locale name is correct
当我转到Terminal.app并运行locale
时,我会得到LC_CTYPE="en_AU.UTF-8"
,但当我转到Netbeans中的终端窗口时,我得到LC_CTYPE="UTF-8"
,可能是因为在OSX上,应用程序需要设置自己的环境变量-shell不会公开它们。
在这种情况下,我可以用sudo vim /etc/ssh_config
在自己的机器上编辑/etc/ssh_config
,并注释掉下面的行(注释掉后显示)。
# Host *
# SendEnv LANG LC_*
这解决了我的问题。我现在可以执行我通常会执行的所有svn功能,例如通过ssh隧道连接时显示注释和搜索历史记录。这适用于CLI,但不适用于SvnKit