Обновление url подмодуля

До сегодняшнего дня я размещал свой репозиторий git и его репозиторий подмодулей на github. И папка подмодуля во всех коммитах в суперпозитории перенаправляется на правильные коммиты в репозитории подмодулей.

Теперь мне нужно перенести репозиторий подмодулей из github в bitbucket и удалить репозиторий подмодулей в github. Будет ли это действие нарушать мои коммиты в суперпозитории? Разве суперпозитории не хранят информацию об URL-адресе подмодуля в своих коммитах?

Пример сценария:

Допустим, есть коммит c67061d7710e699a191965a02d9d0da341d87117 в подмодуле, который упоминается в суперпозитории во многих коммитах. Я хочу изменить ссылку на этот коммит с

githubserver/tree/c67061d7710e699a191965a02d9d0da341d87117

к

bitbucketserver/tree/c67061d7710e699a191965a02d9d0da341d87117

во всех коммитах в супер-репозитории, содержащих ссылку на c67061d7710e699a191965a02d9d0da341d87117

Я читал о том, как обновить URL-адрес подмодуля в других вопросах о стеке здесь. Но они четко не упоминают, изменяет ли это обновление URL ссылки во всех коммитах или только в коммитах, следующих за таким действием.

2
0
372
1

Ответы 1

Хорошей новостью является то, что в конечном итоге это будет работать нормально, потому что вы переместите всю свою историю из github в битбакет и соответствующим образом обновите файл .gitmodules. Как только вы это сделаете, новые кассы и git submodule init будут работать нормально.

Плохая новость заключается в том, что существующие кассы будут продолжать использовать старый удаленный URL-адрес, поэтому git submodule update начнет давать сбой. Чтобы исправить это, вам нужно будет сказать всем, кто проверял ваш репозиторий, запустить git submodule sync, чтобы обновить пульты подмодулей до bitbucket.

поэтому я меняю файлы .gitmodules и git submodule init. Изменит ли это URL-адрес подмодуля всех предыдущих коммитов локально?

Alanpatchi 10.08.2018 19:18

Нет, вам нужно запустить git submodule sync для обновления пультов уже инициализированных подмодулей.

user3188445 10.08.2018 19:22

Модификация .gitmodules, за которой следует git submodule sync, изменит URL-адрес подмодуля всех предыдущих коммитов локально. Но как сделать это изменение доступным в удаленном репозитории, чтобы другие могли получить это изменение в своих локальных репозиториях?

Alanpatchi 10.08.2018 19:27

Вы должны зафиксировать свой новый файл .gitmodules. Затем скажите людям использовать git remote set-url в новом основном репозитории. Затем попросите их запустить git pull, а затем git submodule sync.

user3188445 10.08.2018 19:31

поэтому фиксация изменений в файле .gitmodules и его отправка - это все, что необходимо для удаленного репозитория, чтобы узнать местонахождение нового URL-адреса субмодуля, не будет ли это означать, что старые коммиты со старым файлом .gitmodules сообщат удаленному репозиторию о том, что указать на старый URL-адрес подмодуля в этих коммитах, и они ломаются, тем самым?

Alanpatchi 10.08.2018 19:37

Вот почему git submodule sync нужно запускать вручную. Если вы проверите систему и соответствующим образом запустите git submodule init и / или git module sync с текущей версией .gitmodules, то ваши пульты управления субмодулями будут установлены на новое место (битовый пакет). Затем, если вы проверяете старую версию, файл .gitmodules будет указывать не на то место, но пульты модулей по-прежнему будут правильными.

user3188445 10.08.2018 19:58

Другие вопросы по теме