Borland TeamSource在小组开发中的运用
在小组开发中,版本控制及程序备份是一项很重要的工作,如果没有作好版本控制,小组间的协调配合就会受到影响,进而影响整个项目的开发进度,所以版本控制及程序备份工作在项目开发中有非常重要的作用。
Borland TeamSource是著名开发工具供应商Borland公司的产品,它虽然没有Borland的其它产品那样受到业界的好评,但它对于利用Borland的Delphi及C++ Builder进行项目开发的小型开发团队进行版本控制及程序备份是十分方便的,它可以工作在工作组或域工作环境下,且可直接集成到Borland的Delphi及C++ Builder的IDE中,下面我就谈谈Borland TeamSource在小组开发中如何使用(以Delphi为开发环境,Borland TeamSource 6.0为标准)。
一、基本概念:
本地计算机----小组成员开发机器(必须要对版本控制主机存放TeamSource工程文件的目录有读写权限)
版本控制主机----存放TeamSource工程文件的计算机
本地目录----小组成员开发机器中存放项目文件的目录
远程目录----版本控制主机存放TeamSource工程文件的目录,这个目录小组成员必须有读写权限
Chcek in----把小组成员开发机器上修改了的文件上传到版本控制主机的远程目录
Copy----把版本控制主机上的远程目录中最新版本的文件更新本地目录中对应的文件
二、使用
1、 项目组成员(最好是项目组的Leader)在Delphi中建立一个新的Project,打开Project的工程选项,选择Version Info页,把Include Version information in Project打上勾,然后再设置好版本信息,再把Auto-Increment builde number也打上勾(这样做的好处是以后小组成员每修改了一次工程中的文件,文件版本都会自动增加,有利于以后的文件比较),如图1所示。退出工程选项设置并保存整个项目。
图1
2、 在Delphi IDE中选择Tools—TeamSource打开TeamSource,如果你的TeamSource之前已创建过工程,则它会把原来有的工程列出来以供你选择打开,否则进入TeamSource主界面,如图2,现在没有任何工程被打开,所以Local Directory右边的下拉框及其右边的Edit按钮都是无效的,从图中可以看到它的左边有四个标题分别为Info、History、Remote、Local按钮,右边为点击四个按钮所对应的页面(没有工程打开是看不到Info以外的其它页面的),下边则为项目组成员对工程所作的锁定列表。
图2
现在从File菜单中选择New Project,进入到New Project画面,如图3:
图3
因为原来没有创建过TeamSource工程,我们选择TeamSource提供给我们的默认选项:Create new project from scratch,选择OK,进入下一个画面,输入工程名称及工程文件名(注意不用输入路径信息和扩展文件名),因为Borland公司只为TeamSource提供了一个文件版本控制器,所以文件版本控制器不用选择,如图4所示:
图4
在上图中点击Next按纽,进入创建工程的第二步,在这一步中输入存放TeamSource工程的共享计算机目录,我们选择一个项目组成员都有权限读写的目录,如图5:
图5
点击Next按纽,进入创建工程的第三步,在这一步中我们可以改变存放工程相关文件的目录,Archives Directory为存放TeamSource工程相关文件及Delphi工程文件的目录;History file Directory为存放项目组成员上传Delphi工程文件的文件列表内容的目录,通过这个目录可以查询到项目组成员每天上传Delphi工程文件的的时间及文件列表,这个目录的文件以CI开头后加日期再加当天上传的次数作为文件名,用户名作为扩展名;Lock file directory则存放每个项目组成员锁定TeamSource工程的记录。用户可以修改这三个目录名称及路径,但必须记住所输入的目录必须是项目组成员都能读写的,否则项目组成员访问TeamSource工程时会出现错误。一般情况下我们按系统的默认名称,这样的话比较方便TeamSource工程的文件管理,如图6
图6
点击Next按纽,进入创建工程的第四步,在这里你可以指定一个镜像目录,镜像目录是用来存储最新的Delphi工程文件的副本的地方,如图7
图7
我们把它图7中的Enable Mirror tree及Mark Mirror files as Read_Only打勾,按Next进入图8所示的创建工程的第六步,在这里输入存放主概要文件(summary.txt)及日志文件(ogs.txt)存放的目录及文件名,主概要文件用来记录项目组成员上传Delphi工程文件的具体时间及用户名,而日主志文件则用来记录项目组成员对TeamSource工程所作的操作记录,包括删除和上传Delphi工程文件的具体时间、用户名及用户名对应的用户上传文件的详细列表;SMTP Server则用来输入SMTP Server的地址,这样如果项目组成员对某个文件作了修改并上传了的话,TeamSource会将主概要文件、日志文件以及已修改文件列表以Email的形式通知小组中的其他成员,如果输入了SMTP Server的地址,则点Next会进入到第六步,否则直接进入到第七步,我们现在让它空着,点击Next,进入图9,图9是对用户刚才所作的操作的总结,在这里你如果对前面的操作不满意可以按Previous按钮进行修改。
图8
图9
在图9中按Finish,则我们的第一个TeamSource工程就快完成了,点了Finish之后系统会弹出一个让你指定存放TeamSource工程文件的的本地目录,指定了这个目录之后,在这个目录中会产生tsl 及tsr文件,对应现在这个测试用例工程则是TestTSPrj.tsl和TestTSPrj.tsr,tsl文件记录本地目录中Delphi工程中每个文件的名称、每个文件所在的目录位置以及文件的最后同步日期及时间、文件的最后同步版本信息;tsr文件则是描述远程目录中Delphi工程文件的每一个文件及其最新版本信息的文件,TeamSource为了效率的原因(如有些项目团队要通过Modem上网来互通文件修改的信息)而把远程的Delphi工程文件信息缓存到本地目录中,其实它在远程目录中也是有一份的。我们千万不要把这两个文件删除掉,因为这两个文件是TeamSource作文件比较时要用到的,没有它们就没有办法进行比较了,而且TeamSource在用户每次作了文件上传或Copy或Delete的操作都会更新这两个文件。
现在继续指定存放tsl 及tsr文件的本地目录的操作,在图10中选择Yes, 进入图11所示的画面,
图10
图11
按下Add按钮,然后输入或选择一个本地目录按OK回到Edit Directory List界面,如图12所示
图12
在图12中按OK,弹出图13所示的对话框,它是询问用户是否要对Delphi工程的内容进行设置,选择Yes,进入Local Directory Wizard,这个向导的目的是让用户设置TeamSource工程包含的目录及文件类型,把Root展开,如图14所示
图13
图14
选中Root目录,在File Mask编辑框中输入*.cfg;*.dof;*.dpr;*.res,再选中SCR目录,在File Mask编辑框中输入*.dfm;*.pas;*.ddp;*.res,接着选中Dcu目录,按Delete Directory按钮把它删除掉,因为我们不需要把DCU文件上传到远程目录上,最后选择Report,输入你的报表文件的类型。按OK,则第一个TeamSource工程就完成了。现在已返回到TeamSource主画面,现在如果点选左边有四个标题分别为Info、History、Remote、Local按钮,则会出现不同的的内容,Info页面显示TeamSource工程的信息;History页面显示项目组成员对TeamSource工程所作的操作记录及记录的详细内容;Remote页面显示远程计算机中Delphi工程的文件目录及其最新版本的文件列表;Local页面则分两部份显示,左边为TeamSource建议用户要从远程目录中Copy或被别的项目组成员修改过的文件列表,而右边则为本地目录需要Check In到远程目录的文件列表。
3、 TeamSource工程用户管理:
3.1 要添加或删除用户,你必须是工程系统管理员才可以,首先必须对工程进行锁定。现在我是工程创建者当然也是系统管理员,在主菜单中选择Project—Request Lock,出现申请加锁对话框,如图15,在Lock Comment中输入加锁的目的以便让项目组成员了解你加锁的目的,输好了之后按OK回到主画面。
图16
3.2 在主菜单中选择Project—Options,进入Preject Options画面,并选择User页,如图17:
图17
3.3 选择Add User,在User Information中输入Username并把访问权限设为Read/Write(Can Check In),一般情况下不设User的访问权限为Read-Only(cannot modify project),因为一般来说项目组成员都应设为有读写权限的,少数情况才需要。另外在图17中有一个Allow Guest access to this project的选项,这个选项的意思是没有经过授权的用户也可以以Read-Only的权限访问这个工程。在图17中,用户还可以修改工程的目录(History、Lock目录和镜像目录)选项(Directories页),还可以修改SMTP Server的地址、summary.txt和 Logs.txt以及已修改文件列表要发送的Email地址列表(Publishing页),设置完用户及其权限之后按OK,回到主画面。完用户权限设置好之后,小组其他成员就可以访问TeamSource工程了。
4、 小组开发成员如何使用刚才创建的TeamSource工程?
打开TeamSource并建立一个新工程,但这次建立的方式是选择Import a existing project,把前面建立在远程计算机上的工程文件(.CPJ)导入,然后选择存放Delphi工程文件的本地目录,再选择存放tsl 及tsr文件的本地目录,完成之后点选主画面中的Local页面,系统会提示你本地目录缺少前面创建的Delphi工程的文件目录,是否要创建,选择YES,因为如果不选择YES的话你的本地目录就不会有Delphi工程的文件目录及相关文件,而每次选择主画面中的Local页面,系统都会弹出这样的提示。点了YES之后系统的Local页面应类似图18,这时如果你用户权限是Read/Write(Can Check In),则你可以把左边系统建议你Copy到本地目录的文件全部选择然后点DO it按钮或双击鼠标左键或者不用选择而是选择菜单上的Project—Pull to your local directory(你刚才所选的存放Delphi工程的本地目录)再点OK,这样在你的本地目录就建立起前面TeamSource创建者创建的Delphi工程了。
图18
5、 项目组成员修改了的文件如何Check In到远程目录让其它成员能够看到他所作的改动?
如果你修改了Delphi工程中的文件,而这个文件的类型又是TeamSource工程中对应的目录下的文件类型的话,当你打开TeamSource时,在图18的右边文件列表中就会列出需要Check In 到远程目录的文件,同时左边会列出项目组其他成员Check In到远程目录且你的本地目录没有同步的文件。在Check In之前,你可以查看文件内容的改变情况,方法是在图18的右边文件列表中选中一个文件单击鼠标右键,从弹出菜单中选择View Local Changes,TeackSource会以黄色标示文件被修改了的地方,如图19,在图19的Change Comments则可以输入修改内容的注释(从弹出菜单中选择Edit File Comment也可以给文件添加注释达到相同的效果)
图19
同样,在Copy之前也查看远程目录的文件被修改的情况,图20是远程文件的修改视图,从图中可以看到,用黄色标示的行前面是有一个“+”号的,它表示是新加的内容,而用红色标示的一行前面有一个“-”,则是被黄色标示的内容所替代的原来的内容。
图20
在Check in的时候系统会要求你申请一个锁,你申请一个锁并加上注释选择OK则你所选择的文件就可Check in到远程目录了。
在你Check In某个文件前有别的小组成员已把同一个文件Check In了,这时候该怎么办?方法是把本地的改变了的代码先备份出来,然后在图18中把这个文件选中再单鼠标右键,在弹出对话框中选择Change File Status,然后再选择Copy(Reomte->Local)再点OK,如图21,再把这个文件Copy到本地目录,再把刚才备份出来的内容补回去然后再Check In到远程目录,别的成员就可看到你所作的修改了。当然也可以在左边选中都文件,然后单鼠标右键,在弹出对话框中选择Change File Status再选Merge,不eamSource的版本控制器不支持自动合并。
图21
图21中其它选项解析:
Check In(Local-Remote) 忽略远程目录中文件的修改,把文件状态改为从本地目录Check In到远程目录;
Delete(from Local) 把所选择的文件从本地目录中删除掉;
Merge 把远程目录中的对应文件同所选择的文件内容进行合并,不过TeamSource的版本控制器不支持自动合并,所以不能执行合并的操作,只有手工进行合并;
Remove(from project) 把所选择的文件从工程中删除掉,这样的话如果按了OK这个文件会自动被放到Local视图的右边。
这些选项都只是改变文件的状态,真正的操作要执行了相应的Action之后才会生效。
6、 Remote页面:
图22
从图22中可以看到,Remote 页面分为三个部份,左边显示远程目录中的Delphi工程相对应的目录,右边显示当前所选目录的文件列表,最下边的是Lock List,显示了各个用户对文件加锁的情况。
如果你是有Read/Write(Can Check In)权限的用户,可以在没有其它用户锁定文件的情况下申请一个锁,然后修改添加或删除目录,或者修改所选目录的属性。在图22的左边工程目录树中点击鼠标右键就会弹出如图23所示的菜单,选择Add系统会要求你输入一个目录名称,添加的目录被添加到当前所选目录的下一级目录中;选择Delete则会问你是否要删除当前所选目录,如果当前所选目录包含有子目录,则删除时会把子目录一并删除掉,操作时要小心;选择Properties则可对当前所选目录的属性进行编辑,如图23,在目录属性编辑对话框中可以输入目录可包含的文件类型及被排除的文件类型,还可定义用别的文件类型产生的文件类型作为包含在目录下面的文件类型,例如你可能在Includes编辑框中添加了*.Res,而Res文件有可能是能过RC文件编译而来,也有可能是用一些资源编辑器用别的文件类型经编译后得来,如果你只想这个目录只包含由RC文件编译而来的Res文件,则你可添加.rc->.res;。
图22的右边单击鼠标右键则会弹出如图24所示的菜单(注意,如果你不是工程系统管理员,则最后两项菜单项不会出现)。选择View Tip Revision可以查看当前所选文件最新版本的内容,选择View Any Revision则可以选择查看当前所选文件任一版本的内容;而Save Revision As 则可以把当前所选文件保存回任一版本;Remove from project可以把当前所选文件从工程中把它删除掉;View Archive Report则可以查看文件的修改记录;Compare Revisions可以让你轻松的比较现个不同版的文件修改内容;Set Revison Number(只有系统管理管理员才有的操作)则可以让你个性当前文件的版本,它的效果同Save Revision As一样;Fix Tip Revisions(只有系统管理管理员才有的操作),只有当TeamSource中的archive目录中的最新版本的文件与TeamSource的不相同时才执行这个操作,它用来修正两个版之间的不同之处。
图24
7、 History页面:
图25
从图25中可以看到,History页面也分为三个部份,左边显示项目组成员Check In文件的日志,右边显示当前所选日志的具体内容,最下边的是Lock List,显示了各个用户对文件加锁的情况。在左边选中一个文件点鼠标右键会弹出一个只有Export菜单项的菜单,选择它可以把当前的日志输出到文件。
8、 一些其它事项:主菜单中的Options—Preferences,如果点选了这个菜单,则可设置当前用户的 信息、文件处理选项,文件浏览器等。
这是一个用TeamSource来管理Delphi的工程文件进行解说的,其实用C++ Builder过程也是一样的,只不过把相关的文件类型改为C++ Builder的文件类型就可以了,其实TeamSource提供了较为详改尽的帮助,掌握难度并不大,只要在使用的过程中注意不贸然操作,看清楚提示之后再执行相关的动作,再结合帮助中的说明就可以很好的做好文件版本控制及备份工作了。