有没有办法检查SVN更新是否需要身份验证?
场景我编写了一个ruby GUI应用程序,它以预定的方式更新SVN存储库(来自静态路径)。这作为Windows服务执行。也有安装tortoisesvn。
执行时的红宝石
在我的脚本中 svn update local_path_to_repository --username user --password password
然后它正常工作,因为我传递了用户名&使用update命令的密码。
但是,当我第一次签出存储库时,tortoisesvn会保存密码(通过缓存密码,使用标准的Windows加密服务来加密磁盘上的密码)所以我不一定每次都需要传递用户名和密码。因此,我的脚本中只有svn update local_path_to_repository
。
问题:在我更改LDAP密码之前,此方法正常。一旦我的LDAP密码被更改,所有存储库都无法更新,因为它请求新密码,但没有用于传递新密码的用户界面。
只有当svn更新需要这些凭据但不总是需要时,我才需要构建用户名和密码UI。我该如何实现这一目标?
更新:从SVN book读取。我明白了:
--non-interactive
选项或其客户端特定的等价物指示不这样做)。但我没有找到检查是否需要身份验证的方法。
任何人都可以帮助我!
答案 0 :(得分:3)
所以我终于通过以下方式找到了解决方法:
output = `svn update "#{repo_path}" --non-interactive 2>&1`
check_authentication = output.include?("Authentication failed")
如果check_authentication
返回true
意味着身份验证失败,那么我构建GUI以输入新密码并将其发送给用户。