当前位置: 首页 > 工具软件 > TortoiseCVS > 使用案例 >

TortoiseCVS使用-2

鲁波光
2023-12-01

TortoiseCVS使用-2

观看(Watch)、编辑和反编辑(Unedit)
==================================
CVS也遵循大多数版本控制系统用的Lock/Unlock的语义,虽然CVS称它为Edit/Unedit。然而,预设上此特色在CVS里并没有被开启(enable),所以在你可以开始之前,你需要开启Watch的功能。
当你以勾选checkbox的Check files read-only(在Options标签上)的方式来建立一个新模块时,你可以使用TortoiseCVS来开启Watch的功能。如果你希望在既存的模块上启动watch功能,你会需要在模块的最上层执行下列的命令(使用Command Prompt):
cvs watch on
一旦Watch功能被开启,当你执行Checkout或Update时,作用中的档案会被建立成只读的。要改变一或多个档案,选择目录、档案或你想要修改的档案们,在其上按下鼠标右键,并选择CVS Edit选单项目。此命令根据档案是纯文字或是二元文件,其运作稍有不同。对于二元档(例如.doc),TortoiseCVS在档案上执行Update,然后检查是否另一个使用者已经在编辑那个档了。如果是这个情况,你不被允许去编辑它。对于纯文字文件而言(例如.txt或.cpp),即使已有另一个使用者已经在编辑它,你也可以在档案上工作;在这种情况下,TortoiseCVS会告知你这件事。
当你已经完成档案的编辑,存入(commit)它们就如同正常情况时。然而,如果你决定你不想要改变选择的档案:在所选的档案上按下鼠标右键,并且选择CVS → Unedit选单项目。TortoiseCVS会问你是否想要回复档案到原始的版本(因此会遗失你所变更之处)。
如果你想要看看哪一个档案正被编辑及被谁编辑,在Windows Explorer的任何地方按下鼠标右键并选择CVS → Show edited files选单项目。 
Tagging 和 Labeling
===================== 
在已知的发展阶段上,给予一个或多个档案共同的、指向它们修订版本的标签(label),这就是所谓的将这些档案贴标签(tagging)。Tagging一般用于整个模块,使得模块目前的状态可以在未来被重新建构。此种tagging应该总在项目待传送的部份(project deliverables)上被完成,并在开始主要的变动之前。
要用标签(label)来tag一个或多个档案或目录,选择那个目录、档案或你想要tag的档案们。在所选项目上按右键,然后选择CVS → Tag...选单项目。
然后你会看到Tag对话盒。在此你可以在Tag字段输入一个标签(label)。CVS对tag将包含的字符有相当的限制。一个tag必须以字母开头,且只可以包含字母,数字,「-(dash)」和「_ (底线)」。实际上,这代表没有句点(dot),且没有空白(space)。如果你想要在tag里引入版本号码,以「-」(dash)取代句点(dot)。有二个tag名称被保留,因为它们在CVS里有特殊的意义:「Head」代表在档案库(repository)中的最近可用版本,而「BASE」是你最后取出(check out)到本地目录的修订版本。
一旦输入了标签(label),按下OK钮。不像大多数CVS操作,tag立即套用于档案库(repository),且不需要存入(commit)。
若需更多的信息,请看建立快照:CVS Tag....(Making a Snapshot: CVS Tag....) 
回复到档案的较旧版本
====================
开发人员偶尔需要还原(undo)已经被存入(check in)的变更之处。在TortoiseCVS中返回到特定的档案修订版本很容易:
1. 在档案上按鼠标右键并选择CVS → History来带出History 对话盒。
2.在修订版本(revision)上按右键并选择「Save this revision as...」选项。
3.当Save As对话盒出现时,不要按下「Save」钮;取而代之地,在目录列出的文件名称上双击。
4. 当TortoiseCVS指示你覆写档案时,回答「Yes」。 
分枝和合并
==========
版本控制系统的一个特色是:隔离变动到「个别的开发动线」上的能力。此线是所谓的分枝(Branch)。
分枝(Branching)用来控制软件项目的生命周期的变动很有用。例如,假设你已经首次释出你的软件项目的第一版。你现在为了准备你的下一个主要释出版本2.0,开始增加新的特色。你发现到在你的初次释出版本和新的版本之间,软件有瑕疵(bug)。目前原始码的修订版本在变迁(flux)的状态,且预料至少一个月内无法达到稳定的状态,因此无法根据最新的原始码来做一个修正臭虫(bugfix)释出版本。
不要试着去对目前的版本,或是HEAD分枝(branch)做修正,取而代之地,你要对所有构成release 1.0的档案的修订树(revision trees)上建立分枝。然后你可以对分枝做修改而不需要扰乱head分枝。当修改完成时,你可以整合它们到head分枝,或是将它们留在release 1.0分枝上。 
建立分枝 
========
要建立分枝(branch),选择你想要分枝的档案或目录。在所选的项目上按鼠标右键,并从内容选单中选择CVS → Create Branch...。
然后你会看到Branch对话盒。在此你可以在Branch字段键入一个标签。名称限制的规则与套用到Tags上的一样,同样套用于Branches。一旦你已经键入想要的branch名称,按下OK。不像大部份的CVS操作,分枝(branch)立即套用到档案库上,且不需要存入(commit)。然而,分枝(branch)只套用于档案库上。要开始在新建立的分枝(branch)上工作,选择那个分枝(branch)来干活。 
选择分枝(branch)来干活
========================
要开始在分枝而非在预设的开发动在线干活,你必须系结(bind)你的本地端复本到分枝。这需要确认诸如更新(update)、存入(commit)等……动作可在分枝上、而非在主要开发动在线运作。
要移动你的本地端复本到另一个分枝(branch),选择项目最顶层的数据夹。如果你知道数据夹和档案的信息,你应该也可以选择想要的分枝的部份确切资料夹和档案。在所选项目上按鼠标右键,然后选择CVS → Update Special....。
然后你会看到特定更新对话盒(Update Special Dialog)。在此你可以在你希望选取的Get Tag/Branch/Revision字段键入分枝名称。按下OK钮,TortoiseCVS现在做必需的更新以移动你的工作复本到想要的分枝(branch)。根据分枝(branch)的状态,更新也可能包含新增或移除档案。
TortoiseCVS放置黏贴的标签(tag)到被分枝影响的档案上。要移除黏贴的标签(tag),你必须回到head分枝。

