Git: избегайте ошибок при отслеживании родительской ветви субмодуля, если удаленная ветвь не существует - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть такая структура хранилища 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 в противном случае"?

Как ты это делаешь?

...