技术开发 频道

协作开发中的质量保证技术

    下面是非常基本的cvs update/commit操作规范:

    简单的cvs操作约定

    修改文件之前首先update。这意味着修改时的版本尽可能新,一旦发生冲突,解决它的工作量会比较小。

    及时commit。本地代码与代码库中的代码差异越小,别人合并的难度也就越小(他们有比较大的概率能够拿到新的版本)

    将不同的功能单元修改分开commit。一方面,这样做能够尽早地commit,减少别人合并的难度;另一方面,由于cvs提供了回退到先前版本的能力,一旦由于某项功能修改造成问题,也很容易将那次修改的内容,而不是整个修改回退到正常的代码。

    同一功能涉及的所有代码一次commit。不希望将涉及同一功能修改的代码分开commit,因为这会给日后的追踪带来麻烦。

    先调试后提交。这将减少别人不会因为同步了中间结果引发问题,甚至发生提交冲突的可能。

    写清commit log(提交日志)。cvs中允许保存commit log,在这里可以写为什么进行代码的修改,以及进行了什么样的修改,清楚的commit log能够帮助其他开发者在不仔细阅读代码的情况下了解修改的内容,从而极大地提高开发效率;另一方面,这些日志对于开发者自己,以及整个开发团队,都是非常宝贵的财富。

    同步代码(update)和提交代码(commit)占到了cvs日常操作的80%以上。从上面的介绍我们可以看出,仅仅依靠这两项非常简单的功能,cvs就能极大地改善开发流程,并提高软件工程的可控性。简单地说:

    全体开发者使用同一个中央代码库,从而消除了由于来回复制文件导致的不一致。

    发生冲突时,后提交的开发者必须解决它。这名开发者能够知道是谁引入了冲突,他可以自己解决冲突,也可以与引入冲突的开发者商量如何解决冲突。

    测试可以贯穿编码过程的始终,任何时候引入的新问题都能够被及时追踪、快速定位,从而更有效地解决。

    由于存在中央代码库,代码审核人员和每日构建人员能够及时地了解代码是否存在问题,并帮助项目经理保证开发进度。

    有助于帮助开发人员养成严谨的工作习惯——规则要求他们将尽可能地提交正确的代码,并且每个修改必须写commit log进行说明。

    有助于建立更公平的工作质量评估机制。 cvs能够记录每个人完成的实际工作量,包括他们因为修正问题等等所作的劳动,以及他们完成代码的质量情况。这样,管理者能够为优秀的开发人员提供更好的工作机会、报酬,等等,这对于鼓舞整个团队的士气、提高开发人员的工作积极性都是非常有益的。

    促进开发人员之间的交流。尽管cvs本身无法代替交流,但commit log,以及cvs系统获取任意版本之间差异的能力,能够帮助开发人员了解对方的想法,并促进他们共同提高。

    降低程序开发人员的门槛。由于提供了许多非常方便的协同开发手段, 使用cvs能够减少协同开发所需要的磨合期,同时,不同层次的开发者之间由于能够进行经常性的沟通,从而把编码过程从技能型工作向熟练性工作又推进了一步。这意味着高层次的开发人员能够去进行更能发挥他们特长的工作,而新手则可以很快地融入到日常的开发活动中来,从而提高劳动生产率,降低开发成本。

    编码过程中的沟通纽带——commit mail

    cvs是一项开放性很强的工具,它可以被非常容易地订制。一般来说,cvs服务器会架设在一台Unix主机上(我们推荐使用FreeBSD),通过使用脚本语言(例如,Perl),cvs能够完成一些额外的功能。

    commit mail是commit log在邮件系统上的延伸。下面是一封典型的commit mail,它来自FreeBSD开发团队:

    phk 2003/10/21 23:32:20 PDT

    FreeBSD src repository

    Modified files:

    sys/geom geom_io.c

    Log:

    Forgotten commit: If a provider has zero sectorsize, it is an

    indication of lack of media.

    Tripped up: peter

    Revision Changes Path

    1.50 +3 -6 src/sys/geom/geom_io.c

    我们看到,上面的这封commit mail中提到了开发者(phk)、提交时间(太平洋时间2003年10月21日23:32:20)、涉及的代码库名字(FreeBSD src repository)、修改过的文件(sys/geom的geom_io.c)以及commit log。最后,commit log还提到了提交后文件的最新版本(1.50),修改规模(+3 -6)以及代码的实际路径。

    实现上面的功能并不复杂,实际上,您只需要下载一套经过定制的FreeBSD cvs代码库(压缩包不超过40KB),并作少量的调整,就能够直接使用这些功能(我们将在不久以后发布这些内容)。进行这些订制甚至不需要基本的Perl和C/C++常识就能够完成——当然,我想这样的常识对于软件开发人员来说,并不算是很高的要求。

    commit mail可以通过邮件列表发给全体开发者。许多大的软件公司,以及开放源代码团体,都采用这样的方式来协调开发活动。

0
相关文章