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