7

Обычно, я позволил бы расширение, добавив следующее .hg/hgrc:Version управления конфигурацией расширения в Mercurial

[extensions] 
hgext.win32text= 
[encode] 
** = cleverencode: 
[decode] 
** = cleverdecode: 

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

Похоже, что это невозможно от the documentation, но кто-нибудь знает какие-нибудь опрятные трюки, которые могут мне помочь?

ответ

9

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

Hooks do not propagate 

In Mercurial, hooks are not revision controlled, and do not propagate when you clone, 
or pull from, a repository. The reason for this is simple: a hook is a completely  
arbitrary piece of executable code. It runs under your user identity, with your 
privilege level, on your machine. No comments 

It would be extremely reckless for any distributed revision control system to 
implement revision-controlled hooks, as this would offer an easily exploitable way to 
subvert the accounts of users of the revision control system. No comments 

Так ясно, Mercurial сам не решит вашу проблему. Вы четко заявляете, что не хотите ничего, кроме меркуриального, решить свою проблему, поэтому ответ: то, что вы просите, невозможно.

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

Если вы хотите быть умными об этом:

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

Немного сложнее, но это ближайший я могу себе представить, чтобы ваши требования:

  • пользователя запустить скрипт один раз, и они забывают
  • вы можете убедиться, что если не запустить его, они не может совершить центральные репо
+0

Да, специальные сценарии сборки или общие конфигурации сервера сборки являются следующим лучшим решением. Я просто надеялся, что для этого в HG есть некоторая легко обнаруживаемая функциональность. --- «Документация говорит, что это невозможно, и дает некоторые очень веские причины». Где это сказано? Похоже на то, что я хочу читать. – Deestan

+0

Я отредактировал свою запись со ссылками на соответствующий документ. –

0

Как насчет создания ссылки от .hg/hgrc, например. customhg/hgrc, чтобы он получил версию. Затем вам нужно создать какой-то крючок, который копирует его обратно в .hg/hgrc - например. после каждого обновления.

+0

Он должен быть полностью автоматическим, я не хочу периодически входить в систему для каждого ведомого устройства для создания' .hg/hgrc' ссылка. – Deestan

+0

Я думаю, что Mercurial поддерживает ссылки. Итак, если вы проверяете customhg/hgrc, в то время как он указывает на .hg/hgrc, это должно работать. –

+1

Само создание ссылки не является автоматическим. Итак, вы просите пользователей выполнить определенное действие, которое автор не хочет. –

6

текущей версия развития Mercurial (будет выпущена как Mercurial 1.3 на 1 июля) поддерживает %include директивы в конфигурационных файлах.

Это означает, что вы можете попросить людей поставить

%include ../common-hgrc 

в .hg/hgrc. Сделав это, вы сможете эффективно контролировать свои настройки Mercurial, совершив изменения до common-hgrc. Когда они вытащит изменение, новые настройки вступят в силу.

Обратите внимание, что это опасно: любой, кто может заставить вас тянуть изменения в репозиторий теперь можно вставить произвольные крючки в common-hgrc и вы будете выполнять их на следующий Mercurial команды (даже «безопасной» в командной строке hg status) ,

+0

Мне нравится этот обходной путь. Это тривиально включать в репозиции небольшой скрипт, который добавляет строку% include к .hg/hgrc – LordOfThePigs

1

Возможно, вы сможете решить эту проблему через ProjRC extension.

«Это расширение позволяет Mercurial искать и анализировать .hg/projrc для дополнительных настроек конфигурации. Файл переносится на клонирование и потянуть (но никогда не нажимать) «

 Смежные вопросы

  • Нет связанных вопросов^_^