Можно ли зарегистрировать часть файла mercurial hgrc в репо? В частности, раздел [path]

Проведя небольшое исследование в Google и стеке, кажется, что невозможно зарегистрировать файл hgrc в репо по различным причинам безопасности, которые имеют большой смысл.

Однако у меня есть интересная установка, и мне интересно, знает ли кто-нибудь способ сделать это проще.

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

У нас также есть несколько сред разработки, поэтому, чтобы упростить эту задачу, мы довольно часто используем директиву [path] в hgrc.

Вот пример нашей установки:

Скажем, у нас есть следующие репозитории шаблонов для магазинов: electronic_store, Clothing_store, toy_store, а также базовый шаблон с именем base

У нас также есть следующие среды: париж, лондон и живая

Таким образом, в hgrc каждого магазина у нас есть следующее:

;inside hgrc for electronic_store
[path]
default = kiln://instances/live/electronic_store
paris = kiln://instances/paris/electronic_store
london = kiln://instances/london/electronic_store
live = kiln://instances/live/electronic_store
base = kiln://instances/live/base

;inside hgrc for clothing_store
[path]
default = kiln://instances/live/clothing_store
paris = kiln://instances/paris/clothing_store
london = kiln://instances/london/clothing_store
live = kiln://instances/live/clothing_store
base = kiln://instances/live/base

Это позволяет легко из любой среды выполнять hg pull base, hg push/pull paris, hg push/pull live и т. д.

Тем не менее, мы часто закрываем среды и открываем новые, и тогда становится довольно утомительно обновлять hgrc для всех репозиториев не только в каждой витрине (что мы и так ожидали бы делать), но и в каждой среде. Поскольку hgrc не отслеживается, нет возможности синхронизировать эти изменения с помощью простого извлечения/передачи, как мы и ожидали.

Мы также не можем добавить их в наши глобальные файлы .hgrc, потому что, хотя имена путей одинаковы, они отправляют/извлекают в свои собственные соответствующие репозитории (например, hg push paris в electronic_store — это другой репозиторий, чем hg push paris в dress_store).

Есть ли способ сделать часть [path] hgrc отслеживаемой в репо? Или, в противном случае, исходя из имеющейся у нас установки, есть ли какие-либо другие рекомендации по упрощению управления репозиториями, как я описал?

Заранее спасибо.


person Kevin Jhangiani    schedule 21.11.2013    source источник


Ответы (1)


Как говорит Ry4an здесь, в StackOverflow, есть редко используемая директива %include. Трюк может быть:

В ./.hg/hgrc обычный конфиг плюс строчка с hgrc файлом из рабочей директории:

[paths]
%include ../hgrc.tracked.paths 

В ./hgrc.tracked.paths пути, проверенные Mercurial:

[paths]
default = kiln://instances/live/clothing_store
paris = kiln://instances/paris/clothing_store
london = kiln://instances/london/clothing_store
...

Таким образом, только hg add hgrc.tracked.paths начнет создавать версии и делиться файлом.

person santiagopim    schedule 21.11.2013
comment
Идеально, именно то, что я искал. Спасибо. - person Kevin Jhangiani; 22.11.2013