使用git post receive钩子在virtualenv中部署python应用程序

使用git post receive钩子在virtualenv中部署python应用程序,python,django,git,virtualenv,githooks,Python,Django,Git,Virtualenv,Githooks,我的目标是能够基于提交并推送到存储库的Git分支将Django应用程序部署到两个环境之一(DEV或PROD)。该存储库与Django应用程序运行在同一台服务器上 现在,我已经设置了两个virtualenvs。每个环境一个。它们是相同的。我设想只有在我的存储库中修改了requirements.txt时,它们才会改变 我在internet上看到过一些教程,这些教程通过git直接将存储库托管在应用程序将要部署的位置来提供部署。这不适用于我的架构。我正在使用RhodeCode托管/管理存储库。我希望能够

我的目标是能够基于提交并推送到存储库的Git分支将Django应用程序部署到两个环境之一(DEV或PROD)。该存储库与Django应用程序运行在同一台服务器上

现在,我已经设置了两个
virtualenv
s。每个环境一个。它们是相同的。我设想只有在我的存储库中修改了
requirements.txt
时,它们才会改变

我在internet上看到过一些教程,这些教程通过
git
直接将存储库托管在应用程序将要部署的位置来提供部署。这不适用于我的架构。我正在使用RhodeCode托管/管理存储库。我希望能够使用post-receive(或者其他更合适的)钩子来触发对适当环境的更新

类似的东西将允许我缩小我想要关注的环境范围

当我将
source activate
命令放入外部脚本(即我的挂钩)中时,脚本会在该命令处停止。
virtualenv
已正确启动,但脚本中的任何进一步操作(即
pip install-r requirements.txt
/manage.py migrate
)都不会执行

我的问题是,如何让该钩子运行相关的
virtualenv
?或者,如果它已经在运行,请使用新的
requirements.txt
South
迁移和应用程序代码对其进行适当的更新


这个工作流程是否过于复杂?从理论上讲,它应该像git将推送到适当的分支一样简单

为什么不使用一个连接到服务器并提取新代码的文件呢