【PHP开源代码栏目提醒】:本文主要为网学会员提供“中小企业的版本管理策略 - 会议论文”,希望对需要中小企业的版本管理策略 - 会议论文网友有所帮助,学习一下!
中小企业的版本管理策略 黄玲,王亮,黄贵 南瑞集团中德保护控制系统有限公司,江苏省南京市,邮编 210032 南瑞集团信息技术研究所,江苏省南京市, 邮编 210000; 安徽省巢湖市供电公司含山分公司,安徽省巢湖市含山县 邮编 238161摘要:本文介绍了集中式和分布式版本管理系统的概念,并 间了,可以说是一种以小作坊的形式来面对软件的对常用的版本管理软件进行了分析和比较。
最后给出了一个 社会化大生产,再也不可能行得通了。
应用实例 2 几种版本管理软件简介关键词:集中式;分布式;版本管理;版本控制; 版本管理软件从结构上分有集中式和分散式两种0 引言 2.1 集中式版本管理 如果说 70 年代的软件危机导致了软件工程思 集中式版本管理是一种集中的分享信息的系 那么 80~90 年代尤其想的诞生和理论体系的发展, 统,采用 C/S 模式,它的核心是版本库,储存所有是 90 年代软件产业的迅猛发展导致了另一种新思 的数据,版本库按照文件树形式储存数据-包括文想的产生和实现,这就是软件的版本管理(简称 件和目录,任意数量的客户端可以连接到版本库,SCM)。
版本管理是程序开发、管理必不可少的工 读写这些文件。
通过写数据,别人可以看到这些信具,特别是在多人协作的团队中,适宜的版本控制 息;通过读数据,可以看到别人的修改。
工具可以提高开发效率,消除很多由
代码版本带来的问题。
本文对当前流行的集中版本管理软件进行分析和探讨,并结合一个应用实例讨论中小型企业的版本管理策略。
1 版本管理的必要性 软件开发和管理者都面临如下一些问题:1) 怎样对研发项目进行整体管理;2) 项目开发小组的成员之间如何以一种有效的机 图 1. 集中式版本管理制进行协调; 2.1.1 几种
常用的集中式版本管理软件:3) 如何进行对小组成员各自承担的子项目的统一 1) Visual SourceSafe:管理; 微软的版本控制工具,仅支持 Windows 操作系4) 如何对研发小组各成员所作的修改进行统一汇 统。
虽然简单好用,但是仅适用于团队级开发,不总; 能胜任企业级的开发工作。
5) 如何保留修改的轨迹,以便撤销错误的改动; 2) Clearcase:6) 对在研发过程中形成的软件的各个版本如何进 IBM 旗下 Rational 公司2003 年被 IBM 收购的行标识,管理及差异识辨等等。
一款重量级的版本管理管理工具。
一个非常直接的反应,我们必须要引进一种管 3) CVS:理机制,一个版本管理机制,而且是广义上的版本 全称 Concurrent Versions System。
CVS 是有着管理,它不仅需要对源
代码的版本进行管理,而且 三十年以上的时间的考验。
是开放源
代码软件世界还要对整个项目进行管理。
以往的那种被誉为具有 的一个伟大杰作,由于 CVS 功能强大,跨平台,支良好编程风格的做法,诸如在对他人的源程序进行 持并发版本控制,而且
免费,所以它在全球中小型修改时注释修改原因,修改人和日期,如果是多个 软件企业中得到了广泛使用。
成员同时进行了修改,那么需要进行及时的人工的 4) SVN:差异比较和综合以便形成一个统一的新版本。
这种 全称 Subversion。
采用了更先进的分支管理系做法在当前的大型
软件的开发中已经越来越没有空统,它的设计目标就是取代 CVS, CVS 的创始人 VSS 仅支持 Windows 操作系统。
之一在其现任公司的资助下开发了 SVN,它针对 CVS、SVN 和 ClearCase 支持几乎所有的操作CVS 的一些弱点,在目录版本化、原子提交、元数 系统和平台。
但是 CVS 和 SVN 的服务器端在 Unix据、分支和标签等方面做了极大的改进。
Linux 环境下运行会更稳定可靠。
:Hansky Firefly/Butterfly:5) 5) 开发操作使用的便利性以及造价 Firefly/Butterfly 是 Hansky 公司在中国市场推 VSS 安装、配置、使用均较简单,很容易上手出了业界技术领先的版本管理解决方案, Firefly 使用。
价格大概 1000 元/100 用户是配置管理工具,Butterfly 是变更管理工具。
CVS 和 SVN 是
开源软件,安装、配置较复杂,2.1.2 几种集中式版本管理软件性能比较 只需对配置管理做简单培训即可。
但使用比较简单,1)Internet 网络访问和远程管理 ClearCase/ClearQuest 安装、配置、使用相对较 VSS、CVS 和 SVN 都提供基于 Web 的界面, 复杂,需要进行团队培训,需投入成本大概二十万用户可以通过浏览器执行配置管理的相关操作,即 万元左右。
通过这样的方法来实现对异地开发的支持。
但是 Firefly/Butterfly 安装、配置、相对较复杂,使CVS,SVN 采用统一的二进制差异算法,所以消耗 用相对简单,需投入成本大概二十万左右。
更少的网络带宽,因此更加适合基于互联网(或广 6) 信息安全性域网)进行协作开发的地理上分布的团队,即版本 VSS 它是基于文件系统共享实现对服务器的访服务器集中、单一;客户端可广泛分布。
问,需要共享存储目录,这样用户可以对 VSS 的文 ClearCase 和 Firefly 基于真正的客户机/服务器 件夹执行删除操作,安全性不高。
体系结构,不依赖于任:何特殊的网络文件系统, CVS 和 SVN 服务器有自己专用的数据库,文件可以平滑地运行在不同的 LAN、WAN 环境中。
存储并不采用 “共享目录”方式,所以不受限于局域 而 SVN1.5 及以上版本,Firefly 和 ClearCase 网。
安全性较高。
但库文件存放方式略有不同:CVS还可以通过 E-Mail 附件等其它方式将同步包发给 采用完全用户可见方式,版本库与客户端文件夹结对方,实现不同地点的版本库手动的同步。
这主要 构完全一直(cvs 生成文件除外)适用于两个或两个以上位于不同地点的开发团队协 SVN:与 VSS 相似,看不到文件真正的内容作开发的情况。
这其实是吸取了分布式版本管理的 ClearCase 采用 C/S 模式,需要共享服务器上的优点。
存储目录以供客户端访问,安全性不高。
2)并行开发支持 2.2 分布式版管理系统 团队协作开发过程中,有两种主要的模式:集 分布式版本管理系统中的 版本库采用的是对体
代码权和个体
代码权。
采用集体
代码权模式进行 等
网络式的方式。
集中式的管理中,只有一份版本开发时,一段
代码可能同时会被多个开发人员同时 库,其他的只是工作拷贝,不包含额外的版本。
分修改;而采用个体
代码权模式进行开发时,每一段 布式的管理当中,每个用户所持有的都是一个真实
代码都始终被一个开发人员独享,别人需要修改时 的版本库,当中存储有不同的版本信息和维护一个也要通过该开发人员完成。
版本库的必要的辅助元数据。
这样一个对等工作模 而版本管理软件针对这一情况,也采用了不同 式当中,用户通过交换信息来完成同步。
的策略:Copy-Modify-Merge拷贝、修改、合并的 这样做的一些优点在于,工作的并行度将大大并行开发模式、Check ut-Modify-Check in(签出、 的提高。
每个用户都可以带着这样的版本库,从这修改、签入)的独占开发模式。
在并行开发模式下, 里他可以把当前的工作拷贝切换到版本库里面存储开发人员可以并行开发、更改
代码,并能够自动检 的任何一个版本。
这个版本可以是之前正在工作的测到
代码冲突,并自动合并,或提示开发人员手动 版本,现在需要合并进一些别人的意见,也可以是解决。
用户私有的一个版本,当前正在做很多前瞻性的工 ClearCase、Firefly、CVS 和 SVN 和最新发布 作,还没有能同步给其他用户使用。
也同样是因为的 VSS8.0 都可支持并行开发模式。
这样的模式,每个用户可以任意把自己的 版本库3)跨平台开发支持 当中的一个版本交换给其他用户,而不需要对自己 2手头正在
工作的版本进行回退。
下图是这样一个灵 它并不易于使用 。
对最终用户和开发者来说, 相反,活的工作模式的演示。
GNU Arch 侧重于解决和分散式 SCM 技术相关的有 趣的计算机科学问题。
Bazaar 之所以变得相当受欢 迎是因为它在
设计中考虑到了开发者必须经常使用 它。
Bazaar 和 Arch 不尽相同,它们之间曾经出现 过分裂,但仍保留了大致的兼容。
图2 分布式工作模式的
演示 2.2.2 性能比较 因而相比集中式管理系统,分布式的版本管理 各类系统在各在一定的领域内长处,如 GNU系统具有以下特点: arch 在 GNU Savannah 主机上应用,Bazaar 主要用 1) 更轻松的管理。
每个用户管理自己的 版 于 Ubuntu Linux 系统的开发当中,git 源于 Linux本库,管理员只需协调同步这些库以实现团队成员 kernel 的开发,现在在多处和内核相关的项目中使之间的协作。
用。
他们大多数提供友好的 Web 界面和多种版本同 2) 更健壮的系统。
分布式系统比集中式的单 步协议的支持。
Git 和 Gnu arch 由 C 和 shell 脚服务器系统更健壮,单服务器系统一旦服务器出现 本语言编写实现,monotone 由 C语言实现,darcs
问题整个系统就不能运行了,分布式系统通常不会 由 Haskell 语 言 实 现 , Bazaar 和 Mercurial 由因为一两个节点而受到影响。
Python 语言实现。
从开放和扩展性方面来说,类似 3) 对网络的依赖性更低。
由于同步可以放在 Python 这样的脚本语言的更易于用户编写自己的任意时刻进行,分布式版本管理
系统可以离线进行 扩展。
管理,只需在有网络连接时同步。
在众多的分布式版本控制系统中,Mercurial 是 目前面世的分布式版本管理软件有 SVK, 最年轻的,它的第一个版本发布于 2005 年 4 月。
Mecurial,Bazaar-NG,Arch,git MonotoneDarcs Mercurial 吸收了众多前辈的特性,被众多的项目采等。
其中比较成熟的是 Git、Mercurial、GNU arch 用。
和 Bzr。
3 根据实际情况选择版本管理系统2.2.1 几种常用的分布式版本管理工具简介 3.1 选择版本管理软件1) Mecurial 当
程序员的工作主要是离线式的,自由度要求 Mecurial 是一种轻量级分布式版本控制系统, 颇高的,且对集中式的,频繁的
代码监测需求不高采用 Pytercurihon 语言实现,易于学习和使用,扩 的,使用分布式版本管理系统比较合适。
但是对于展性强。
其是基于 GNU General Public License 笔者认为集中式版本
管理系统较为合适。
团队开发,GPL 授权的
开源项目。
支持多种操作平台 毕竟对于企业内部这种集中式管理环境,集中式的2)git C/S 结构天然适合,分布式版本管理工具强调的速 Git 是 Linux 创始人 Linus Torvalds 为了帮助 度可靠性优势对于这种集中开发的公司来说谈不上管理 Linux 内核开发而开发的一个开放
源码的 是优势: 1、速度:内部网的速度问题可以忽略; 2、版本控制软件。
它只支持 Linux 系统。
可靠:企业内部的集中式服务器,基本都是 Raid3)GNU arch 结构,此外,每日增量备份导致出现问题的可能很 GNU arch 是软件修订控制系统,它是 GNU 小。
工程的一部分,在 GNU 通用公共许可证下许可。
南瑞中德公司是南瑞集团控股企业,随着公司它被用于保持跟踪对于源
代码树的修改、帮助程序 的发展壮大,以前公司开发和工程管理各自为政,员联合多个人在不同的时间对程序的修改。
GNU 版本全靠人为控制的小作坊做法已经跟不上公司的arch 是分散的,消除了中心服务器的需要。
发展需要。
4)Bazaar-NG(bzr) 中德公司开发部,软件部分包括 Windows 后 Bazaar-NG(bzr)继承自 Bazaar 1.x,它本身试 台、Windows 前置机、Windows 远动机,UNIX 后图在名为GNU Arch 的 SCM 之上建立一个易于操作 台,Linux 前置机,Linux 远动机,硬件部分包括监的层。
GNU Arch 是一个功能强大的 SCM 工具,但 控装置,保护装置等。
还要负责很多现场工程
代码 3完善和维护的工作。
原来
代码保存在每位员工 PC 何时何地何人做了何改动。
为了让我们的版本管理机中,最多用 FTP 服务器保存,经常发生应为版本 系统也具备此功能,我们选择
开源软件 Postfix 架设问题产生的失误甚至影响现场工程的情况。
而且这 邮件服务器,与 Subversion 钩子脚本配合实现邮件种情况使得团队协作不力,人员流动对
代码完整性 通知功能。
影响很大,
代码保密工作也无法开展。
开发部迫切 3.1 版本管理系统安装需要一种高效实用的版本管理系统。
3.1.1 安装 Subversion 公司开发部人员基本在本地,没有异地协同开 1 需 要 安 装 软 件 有 : Apache 、
PHP 、 Mysql 、发的情况,各个项目都是团队开发,不存在一个人 mod_auth_my
sql、PhpMyAdmin 、Subversion。
独立完成一个项目的情况,开发部要求版本管理软 Subversion 客户端要通过
web 服务器访问版本件可以跨平台使用。
库。
Apache(中文呢称花生壳)是世界使用排名第 一的 Web 服务器软件。
它可以运行在几乎所有广泛 公司工程部一直以光盘为媒介备份现场调试 使用的
计算机平台上。
Apache 的特点是简单、速度工程,存在多重不安全因素,首先由于本身容易损 快 、 性 能 稳 定 , Subversion 客 户 端 用 户 通 过坏老化;其次调试人员因为现场条件限制无法及时 Apachemod_dav_svn 模块,就可以用 http/https 访备份,而工程人员经常跑多个现场,等他回到公司 问 Subversion 版本库备份时很可能遗漏曾经的改动,留下隐患;另外备 2)修改配置文件份也缺乏延续性,很小的改动就需要重新刻一张光 Linux 下面装好软件后不是立即就能使用的,盘,日后检查起来也相当麻烦,因此工程部也需要 更重要更复杂的是要对其进行配置。
以下摘录部分一种方便实用的备份管理系统。
配置文件。
工程部调试人员往返于国内各地调试,国外较 比如: 要求工程人员及时异地提交工程项目改动。
少涉及, 配置 Apache 关联
php 企业可以提供较好的资源,包括提供高配置的 配置 Apache 支持 MySql服务器,大容量的硬盘,并且随时可以提高配置。
配置 Apache 支持 Subversion综合考虑,我们决定采用集中式版本管理软件 3)用
PHP 脚本写成的用户信息管理模块:Subversion 架设两套版本管理系统分别用于开发部和工程部。
Subversion 可以跨平台安装,但是安装在 Linux或 Unix 上更加稳定,Linux 世界中 Debian 是使用最广泛的系统,Debian 使用 Linux 核心(操作系统的最重要部份),其大部份的基本工具则来自GNU 计划,因此也称为 GNU/Linux。
Linux 本身具有开放高,高度优化,安全可靠等等优点,而 使用最广泛的 LinuxDebian 是所有 Linux 中最自由、版本。
因此我们选择 Debian 最为我们的版本管理服务器操作系统,我们安装时 Debian 的最高版本是4.0r3,Subversion 最高版本是 1.4.8,postfix 最高版本是 2.4.5,今年四月份 Debian5.0 发布,目前Subversion 最 高 版 本 是 1.6.1 , 笔 者 对Debian5.0Subersion1.6.1 安装成功,考虑到系统的稳定性,暂不对服务器进行升级。
商用的版本管理软件如 ClearCase/ClearQuest和 Firefly/Butterfly 都有邮件通知功能,即团队成员修改完成提交时会自动发送邮件给相关成员,告知 4 5) 备份
方案 通过 NFS 在 postfix 服务器上另外挂载 1T 硬盘,4) Postfix 服务器安装 功能挂载到 Subversion 服务器上,运行脚本实现每 在我们的版本管理系统中,邮件系统主要是配 7 天全量备份,每 10 分钟增量备份。
备份资料十五合 Subversion 的邮件通知功能,同时作为部门内部 天后删除。
成员联系工具。
6) 实现邮件通知功能 Postfix 邮件服务器的安装和配置比 Subversion 修改版本库的钩子脚本:/hooks/post-commit。
服务器要复杂得多。
本文不作介绍了。
vi /home/svnroot/rep/GY/hooks/post-commit REPOSquot1quot REVquot2quot /home/svnroot/rep/LYYD/hooks/commit-email.pl quotREPOSquot quotREVquot 修改 commit-exmail.pl 脚本 commit-exmail.pl 脚本中包含了目录和用户邮 箱信息,具体说来就是告诉 SVN 哪个目录的改动 .