Ошибка кэширования учетных данных в SVN 1.5.2 через HTTP - PullRequest
2 голосов
/ 30 сентября 2008

Недавно мы установили SVN 1.5.2 (с VisualSVN / Apache) на некоторые из наших серверов / виртуальных машин, и теперь, когда я посылаю команду командной строки с именем пользователя / паролем, они больше не кэшируются. Ранее мы работали с SVN 1.5.0, установленным с CollabNet, на svn: //, и учетные данные кэшировались после первой команды.

Пока что я нахожу трудности с устранением неполадок. Моя ситуация:

  • SERVER_SVN (SVN 1.5.2 через svn: //)
  • SERVER_HTTP (SVN 1.5.2 через http://)

Команда из командной строки для SERVER_SVN: учетные данные кэшируются нормально

Та же команда для SERVER_HTTP: учетные данные не кэшируются

Итак, это похоже на проблему с сервером http / apache ... НО, из Tortoise учетные данные кэшируются на обоих серверах, так что это также кажется проблемой вызова клиента. У меня заканчиваются идеи ...

Пример последовательности команд, которую я использую:


svn ls c:\mylocalfolderSVN --username foo --password bar
svn ls c:\mylocalfolderSVN // this works
svn ls c:\mylocalfolderHTTP --username foo --password bar
svn ls c:\mylocalfolderHTTP  // this fails

Последняя команда останавливается и запрашивает аутентификацию.

Различается ли кэширование учетных данных между svn: // и http://, или мы что-то упустили в конфигурации сервера?

Заранее спасибо за любые предложения.

Ответы [ 4 ]

1 голос
/ 01 октября 2008

AFAIK, кэширование учетных данных является обязанностью клиента. Все, что сервер делает, это запрашивает эти учетные данные, когда это необходимо. Я бы проверил файлы конфигурации локального клиента и, возможно, посмотрю, что происходит с клиентами разных версий.

0 голосов
/ 02 июля 2009

Чтобы кэшировать учетные данные, кроме соответствующей конфигурации, вам нужно выполнить SVN следующим образом:

svn ls REPOSITORY_URL

вместо

svn ls WORKING_COPY_PATH

Это то, что сработало для меня, не совсем уверен, что это решение в данном случае.

0 голосов
/ 02 октября 2008

Как указывает wds, svn.exe кэширует учетные данные SVN на стороне клиента, после получения ответа от сервера типа «хорошо, я фактически использовал отправленные вами учетные данные, и они в порядке».

И вот почему я не могу понять, что происходит: у меня 2 сервера, установленных с нуля, я посылаю одинаковые командные строки на оба, один набор учетных данных кэшируется, другой нет ... но TortoiseSVN, который использует тот же svn.exe внизу, кэширует оба (возможно, он обманывает, кэшируя учетные данные, тогда svn.exe не может это сделать).

Мое лучшее предположение сейчас состоит в том, что сервер http: // не отправляет "соответствующий" ответ на svn.exe, но мне действительно не хочется перехватывать все запросы http, чтобы увидеть, что происходит, называйте меня ленивым , но у меня есть более забавные вещи: -)

Итак, я изменил свой дизайн, теперь я буду хранить пароль SVN в памяти (клиентское приложение WinForm, все используется во внутренней сети) и передавать его при каждой команде.

0 голосов
/ 01 октября 2008

Вы полностью определяете доменное имя сервера SVN? Если кэширование для HTTP основано на файлах cookie, а сервер пишет файл cookie с полным доменным именем, но ваш запрос не использует полное доменное имя (вы используете svnserver, а полное доменное имя - svnserver.company), то файл cookie может быть недействительным, и каждый запрос будет нуждаться в аутентификации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...