如何在 --non-interactive 时使 svn 保存凭据

jam*_*hid 13 subversion shell-script

我正在尝试svn从自动脚本中将我的 https 用户名+密码保存到 ~/.subversion 。我可以在命令行上传递凭据,但我不想被提示是否保存未加密的密码。不幸的是,这不会创建 ~/.subversion/:

svn --non-interactive --trust-server-cert --username myusername --password secret co https://private.example.com/src/repo/

仅供参考我想一个Dockerfile调用一个做到这一点bower install与bower.json引用受密码保护的svn的。不幸的是,无法bower通过命令行或环境将 svn 凭据传递给。

我目前正在通过以交互方式运行 svn 并让它创建 ~/.subversion,然后压缩整个目录并将ADD其放入 Dockerfile 来解决它。我想我可以查看 ~/.subversion 中的文件格式并用脚本创建它,但宁愿让 svn 来做。

小智 6

凭据如果您使用保存--username和--password不--non-interactive和 --trust-server-cert。

我假设您正在使用--non-interactive并--trust-server-cert避免出现要求您接受证书的提示。为了在没有这些参数的情况下仍然避免出现此提示,您可以让脚本创建为~/.subversion/auth/svn.ssl.server. 该文件对于每个服务器的每个人都是相同的。我目前正在将此解决方案用于脚本。


小智 4

显然--non-interactive保存用户名但不保存密码。我已经在以下位置启用了密码存储~/.subversion/servers:

store-passwords = yes
store-plaintext-passwords = yes
store-auth-creds = yes
Run Code Online (Sandbox Code Playgroud)

查看svn help,没有任何命令或选项看起来相关。我认为这是不可能的。您应该要求 SVN 开发人员确认并提交错误报告。

下面的文件格式auth不是您想要自己编写脚本的内容。最重要的是,身份验证记录的文件名似乎是一个哈希值。这对脚本不友好。我们需要硬编码密码列表的特殊文件格式或从命令行控制它的方法。

这是我在下面看到的内容~/.subversion/auth/svn.simple/:

文件名935...dc9e(32 个字符)。

内容:

K 8
passtype
V 6
simple
K 8
password
V 8
p@$$w0rd
K 15
svn:realmstring
V 48
<https://svn.someplace.com:443> VisualSVN Server
K 8
username
V 5
johny
Run Code Online (Sandbox Code Playgroud)