Можно ли предоставить доступ к папке на сервере SVN с помощью API SVN?
Мне нужно разработать веб-приложение (использующее любой язык, но я знаком с Frameworks Symfony2 и Rails), которое может предоставить пользователю доступ к определенной папке на другом сервере в той же сети из внешнего интерфейса приложения.
Я узнал, что у SVN есть API и что я могу взаимодействовать с ним с помощью PHP или Ruby (по-видимому), хотя я хотел бы запрограммировать приложение на другом языке, сервер, на котором хранятся файлы, использует Windows, и я подумал о используя виртуальный сервер SVN, однако я не могу найти какую-либо функцию в API, чтобы предоставить пользователям доступ к файлам и / или папкам или доступ любого вида, как вы обычно делаете с помощью графического интерфейса пользователя (VirtualSVN в Windows).
Я что-то упустил? Это вообще возможно?
1 ответ
Это возможно, но то, как вам нужно будет это сделать, зависит от того, что вы используете для обслуживания своих хранилищ Subversion; Сама Subversion не определяет метод контроля доступа и оставляет такие проблемы на усмотрение любого программного обеспечения, которое вы используете, чтобы представить свой репозиторий своим клиентам.
(На самом деле это предпочтительнее, чем выполнять управление доступом внутри собственно Subversion, поскольку оно более модульное и, следовательно, более легко расширяемое; хранилище Subversion, обслуживаемое через Apache, может принимать участие в любом методе управления доступом, поддерживаемом Apache, вместо того, чтобы переопределять каждый такой метод как часть исходное дерево Subversion.)
Если вы обслуживаете свой репозиторий через Apache или через svnserve
Инструмент, поставляемый с дистрибутивом Subversion, вы можете найти подробную информацию о том, как настроить контроль доступа, в главе 6 " Управление версиями с Subversion", доступной бесплатно онлайн. В противном случае обратитесь к документации по вашему серверному программному обеспечению для получения дополнительной информации о том, как настроить необходимые параметры контроля доступа.
Последнее замечание: описываемые вами API-интерфейсы PHP и Ruby являются реализациями клиента Subversion, который почти наверняка будет полезен при разработке кода вашего приложения, но не поможет вам работать с управлением доступом на стороне сервера. Для этого вам нужно будет найти какой-либо способ безопасного разрешения кодом вашего приложения изменения конфигурации вашего сервера репозитория (рискованно) или интеграции вашего приложения с базой данных аутентификации / авторизации, которую сервер репозитория использует для выяснения этого. кому разрешено идти куда-то в репо и что делать.