现在我已经掌握了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