Подтвердить что ты не робот

Неустранимая ошибка при обновлении подмодуля с помощью GIT

Я пытаюсь обновить подмодули этого репозитория 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. Подмодуль может быть клонирован, если я не пытаюсь клонировать его как подмодуль.

4b9b3361

Ответ 1

Выяснил это. Путь в файлах .gitmodule не смог загрузить подмодуль.

Ответ 2

Проблема в том, что 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, чтобы заставить это работать, вы, вероятно, настроили пульты для подмодулей.

Ответ 3

Если это может помочь некоторым людям:

Я обновляю свои .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

Ответ 4

Вы можете вручную передать ключ в разделе 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'

Ответ 5

У меня была такая же проблема. Однако в моей ситуации команда хотела использовать 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

Ответ 6

Следующие шаги помогут устранить проблему.

  • Удалить папку подмодуля на локальном.
  • Do git submodule sync
  • затем git submodule update --init

Надеюсь, что это поможет.

Ответ 7

Случилось так, что много раз для меня, что я поместил функцию в мой .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/

Базовое решение, основанное на Данииле, отвечает