Ответ 1
Выяснил это. Путь в файлах .gitmodule не смог загрузить подмодуль.
Я пытаюсь обновить подмодули этого репозитория git, но я продолжаю получать фатальные ошибки:
[[email protected] ProdigyView]# git submodule update --recursive
Cloning into core...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Clone of '[email protected]:ProdigyView/ProdigyView-Core.git' into submodule path 'core' failed
Или так
[[email protected] root]# git clone --recursive https://github.com/ProdigyView/ProdigyView.git
Cloning into ProdigyView...
remote: Counting objects: 438, done.
remote: Compressing objects: 100% (275/275), done.
remote: Total 438 (delta 172), reused 394 (delta 128)
Receiving objects: 100% (438/438), 8.03 MiB | 5.19 MiB/s, done.
Resolving deltas: 100% (172/172), done.
Submodule 'core' ([email protected]:ProdigyView/ProdigyView-Core.git) registered for path 'core'
Cloning into core...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Clone of '[email protected]:ProdigyView/ProdigyView-Core.git' into submodule path 'core' failed
Любые идеи, почему это происходит с подмодулем? Репо - одно: https://github.com/ProdigyView/ProdigyView. Подмодуль может быть клонирован, если я не пытаюсь клонировать его как подмодуль.
Выяснил это. Путь в файлах .gitmodule не смог загрузить подмодуль.
Проблема в том, что git не может найти открытый ключ, необходимый для загрузки репо с вашего сервера, решение заключается в использовании общедоступного URL-адреса.
В файле .gitmodule вы найдете следующую запись:
[submodule "example"]
path = example
url = [email protected]:webhat/example.git
URL-адрес должен быть изменен на общедоступный URL-адрес модуля:
[submodule "example"]
path = example
url = https://github.com/webhat/example.git
Как вы можете видеть, префикс git @был изменен на https://, а infix : становится /
EDIT:
В вашем собственном репозитории вам может понадобиться git://
, а не https://
Предыдущий ответ был неясен для меня, поэтому я добавил это.
ИЗМЕНИТЬ 2:
Если вы обнаружите, что вам нужно запустить git submodule sync
или вам нужно отредактировать .git/config
, чтобы заставить это работать, вы, вероятно, настроили пульты для подмодулей.
Если это может помочь некоторым людям:
Я обновляю свои .gitmodules
[submodule "example"]
path = example
url = https://github.com/webhat/example.git
Затем я также обновляю свой .git/config
[submodule "example"]
url = https://github.com/webhat/example.git
Как некоторые из вас сказали это раньше (и я благодарю вас).
Затем я обновляю свой .git/modules/example/config
[remote "origin"]
fetch = [...]
url = https://github.com/webhat/example.git
И чтобы закончить, я делаю
git submodule sync
git submodule init
git submodule update
Вы можете вручную передать ключ в разделе Build → "Execute shell" задания jenkins:
ssh-agent bash -c 'ssh-add {path_to_private_key}; git submodule update --init --recursive'
Пример:
ssh-agent bash -c 'ssh-add /var/lib/jenkins/.ssh/jenkins_rsa; git submodule update --init --recursive'
У меня была такая же проблема. Однако в моей ситуации команда хотела использовать SSH-доступ из .gitmodules, поэтому изменение URL-адреса для использования http://не было вариантом.
В конечном счете, у моей проблемы был неправильный файл ~/.ssh/config. У конфигурационного файла были некоторые ошибочные настройки, поэтому я фактически пытался получить доступ к некорректному серверу каждый раз, когда я действительно хотел бы получить доступ к git @github.com. Я нашел это, выполнив следующую команду:
ssh -vT [email protected]
Третья строка или так должна сказать следующее:
debug1: Connection to github.com [<ip address>] port <port num>
Если вы не пытаетесь подключиться к github.com, ваш файл конфигурации указывает на то, что вы не уверены.
Оказывается, мне все равно не нужен какой-либо материал в моем файле конфигурации, поэтому я был в безопасности, чтобы удалить его. Если вы хотите сохранить файл конфигурации, вот хорошая статья:
http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/
Кроме того, эти документы GitHub действительно помогли мне отладить мою проблему:
https://help.github.com/articles/error-permission-denied-publickey
https://help.github.com/articles/what-ip-addresses-does-github-use-that-i-should-whitelist
Следующие шаги помогут устранить проблему.
git submodule sync
git submodule update --init
Надеюсь, что это поможет.
Случилось так, что много раз для меня, что я поместил функцию в мой .bash_profile (работает на BSD sed/GNU/Mac):
gitfix () {
if [ -f "./.gitmodules" ] ; then
sed -E -i.bak -e "s/(url *= *)(.*:)(.*)/\1https:\/\/github.com\/\3/g" .gitmodules \
git submodule sync
git submodule update --init --recursive
fi
}
Один вкладыш:
sed -E -i.bak -e "s/(url *= *)(.*:)(.*)/\1https:\/\/github.com\/\3/g" .gitmodules ; git submodule sync ; git submodule update --init --recursive
Поиск/замена vim:
%s/\(url\s*=\s*\)\(.*:\)\(.*\)/\1https:\/\/github.com\/\3/
Базовое решение, основанное на Данииле, отвечает