代码之家  ›  专栏  ›  技术社区  ›  Mala

实现webdevelopment的版本控制

  •  6
  • Mala  · 技术社区  · 14 年前

    我正试图进入版本控制,因为我的项目越来越大。目前我的发展是这样的:

    • 我有一个本地版本,还有一个本地网络服务器
    • 我编辑本地版本并在本地Web服务器上进行测试
    • 最后,我要跑了 Unison 从我的本地版本更新实时版本(以及使用对实时版本的任何更改更新我的本地版本)

    我的本地平台是 Gentoo、Linux . 我对SVN做了一些研究,但我认为它可能不适合我的需要,因为我的本地web服务器(和Unison)只能访问当前签出的代码,等等。我可能错了,但我对这件事不太了解。

    有人能告诉我如何在现有代码上设置某种版本控制,这样可以使本地Web服务器访问最新版本,并且不会影响未编辑文件的访问时间吗?(我不希望每次更改时都上传每个文件)

    4 回复  |  直到 14 年前
        1
  •  2
  •   timdev    14 年前

    我使用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
    

    “stage”和“live”是符号链接,是Apache为DocumentRoot for virtualhosts提供的www.example.com以及stage.example.com网站)

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

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

    在httpd.conf文件:

    <Directory ~ "\.svn">
        Order allow,deny
        Deny from all
    </Directory>
    
        2
  •  0
  •   GSto    14 年前

        3
  •  0
  •   nmichaels    14 年前

    Mercurial 风格:

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

    这将为您提供一个可工作的mercurial存储库。有关如何使用它的更多信息,请阅读链接。

        4
  •  0
  •   Tom Anderson    14 年前

    来扩展@Nathon的答案。你想做:

    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
    

    在~/代码中进行开发,并与本地服务器进行检查。你想做什么就做什么。当你得到有用的东西时,给它贴上标签。然后做:

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