Добавление pushurl в подмодуль git - PullRequest
0 голосов
/ 20 мая 2018

Я хочу добавить проект в репо в качестве подмодуля.Например, я хочу добавить https://aur.archlinux.org/packages/gnome-keyring-query/ в качестве подмодуля.Я добавил его и похоже, что он работает, то есть git submodule update --recursive работает.

Теперь я добавил новый файл (т.е. Makefile) в gnome-keyring-query, и я хочу сохранить этот субмодуль в моем репо с этим Makefile.Поэтому я добавил pushurl (мой URL-адрес хранилища) в файл .gitmodule.Но это не работает, я имею в виду, я не могу подтолкнуть.Затем я попытался добавить pushurl в .git/modules/...path.../gnome-keyring-query/config файл.Тем не менее, это не работает.

Есть идеи?

1 Ответ

0 голосов
/ 21 мая 2018

Система субмодулей позволяет создавать отдельный репозиторий в вашей собственной подпапке, но это не идет дальше.Они по-прежнему являются отдельными репозиториями в том, что касается базовой функциональности git.

Вы можете зафиксировать либо родительское репо (как если бы у него не было подмодуля), либо дочернее репо (как если бы оно не было)репо).То же самое с нажатием: у вас есть один пульт (или набор пультов) для родителя, а другой для подмодуля.

Я могу придумать пару решений для вашей проблемы:

  • либо добавьте Makefile в ваш родительский проект и зафиксируйте его как обычно, но настройте целевые команды Makefile так, чтобы они работали с подмодулем gnome-keyring-query, то есть вы можете добавить целевые имена типа make keyring-this, make keyring-that.
  • или сделайте форк из репозитория подмодулей и вставьте коммит Makefile в этот форк.

Первый подход прост и понятен, но он не позволяет вам изменятьСубмодуль исходный код или настроить его много, кроме того, что предусмотрено авторами.По сути, у вас будет субмодуль удаленного доступа только для чтения.

2-й подход более гибкий, но он, безусловно, увеличивает когнитивную нагрузку (вы должны отслеживать 3 ветки: репо, субмодуль-форк и субмодуль-upstream (origin) вместо 1), что является одной из причин того, почему подмодули печально известны, и почему существуют некоторые альтернативы, такие как git subtree .

PS Во многих случаях я предпочитаюизбегайте субмодулей в пользу менеджеров пакетов или даже вендоров (копирование с вставкой исходного кода и / или двоичных файлов), что, как правило, представляет собой меньшую нагрузку, особенно если вы не планируете использовать субмодули в масштабе (для управления значительным количеством зависимостей).

...