Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > УП: Общие вопросы > SVN, когда в репозитории несколько связ. проектов


Автор: Wowa 5.4.2010, 03:13
У меня есть репозиторий SVN. В нем лежит несколько проектов, которые используют общие либы лежащие в этом же репозитории.

структура

Код

// Каталоги с проектами
/trunk/application1/
/trunk/application2/
/trunk/applicationN/

// либы
/trunk/lib/application1/
/trunk/lib/application2/
/trunk/lib/applicationN/

// тут общие либы
/trunk/lib/main/


Как сделать так, чтобы дать разным группам программистов доступ к определенным applications, но при этом, чтобы они не имели доступ к другим applications, которые внутри этого же репозитория лежат? Доступ к общим либам должен быть у всех групп программистов.

Автор: maxim1000 5.4.2010, 09:36
в svn'овской системе распределения доступа я не разбирался, но один из вариантов - понаписывать хуков, которые будут проверять имя пользователя и путь, когда он пытается что-нибудь сделать

Автор: Wowa 5.4.2010, 12:29
Я вот думаю. хорошо было бы каталоги как-то маркировать.. Чтобы при загруке на рабочий сервер, также можно было одной командой типа svn update сгрузить файлы приналделажие только одному проекту.

Автор: bilbobagginz 5.4.2010, 13:01
Wowa, привет.
то что тебе нужно достигается настройкой в файле /path/to/reporoot/conf/authz
там есть примеры, и т.д.
в общем внутри файла создай группы:
Код

[groups]
app1 = dev1, dev2, wowa
app2 = dev3, dev4, wowa
..
appN = devX, devY, wowa

потом создай списки доступа на либы:
Код

[/trunk/lib/main/]
@app1 = r,w
@app2 = r,w
..
@appN = r,w
* = 

[/trunk/lib/application1/]
@app1 = r,w
* =
[/trunk/lib/application2/]
@app2 = r,w
* =
..
[/trunk/lib/applicationN/]
@appN = r,w
* =

а теперь списки доступа на сами приложения:
Код

[/trunk/application1/]
@app1 = r,w
* =
[/trunk/application2/]
@app2 = r,w
* =
..
[/trunk/applicationN/]
@appN = r,w
* =

теперь тебе надо указать апачу на этот файл в параграфе доступа к SVN,  сразу после указания пути к репозитарию:
Код

AuthzSVNAccessFile "/path/to/reporoot/conf/authz"


надо поиграться конечно, но идея думаю понятна.

Если пользуешься LDAP/ActiveDirectory, то там можно длинным DN-ам дать алиасы, есть пример в начале файла.


Автор: Wowa 5.4.2010, 13:24
о, как раз то, что нужно. Тем более, что такой файл уже есть. Нужно лишь его дополнить.

Автор: Wowa 5.4.2010, 13:59
bilbobagginz, а если у меня в папке /trunk/lib/ есть еще несколько общих файлов, доступ к которым должны все группы разработчиков получить? Как тогда сделать?

Автор: Wowa 5.4.2010, 15:45
к сожалению, еще проблема в том, что svn checkout не может прочитать корень и сам загрузить нужные каталоги(те на которые права доступа стоят для группы). Требуется перечислять аккаунты. Это не очень удобно.

Автор: bilbobagginz 6.4.2010, 02:17
Wowa, организация файлов в репозитарии должна отражать требования контроля доступа.
у тебя же сначала придумали неподходящую структуру, а теперь пытаетесь на нее надеть систему контроля доступа.
в принципе, если такая пьянка - можно давать доступ поименно, но лучше перекинуть все общие файлы из ./lib в ./lib/common 

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

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)