如何从Heroku的git子模块中自动拉取最新的提交?

问题描述 投票:2回答:1

我在Heroku上有一个COVID-19报告的网络应用(http:/www.rajcovid19.info),数据来自John Hopkins大学的Git Repository。我已经将该仓库添加为我的主项目仓库的一个子模块,我用它来推送变化到Heroku。这使我能够将更新拉到我电脑上的COVID-19仓库,然后将这些更改推送到Heroku。然而,我无法将COVID-19子模块的最新提交直接拉到Heroku应用中。我尝试使用GitPython,但每当我尝试拉取更改时,它都会产生 "无效Git仓库 "的错误。

我目前解决这个问题的方法是在我的笔记本电脑上制作一个脚本,定期检查COVID-19仓库的变化,然后将它们推送到Heroku应用程序。

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

有没有可能让Heroku自动拉取最新的提交到子模块?

编辑:Heroku

根据Heroku的说法,该服务有一个 "短暂的存储"。Heroku Ephemeral Storage

我想这也会让事情变得复杂吧?

至于我的GitPython代码没有用,这里是。

GitPython 1

GitPython 2

就是这样

# 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应用上却出现了 "无效Git Repo "的错误。我做了一些调试,并确保Heroku App上的仓库路径是正确的,但似乎没有帮助。

python git heroku web-deployment
1个回答
5
投票

https:/help.heroku.comRR520244why-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

我推荐第二种方法 如果你想让数据版本化,建议采用第一种方法。

© www.soinside.com 2019 - 2024. All rights reserved.