Предположим, у нас есть следующая структура хранилища на github:
company:project.git
\- company:submodule.git
Разработчик в моей компании разветвляет проект компании, заставляя свое рабочее пространство выглядеть так:
developer:project.git
\- company:submodule.git
Это хорошо для 90% разработчиков, поскольку они не меняют библиотеку подмодулей, они работают только в проекте. Теперь предположим, что есть новая функция, которая требует улучшений в подмодуле. Разработчик, которому поручено это, преобразует свое рабочее пространство в следующее:
developer:project.git
\- developer:submodule.git
Добраться туда нетривиально, так как ему нужно заменить подмодуль другим подмодулем (для git оригинал и ответвление подмодуля - две разные вещи).
Если этот разработчик работает над библиотекой немного дольше, он фиксирует эту структуру в своей основной ветке, поэтому его форк на github всегда использует раздвоенный подмодуль.
Как только он будет готов к разработке, он создаст запрос на извлечение. Проблема в том, что при объединении запроса извлечения основной репозиторий будет выглядеть так:
company:project.git
\- developer:submodule.git
Это проблематично, поскольку теперь каждый разработчик, который отслеживает филиал компании, получит подмодуль разработчика.
Чтобы обойти эту проблему, перед тем, как разработчик сделает запрос на извлечение, его основная ветвь должна быть возвращена обратно в компанию: submodule.git - что просто очень неудобно, тем более что локально он всегда будет хотеть работать с разработчиком. :. submodule.git
Мы перепробовали несколько рабочих процессов, и вышеупомянутая проблема - единственная, где у нас пока нет хорошего рабочего процесса.