从分枝合并
==========
当你对你在分枝上已做的变动感到满意时,你可能想要那些在开发的head分枝上的变动能被用。整合一个分枝的变动到另一个分枝,是所谓的合并(merging)。
要从分枝(branch)合并,移动你的本地复本到你要想合并变动进去的分枝里。详见选择一个分枝来干活(Selecting a Branch to Work On)或回到Head分枝(Going Back to the Head Branch)。
然后你会看到合并窗口(Merge Dialog)。在此你可以在你希望合并的Branch to merge from字段键入分枝名称。按下OK钮,TortoiseCVS现在会合并特定分枝到你的本地复本。你的变动不会被套用于服务器档案库(repository)上,直到你存入(commit)你的变动。
前述的合并会试着去合并从分枝开始的变动。如果你第二次做此操作(合并「在最后一次合并后于分枝上」的变动),从分枝的开始合并不是你想要的,而且它最可能让你掉进麻烦里。为了避开此问题,你应该在每次合并后给分枝一个新的tag,并且在当命名分枝以备接下来的合并时,使用新的tag。
注意:上一段只应用到标准的Unix CVS(也就是cvshome.org CVS)。如果你的服务器执行CVSNT,你可以利用所谓「合并点(merge point)」的特性。这代表CVS持续追踪你最后一次的合并,使得你可以毫不费劲地从同一个分枝重复地合并。若需更多此特性的信息,参见the CVSNT Wiki page(注意CVSNT手册在此时点上尚未更新)。
回到Head分枝
============
如果你想要停止在分枝上工作,并且移动你的本地端复本回到主要开发动线,你必须让TortoiseCVS移除所有黏贴的标签(tags)。
为了移除黏贴tags,因此更新你的本地复本到主要开发动线,选择项目的顶层数据夹。如果你知道信息,你也可以就选择意欲分枝的部份资料夹和档案。在所选项目上按鼠标右键,然后选择CVS → Update Special....。
然后你会看到特定更新对话盒(Update Special Dialog)。选择Return to main (HEAD) branch核选盒(checkbox)并按下OK钮。TortoiseCVS现在会做必须的更新来将你工作中的复本移回到head分枝(branch)。 
二元和万国码侦测 
=================
TortoiseCVS试着去自动地侦测你正新增到CVS的档案类型。它可以侦测档案是否是Text/ASCII, Text/Unicode, 或Binary。TortoiseCVS首先检查档案的扩展名来决定档案是否是二元档(Binary)或纯文字文件(Text)。例如,.doc和.exe总是被预设是二元档,而其它的扩展名,例如.cpp和.txt总是被预设是纯文字文件。TortoiseCVS使用内建的、包含大部份常见档案扩展名的二元文件和纯文字扩展名的列表来做这件事。要自订此列表,你可以从TortoiseCVS的安装目录复制档案TortoiseCVS.FileTypes到你的HOME目录(译注:经与whiteg讨论,觉得指的应是如C:\Documents and Settings\jiing的目录,未实验^^|||),并且编辑它以符合你的需要。
预设上,TortoiseCVS也会检查档案的前4000 bytes来决定类型。这被用来在档案扩展名未知的情况。这前几个的bytes也被用来决定档案是Text/ASCII或Text/Unicode 。
TortoiseCVS也提供了复杂的外挂(plugin)机制,让你可以实作DLL来执行档案类型的侦测。详细的外挂(plugin)界面可在FileTypes.config里找到。
在所有的情况下,Add对话盒都会显示「你可能新增其的档案类型」的档案,使得你有机会去修正已做的选择。 
档案修订历史
============
TortoiseCVS提供二个回顾档案的历史和与其共同工作的方法。第一个是经由History对话盒。
History对话盒 
藉由选择档案并右击CVS → History,你可以看档案的历史。
History对话盒也显示对于所选的档案的修订、tags和分枝的纪录。藉由在特定修订版本、tag或分枝上按右键,它也提供你机会去找出差异(diff)及在本地端储存修订(save the revision locally),或是用黏贴tag来更新(update)(一个高阶的CVS概念;通常比较偏好用save选项来做黏贴更新(sticky update))。藉由在修订版本上按一下并输入到窗口底部的文字区块中,你也可以编辑任何目前或之前存入(commit)的讯息(记得在你移动到新的修订版本前,按下Apply)。

