【问题标题】:How to automatically pull the latest commit from a git submodule on Heroku?如何自动从 Heroku 上的 git 子模块中提取最新提交?
【发布时间】:2020-08-09 04:44:49
【问题描述】:

我有一个托管在 Heroku(http://www.rajcovid19.info) 上的 COVID-19 报告网络应用程序,我从约翰霍普金斯大学 Git 存储库中获得了数据。我已将存储库添加为我的主项目存储库的子模块,用于将更改推送到 Heroku。这使我能够将更新拉到我计算机上的 COVID-19 存储库,然后将这些更改推送到 Heroku。但是,我无法将 COVID-19 子模块的最新提交直接拉到 Heroku 应用程序。我尝试使用 GitPython,但每当我尝试拉取更改时,它都会产生“Invalid Git Repository”错误。

我目前针对这个问题的有效解决方案是在我的笔记本电脑上编写一个脚本,定期检查 COVID-19 存储库的更改,然后将它们推送到 Heroku 应用程序。

这可行,但需要我每天至少打开一次笔记本电脑。

是否有可能让 Heroku 自动将最新的提交拉到子模块?

编辑:

根据 Heroku 的说法,该服务有一个“临时存储”:

我认为这也可能使事情复杂化?

至于我的 GitPython 代码不起作用,这里是:

即:

# Root directory for the COVID-19 Local repository root=os.getcwd()

if os. path.isdir(root+"/COVID-19"):
  root+="/COVID-19"
  repo=Repo(root) git=repo.git git. pull
else:
  root+="/COVID-19"
  os.system("git clone https://github.com/CSSEGISandData/COVID-19.git")

这适用于我的计算机,但在 Heroku 应用程序上出现“Invalid Git Repo”错误。我做了一些调试,并确保存储库的路径在 Heroku 应用程序上是正确的,但它似乎没有帮助。

【问题讨论】:

  • “我尝试使用 GitPython,但每当我尝试拉取更改时,它都会产生“Invalid Git Repository”错误。”好吧,然后向我们展示您的代码,我们将帮助您找出它不起作用的原因。
  • @larsks 我在编辑中添加了代码。

标签: python git heroku web-deployment


【解决方案1】:

https://help.heroku.com/RR520244/why-don-t-git-submodules-work-with-heroku-pipelines-review-apps-or-github-sync

git 子模块与 Heroku 不兼容,请参阅提供的链接。


你应该以不同的方式解决这个问题。

可能的方法:

1。编写一个脚本,定期提取数据并将它们添加到您的项目中。

git subtree pull --prefix=data --squash --message="update covid data" https://github.com/CSSEGISandData/COVID-19.git master
git push origin HEAD

git 子树与 Heroku 兼容。对于这种方法,您需要有一个 VPS 并将脚本添加到 cron。 Cron 是一个强大的工具,它允许您定义以特定时间间隔定期运行的脚本

2。在应用程序启动时下载 zip 或 tar.gz,解压缩,然后提供数据。您将需要创建一个 startup.sh 脚本来执行此操作,最终命令将启动您的程序。比如:

curl -L https://api.github.com/repos/CSSEGISandData/COVID-19/tarball > data.tar.gz
cd data && rm -r ./*
tar -xzvf ../data.tar.gz
cd ..
python main.py

我推荐第二种方法。如果您希望数据版本化,建议使用第一种方法。

【讨论】:

  • 我目前正在使用您提出的第一个解决方案。第二个并不是一个真正可行的选择,因为数据存储库很大,我不能让应用程序在提供页面之前下载存储库。我知道 Heroku 不支持我想要完成的工作,所以我想我会继续使用我目前的方法。
猜你喜欢
  • 2017-04-11
  • 2011-08-15
  • 2013-01-03
  • 2020-01-11
  • 2021-09-21
  • 2012-06-06
  • 2021-05-06
  • 2022-08-14
  • 1970-01-01
相关资源
最近更新 更多