
Функция аннотирования SVN довольно мощная и позволяет быстро определить, кого отслеживать для определенной функции в определенной строке кода. Эта функция становится немного более ограниченной (но все еще полезной), если пользователи получают доступ к SVN через http. При этом не происходит обмена учетными данными, поэтому аннотация не показывает имени строки, измененной разработчиком, который использует http для фиксации изменения.
Вопрос в том, есть ли способ для разработчика передать какие-либо учетные данные в SVN на сервере, чтобы однозначно идентифицировать его коммит? В этой среде требуется только наличие идентификатора. Альтернативные методы, такие как svn+ssh и файловые протоколы, недоступны. Наконец, этот сервер находится во внутренней локальной сети, а не публичной. Советы по https также приветствуются.
Сервер SVN работает на Linux с Apache2.
решение1
в конфигурации Apache:
<Location /svn>
DAV svn
SVNPath /mnt/big/svn
AuthType Basic
AuthName "SVN Server"
AuthUserFile /etc/apache2/svn.pass
Require valid-user
AuthzSVNAccessFile /etc/apache2/svn_authz
и /etc/apache2/svn_authz может содержать детальное управление тем, кто и к чему может получить доступ:
[groups]
ops=user1,user2
it=user2,user3
[/]
* = rw
[/ops]
* =
@ops=rw
[/ro]
* =
@ops = r
@it = r
user4 = rw
Если у вас есть ldap / сервер Active Directory, вы можете использовать его вместо AuthUserFile для аутентификации Apache.
решение2
Поскольку вы используете SVN через Apache, вы можете воспользоваться встроенными методами аутентификации Apache для управления доступом/отслеживания изменений в вашем репозитории. Пример ниже будет работать с настройкой в стиле htaccess:
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /path/to/user/list
Require valid-user
Вы можете настроить это в файле htaccess или в файле конфигурации VirtualHost.
решение3
Короткий ответ:mod_authz_svn
Немного информации об Apache + SVN + Mod_Autz_SVN и кое-что еще вы можете узнать из моих слайдов, представленных на Международной конференции PHP '09, доступных по адресуhttp://superalbert.it/download/misc/PHPCon09_SVN_advanced.pdf
решение4
В этом ответе предполагается, что ваши разработчики используют Windows и у вас есть контроллер домена Active Directory.
Вы можете присоединить сервер Linux SVN к домену, выполнив следующие действия:статья.
Оттуда вы настраиваете apache для аутентификации в AD с использованием Kerberos. Сначала установитеmod_auth_kerb, затем подключите apache2 к kerberos для аутентификации. См. Microsoftдокументация. Обязательно реализуйте SSL, если вас хоть как-то беспокоит безопасность между клиентом и сервером.
После того, как вы закончите, пользователи смогут войти в систему, используя свои пароли Windows, и действия будут назначены их пользователю.
К сожалению, я не могу предоставить вам конкретную информацию о конфигурации прямо сейчас, так как я нахожусь вне офиса и не имею доступа к нашему серверу SVN.