修订版本图形对话盒
==================
TortoiseCVS也提供一个修订版本图形对话盒来图形化地显示档案的历程给你看。你可以藉由选取它并按鼠标右键CVS → Revision Graph来看一个档案的修订版本图。
就像History对话盒,修订版本图形对话盒(Revision Graph Dialog)会让你看见在任何修订版本、tag或分枝(branch)上执行CVS的操作细节。
如果你的CVS服务器执行CVSNT,你也将能够看见哪个合并操作已经在档案上被执行:紫色的箭头从起点修订(source revision)被拉出到终点修订(destination revision)(详见合并点(Mergepoints))。
Web纪录 
=========
Web Log提供很多与History及修订图形(Revision Graph)对话盒相同的功能。一个重大的差异是Web Log不是TortoiseCVS本身的一部份,不过可能与被安装在你使用的CVS服务器上的特殊软件相依。二个提供Web Log功能的热门套件是ViewCVS和CVSweb──询问你的CVS管理者,如果这二者其中之一可用。
要看Web Log,你用网页浏览器来开启一个特定的URL。TortoiseCVS知道最常用来看Web Log的URLs,且在大部份的情况下自动地侦测正确的那一个[2]。如果你的组态设定是非标准的,第一次时你可能必须手动地键入URL──下一次TortoiseCVS会记得它。
你可以藉由选择一个档案或资料夹并且右击CVS → Web Log来观看其Web Log。如果TortoiseCVS不能侦测到URL,下面的对话盒会出现。
键入正确的URL并按下OK。如果Web Log服务器的URL已经变更,你可能必须告诉TortoiseCVS去再执行一次自动扫瞄。
对于自动URL侦测的细节,请见Web Log如何自动侦测服务器的URL(How Web Log Autodetects the Server URL)。

建立一个补缀档
通常你可能有CVS档案库或模块的读取权限,不过没有写入权限。开放原始码项目通常以此方式运作以对所有对项目的贡献维持质量管理。贡献变动到这些项目的最简单且最可靠的方式是去建立补缀档(Patch File)来呈送给它们。
在TortoiseCVS中,藉由选取你希望包含在补缀文件的数据夹或有变动的档案便可完成。在你所选项目上按鼠标右键,并从内容选单中选择CVS → Make Patch...。然后你会被一个Save对话盒提示去指出要储存你的补缀档到哪里。最后,TortoiseCVS会在笔记本(Notepad)里开启新的补缀档,在那里你可以验证你的变动。
有时候你的贡献包含了新增新档案,这些新档案尚未在CVS里。TortoiseCVS不能猜测说你想要这些档案被包含进补缀(patch)之中,不过在Save对话盒里你可以按下Browse钮来带出Add对话盒。在此你可以选择要包含在补缀(patch)之中的档案。

 类似资料: