Mercurial: крючок для ограничения тяги только одной веткой - PullRequest
1 голос
/ 01 ноября 2011

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

В частности, я должен убедиться, что любой, кто вносит изменения в репозиторий развертывания, делает эквивалент

hg pull -b deployment <central-repo-url>

вместо

hg pull <central-repo-url>

Я предполагаю, что мне нужно использовать крючок pre-pull, но я не уверен, как это сделать.

Ответы [ 2 ]

3 голосов
/ 01 ноября 2011

Кроме того, та же техника, но более удобный для пользователя способ;

расширение ACL , в котором вы определяете [acl.deny.branches] и [acl.allow.branches] для вашего рабочего процесса

2 голосов
/ 01 ноября 2011

Самым простым может быть определение псевдонима в hgrc этого репозитория, который определяет pull как pull -b deployment. Тогда любая попытка тянуть будет делать то, что вы хотите. Тем не менее, было бы очень легко запутать это таким образом, чтобы предпринять любую попытку затянуть бесконечный цикл.

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

[hooks]
pretxncommit.deployment = hg log -r tip --template '{branch}\n' | grep '^deployment$'
...