Хук предварительной фиксации SVN Python - как узнать целевую ветку

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

Я использую командный файл Windows, который вызывает скрипт Python. Я использую API привязок SVN Python, который плохо документирован. Исходный код можно найти здесь, в zip-файле Python: http://sourceforge.net/projects/win32svn/files/1.7.8/apache24/. Просто чтобы вы знали, какой API я имею в виду.

Я нашел еще один вопрос по этой теме: Предварительная фиксация SVN ловушка для избежания фиксации в определенных ветках. Однако я не совсем понимаю ответ и не знаю, как мне добиться этого с помощью имеющихся у меня инструментов и Python.


person Teemu Leivo    schedule 07.06.2013    source источник
comment
Вы уже используете авторизацию на основе пути?   -  person Josh    schedule 07.06.2013
comment
Нет, не думаю. Может ли это быть решением?   -  person Teemu Leivo    schedule 07.06.2013
comment
Авторизация на основе пути - это распространенный способ управления доступом, в отличие от помещения кода ACL в скрипты перехвата. См. http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html   -  person Josh    schedule 07.06.2013
comment
Спасибо за совет. Но на самом деле я понял, что плохо сформулировал свой вопрос. Идея состоит не в том, чтобы полностью блокировать коммиты в одних ветвях и разрешать их другим. Но просто убедитесь, что коммиты в эти конкретные ветки хорошего качества. Я отредактировал это на вопрос.   -  person Teemu Leivo    schedule 07.06.2013


Ответы (1)


У меня есть уже написанный Perl-хук, который делает именно то, что вы хотите.

Вы указываете, кто и где может фиксировать, создав контрольный файл:

[FILE All developers can commit to the trunk]
match=/trunk/**
access=read-write
users=@ALL

[FILE All branches are locked. You do not have access to them]
match=/branches/**
access=read-only
users=@ALL

[FILE Only bob and carol can commit to the 3.2 branch]
match/branches/3.2/**
access=read-write
users=bob,carol

Вы также можете создавать группы и использовать их:

[GROUP branch-committers]
users=bob,carol

[FILE Only the branch-committers can commit to the 3.2 branch]
match/branches/3.2/**
access=read-write
users=@branch-committers

И если вы установите модуль Perl Net::LDAP на свой Сервер Subversion, вы можете использовать свои группы Windows Active Directory.

Perl имеет открытый исходный код и бесплатен для Windows из Strawberry Perl или Активное состояние.

person David W.    schedule 07.06.2013