Теперь я потратил несколько часов, читая все, что я мог найти о подмодулях, и я понял, что если я изменяю вещи в BundleA, я должен зафиксировать в BundleA, нажать, затем зафиксировать изменение подмодуля в Project инажмите еще раз.
Это явно звучит так, как будто это не то, как git-submodule был разработан для использования в первую очередь.Это против лучших методов использовать это как это?
Я думаю, что это именно то, как предполагается использовать подмодули, я боюсь.Хотя, возможно, предполагается, что вы обычно фиксируете новую версию в основном проекте относительно редко, поскольку вы строго утверждаете, что эта версия подмодуля правильно работает с этой версией основного проекта.Текущий дизайн системы субмодулей довольно ограничен в том, что он может делать, так как основной проект знает только о субмодуле:
- Какой коммит должен быть в субмодуле, хранящийся в деревевместо хэша большого двоичного объекта или дерева
- URL-адрес по умолчанию для хранилища, которое (должно) содержать этот коммит, хранится в
.gitmodules
и устанавливается в конфигурации при инициализации подмодуля
... и когда вы работаете в подмодуле, это похоже на работу в автономном репозитории, независимо от того, существует ли там суперпроект или нет.
Из способов упрощения этого процесса, о которых вы упомянули, этоСтоит уточнить, что репо на самом деле не использует субмодули - это альтернативная система.Это также относится и к git-slave, который многие пользователи Stack Overflow рекомендуют.
Лично я работаю над проектом, в основном репозитории которого есть 24 подмодуля, и у нас все хорошо, только с помощью полезного скрипта.это упрощает процесс фиксации новой версии субмодуля и проверки его правильности.
Еще одна (не подмодульная) альтернатива, на которую вы, возможно, захотите посмотреть: git-subtree , не путать со стратегией объединения поддеревьев.