вот мой код
#!/usr/bin/python
# -*- coding:utf-8 -*-
import sys
import pysvn
def main():
client = pysvn.Client()
client.callback_get_login = lambda realm, username, may_save:(True, "myusername", "mypasswd", True)
print client.cat('http://svn.mydomain.com/file1.py')
print client.cat('http://svn.mydomain.com/file2.py')
return 0
if __name__ == "__main__":
sys.exit(main())
, и я заметил, что pysvn установил два HTTP-сеанса, но в каждом сеансе сначала пытался использовать метод OPTION без заголовка «Authorization» после ответа сервера 401,он отправил заголовок «Авторизация».
Поскольку два URL-адреса находятся в одном домене, почему бы pysvn не отправить имя пользователя / passwd непосредственно в сеансах подпоследовательности?
У меня есть этот вопрос, потому что я 'Я подозреваю, что слишком много 401 заставило мой сервер SVN не ответить.И svnkit в eclipse прекрасно работает и отправляет заголовок «Authorization» автоматически.
Редактирование: Алексу Мартелли:
попробуйте передать явный путь к известному, чтобы бытьдоступный для записи config dir при вызове клиента.
попытался, не работает
возможно, что служба отправляет разные области для двух файлов
области двух ответов одинаковы.
Похоже, что pysvn вызывает "svn_client_cat2 ()" из libsvn, и эта функция не кэширует имя пользователя / пароль между вызовами даже для одного и того же URL-адреса и тех же областей.Так что я не думаю, что смогу больше справиться с этой проблемой, добавление нового интерфейса в libsvn и кэширование имени пользователя / пароля для будущих действий будет стоить слишком много времени для моей задачи.В любом случае, спасибо!