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