Авторизация в Subversion [SOLVED]
Привет всем.
Создал на своем тестовом серверочке хранилище на основе Subversion. Начал всячески испытывать его. До некоторых пор было все нормально, пока не начал играться с path-based access, за который отвечает файл conf/authz хранилища.
В книге по Subversion сказано, что при большом количестве хранилищ, удобно использовать один файл authz для осуществления авторизации в каждом из них.
Если в разных хранилищах существуют пути с одинаковыми именами, то для разрешения этого конфликта необходимо указывать блок авторизации в файлу authz следующим образом:
[хранилище : путь относительно корня этого хранилища]
Вопрос состоит в том, как правильно описать параметр "хранилище", потому как при использовании упрощенной структуры [путь относительно корня любого хранилища]
все работает.
Хранилища находятся в директориях /var/svn и /var/svn2, в каждом из них есть директория test с тестовыми файлами для проверки работы SVN. Необходимо сделать, чтобы один из пользователей не имел доступа к директории test хранилища /var/svn2, а к папке test хранилища /var/svn имел полный доступ.
- Для комментирования войдите или зарегистрируйтесь
Не похоже чтобы
Не похоже чтобы вы бук этот внимательно прочли.
Во первых, никакой это не пасбайсед акцесс. Это случай массового управления несколькими репозиториями, который делается так же как и пассбайсед акцесс. Для такого случая необходимо:
1) Прописать путь к каталогу репозиториев при помощи переменной SVNParentPath вместо SVNPath
2) Во вторых парент этот должен содержать подкаталоги, которые являются репозиториями svn.
Судя по доке у вас должно быть нечто такое
/var/svn/repos1
/var/svn/repos2
Тогда SVNParentPath=/var/svn. И далее идем читать про настройку доступа.
То что вы сотворили -два различных репозитория, которые друг о дружке совершенно ничего не знают.
ЗЫ
Если вы не провайдер - трудно понять зачем нужно несколько репозиториев.
Не похоже?
Ну что же, может быть и так. Читаю постоянно, возвращаюсь к книге по мере надобности. Понимание некоторых моментов осложняется тем, что русская версия книги видимо заточена только под пользователей.
Во-первых, позволю себе не согласиться насчет path-based. Посмотрите здесь: http://svnbook.red-bean.com/nightly/ru/svn.serverconfig.pathbasedauthz.html
Во-вторых, вы дали советы для осуществления доступа к хранилищам посредством Apache, я же использую встроенный svnserve, в нем это доступно, начиная с версии 1.3
Хотя в одном вы абсолютно правы - я запускал демон svnserve без ключа --root.
Теперь, запустив сервер строкой
svnserve -d -r /путь/к/директории/содержащей/хранилища
, необходимый мне контроль доступа заработал.Спасибо, что ответили, тем не менее :)
По поводу того, зачем нужно несколько хранилищ... Дело вкуса конечно, в основном. Но вот неплохо написанная статья в блоге одного из разработчиков Subversion: http://blogs.open.collab.net/svn/2007/04/single_reposito.html
Для себя я выбрал несколько хранилищ потому, что мне представляется неудобным общий номер ревизии для всех проектов, которые ведутся в конкретном хранилище.
// Если бы Уильям Шекспир был программистом, знаменитую фразу "То be or not to be" он написал бы так: 2b | ! 2b
Номер ревизии к
Номер ревизии к проекту не имеет никакого отношения. И вязаться на него не стоит, метаинформации в свн достаточно много. В блоге, кстати, расписаны недостатки обоих подходов, кстати один из них - поддержка ветвей, что в системе контроля версий немаловажно.
Дальнейшие
Дальнейшие тесты показали, что необязательно было указывать директорию, общую для всех репозиториев (ключ --root).
Репозитории прекрасно доступны и по полному адресу.
Таким образом, для достижения требуемой цели, надо поправить файл authz следующим образом:
[var/svn:/test]
user1 = rw
[var/svn2:/test]
user1 =
// Если бы Уильям Шекспир был программистом, знаменитую фразу "То be or not to be" он написал бы так: 2b | ! 2b