Если библиотеки B и C должны быть подкаталогами проекта A, что мне делать, если я хочу запустить проект D, который использует библиотеку B, но никак не связан с проектом A вообще?
Любой проект может одновременно существовать как , так и как подкаталог другого проекта.Я объясню, предложив рабочий процесс.
Прежде всего, каждый из ваших проектов (A, B, C) должен иметь благословенное хранилище, которое где-то публикуется:
Вы можете запустить hgwebdir на своем собственном сервере или использовать службу хостинга Mercurial, например Bitbucket или Kiln .Таким образом, разработчики получают центральную точку авторизации для извлечения / переноса изменений, и у вас есть что делать для резервного копирования.
Теперь вы можете настроить клоны этих репозиториев для работы двумя различными способами:
Эти определения под-репозитория сообщают Mercurial, что всякий раз, когда клонируется проект A, он также должен помещать клоны библиотеки B и библиотеки C в папку libraries
.
Если вы работаете в Project A и делаете коммит, то ваши изменения в libraries/LibraryB
и libraries/LibraryC
также будут зафиксированы.Mercurial запишет, какая версия библиотек используется проектом A в файле .hgsubstate
.В результате, если вы hg update
вернетесь к старой версии проекта, чтобы увидеть, как все работает на прошлой неделе, вы также получите соответствующую версию своих библиотек.Вам даже не нужно создавать теги: -)
Когда вы hg push
Project A перейдете в благословенный репозиторий, Mercurial также обязательно сначала подтолкнет изменения субпозитория к их собственному источнику.Таким образом, вы никогда не будете случайно публиковать изменения проекта, которые зависят от неопубликованных изменений библиотеки.
Если вы предпочитаете сохранять все локальным, вы можете использовать этот рабочий процесс, используя относительные пути вместо URL-адресов в определениях под-репозитория.