【问题标题】:project management / multiple versions项目管理/多个版本
【发布时间】:2010-10-20 12:08:15
【问题描述】:

我在这里寻找有关如何管理项目的多个版本的提示和技巧。

目前我有一个应用程序的开发版本,其中包括一些改进和新功能。与此同时,我必须做一些错误解决。修复新功能尚未触及的文件上的错误很容易,但只要我触摸具有新功能的页面。我每次都需要注释几行代码。我觉得这不是最好的玩耍方式。必须有一个足够好的方法来解决这个问题。

问题的另一方面是部署。我经常需要等待几周才能在网站上上传新功能。与此同时,有时我往往会忘记每个已修改(或为错误注释)的文件,它可能会产生错误。我听说过为 ruby​​ 粉丝准备的 capistrano,对我有帮助吗?我主要是 PHP/asp.net 开发人员。

【问题讨论】:

    标签: php version-control deployment project-management versioning


    【解决方案1】:

    您正在经历“不兼容开发工作”的经典案例:
    您不能同时修复错误并在同一个文件上进行开发。

    这是一个经典的分支案例,允许同一个文件:

    • 将其状态冻结为最初部署的状态(分支的陈述点)
    • 修复错误修复分支中的错误
    • 将其中一些错误改进到当前的开发分支中
    • 在开发分支中开发新功能。

    如果您对立即设置 VCS(版本控制系统)不满意,您至少可以将代表您的服务器的文件树复制到 2 个目录中(一个 1.0 和一个“DEV”),有效地进行一些“手动”修订控制。
    然后像WinMerge 这样的工具将帮助您跟踪差异并进行一些合并

    但是真正的 VCS 会更有效,并且可以用作部署的稳定源,如 Best version-control for a one-man web-app 问题(带有颠覆)所示。
    该版本控制的源代码也可以被 capistrano 这样的部署系统使用。

    【讨论】:

      【解决方案2】:

      大多数版本控制系统都能够“分支”您的软件,这样您就可以同时运行同一代码库的多个版本。

      例如,您的“1.0”分支可能是当前的生产版本。对于新的开发,您可能会创建一个“1.1”分支,它以 1.0 的副本开始。您所有的新功能都应该在 1.1 中,任何生产错误修复都应该在 1.0 中(最终也应该在 1.1 中)。通常有一些工具可用于合并分支之间的更改(例如,将错误修复从 1.0 合并到 1.1)。

      这是对颠覆分支的一个很好的描述。

      http://svnbook.red-bean.com/en/1.1/ch04.html

      检查您当前的版本控制系统,了解它如何处理分支。

      【讨论】:

        【解决方案3】:

        一种方法是在源代码控制软件中创建一个分支。

        【讨论】:

        • 嗯,是的,我想过……在生产服务器上安装颠覆并通过提交进行部署……但这对我来说听起来有点奇怪。
        • 您不必在生产服务器上安装 subversion。在开发机器上签出一个版本,然后 ftp/ssh/scp/whatever 它到生产服务器。
        【解决方案4】:

        源代码管理系统是您的解决方案。他们中的大多数都有处理项目不同版本的方法,例如 perforce、svn 等。您可以使用 Perforce 中的分支创建任意数量的版本。任何版本的任何更改都需要合并到所有更高版本。我发现 peforce merge 很舒服。每个新版本都从其早期版本的副本开始。您可以开发一些控制脚本并配置 perforce,这将提醒对先前版本的任何更改,而这些更改未在更高版本中完成。

        【讨论】: