如何检查svn命令是否需要身份验证

7 ruby svn windows tortoisesvn

有没有办法检查SVN更新是否需要认证?

场景:我编写了一个ruby GUI应用程序,它以预定的方式更新SVN存储库(从静态路径).这作为Windows服务执行.也有安装tortoisesvn.

在ruby中执行时

svn update local_path_to_repository --username user --password password 在我的脚本中然后它工作正常,因为我使用更新命令传递用户名和密码.

但是,当我第一次签出存储库时,tortoisesvn会保存密码(通过缓存密码,使用标准的Windows加密服务来加密磁盘上的密码),因此我不一定每次都需要传递用户名和密码.因此,我只是svn update local_path_to_repository在我的脚本中.

问题:在我更改LDAP密码之前,此工作正常.一旦我的LDAP密码被更改,所有存储库都无法更新,因为它请求新密码,但没有用于传递新密码的用户界面.

我只需要在svn更新需要这些凭据但不总是需要时才构建用户名和密码UI.我该如何实现这一目标?

更新:阅读SVN 书籍.我明白:

  1. 客户端检查用户是否将任何凭据指定为命令行选项(--username和/或--password).如果没有,或者这些选项无法成功验证,那么
  2. 客户端在运行时auth /区域中查找服务器的主机名,端口和域,以查看用户是否已经缓存了相应的凭据.如果没有,或者缓存的凭据无法进行身份验证,那么
  3. 最后,客户端会尝试提示用户(除非通过--non-interactive选项或其客户端特定的等价物指示不这样做).

但我没有找到检查是否需要身份验证的方法.

谁能帮帮我吗!

小智 5

所以我终于通过以下方式找到了解决方法:

output = `svn update "#{repo_path}" --non-interactive 2>&1`
check_authentication = output.include?("Authentication failed")
Run Code Online (Sandbox Code Playgroud)

如果check_authentication返回true意味着身份验证失败,那么我构建用于输入新密码的 GUI 并将其发送给用户。