現在我已經掌握了Python的包管理,但是當我重新運行我們的代碼庫,然後對爲什麼不起作用感到困惑時,我一直讓團隊中的人員忘記重做pip install -r requirements.txt。 。也就是說,有沒有什麼辦法可以將命令綁定到其他任何他們必須做的事情上,比如git pull
,這樣它們就可以爲他們完成,而且他們不需要考慮這個問題?在Git Pull上使用Pip install -r requirements.txt?
回答
您可以在git post-merge hook中使用shell腳本,每當合併發生時都會執行該腳本。請注意,這個鉤子會在每次合併時執行(實際上所做的一切都是合併,但並非所有合併都是合併)。
我不知道在克隆存儲庫時是否可以自動安裝客戶端鉤子,但您至少應該能夠安裝一次後合併鉤子,而不是讓團隊記住要做每拉一次。
如果你想發佈一個嵌入了這樣一個鉤子的回購,你可以,擦洗你的.git/config和其他git元數據,以確保你不會分發其他限制;然後打包整個git倉庫,或者只包含作爲焦油/壓縮文件的'.git'部分,然後讓人們從中複製 - 提煉 - 工作。儘管我仍然想要首先教育你的用戶,但是對於絕望的場景來說,保留一些非常激動人心的東西。 – ThorSummoner
A post-merge
掛鉤應該在這裏正常工作。在項目的.git
目錄中打開文件.git/hooks/post-merge
。將以下代碼片段粘貼到文件中。
#/usr/bin/env bash
changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
check_and_run() {
echo "$changed_files" | grep --quiet "$1" && eval "$2"
}
check_and_run requirements.txt "/path/to/virtualenv/bin/pip install -r /path/to/requirements.txt"
運行chmod +x post-merge
使文件可執行。
就是這樣。現在,每次你做混帳合併,requirements.txt
文件pip install
將會自動運行。
如果您有能力將工具添加到所有用戶的路徑中;例如,你們都在一臺服務器上工作。創建一個腳本來做到這一點將是微不足道的。
本質上,它是
#!/usr/bin/env bash
# Save as `git-pull2`
# Mark as executable (chmod +x git-pull2)
# Include on system path.
git pull [email protected]
pip install -r requirements.txt
的@$
將通過所有命令參數的腳本git pull
,雖然我不能保證,將工作的全部100%的時間,但它應該覆蓋大多數使用情況。
你可以任意命名,我沒有測試用腳本替換git內部命令,例如我不建議將它命名爲git-pull
,因爲這可能與真正的git-pull衝突並進入循環循環,但git也可能足夠聰明,不會像那樣遞歸。
當混帳擴展git
關鍵字刪除後自定義命令第一個連字符,如運行git-pull2
你可以從字面上運行它git-pull2
或作爲嵌入式的git命令git pull2
。
- 1. 從puppet的pip install -r requirements.txt?
- 2. 使用'pip install -r requirements.txt'安裝python軟件包時出錯
- 3. 如何從requirements.txt安裝pip install?
- 4. pip install -r requirements.txt [Errno 2]沒有這樣的文件或目錄:'requirements.txt'
- 5. 當我運行「pip install -r requirements.txt」時,virtualenv未激活
- 6. NPM相當於`PIP安裝-r requirements.txt`
- 7. 錯誤,而PIP安裝-r requirements.txt
- 8. PIP爲了從requirements.txt
- 9. 當在Heroku上部署Django應用程序時,pip install requirements.txt問題
- 10. Django requirements.txt pip爲mdbtools
- 11. 無法使用PIP安裝requirements.txt
- 12. pip組包在requirements.txt中
- 13. 將conda environment.yml與pip requirements.txt結合使用
- 14. pip install -r pip-require之間的區別VS setup.py install
- 15. 無法'點安裝-r requirements.txt'
- 16. 使用pip install指定extras_require -e
- 17. pip:如何安裝git pull請求
- 18. pip install urllib2 #failed
- 19. pip無法從requirements.txt安裝軟件包
- 20. 有沒有像R的requirements.txt?
- 21. 我如何讓jenkins運行「pip install」?
- 22. pip install requirements.txt與AssertionError失敗:Egg-link與安裝位置不匹配
- 23. 帶有替代索引的pip requirements.txt
- 24. `pip install -e`的用例
- 25. PIP凍結> requirements.txt錯誤
- 26. pip flask.script install
- 27. Docker只有在發生變化時才能運行pip requirements.txt?
- 28. luigi -pip install luigi
- 29. Python requirements.txt使用本地git依賴
- 30. 在git pull上更改mtime
我想看看[fabric](http://docs.fabfile.org/en/1.4.3/index.html) – jterrace
一個腳本化的解決方案可以爲你自己,也可能讓人意識到他們如果/當他們不想考慮他們在做什麼,應該使用腳本解決方案;但教導/引起人們思考他們的行爲並非腳本化解決方案所能做到的。 – ThorSummoner