实现webdevelopment的版本控制

Mal*_*ala 6 svn version-control

随着我的项目越来越大,我正试图进入版本控制.目前我的开发是这样的:

  • 我有在线托管的"实时"版本
  • 我有一个本地版本,以及一个本地网络服务器
  • 我编辑本地版本并在我的本地网络服务器上进行测试
  • 最后,我将运行Unison,从我的本地版本更新实时版本(以及更新我的本地版本以及对实时版本的任何更改)

我的本地平台是Gentoo,Linux.我看了一下SVN,但我认为它可能不适合我的需求,因为我的本地网络服务器(和Unison)只能访问当前检出的代码,依此类推.我可能错了,但我不太了解这一点.

有人可以指导我对现有代码设置某种版本控制,这会导致本地网络服务器可以访问最新版本,并且不会破坏未编辑文件的访问时间吗?(我不想让Unison在每次更改时上传每个文件)

tim*_*dev 2

我为此使用了 subversion,效果很好。

通常我会继续开发,直到我清理了一些东西以便发布。

那时,我将创建一个名为release-之类的分支。我将跳上生产系统并检查我新创建的分支。对于几个项目,我将有一个在生产系统上运行的暂存区。

例如,我可能有一个如下所示的目录树:

/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
Run Code Online (Sandbox Code Playgroud)

“stage”和“live”是符号链接,是 Apache 为虚拟主机 www.example.com 和 stage.example.com 提供的 DocumentRoot)

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

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

最后一点提示:如果您在生产环境中使用 subversion 项目的工作副本,您需要阻止 apache 允许人们浏览您项目中的 .svn 目录:

在 httpd.conf 中:

<Directory ~ "\.svn">
    Order allow,deny
    Deny from all
</Directory>
Run Code Online (Sandbox Code Playgroud)