Answers:
这在某种程度上取决于您的SVN版本。最近的(1.6+)版本具有通常的功能--non-interactive
(您希望使用该功能以避免出现提示),并且也--trust-server-cert
可以执行您想要的操作。
使用--trust-server-cert
不会永久接受SSL证书。您可以使用输入重定向(而不使用)通过命令行永久接受SSL证书--non-interactive
。
这是Unix / Linux的示例:
svn list [TARGET] << EOF
p
EOF
注意:上面的“ p”是永久(p)。
1.6.6 (r40053)
不幸的是,我的版本()根本不会提供p
(永久)选项。而且由于这是在一个古老的盒子上,所以我无法再更新了……
我的解决方案使用了期望。它不是安全的,但是当其他解决方案无法解决时,它将起作用。
#!/usr/bin/expect -f
set svn_username [lindex $argv 0]
set svn_password [lindex $argv 1]
set svn_url [lindex $argv 2]
spawn svn --username=${svn_username} --password=${svn_password} list ${svn_url}
expect "(R)eject, accept (t)emporarily or accept (p)ermanently? "
send -- "p\r"
expect "Store password unencrypted (yes/no)? "
send "no\r"
expect -re "root@.*:\/#"
您应该能够下载证书,然后将其放置在适当的目录中。或者,您可以下载CA证书,然后将配置选项ssl-authority-files设置为信任该CA。
请参阅本书中的SSL证书管理部分。