Отказ Heroku отклонен, установка Submodule не выполнена

В моем репо используется настроенная версия Recurly-js, и я упаковал ее как подмодуль, используя эти инструкции https://devcenter.heroku.com/articles/git-submodules. Однако при попытке развертывания я получаю следующую ошибку:

----> Heroku receiving push 
-----> Git submodules detected, installing
       Submodule 'recurly-js' (/app/tmp/repo.git/recurly-js) registered for path 'recurly-js'
       Initialized empty Git repository in /tmp/build_3iacvn8h2rnha/recurly-js/.git/
       fatal: '/app/tmp/repo.git/recurly-js' does not appear to be a git repository
       fatal: The remote end hung up unexpectedly
       Clone of '/app/tmp/repo.git/recurly-js' into submodule path 'recurly-js' failed
 !     Heroku push rejected, Submodule install failed

Ответ 1

Я дал ответ в качестве комментария к ответу @jeffrey-k, но теперь я уверен в этом, я напишу его здесь.

Мой репо внезапно прекратил толкать, и эти две вещи "зафиксировали" его:

  • Измените все URL-адреса общедоступных подмодулей (если они есть) с использованием транспортных URL-адресов ssh на URL-адреса только для чтения git (т.е. от [email protected]:yaniv-aknin/public-project до git://github.com/yaniv-aknin/public-project). Для этого вам нужно будет отредактировать файл с именем .gitmodules в корне вашего репо.
  • Удалите все частные подмодули (если есть) из моего репо (удалите их из .gitmodules и rm -fr их каталогов).
  • Зафиксируйте изменения.

Это приводит к двум изменениям в поведении:

  • Heroku имел обыкновение иметь возможность клонировать подмодули из github с использованием транспорта ssh (предположительно, у них был некоторый "общий герой-ключ ssh" и github-аккаунт, но не уверен).
  • Heroku использовал для игнорирования неудачных подмодулей и просто продолжал нажимать.

Я открыл билет, спрашивающий, правильный ли мой анализ и почему произошло изменение (без предупреждения, о котором я слышал). Я обновлю этот ответ, если узнаю что-то новое.

ОБНОВЛЕНИЕ. Ной из поддержки Героку ответил на мой билет и в значительной степени признал, что я сказал выше. Публичные репозиционные URL-адреса должны быть изменены, частные репозитории должны быть удалены или иметь учетные данные, встроенные в них, как этот документ; последнее решение имеет очевидные последствия для безопасности.

Ответ 2

Похоже, этот ответ - fooobar.com/questions/538524/... - рассказывает история. Heroku не примет подмодулей git, которые являются частными репозиториями. Моя версия recurly-js - разветвленное, не-частное репо.

Ответ 3

Другие ответы старые.

Начиная с 2019 года, теперь вы можете просто войти в Heroku и перейти здесь:

  • https://dashboard.heroku.com/apps/<YOUR-WEBSITE-NAME>/deploy/github

И свяжите свою учетную запись GitHub или организацию с Heroku. После этого он сможет клонировать частные субмодули, к которым имеет доступ ваша учетная запись, при развертывании одним нажатием на мастер своего основного репозитория GitHub.