让开发自动化: 针对广大开发人员的并行开发
虽然很多开发团队都使用版本控制系统管理代码变更,但当多个开发人员并行地使用不同的代码库进行编码时,还是会出现问题的。在本期的 让开发自动化 中,自动化专家 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] 下一页
- 最新评论