Subversion - возможно ли отключить все коммиты и сделать репозиторий доступным только для чтения? - PullRequest
6 голосов
/ 10 февраля 2012

У меня есть хранилище Subversion, которое является зеркалом другого удаленного хранилища.Я использую svnsync для зеркалирования хранилища каждую неделю.Зеркальное хранилище (локальная копия) предназначено только для резервного копирования.

Я бы хотел, чтобы зеркальный репозиторий был доступен только для чтения, т. Е. Никто не должен иметь возможность вносить какие-либо изменения в этот репозиторий, но они могут использовать его для чтения исходных файлов, поскольку он работает быстрее, чем удаленный репозиторий.

Я посмотрел на Google, и кажется, что Hook, вероятно, лучший вариант.Единственная проблема заключается в том, что все примеры, которые я вижу в Google, основаны на Unix, и я не могу найти подходящий пример для Windows, поскольку зеркальное хранилище работает на Windows Server.

Есть идеи?

Ответы [ 2 ]

7 голосов
/ 10 февраля 2012

Прежде всего, используете ли вы http:// или svn:// в URL-адресах оформления заказа?

Если вы используете svn://, вы можете настроить файл svnserve.conf в своем хранилище для удаления авторизованного доступа, просто имея пустой переданный файл. По умолчанию анонимный доступ доступен только для чтения, поэтому, если вы не изменили этот параметр в файле svnserve.conf, все будет в порядке. Или вы можете отключить анонимный доступ и изменить авторизованный доступ на read-only.

Однако, если вы используете http://, вам нужно настроить конфигурацию Apache httpd на вашем сервере Subversion, чтобы не разрешать доступ для записи.

Это становится сложнее, поскольку существует несколько способов настройки аутентификации Apache httpd, и в зависимости от системы httpd Apache может храниться в нескольких местах.

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

Кстати, старая команда svnsync использовала не только svn для чтения и записи для фиксации изменений, которые она синхронизировала, но и должна была установить хук pre-revprop-change, поэтому команда svnsync также может изменить Свойства svn:log, svn:date и svn:author в соответствии с исходным хранилищем. Это означает, что если вам удастся сделать ваш репозиторий только для чтения , вы можете сломать svnsync. Вам нужно прочитать о том, как работает svnsync и по-прежнему ли это так. Мой хук pre-commit тоже может решить эту проблему.

6 голосов
/ 10 февраля 2012

Почему бы просто не настроить anon-access = read и auth-access = read в svnserve.conf?

...