В последнем выпуске UTP я говорил о разных способах ветвления в mercurial. Все правильно сказал, но не до конца. Восполню это досадное упущение здесь. В обсуждении модели веток, я заявил, что использование именованных брэнчей это самый наш путь, по длинному ряду причин. В том числе, из за возможности переключения ветки прямо в рабочем каталоге проекта, не делая никаких особых телодвижений. Все это так и все это правильно, но есть одно но. Когда есть необходимость долгого сосуществования брэнчей, и более того - разные брэнчи требуют разных версий некоторых внешних проектов (библиотек, например) тут идея мгновенного переключения именованных веток выходит нам боком. Так, например если 10 проектов требуют библиотеку версии 1.0, но один проект требует версии 2.0 - вы замучаетесь переключаться с одной ветки на другую. Ладно переключаться, это вопрос десятый, но что гораздо хуже - вы можете легко и непринужденно поработать с версией 1.0, допиливая ее, но при этом по ошбке думая, что работаете с версией 2.0. В результат ничего фатального скорее всего не произойдет, если конечно вы вовремя это безобразие заметите и откатите все лишнее. А ведь можете и не заметить, но услышать в нецензурной форме от своих коллег, получившим изменения для версии 2.0 в ветке 1.0
Вот в такой ситуации имеет смысл несколько расширить модель представления веток. Именнно представления, т.к. сами брэнчи оставим как и решили раньше, именованными. А вот место клонирования этих брэнчей сделаем отдельно стоящим. Тут проще один раз показать, чем 10 слов говорить. Вот примерно так
При этом, уровни projects и super_system не контролируютsq hg, но просто организовывают представление для нашего удобства. Очевидно, все что под ver1 и ver2 является соответствующими брэнчами разных репозиториев, необходимых именно для этой версии. Думаю, все понятно, да? И последнее: перед тем как вы поспешите написать, что вместо вкладывания libs на уровне ver1/ver2 можно использовать под-репозетории (nested) - то вы в принципе правы. Да, можно, но не нужно. Ответ на вопрос “почему так?” тема для отдельного разговорчика
P.S. знаки препинания я ставлю на слух, а не по правилам :)