簡體   English   中英

如何從 Heroku 上的 git 子模塊自動提取最新提交?

[英]How to automatically pull the latest commit from a git submodule on Heroku?

我有一個 COVID-19 報告 web 應用程序托管在 Heroku( http://www.rajcovid19.info )上,我從約翰霍普金斯大學 Z0BCC70105AD279503E31FE7B665 存儲庫獲得數據。 我已將存儲庫添加為我的主項目存儲庫的子模塊,用於將更改推送到 Heroku。 這使我能夠將更新拉到我計算機上的 COVID-19 存儲庫,然后將這些更改推送到 Heroku。 但是,我無法將對 COVID-19 子模塊的最新提交直接拉到 Heroku 應用程序中。 我嘗試使用 GitPython,但每當我嘗試拉取更改時,它都會產生“無效的 Git 存儲庫”錯誤。

我目前針對這個問題的工作解決方案是在我的筆記本電腦上編寫一個腳本,定期檢查 COVID-19 存儲庫的更改,然后將它們推送到 Heroku 應用程序。

這可行,但需要我每天至少打開一次筆記本電腦。

是否有可能以某種方式使 Heroku 自動將最新提交拉到子模塊?

編輯:

根據 Heroku,該服務有一個“臨時存儲”: Heroku 臨時存儲

我認為這也可能使事情復雜化?

至於我的 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 應用程序上的存儲庫路徑是正確的,但它似乎沒有幫助。

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

我推薦第二種方法。 如果您希望數據版本化,建議使用第一種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM