如何使用PySVN捕获登录失败?

时间:2010-04-12 20:50:32

标签: python infinite-loop pysvn

我是Python和PySVN的新手,我正在尝试使用pysvn导出我的SVN存储库。这是我的代码:

#set up svn login data  
def svn_credentials (realm, username, may_save):  
  return True, svn_login_name, svn_login_password, False

#establish connection  
svn_client = pysvn.Client ()  
svn_client.callback_get_login = svn_credentials

#export data  
svn_client.export('server-path-goes-here', 'client-path-goes-here', force=True)

哪个工作正常,但如果密码错误或用户名未知,则此代码就可以了。我相信它会在SVN端出现用户登录提示,但我不知道如何检查callback_get_login发生了什么。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

如果凭据错误,pysvn将调用回调,如果凭据仍然错误,它将再次调用它,并且它将继续这样做,直到凭据正确。

对于自动脚本,最好不要设置回调,而是通过在pysvn.Client实例上调用set_default_username和set_default_password来设置默认用户名和密码。

使用该设置不正确的凭据将导致pysvn传播异常,建议您设置可以捕获的回调并转换为有意义的错误消息。

答案 1 :(得分:1)

您使用的是SSH吗?在这种情况下,也许是SSH呈现登录提示,而PySVN对此无能为力。您可以尝试弄乱客户端的SSH配置以禁用键盘交互提示:

http://www.ssh.com/support/documentation/online/ssh/adminguide/32/Configuring_the_Server_and_Client.html