我的repo使用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
答案 0 :(得分:15)
我给@ jeffrey-k的答案给出了答案,但现在我更加确定了,我会在这里写。
我的回购突然停止推动,这两件事“固定”了它:
git@github.com:yaniv-aknin/public-project
到git://github.com/yaniv-aknin/public-project
)。为此,您需要在回购的根目录中编辑名为.gitmodules
的文件。.gitmodules
和rm -fr
目录中删除它们。这处理了这两个行为变化:
我已经开了一张票,询问我的分析是否正确以及为什么会发生变化(我没听到任何警告) - 如果我学到了新的东西,我会更新这个答案。
更新:来自Heroku支持的Noah回复了我的机票,并在很大程度上承认了我上面所说的内容。应更改公共回购网址,应根据this文档删除私有回购或将凭据嵌入其中;后一种解决方案具有明显的安全后果。
答案 1 :(得分:1)
看起来这个答案 - https://stackoverflow.com/a/8768240 - 讲述了这个故事。 Heroku不接受私人回购的git子模块。我的recurly-js版本是一个分叉的非私人仓库。
答案 2 :(得分:0)
从2019年开始,您现在只需登录Heroku并转到此处:
https://dashboard.heroku.com/apps/<YOUR-WEBSITE-NAME>/deploy/github
并将您的GitHub帐户或组织与Heroku关联。然后,当选择推送到主要GitHub存储库的主服务器上进行部署时,它将能够克隆您的帐户有权访问的私有子模块。