首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django + SVN +部署

Django + SVN +部署
EN

Stack Overflow用户
提问于 2010-11-07 04:08:12
回答 2查看 3K关注 0票数 8

我是版本控制的坚定支持者,并且正在着手开发一个Django项目。我以前做了一些,也尝试了一些不同的方法,但我还没有找到一个真正让我感到舒服的像样的结构。

这是我想要的:

a)签入版本控制的源代码

b)最好不要将环境签入到版本控制中(例如buildout或pip requirements.txt可以很好地设置环境)

c)一个合理的“让一个新的开发人员上手”的故事

d)合理的部署案例--最好整个部署环境可以由服务器上的脚本生成

在我看来,以前肯定有人这样做过,但长时间的搜索都导致了半生不熟的解决方案,并没有真正解决所有这些问题。

有没有什么建议我应该看哪里?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-07 06:01:40

我在我的主目录中保存了一个项目/目录(在Linux上)。当我需要启动一个新项目时,我会在projects/;中创建一个新的、命名简短的(充分描述该项目的) dir,它将成为该项目的一个新的virtualenv (带有--no-site-package)的根。

在这个目录中(在我安装venv、获取它并安装我将要使用的django副本之后),我"django-admin.py startproject“是一个子目录,通常使用相同的缩写。无论项目有多小,该dir都会成为我的hg代码库的根(带有一个快速的hg init和ci)。

如果有任何机会与其他开发人员共享项目(例如,工作项目),我会在存储库根目录中包含一个pip requirements.txt。例如,我的开发工作流中只包含项目需求;例如,django-debug-toolbar和django-extensions不是项目需求。南方,当我们使用它的时候,就是。

至于django项目,我通常保留默认的settings.py,可能会做一些更改,并在它的末尾添加local_settings约定(try: from local_settings import *; except ImportError: pass)。我和其他开发者的特定环境设置(例如,在已安装的应用程序中添加django-extensions和django-debug-toolbar )位于local_settings.py中,而不是签入到版本控制中。为了帮助新的开发人员,您可以提供该文件的模板作为local_settings.py.temp,或者不会用于任何其他目的的其他名称,但我发现这不必要地扰乱了代码库。

对于个人项目,如果我计划公开发布,我通常会包括一份自述文件。在工作中,我们维护Trac环境和良好的沟通,以使新的开发人员加快项目的进度。

至于部署,正如rz提到的,我听说fabric非常适合这种自动化的本地/远程脚本,尽管我还没有真正抓住机会去研究它。

对于外行来说,典型的shell会话可能如下所示:

代码语言:javascript
运行
复制
$ cd ~/projects/
$ mkdir newproj
$ cd newproj/
$ virtualenv --no-site-packages .
$ source bin/activate
(newproj)$ pip install django django-debug-toolbar django-extensions
... installing stuff ...
(newproj)$ django-admin.py startproject newproj
(newproj)$ cd newproj/
(newproj)$ hg init .; hg ci -A -m "Initial code"
票数 3
EN

Stack Overflow用户

发布于 2010-11-07 05:00:31

查看fabric来管理部署。

这是我用fabric来管理服务器/部署的工具:louis (它只是fabric命令的集合)。我为每个项目都保存了一个louisconf.py文件。

我推荐使用分布式VCS (git,hg,...)而不是svn。原因是分支的简单性允许部署多个方案。例如,您可以拥有productionstaging分支。然后,您按照约定强制只合并到生产环境中。

至于让开发人员快速入门,您可以使用pip和requirements.txt。我认为这也意味着你正在使用virtualenv,但如果不是,那就是第三部分。我建议您准备一个基本的README。让每个加入项目的开发人员的第一个任务是更新README

让某人加入的粗略方法是让她签出代码,创建一个virtualenv,然后安装需求。

我建议有一个与sqlite3一起工作的settings.py文件,这样新的开发人员就可以使用它来快速地进行(即在安装了需求之后)。但是,如何管理不同的设置文件取决于您的项目布局。不过,应该有一些默认设置供新开发人员使用。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4114942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档