在版本控制中使用应用程序代码存储Django的好处

时间:2011-02-26 00:45:23

标签: django version-control django-models upgrade django-south

我正在尝试简单地部署应用程序,并更轻松地管理我们依赖的库和框架版本。

将Django存储在我们的VCS中是否有意义?理想情况下,这将使我更容易简化部署,并且我可以使用South管理Django对内置应用程序(django.contrib.auth,django.contrib.sites等)所做的任何模型更改。

我有理由不这样做吗?你对你的应用做了什么?

2 个答案:

答案 0 :(得分:4)

我绝对会将所有内容存储在您的VCS中。想要更新Django?想要添加插件吗?在少数开发人员和不同环境中进行同步可能是一场噩梦。如果版本不同步,不要调试这个。如果您有多个需要处理的django应用程序而且它们的版本不同,会发生什么?

您可能需要查看以下两篇文章:

我存储了virtualenv在SVN中创建的目录中的所有内容。我的部署脚本基本上包含以下内容:

  • 结帐(仅限最初,然后更新)项目到服务器上的文件夹
  • rsync到Apache提供文件的目录(不包括.svn文件夹)
  • 为该环境设置数据库密码和权限
  • 重新启动乘客
  • 将文本文件的修订号写入工作副本到部署目录(以后可以派上用场!)

答案 1 :(得分:4)

我认为除非你使用Django的修改版本,否则将Django本身存储在版本控制中会让你获益匪浅。听起来你正在与其他开发人员合作,所以肯定存储你在一些VCS中工作的代码(即使单独工作也有很多好处)。

对于部署应用程序,您可能会发现构建一个可以指定其依赖关系的distutils包(例如Django的特定版本)是值得的。使用virtualenv将有助于跟踪依赖关系。

我建议,要发布到生产服务器,您应该“标记”每个版本,然后将其导出到生产系统,而不是将其检出。这有助于阻止人们更新标签内的内容并从版本控制进行更新。

我认为在发布到生产系统时值得做的另一件事是为代码的每次导出创建一个新目录,其中包含版本号,然后有一个指向活动版本的符号链接。这使您可以轻松回滚到以前的版本。你提到的南方对此也非常有帮助。