Я добавляю подмодуль из git @... URL, чтобы иметь возможность его развивать. Теперь я хочу развернуть приложение и заменить URL-адрес с помощью git://... one, поэтому ему не требуется аутентификация для репозитория подмодуля из Capistrano. Является ли редактирование URL-адреса в .gitmodules достаточно полным, чтобы выполнить это?
Замените git протокол подмодуля с git на http
Ответ 1
Редактирование файла .gitmodules
(затем фиксация и нажатие) будет адекватным для любых новых клонов.
Кроме того, когда подмодуль инициализируется (например, git submodule init …
, git submodule update --init …
или git clone --recursive …
и т.д.), его URL-адрес копируется из файла .gitmodules
в файл репозитория .git/config
.
Итак, если у вас есть существующие "клоны развертывания" (те, которые вы сейчас хотите получить подмодули через URL-адреса git://…
), вам также придется обновлять URL-адрес в своем .git/config
. Вы можете использовать git submodule sync
, чтобы автоматически копировать URL-адреса субмодуля из текущего файла .gitmodules
в ваш файл .git/config
(т.е. После того, как вы потянули фиксацию, которая обновляет файл .gitmodules
).
URL-адреса подмодулей в .git/config
обычно не обновляются автоматически, потому что есть случаи, когда вы хотите переопределить URL в определенных ситуациях. В частности, вы часто захотите использовать URL-адреса [email protected]…
в своих репозиториях .git/config
(чтобы вы могли нажать SSH), но поместите git://…
URL-адреса в .gitmodules
(так что широкой публике не нужно делать SSH- основанная на аутентификации).
Ответ 2
У меня возникли подобные проблемы, и после googling я наткнулся на эту статью: Относительный URL для Git подмодуля. Я счел хорошей практикой следовать, так как нет необходимости вручную изменять файл .gitsubmodule
независимо от того, кто его проверяет. Вероятно, это относится и к вашему делу.