我看到克隆在Heroku上部署的Rails应用程序时出现问题。我要从旧的开发人员那里接手,因此就设计决策而言,我仍然可以占有一席之地。
我看到的问题是,我能够下载的该应用程序的克隆版本已经过时了。当我猛击Heroku实例时,可以知道它是正在运行的最新代码,但是当我克隆该应用程序时,它落后了一个月。
关于造成这种情况的原因,有人可以指出正确的方向吗?
答案 0 :(得分:1)
您应该在“活动”选项卡上的Heroku仪表板上,在那里您将看到最新部署的版本,并提供了提交哈希值:
使用此信息,您可以轻松跟踪已部署的提交并将其与Github上的内容进行比较。
Heroku上的最新部署版本不太可能但从来没有在Github上推送过,一旦拥有已部署的提交哈希,您就可以轻松找到。
答案 1 :(得分:1)
首先,cloning from Heroku should be a last resort:
Heroku应用程序的Git存储库仅用于部署目的。正式不支持从此存储库进行克隆作为功能,仅应作为最后的尝试。 请勿使用此存储库作为您应用的规范“原始”存储库。而是使用您自己的Git服务器或版本控制服务(例如GitHub)。
现在,解决当前的问题。以前的开发人员很可能是通过GitHub或其他某种方式而不是通过git push
进行部署的:
如果您使用
git push
之外的任何其他方法部署应用,则您无法从Heroku克隆应用的源。其他部署方法不会更新您应用的Heroku Git存储库,导致heroku git:clone
返回空的存储库。这些其他部署方法包括:
理想情况下,您确实应该从以前的开发人员那里获得源代码的最新副本。
这取决于您身在何处,是否存在任何合同等都有效的法律,但是您的客户可能拥有先前开发人员编写的源代码。即使这在法律上不是合法的(在许多司法管辖区是这样),我还是认为这在伦理上是正确的。一个好的策略是让您的客户拥有源代码所在的存储库。
但这现在无济于事。
我从未做过,但是您可以从当前部署的应用程序中尝试to retrieve the application slug:
如果您没有使用git来部署应用程序,或者使用heroku
git:clone
仅创建了一个空的存储库,则可以下载上次部署应用程序时生成的插件。首先,使用heroku plugins:install heroku-slugs
安装heroku-slugs CLI插件,然后运行:heroku slugs:download -a APP_NAME
这将下载您的段并将其压缩到与您的应用程序同名的目录中。
然后,您可以手动将slug内容合并到现有的Git存储库中,并使用诸如“从Heroku slug更新整个应用程序”之类的消息进行大的提交。