2010-09-09 103 views
6

我试图使移动到版本控制版本控制,因为我的项目正变得越来越大。目前,我的发展是这样的:实施为web开发

  • 我已经“活”版本在线托管
  • 我有一个本地版本,以及本地网络服务器
  • 我编辑的本地版本,并提供测试,上我的本地网络服务器
  • 最后,我要跑Unison从我的本地版本更新真人版(以及更新我的本地版本与任何更改真人版)

我升ocal平台是Gentoo,Linux。我对SVN有点了解,但我认为它可能不适合我的需求,因为我的本地Web服务器(和Unison)只能访问当前签出的代码,等等。我可能是错的,但我对此不太了解。

是否有人可以通过在现有代码上设置某种版本控制来引导我,这会导致本地Web服务器可以访问最新版本,并且不会为未编辑的文件打开访问时间? (我不希望每次齐奏我做出改变时上传的每一个文件都)

回答

2

我用颠覆这一点,并且效果很好。

通常我开发了,直到我有东西清理的释放。

在这一点上,我将创建一个名字类似释放 - 分支。我将跳上生产系统并查看我新创建的分支。对于几个项目,我将有一个在生产系统上运行的临时区域。

举例来说,我可能有一个看起来像这样的目录树:

/web/sites/release-1 
/web/sites/release-2 
/web/sites/release-3 
/web/sites/release-4 
/web/sites/stage ==> release-4 
/web/sites/live ==> release-3 

“舞台”和“住”是符号链接,并且是什么阿帕奇拥有的DocumentRoot为virtualhosts www.example.com和stage.example.com)

此设置允许我在实际生产环境中非常仔细地测试事物,然后通过交换符号链接进行切换。

通过在部署之前进行分支,我可以在极少数情况下对生产进行紧急修复。只要方便和适当,我就可以将这些更改合并回主干。

最后一个建议:如果你使用Subversion项目的工作副本在生产环境中,你需要保持阿帕奇从让人们浏览.svn目录中的项目:

在httpd.conf

<Directory ~ "\.svn"> 
    Order allow,deny 
    Deny from all 
</Directory> 
+0

这似乎很方便!如果我没有实际访问实时版本,这会不方便吗? – Mala 2010-09-10 21:47:05

+0

只要你有通过SSH访问shell,根据我的经验,这简直太简单了。 – timdev 2010-09-10 21:59:58

0

这是我当前的设置,我敢肯定,你可以做同样的事情:

我使用SVN,这是对托管主服务器。有两台服务器,即开发和生产。我将所有工作都编辑在开发服务器的结账上,然后当变更准备就绪后,我将其提交,然后更新生产服务器(即活动站点)上的结账。

0

Mercurial风格:

> cd ~/code 
> hg init 
> hg add * 
> hg commit -m "Initial checkin" 

,将让你工作Mercurial库。阅读链接了解如何使用它的更多信息。

您可以从您的本地Web服务器和实时Web服务器克隆让事情保持最新状态。

0

为了扩大对@纳通的答案。你想要做的:

cd ~/code # this is where your code lives now 
# set your local webserver to run from *this* directory 
hg init 
hg add * 
hg commit -m "Initial checkin" 
hg clone ~/code ~/staging 
cd ~/staging 
# set Unison to run from *this* directory 

在〜/ code中做你的开发,用你的本地服务器检查它。随时提交即可。当你得到一些有用的东西时,给它加上标签。然后做:

cd ~/staging 
hg pull 
hg update your-tag-name 
# run unison. 

我得到的印象是,你也希望你的本地服务器从临时区域运行,但是这似乎是一个糟糕的主意,因为你想用它当您去检查你的工作。如果你想要一种QA环境,你可以从分段运行第二台Web服务器,但除了开发者之外,我只会这样做。