【IT168 技术文章】
1、Unix项目程序和文档版本控制的困惑
本人多年来一直从事银行应用软件的开发和维护工作, 参与的项目绝大多数是基于Unix操作系统的, 在每一个项目的开发过程中,都将产生大量的程序文件和相关文档,项目的文档一般是存放在Windows环境下的,而程序文件则一般会存放在Unix服务器中,对于较复杂的项目,也会出现部分程序文件是Windows环境下开发的并存放在Windows环境下的情况,能否对这些程序和文档进行有效的控制,将直接影响到项目的工程质量。
为了控制Unix项目的程序和文档的版本,我所在的部门采取了一系列的措施,在前两年,我们指定了专人(版本管理员)对项目程序和文档的版本变更进行人工登记和管理,但这种做法并未取得我们预期的效果,原因是我们部门的开发项目较多,只依靠一两个版本管理员进行所有项目的版本管理将带来巨大的工作量,由于版本管理员都不是全职的(自身都有开发和维护的任务),他们只能应付式地完成版本管理的工作,造成了项目版本管理质量未能明显改善。
要解决人工管理工作量大的问题,引入版本管理软件是必要的,但市面上版本管理软件繁多,而且一般价格昂贵,这些价格昂贵的版本管理软件的功能过于强大,反而增加了使用的复杂性,如果用户未经过系统的操作培训,他们就很难上手使用,寻找功能适中、价格便宜和使用方便的版本管理软件具有现实的意义,在本文中将向读者们推荐如何使用微软公司的Visual SourceSafe版本管理软件来管理Unix项目的程序和文档版本。
2、微软Visual SourceSafe简介
微软的Visual SourceSafe(以下简称VSS)广泛应用于基于Windows环境的软件项目的版本控制,它具有以下的特点:
(1) 功能实用
VSS提供了基本的版本控制功能, 包括协调多人同时存取同一个文件、跟踪文件的历史版本等基本功能。VSS也提供版本数据库的备份和恢复功能,可有效保证了版本数据的安全性,这些功能对于一般的项目开发已经足够了。
(2) 价格便宜
VSS是Microsoft Visual Studio开发产品家庭(一般从事软件开发的团体都会有该软件)中的一员,如果你现在已有Visual Studio 6 Enterprise Edition,或者Visual Studio .NET Enterprise Developer Edition,或者Visual Studio .NET Enterprise Architect Edition,都可以在上面找到VSS软件,由于Microsoft Visual Studio的价格较低(如Visual Studio .NET Enterprise Developer Edition,网上报价为US$ 1799),如果进行成本的摊分,VSS的实际成本可以说是微不足道,如果你无上述的Visual Studio软件,你也可单独购买VSS软件,网上的报价为US$ 549。
(3) 使用方便
VSS继承了微软所有产品的优点,提供了方便的图形化的集成的操作界面,用户可直观地进行文件的存取、历史版本浏览、文件比较等操作,并可直观地监控到各个文件的当前的状态和当前被哪些用户所占用等信息。用户基本上不需要培训,就可使用VSS。
3、利用VSS管理Unix项目程序和文档版本的关键技术点
由于VSS是微软公司被设计用作在WINDOWS操作系统环境下进行文件版本管理的软件,它所管理的文件只能是windows系统能控制的文件。如果要让VSS管理UNIX系统上的文件,必须通过一定的软件支持,令到UNIX文件和目录映射到WINDOWS系统上,变成WINDOWS系统可见和可控制的资源,这样,VSS才可能存取和管理这些文件。
目前支持UNIX文件映射到WINDOWS系统的软件有多种,本文将向大家推荐一个GNU的软件,就是著名的SAMBA软件,该软件是完全免费的共享软件,读者可方便从互联网上进行下载,该软件功能相当强大,除UNIX文件、目录可输出到WINDOWS系统中,打印机等资源也可直接输出到WINDOWS系统中,通过它可实现跨系统的各种资源共享。
4、构建VSS管理Unix项目程序和文档版本的过程描述
以下我们将通过一个利用VSS管理AIX服务器上某目录下文件版本的例子,来说明构建的过程细节,基于其它UNIX操作系统的项目可参考这个过程,并在某些实现细节上略加调整即可。
(1) 构建例子示意图
如图所示,本次构建的例子将实现VSS对AIX服务器上/tmp/mydir目录下所有文件的版本管理,为此,我们需要利用SAMBA软件将AIX服务器上的/tmp/mydir进行目录输出,让VSS Client所在的机器可见和可控制,VSS Client再将本目录设定成项目的工作目录,即可实现对AIX服务器/tmp/mydir目录下文件的版本控制。
(2) 下载Samba共享软件到微机
你可从www.bullfreeware.com网站上下载samba在AIX操作系统上的最新执行码版本,该文件是一个exe为后缀的文件,文件名与版本号相关,本次试验中下载的文件名为SAMBA_aix432-2.0.7.0.exe,该文件的大小约为5M。
如果你是其它的操作系统,如Solaris、Linux,则你可从Samba的国际网站上下载Samba的所在操作系统执行码的最新版本,该文件通常是一个压缩的ZIP文件。
(3) 安装和配置Samba软件
a. 将程序从微机FTP到UNIX操作系统中。
我们一般从网上下载的资料都存放在微机系统中,这是你可用ftp将该文件传送到UNIX服务器中,由于该文件是压缩文件,在进行FTP文件传输时,必须选择二进制的传输方式, 以确保文件的正确性。本次试验中将文件传送到了AIX系统的/tmp目录下。
b. 执行程序进行解包。
用root用户登录AIX系统,执行以下命令进行文件解包:
cd /tmp
chmod 755 SAMBA_aix432-2.0.7.0.exe
./SAMBA_aix432-2.0.7.0.exe
该文件解压后,将形式两个文件,分别是SAMBA-2.0.7.0.bff和SAMBA-2.0.7.0.bff.asc文件,这两个文件的大小大约为15M,因此在进行本文件解压前,你必须确保解压所在目录必须有15M以上的空闲空间。
c. 安装Samba软件。
用root用户登录,进入smit系统管理工具,选“Software Installation and Maintenance” ==> "Install and Update Software" ==> "Install and Update from LATEST Available Software",在"INPUT device / directory for software"处输入"/tmp/SAMBA-2.0.7.0.bff",按回车即可进入SAMBA软件的安装,安装完毕后,所有与SAMBA相关的文件都将放在/usr/local目录下,该目录下包含bin、lib、man三个子目录。
d. 配置Samba软件。
用root用户登录,进入/usr/local/lib目录,先将原有的配置文件备份
cp smb.conf smb.conf.old
用vi编辑smb.conf文件,并进行以下修改:
socket options = TCP_NODELAY 改为 IPTOS_THROUGHPUT
配置输出的目录,本次方式假设输出的目录为/tmp/mydir目录,在smb.conf文件中加入以下内容:
[mydir]
comment = my test dir
path = /tmp/mydir
read only = no
public = yes
e. 启动Samba软件
用root用户登录,进入/usr/local/bin目录,执行如下命令启动Samba软件:
./nmbd -p 138 {注:可使用137、138、139端口,缺省为137端口}
./smbd -p 138 {注:smbd的端口号必须与nmbd一致}
用ps -ef | grep nmbd和ps -ef | grep smbd检查这两个进程是否已启动,如果未全部启动成功,请查看/var/samba目录下的日志信息。
(4) 安装VSS服务端和VSS客户端
本次构建的VSS服务器的操作系统为Windows 2000 Advance Server,VSS客户端的操作系统为win98或以上,运行VSS软件的安装程序即可完成服务端或客户端的安装。
如果VSS要管理UNIX文件,由于UNIX文本文件与WINDOWS文本文件在处理换行符上存在差别,则必须将所有的UNIX文件都视为二进制文件,才能保证读写UNIX文件的正确性,为此我们必须改变VSS服务端的某些参数,操作步骤如下:
在VSS服务端安装完毕后,请进入"Visual SourceSafe 6.0 Admin"程序,并进入"Tools" ==> "Options"==> "File Types"窗口,将"Binary files"改为"*.*",则以后无论什么后缀的文件(包括Windows系统的文件),都将视为二进制文件。
(5) 配置用户
以下假设有一个testuser的用户需利用VSS管理AIX上的文件,需按如下步骤配置testuser用户。
a. 在VSS服务端和某个客户端上新增testuser用户
Windows操作系统视版本的不同新增用户的操作也不尽相同,如果是Windows2000或以上,你可用administrator用户登录,在"控制面板"中的"计算机管理"中添加testuser用户,如果是win98,你可在“控制面板”中的“用户”中添加testuser用户。服务端和客户端testuser用户的密码应保持一致。
b. 在VSS软件中添加testuser用户
在VSS服务端,进入"Visual SourceSafe 6.0 Admin"程序, 再进入"Users" ==> "Add User"增加testuser用户。VSS软件中testuser用户的密码应与VSS服务端和客户端testuser用户的密码保持一致。
c. 在AIX服务器上配置testuser用户
用root用户登录,用smit user命令添加testuser用户,并用passwd testuser设置该用户的用户密码, 该用户在AIX端的密码可与在Windows端的密码不一致。
d. 用smbpasswd配置所有需访问Samba进程的testuser用户
用root用户登录,进入/usr/local/bin目录,执行smbpasswd -a testuser将testuser设置为可访问Samba进程,该命令需输入密码,此密码需与该用户在windows端的密码一致。
(6) 利用VSS管理AIX服务器/tmp/mydir上的文件
a. 映射AIX服务器的输出目录到逻辑盘
在VSS的客户端,用testuser用户登录系统,此时在网上邻居上你可看到AIX服务器(如果不能直接看到,可用查找计算机的方法),AIX服务器上有[mydir]的目录输出,这时你可将[mydir]映射到一个逻辑盘(如K:),这个映射关系最好设定成每次系统重启时都生效。
b. 增加下级项目unixfile以管理AIX服务器上的文件
在VSS的客户端,启动VSS客户端程序,即可进入VSS的使用界面,假设当前项目名为testproject,可在该项目上按鼠标右键增加一个下级项目unixfile,该下级项目将专门用作管理在AIX服务器上/tmp/mydir目录下的所有文件。
c. 将K:盘设成unixfile项目的工作目录
在VSS客户端,进入VSS使用界面,选中unixfile项目,按鼠标右键,在弹出的菜单上选择”Set Working Folder”,输入K:即可。
d. 利用VSS软件管理AIX服务器上的文件的版本
在VSS客户端,进入VSS使用界面,选中unixfile项目,再选择工具栏中“add file”图标按钮,你就可选择将AIX服务器/tmp/mydir目录下的哪些文件新纳入VSS的管理,已纳入VSS管理的文件,你可进行Check in、Check out、Get latest version等一系统的操作,这时你所采取的每一项操作,都直接影响到了AIX服务器/tmp/mydir目录下的相关的文件。
5、结论
上述例子只说明了某个用户管理AIX服务器上某目录下文件的实现过程,当然,你可根据所做项目的具体情况,参考以上的步骤设置更多的用户或输出更多的需要管理的AIX目录;你也可将项目过程中所产生的各种文档和在Windows环境下开发的程序一并纳入VSS进行管理,这样,VSS软件就能够完整管理整个项目的程序和文档的版本了。
本人已经利用VSS管理了好几个UNIX项目的程序和文档版本,从目前所了解的情况来看,这个版本管理方案是实用可行的,使用过的程序人员都感觉操作简单,容易上手,因此,你现在如果对管理UNIX项目的程序和文档版本感到比较困惑的话,不妨一试本文中推荐的方法,或许能帮你解决问题。