SVN: ограничить коммит транка авторизованным пользователям - PullRequest
3 голосов
/ 11 марта 2010

Мы планируем разработать политику предотвращения коммитов в транк. Все коммиты должны происходить с ветками.

Каким должен быть мой подход, чтобы сделать это?

Ответы [ 3 ]

4 голосов
/ 11 марта 2010

См. Документацию svn . ИТ-специалисты говорят, что apache и svnserve поддерживают авторизацию на основе путей. Также из документации:

Вам действительно нужен доступ на основе пути контроль

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

Обратите внимание, что часто бывают невидимые (и видимые!) расходы связано с этой функцией. в видимая категория, сервер должен сделать гораздо больше работы, чтобы убедиться, что пользователь имеет право читать или писать каждый конкретный путь; в определенном ситуации, там очень заметно потеря производительности. В невидимке категория, рассмотрите культуру вы Создание. Большую часть времени, в то время как определенные пользователи не должны совершать изменения в определенных частях хранилище, этот общественный договор не должен быть технологически исполнение. Команды могут иногда спонтанно сотрудничать с каждым Другой; кто-то может захотеть помочь кто-то еще, совершив к область, над которой она обычно не работает. От предотвращая подобные вещи на уровень сервера, вы настраиваете барьеры для неожиданного сотрудничества. Вы также создаете кучу правил которые должны быть сохранены как проекты развиваться, добавляются новые пользователи, и так на. Это куча дополнительной работы, чтобы поддерживать.

Помните, что это версия система контроля! Даже если кто-то случайно совершает изменение то, что они не должны, это легко отменить изменения. И если пользователь фиксирует в неправильном месте с намеренным злоба, тогда это социальная проблема во всяком случае, и что проблема должна иметь дело за пределами Subversion.

3 голосов
/ 11 марта 2010

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

  1. Убедитесь, что у вас есть /usr/share/subversion/hook-scripts/commit-access-control.pl. В Ubuntu он находится в пакете subversion-tools.
  2. Перейдите в каталог хранилища, скопируйте сценарий hooks/pre-commit.tmpl в hooks/pre-commit и сделайте его исполняемым.
  3. Измените его по своему вкусу. Я думаю, что по умолчанию разумно.
  4. Напишите commit-access-control.cfg в вашем каталоге хранилища. Примерно так (не проверено):

[Парсер StackOverflow, похоже, не работает, здесь нужен абзац]

[Make trunk read-only]
match = ^trunk
access = read-only
1 голос
/ 11 марта 2010

Просто напишите простую зацепку после фиксации. Вы можете использовать этот пример для руководства http://wordaligned.org/articles/a-subversion-pre-commit-hook

В вашем скрипте просто проверьте URL-адрес, по которому они совершают транзакции, и отклоните все транзакции, которые изменяют транковый URL-адрес

Однако вам нужно назначить человека, который мог бы объединить ветви в ствол, ваш хук перед фиксацией должен проверить либо на мастер-имя пользователя, либо какой-либо другой механизм аутентификации и разрешить слияния в ствол

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...