Можно ли предоставить доступ к папке на сервере SVN с помощью API SVN?

679
Splendonia

Мне нужно разработать веб-приложение (использующее любой язык, но я знаком с Frameworks Symfony2 и Rails), которое может предоставить пользователю доступ к определенной папке на другом сервере в той же сети из внешнего интерфейса приложения.

Я узнал, что у SVN есть API и что я могу взаимодействовать с ним с помощью PHP или Ruby (по-видимому), хотя я хотел бы запрограммировать приложение на другом языке, сервер, на котором хранятся файлы, использует Windows, и я подумал о используя виртуальный SVN-сервер, однако я не могу найти какую-либо функцию в API для предоставления пользователям доступа к файлам и / или папкам или доступа любого вида, как вы обычно делаете с помощью графического интерфейса пользователя (VirtualSVN в Windows).

Я что-то пропустил? Это вообще возможно?

1

1 ответ на вопрос

1
Aaron Miller

It is possible, but how you'll need to do it depends on what you're using to serve your Subversion repositories; Subversion itself specifies no method of access control, and leaves such concerns up to whatever software you're using to expose your repository to your clients.

(This is actually preferable to doing access control within Subversion proper, because it's more modular and thus more easily extensible; a Subversion repository served via Apache can partake of any access control method Apache supports, instead of having to reimplement each such method as part of the Subversion source tree.)

If you're serving your repository via Apache or via the svnserve tool packaged with the Subversion distribution, you can find details on how to configure access control in Chapter 6 of Version Control with Subversion, available free online. Otherwise, consult the documentation for your server software for further details on how to set up the access control options you require.

A final note: the PHP and Ruby APIs you describe are implementations of a Subversion client, which will almost certainly be useful in developing your application code, but which will not do anything to help you work with server-side access control. For that, you'll need to find some way of either safely allowing your application code to modify the configuration of your repository server (dicey), or of having your application integrate with an authentication/authorization database which the repository server uses to find out who's allowed to go where in the repo and do what.

Большое спасибо за ответ и разъяснения для меня. Я не думал об интеграции обеих баз данных, все ли серверы SVN позволяют это? Splendonia 10 лет назад 0
@Splendonia Это зависит от возможностей серверного программного обеспечения. Например, модуль Apache [mod_auth_mysql] (http://modauthmysql.sourceforge.net/) позволяет Apache использовать базу данных MySQL в качестве бэкэнда аутентификации, что, вероятно, будет самым простым способом управления доступом изнутри веб-приложения. , Другие серверы хранилища могут поддерживать или не поддерживать нечто подобное; вам нужно проверить документацию для вашего серверного программного обеспечения, чтобы узнать, что вы можете сделать. Aaron Miller 10 лет назад 0
@ Сплендония с удовольствием! Aaron Miller 10 лет назад 0