Heroku push rejected, Submodule install failed

git, git-submodules, heroku

Solution

I gave the answer as a comment to @jeffrey-k's answer, but now I'm even more sure of it, I'll write it here.

My repo suddenly stopped pushing, and these two things 'fixed' it:

- Change all public submodule URLs (if any) from using the ssh transport URLs to readonly git transport URLs (i.e., from `git@github.com:yaniv-aknin/public-project` to `git://github.com/yaniv-aknin/public-project`). To do this, you will need to edit the file called `.gitmodules` in the root of your repo.

- Remove all private submodules (if any) from my repo (remove them from `.gitmodules` and `rm -fr` their directories).

- Commit the changes.

This handles these two changes in behaviour:

- Heroku used to be able to clone submodules from github using the ssh transport (presumably they had some 'general heroku ssh key' and github account, but not sure).

- Heroku used to ignore failed submodules and just continue the push.

I've opened a ticket asking if my analysis is correct and why did the change happen (with no warning I managed to hear of) - I'll update this answer if I learn something new.

UPDATE: Noah from Heroku's support replied to my ticket and largely acknowledged what I said above. Public repo URLs should be changed, private repos should either be removed or have credentials embedded in them as per this document; the latter solution has obvious security ramifications.

Problem

My repo uses a customized version of Recurly-js, and I have packaged it as a submodule using these instructions https://devcenter.heroku.com/articles/git-submodules . However, I get the following error now when I try to deploy: ``` ----> 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 ```

Original source

Related problems