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

2024-04-26 10:18:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我目前针对这个问题的工作解决方案是在我的笔记本电脑上制作一个脚本,定期检查新冠病毒-19存储库的变化,然后将它们推送到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回购”错误。我做了一些调试,确保Heroku应用程序上的存储库路径是正确的,但似乎没有任何帮助


Tags: 模块git应用程序herokuos计算机错误repo
1条回答
网友
1楼 · 发布于 2024-04-26 10:18:57

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

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


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

可能的办法:

一,。编写一个脚本,定期提取数据并将其添加到项目中

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是一个强大的工具,它允许您定义以特定时间间隔定期运行的脚本

二,。在应用程序启动时,下载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

我推荐第二种方法。如果希望对数据进行版本控制,建议使用第一种方法

相关问题 更多 >