快捷搜索:   nginx

让开发自动化: 针对广大开发人员的并行开发

    虽然很多开发团队都使用版本控制系统管理代码变更,但当多个开发人员并行地使用不同的代码库进行编码时,还是会出现问题的。在本期的 让开发自动化 中,自动化专家 Paul Duvall 展示了如何运用开源的、免费的 Subversion 版本控制系统来有效地进行标记、分支和合并。

    说到源代码分支,可以将大多数的软件开发团队大致划分为两大阵营:有些是根本不分支;或存在大量的分支(甚至储存库),以致开发人员不知道从哪里签入变更 — 或者觉得合并变更很痛苦,于是就冒险将这项工作推迟到软件快要发布时才做。

    永远只需要操作主干是最理想的情况。这使合并两个或多个代码支线间的变更没有那么复杂。然而,在现实的软件开发中,您正在开发的可能是未来版本,或者有时您可能需要为一个已经交付使用的版本准备一条后路。你需要有权限访问已发布版本的源代码副本 — 但又不能扰乱正在开发的新代码。

     术语

主干(trunk)(有时称 head)用于干线开发(mainline development)。分支(branch)是指一个代码支线副本,用于进行与干线开发不同的变更。标记(tag)(有时称 标签)是一个使用时间戳的代码支线副本,用于标识代码支线,以在开发周期中返回到标记的地方。

    但当开发团队试图使用分开的代码支线时,问题就会出现了。有些时候,开发团队可能会选择不创建分支,免得会延误发布或导致开发人员瓶颈。而有些时候,开发人员合并的频率太低,结果导致了合并冲突、瓶颈以及发布延误。而增加分支则会使导航项目储存库很困难,从而导致开发人员无意中更改了不应该更改的代码。

    团队进行并行开发时,一定要以最高的频率将代码合并回干线(即主干)。如果无法经常将代码合并到主干的话,可以运行测试,这样就能够确定是否会发生合并冲突,从而使实施 合并没有那么困难。要有效地进行并行开发,您可以使用 Subversion(SVN)中的标记和分支,Subversion 是一个开源的、免费的源代码管理系统。通过标记,团队可以安全地返回到源代码的前一版本中。

    我将通过介绍以下内容来示范如何在 SVN 中进行并行开发:

    ●如何从主干创建一个 SVN 版本标记
    ●根据版本标记来创建一个 SVN 分支
    ●将变更合并回干线(即主干)的技巧
    ●如何在开发中的主干运行持续集成(Continuous Integration,CI),以定期测试分支与主干的合并
    ●演示如何将源于分支的变更应用到主干
    ●举例说明如何标记分支的源代码

     关于本系列

作为开发人员,我们致力于自动化用户流程;但许多开发人员却疏忽了自动化自己的开发流程。为此,我们编写了 系列文章,专门探讨软件开发流程自动化的实际应用,为您介绍何时 以及如何 成功应用自动化。

    图 1. 并行开发

    在图 1 中,有效的开发发生在 SVN 主干的版本 1.0.0 和版本 1.1.0 之间。可以是一组开发人员在版本 1.0.1 分支上进行开发,而其他人员在干线上开发。

    如果想要多个开发人员负责不同的代码支线的话,可以使用很多策略和技巧。在本文中,我将展示一个很常用的方法,我曾在使用 SVN 的项目上用过它。

    为并行开发配置 Subversion

    安装和配置 SVN 服务器并不在本文的讨论范围之内。如果您有权限访问一个有效的 SVN 服务器,就可以执行以下的步骤了:

    1.将 SVN 客户机软件下载到您的工作站。
    2.在工作站中创建一个标准本地目录。
    3.将目录添加到 SVN 储存库。
    4.将目录提交到 SVN 储存库。
    从 Tigris.org Web 站点(参见 参考资料)为您的操作系统下载 SVN 客户机软件,并将其安装到您的工作站。确保 SVN 可执行文件在您的工作站的系统目录中。用 svn co URL 执行储存库的 SVN 签出。

    接下来,创建三个本地目录:

    分支:用于维护干线开发之外的软件。
    标记:在发布软件时用于标识变更集,以备使用。
    主干:用于干线开发。
    清单 1 展示了在 Windows?、Macintosh 以及基于 *nix 的系统上如何从命令行创建这些目录:


    清单 1. 创建本地目录,将其添加到 Subversion

     $ mkdir branches $ mkdir tags $ mkdir trunk

    在操作系统中创建了目录之后,您可以分别使用 SVN add 和 commit 命令将它们添加并提交到 SVN。在我创建清单 1 的目录的目录中,我输入了如清单 2 所示的命令(在适当的时候替代用户凭证):


    清单 2. 将本地目录添加并提交到远程 SVN 储存库

     $ svn add *.* $ svn commit -m "Setting up standard SVN branches, tags and trunk directories" \ --username tjefferson --password Mont!cello

    执行了清单 1 和清单 2 中的操作之后,SVN 储存库应该类似于图 2:


    图 2. 在储存库中创建的标准 SVN 目录

   

    基本的 SVN 储存库就绪以后,就可以创建版本标记了。

 [2] [3] [4] [5] 下一页

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论