我的仓库使用了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
[我将答案作为对@ jeffrey-k答案的评论,但现在我更加确定了,我将在这里写下。
我的仓库突然停止推送,而这两件事“修复”了它:
[email protected]:yaniv-aknin/public-project
更改为git://github.com/yaniv-aknin/public-project
)。为此,您将需要在存储库根目录中编辑名为.gitmodules
的文件。.gitmodules
和rm -fr
中删除它们。这处理了这两种行为更改:
我开了一张票,询问我的分析是否正确以及更改为何发生(我没有听到警告)-如果我学到新知识,将更新此答案。
UPDATE:Heroku的支持下的Noah回答了我的问题,并在很大程度上认可了我上面所说的。根据this文档,应更改公共仓库URL,应删除私人仓库或在其中嵌入凭据;后一种解决方案具有明显的安全后果。
看起来像这个答案-https://stackoverflow.com/a/8768240-讲故事。 Heroku将不接受私有仓库的git子模块。我的recurly-js版本是分支的非私有存储库。
截至2019年,您现在只需登录Heroku并转到此处:
https://dashboard.heroku.com/apps/<YOUR-WEBSITE-NAME>/deploy/github
并将您的GitHub帐户或组织与Heroku关联。然后,当选择推送到主要GitHub存储库的主服务器上进行部署时,它将能够克隆您的帐户有权访问的私有子模块。