Как кешировать имя пользователя и пароль в pysvn - PullRequest
1 голос
/ 24 июля 2010

вот мой код

#!/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 и кэширование имени пользователя / пароля для будущих действий будет стоить слишком много времени для моей задачи.В любом случае, спасибо!

1 Ответ

1 голос
/ 24 июля 2010

Похоже (ошибочная гипотеза номер один), что каталог конфигурации может быть недоступен для записи - попробуйте передать явный путь к известной для записи директории конфигурации при вызове Client.

Если это не помогает (ошибочная гипотеза номер два), возможно, что служба отправляет разные области для двух файлов (тот факт, что это один и тот же домен, не мешает серверу сделать это, хотя это быть специфическим выбором конфигурации или ошибкой конфигурации со стороны сервера ... но тогда сервер, который выходит из строя из-за "слишком большого количества 401-х", в любом случае имеет что-то своеобразное, так что это уже подозрение; -).

...