Mercurial разрешения на слияние - PullRequest
1 голос
/ 02 марта 2011

Можете ли вы настроить разрешения Mercurial так, чтобы только хранилище 1.1 могло быть объединено с 1.0, и чтобы другие хранилища (то есть: 1.2, 1.3) НЕ могли быть объединены с 1.0? Мы были заинтересованы в добавлении некоторых элементов управления для того, что можно объединить с чем.

Ответы [ 2 ]

5 голосов
/ 03 марта 2011

Дело об именованных ветвях

Вы не можете помешать людям делать то, что они хотят, на своей локальной машине (это децентрализованная часть), но вы можете отказаться принимать эти изменения с помощью ловушки pretxnchangegroup.Вам понадобится хук, который проверяет каждый входящий набор изменений, чтобы убедиться, что если это набор изменений слиянием (имеет двух родителей), что ни одна из родительских веток не нарушает ваши правила.

Это предполагает, что вы говорите об именованных ветвях.Если вы используете репо в качестве веток, закладки в качестве веток или анонимные ветки, которые становятся сложнее, поскольку имя ветки не является частью набора изменений.

Если вы используете именованные ветки, вы можете использовать AclExtension длясделать определенные ветви доступными для записи только избранным пользователям - возможно, только менеджер по выпуску может вставить / объединить в 1.0 после активной разработки?

В конце концов, никакие введенные вами ограничения не заменят хорошую подготовку сотрудников.

1 голос
/ 03 марта 2011

Мой другой ответ касается случая именованных ветвей, в котором у вас есть несколько (не очень хороших) опций, потому что имя ветви является частью набора изменений, и вы можете наблюдать за изменениями, созданными первоначально в ветви 1.2, которые объединяются в Ветка 1.0.

Дело "Клоны как ветви"

Если вы работаете с клонами в качестве ветвей (мой предпочтительный режим работы), информация "над какой ветвью был сделан этот набор изменений" недоступна. Однако вы можете добавить хук pretxnchangegroup в репозиторий 1.0, который блокирует первый набор изменений, созданный вами в ветке 1.2. Тогда, если кто-то попытается вставить 1.2 в центральный (-ish) репозиторий 1.0, ему будет отказано.

Вот пример того, как сделать этот вид хука: http://ry4an.org/unblog/post/mercurial_changeset_blacklist/

...