Как обеспечить принудительное подписывание gnupg репозитория Mercurial только при создании новых тегов? - PullRequest
2 голосов
/ 10 апреля 2010

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

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

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

Надеюсь, я только что пропустил что-то очевидное в hooklib. Кто-нибудь еще достиг этого, если да, то как?

1 Ответ

3 голосов
/ 10 апреля 2010

Вы можете сделать это на сервере с pretxnchangegroup ловушкой. Более эффективный внутрипроцессный процесс на Python, но в моей оболочке, в общем-то, вы бы сделали:

В вашей hgrc:

[hook]
pretxnchangegroup = all-tags-checked.sh

и в all-tags-checked.sh:

for therev in $(seq $(hg id -n -r $HG_NODE) $(hd id -n -r tip)) ; do
   if hg log --template '{files}' -r $therev | grep --quiet '^.hgtags' ; then
      if hg sigcheck $therev | grep --quiet '^No valid' ; then
         exit 1
      fi
   fi
done

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

Это то, что вы ищете?

...