Невозможно подключиться к SVN с черепахой SVN, но может с помощью веб-браузера

Я настроил свой SVN-репозиторий для доступа к нему через Apache.

Я могу получить к нему доступ через любой веб-браузер с этими адресами.

http://svn.domain.com
http://www.domain.com:3690

Но когда я пытаюсь оформить заказ с помощью tortoiseSVN в windows или из командной строки в linux, первый возвращает: "Неиспользуемый URI: он не ссылается на этот репозиторий", а второй запускается часами и заканчивается ошибкой тайм-аута. (Я также попробовал svn://domain.com, который делает то же самое)

Я читал, что mod_rewrite может быть для чего-то в этом вопросе, но я не видел никакого способа решить эту проблему, кроме как путем удаления mod_rewrite.

Но мне нужен mod_rewirte для сайтов на этом сервере.

В чем проблема?

Есть ли способ запустить mod_dav_svn и mod_rewrite одновременно?

РЕДАКТИРОВАТЬ

Файл конфигурации виртуального хоста выглядит так:

<Directory /path/to/subdomain>
  DAV svn
  SVNPath /path/to/repos
  AuthType Basic
  AuthName "Repos Name"
  AuthUserFile /path/to/auth-user/file
  Require valid-user
</Directory>

Я добавил это в файл httpd.conf:

Listen 3690
NameVirtualHost *:3690

<VirtualHost *:3690>
  ServerName svn.domain.com
  <Location />
    DAV svn
    AuthType Basic
    AuthName "Repos Name"
    AuthUserFile /path/to/auth-user/file
    SVNPath /path/to/repos
    Require valid-user
  </Location>
</VirtualHost>

2 ответа

Хорошо, почему вы используете порт 3690 для HTTP?

Subversion может использовать несколько разных протоколов для доступа к хранилищу. Тем не менее, вы не можете микс-н-матч. Если вы используете Apache HTTP в качестве сервера, вы можете использовать только протокол HTTP:

$ svn co http://svn.domain.com/<srvrInst>/path/to/your/repository

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

По сути, любой каталог, который вы можете просмотреть в веб-браузере, должен позволить вам проверить его. Тем не менее, есть исключение, если у вас есть SVNListParentPath на. Родительский каталог всех ваших репозиториев не может быть извлечен. В противном случае вы можете оформить заказ на любой каталог, к которому можете перейти.

Можно одновременно обслуживать один и тот же репозиторий через svnserve и Apache http. Если вы сделаете это, вы можете использовать либо Apache http протокол или svn протокол.

Если это не решит вашу проблему, вам придется предоставить нам больше информации. Например, как выглядит ваша конфигурация Apache http. Какой URL вы можете просматривать, но не оформить заказ? Помните, что в Subversion вы можете извлекать только каталоги, а не файлы. Если вам нужен файл, вы можете использовать svn cat в файл и перенаправить вывод в файл.


Файл конфигурации виртуального хоста выглядит так:

<Directory /path/to/subdomain>
  DAV svn
  SVNPath /path/to/repos
  AuthType Basic
  AuthName "Repos Name"
  AuthUserFile /path/to/auth-user/file
  Require valid-user

Я считаю, что ваша проблема - сама директива Директории. Предположим, вы указали каталог в вашем домене, где расположен ваш репозиторий. Обычно это просто что-то вроде svn или же source, так что вы бы сделали это для оформления заказа: $ svn co http://svn.domain.com/svn/repo или же $ svn co http://svn.domain.com/source/repo, Посмотрите, где он появляется после URL вашего доменного имени?

Я никогда не пробовал такой многоуровневый каталог. Вы хотите, чтобы люди указали http://svn.domain.com/path/to/subdomain/repo сделать заказ? URL-адреса оформления заказа уже довольно длинные, поэтому я не могу представить, чтобы к ним добавилось еще больше каталогов.

Вы говорите, что можете просматривать хранилище через веб-браузер. Если это так, вы сможете вырезать этот URL из веб-браузера (если это каталог, а не файл) и вставить его в командную строку Tortoise или Subversion.

Кстати, я вижу, у вас установлен AuthUserFile. Может быть, проблема в том, что вам нужно указать имя пользователя и пароль? Оставьте виртуальный хост прослушивающим порт 3690 на данный момент. Если вы действительно хотите использовать этот порт, запустите svnserve на вашем сервере хранилища, и пусть люди используют snv:// протокол.

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

Ваш веб-сайт выполняет запрос SVN к серверу SVN, а затем форматирует запрос как HTML. Это означает, что http://svn.domain.com не является URL-адресом SVN. Вам необходимо выяснить, что такое URL-адрес SVN, и он будет содержать хотя бы название проекта, например protocol://server/projectname

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

Другие вопросы по тегам