Я пытаюсь определить, как люди используют «репозитории веток», в то же время используя подрепозитории.
Скажем, у меня есть репо Main, содержащее файл решения (.NET) и заполненное подрепо A, B, C:
/Main
- A
- B
- C
MainSolution.sln
A, B и C, будучи общими для других «основных» репозиториев, очень тесно интегрированы в основной проект. Таким образом, основная функция основного репозитория потребует модификации подрепо (т. Е. Они являются общими библиотеками, но очень активно развиваются).
Пришло время добавить функцию. Эта функция слишком велика для одного человека, и поэтому код нужно будет отправить в центральное хранилище, чтобы другие могли помочь. Мы также должны иметь возможность вернуться к последнему «стабильному» коду до начала разработки функции на случай, если потребуется исправление ошибки. Я считаю, что на данный момент у меня есть два варианта: (1) создать именованную ветку в репозитории Main или (2) создать новый клон Main. Поскольку существуют подрепозиторы, оба этих варианта обычно не имеют последствий.
Вариант 1) Создание именованной ветки, как я полагаю, позволит зафиксировать / отправить изменения в подрепо, но это затронет только других людей, которые также обновили эту ветку в своем клоне Main, поскольку файл .hgsubstate отслеживается. . Тем не менее, подрепо получат новую голову, и, таким образом, (возможно) экспериментальная функция в конечном итоге будет перенесена в центральное репо. Я правильно это понимаю?
Вариант 2) Существует множество сторонников «не использовать именованные ветки, используйте« репозитории веток », которые буквально являются клонами основного репо, но имеют разные имена и существуют на центральном сервере. Это меня немного привлекает, поскольку, кажется, разделяет вещи (и, таким образом, отстраняет от бедствий, поскольку мои коллеги - и я! - все еще изучаем Mercurial). Но этот рабочий процесс кажется полностью нарушенным, когда задействованы подрепозитории, поскольку создание клона основного репо не создает новых, разделенных клонов подрепо. Это новый клон, но он все еще указывает на те же подрепо, и, таким образом, внесенные в них изменения вернутся в подрепо! Я понимаю, что это сделано намеренно, и это одна из действительно крутых вещей (для меня) в Mercurial. Но как, черт возьми, люди используют этот рабочий процесс репозитория веток с подрепозиториями? Совершенно невероятно, что для каждой функции / эксперимента / версии / чего угодно я собираюсь создать новый клон (на центральном сервере) основного репо, И создать клоны (на центральном сервере) подрепо, И измените все пути .hgrc / .hgsub, чтобы они указывали на правильные центральные репозитории.
На данный момент я просто пытаюсь понять, КАК люди работают над сложным проектом и используют вложенные репозитории с репозиториями веток. Есть предположения?