У меня есть такая структура хранилища git:
─ main_project_repo (branch: master)
├── submodule: component1_repo (branch: master)
├── submodule: component2_repo (branch: master)
.
└── submodule: componentN_repo (branch: master)
т.е. main_project_repo
не содержит исходный код, а только подмодули.
Чтобы разрабатывать функции с использованием ветвей функций, я делаю эту ветку функций на main_project_repo
, а также на любом компонентном репо, на который влияет функция, но не те, которые можно оставить как есть. :
─ main_project_repo (branch: feature/foo)
├── submodule: component1_repo (branch: master)
├── submodule: component2_repo (branch: feature/foo)
.
└── submodule: componentN_repo (branch: master)
Я хочу использовать удаленное отслеживание ветвления для подмодулей, и чтобы избежать изменения .gitmodules
в main_project_repo
(который мне пришлось бы очистить перед объединением), я использую .
в качестве удаленной ветки значения, которые будут автоматически отслеживать origin/feature/foo
для каждого подмодуля, который имеет это значение.
Проблема в том, что я хотел бы установить .
для каждого подмодуля, чтобы иметь возможность просто запустить git submodule update --remote
для извлечения текущей ветви функции, но это приведет к ошибке для каждого подмодуль, у которого нет такой функциональной ветви:
git submodule update --remote
fatal: Needed a single revision
Unable to find current origin/feature/foo revision in submodule path 'component1_repo'
Теперь я могу вручную обновлять все подмодули удаленно и игнорировать ошибку, или я могу настроить ветку функций для каждого подмодуля - независимо от того, нужен ли мне один или нет (что приведет к множеству неиспользуемых ветвей функций ).
Есть ли способ сказать "отслеживать удаленную ветку, если она существует, и использовать master
в противном случае"?
Как ты это делаешь?