配置文件的
[tunnels]
部分中的隧道不起作用。
1. TortoiseSVN 上下文菜单 -> 设置对话框 -> 高级
将 ConfigDir 设置为 C:xample_dir
2. 在 C: xample_dir 中编辑配置(文件)
[tunnels]
alt-ssh = ssh -i C:\example\filepath\to\private-key
3. 在命令提示符下使用
svn list
命令测试隧道。
svn list svn+alt-ssh://some_domain.xyz/C:/path/to/repository
预期的存储库文件列表,但显示以下错误:
svn:E170013:无法连接到 URL 处的存储库...
svn:E125002:未定义的隧道方案“alt-ssh”
如果在默认配置文件中设置了相同的隧道
alt-ssh
,则相同的 svn list...
命令有效。
我还测试了 ConfigDir 配置文件是否正常工作:在 ConfigDir 指向的配置文件中,我更改了
global-ignores
部分中的 [miscellany]
并且它可以工作。
我想我已经确定了我的误会。显然,更改配置文件的目录是针对每个使用 svn API 的客户端应用程序,而不是针对每个 svn 安装实例。
例如,TortoiseSvn shell UI 似乎确实在配置文件中找到了隧道设置:
C:\example_dir\config
。
但是,设置 TortoiseSvn ConfigDir 值不会更改 svn 命令行的配置文件的位置。 svn 命令行是基本 svn 包的一部分。例如,
snv list ...
命令行仍然使用默认配置文件位置,因此它看不到隧道设置。命令行确实接受 --config-dir <dir>
arg。
例如,
svn list --config-dir C:\example_dir svn+alt-ssh://some_domain.xyz/C:/path/to/repository
--config-dir
可用于许多 svn 命令行命令,但是,基本 svn 包似乎没有永久更改配置文件目录的选项。使用基本 svn API 的客户端应用程序(例如 TortoiseSvn)可以提供此功能。例如,.NET Rider 还有一个选项可以为 svn 配置文件指定一个非默认目录,当我尝试它时,它起作用了,这就是我发现这一点的原因。
https://svnbook.red-bean.com/nightly/en/svn.ref.svn.html#svn.ref.svn.sw
(在我原来的问题中,当我说我已经通过更改
global-ignores
证明配置目录适用于TortoiseSvn时,我使用了TortoiseSvn UI,所以它确实使用了ConfigDir设置。我不知道该命令线也没有使用它,因为我没有使用命令行测试 global-ignores
[就像我为list
命令])。
总结和简化可能会有点混乱:使用 svn API 的客户端应用程序(例如 TortoiseSvn、VisualSvn、.NET Rider)可以提供更改配置文件位置的设置。但是,该配置文件位置不会被基本 svn 包使用,也不会影响 svn 命令行命令。