Как поделиться кодом в нескольких репозиториях с Mercurial?

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

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


person Martin    schedule 13.06.2012    source источник
comment
Я поместил все свои служебные функции в один пакет, и если я написал новые для конкретных проектов, я перенесу их в пакет служебных программ, когда почувствую, что он считается стабильным.   -  person nye17    schedule 13.06.2012


Ответы (1)


Проверьте подрепозитории: https://www.mercurial-scm.org/wiki/Subrepository

Они не помогут вам поддерживать другие копии в актуальном состоянии (вам придется делать это вручную), но они упростят это (вы должны использовать hg pull; hg update в дополнительном репо, а затем зафиксировать родительский репо).

Другой вариант (который я использую в другом проекте) - это указать макет, а затем просто предположить, что репозиторий «утилит» хранится в ../utils относительно каждого «реального» репозитория.

person David Wolever    schedule 13.06.2012
comment
+1 Но не забывайте, что .. Это считается крайней мерой. :) - person Lipis; 13.06.2012
comment
@Lipis: Совершенно не по теме, но я действительно ненавижу те уведомления, которые они помещают в функции. В частности, субрепо и большие файлы не являются крайним средством. Они необходимы для решения определенного типа проблемы. Да, их не следует использовать постоянно, только при необходимости, но они не являются последним средством. - person Paul S; 13.06.2012
comment
@PaulS полностью с вами согласен ... Я просто не ожидал увидеть это в официальной документации ... и подумал, что это забавно ...;) Они имеют смысл, но как только вы знаете, что делаете, Subrepos - это довольно круто. .. - person Lipis; 13.06.2012