TortoiSVN图⽂使⽤教程
1安装及下载client端
2什么是SVN(Subversion)?
3为甚么要⽤SVN?
4怎么样在Windows下⾯建⽴SVNRepository?
5建⽴⼀个Working⽬录
6新增档案及⽬录到Repository中
7更新档案及⽬录
8更新⾄特定版本
9复制档案及⽬录
10制作Tag或是Relea
11快速参考
11.1取得(Checkout)Repository
11.2更新(Update)档案或⽬录
11.3新增(Add)档案或⽬录
11.4提交(Commit)修改过的档案或⽬录
11.5Copy/Tag/Branch/Relea档案或⽬录
安装及下载client端
下载Windows端程序:/。⼀般⽽⾔,如果是32-bit的WindowsXP应该使⽤
这个档案。如果是64-bit的操作系统,则应该使⽤-
这个档案。执⾏下载回来的TortoiSVN安装程序,就会进⾏TortoiSVN的安装。正确安装后,应
该进⾏⼀次的重开机,以确保TortoiSVN的正确⽆误。安装成功后,在档案管理员内按下⿏标右键,应该可以看到如
下的画⾯:
⼤部分的TortoiSVN的操作都是透过档案管理员及⿏标右键就可以完成了。如果您之前使⽤过TortoiCVS,应该会对这种
操作⽅式感到⼗分亲切。
什么是SVN(Subversion)?
有⼀个简单但不⼗分精确⽐喻:
SVN=版本控制+备份服务器
简单的说,您可以把SVN当成您的备份服务器,更好的是,他可以帮您记住每次上传到这个服务器的档案内容。并且⾃动的
赋予每次的变更⼀个版本。
通常,我们称⽤来存放上传档案的地⽅就做Repository。⽤中⽂来说,有点像是档案仓库的意思。不过,通常我们还是使⽤
Repository这个名词。基本上,第⼀次我们需要有⼀个新增(add)档案的动作,将想要备份的档案放到Repository上⾯。⽇后,
当您有任何修改时,都可以上传到Repository上⾯,上传已经存在且修改过的档案就叫做commit,也就是提交修改给SVN
rver的意思。针对每次的commit,SVNrver都会赋予他⼀个新的版本。同时,也会把每次上传的时间记录下来。⽇后,
因为某些因素,如果您需要从Repository下载曾经提交的档案。您可以直接选择取得最新的版本,也可以取得任何⼀个之前的
版本。如果忘记了版本,还是可以靠记忆尝试取得某个⽇期的版本。
为甚么要⽤SVN?
备份⼯作档案是⼗分重要的。您永远不知道计算机上的硬盘何时会坏掉。根据经验法则再加上摩菲定理,坏事情往往都
发⽣在最重要的时刻。例如,要relea东西的前⼀刻,硬盘完全坏掉,⽆法修复。所以,常常备份⼯作数据是⾮常重要
的。⼤部分公司的rver都会有专门的备份机制,甚⾄是异地备援。绝对⽐放在⾃⼰的计算机⾥头,或是随⾝碟上⾯来
的安全。版本控管⾮常重要。您⽆法保证⼿头上最新版本永远都是对的。很多时候,在经过数天努⼒⼯作后,您才发现
⾛错⽅向。需要将所有的修改回复到数天前版本。没有⼏个⼈能够完全记住⾃⼰修改过什么东西。如果没有做好版本控
管,那么,最差的状况就是要全部重来。伙伴间的数据同步也是⾮常重要的。很多时候,除了您个⼈外,还有其它的伙
伴也需要您的档案。怎么把最新的档案提供给伙伴呢?⽤e-mail?根据经验,⽤e-mail是⼀个很差的办法。到了最后,根
本就不知道哪⼀封e-mail才是新的。因为可能您最新的e-mail已经被当成垃圾信给丢了。别忘了,现在很多e-mail软件都
有anti-spam的功能,说不定这些信件都被当成⼴告信给处理掉了。⽽且,您也应该知道⼀般档案如果放在e-mail内,档
案⼤⼩会变得⽐较⼤(通常是原来的4/3倍以上)。如果每天更新⼀次,恐怕⼏天没收信的话,信箱就爆了!如果没有
⼀个好的办法,备份不同版本是很耗费硬盘空间的。例如:您有⼀个总共10MB的⽬录,使⽤单纯的档案备份。如果有
10个版本就会变成100MB。20个版本就有200MB。如果,不想备份这么多版本,势必就是要减少备份的次数。拉长备
份周期将会导致数据遗失的危险性增⾼。把旧的不需要的备份删除?根据经验,只要时间⼀拉长,您跟本就不知道⼀个
⽉以前的版本是重要或者是不重要。
SVN能帮我们解决上⾯的问题吗?答案是肯定的:
SVNRepository可以是⾃⼰计算机上的⼀个⽬录,或者是随⾝碟(不建议这样⽤)。当然也可以是公司的服务器。
SVN有很棒的版本控管机制。所有上传的版本都会帮您记录下来。⽇后您可以随时取得某⼀个时刻的版本。⽽且,也有
版本分⽀及合并等好⽤的功能。SVN可以让不同的开发者存取同样的档案,并且利⽤SVNServer作为档案同步的机
制。也就是说,您有档案更新时,⽆须将档案寄给您的开发成员。只需要告诉他新的版本已经在SVNServer上⾯,请他
⾃⼰去SVNServer上⾯就可以取得最新版本。⽽且,SVNServer也可以做到当您上传新版本后,⾃动发信给相关的成
员。SVN的存放档案⽅式是采⽤差异备份的⽅式。也就是说,他只会备份有不同的地⽅。所以很省硬盘空间。此外,他
也可以针对所谓的⾮⽂字⽂件进⾏差异备份。
怎么样在Windows下⾯建⽴SVNRepository?
假设您已经安装前⾯所提及的TortoiSVN这套软件,现在我们先告诉您如何⽤⾃⼰的硬盘或是随⾝碟当作SVNRepository的
存放地点。如果您只想知道如何存取⼀个已经建⽴好的SVNServer上⾯的Repository,请直接跳过本节。
假设您的要放置Repository的地⽅是E槽。您需要先建⽴⼀个空的⽬录。以下⾯的例⼦⽽⾔,我们在E槽下⾯建⽴了⼀个名为
svn_repo的⽬录。SVN并没有限定Repository⽬录名称。您可以建⽴任何您⾃⼰喜欢的名称。但是,强烈建议勿使⽤⾮英⽂
的档名(如中⽂或⽇⽂)。
透过您的档案管理员,在E:svn_repo的Icon上⾯,按下⿏标右键后,选择TortoiSVN->Createrepositoryhere。
接着,您会看到如下的⼀个窗⼝,这个窗⼝主要是问您,您希望使⽤的Repository数据库格式是FSFS还是BDB。基本上,请
选择FSFS就可以了。按下OK按钮后,您将可以看到下⼀个画⾯。
这就表⽰您的SVNrepository已经成功的建⽴了。接下来就是要把您的档案备份进来。⽇后,只要需要使⽤这个repository,
我们就可以使⽤file:///E:/SVN_REPO表⽰它。SVN就是透过这种URL的⽅式到如何与Repository取得联系。各种URL的格式
如下:
其中,http表⽰使⽤⼀般的超⽂字传输通讯协议。https表⽰使⽤加密的超⽂字传输通讯协议。svn+ssh表⽰透过SSH加密通讯
的管道,进⾏存取。
建⽴⼀个Working⽬录
所谓的Working⽬录其实就是您平常⽤来存放⼯作档案的地⽅。通常我们会等到⾃⼰的⼯作做的⼀个段落的时候再进⾏备份。
所以我们平常都是在Working⽬录下⾯⼯作,等到适当时机在commit到repository中。举例来说,我们想在D槽下⾯建⽴⼀个名
为working的⽬录。⾸先先把这个⽬录建⽴出来。
此时,这个⽬录应该为空的。
在档案管理员中按下右键后(您可以在working⽬录的icon上按,也可进⼊working⽬录后,在空⽩的地⽅按),选择SVN
checkout。
接着您可以看到如下的画⾯:
⾸先我们要填⼊的是repository的位置,对于SVN来说,repository的位置都是URL。由于我们前⾯已经在E槽建⽴⼀个
repository,因此,我们现在要在URLofrepository这⼀栏填⼊file:///E:/svn_repo/。
接着,稍微看⼀下Checkoutdirectory,这个字段应该要指向您的working⽬录。确认后,按下OK按钮,您应该可以看到如下
的讯息窗⼝。
这样就表⽰动作完成。按下OK按钮后,再到您刚刚建⽴的⽬录下。您将会看到working⽬录下⾯多了⼀个名为.svn的⽬录(这
个⽬录是隐藏的,如果您的档案管理员没有设定可以看到隐藏⽬录,您将⽆法看到它)。
SVN会在您的⼯作⽬录下,以及其⼦⽬录下建⽴这个.svn的⼦⽬录。您不应该进去这个⽬录,尤其不应该更动这个⽬录下⾯的
任何内容。否则会很可能会造成SVN⽆法正常运作。
由于,原来的repository是空的,所以我们现在的working⽬录也是空的。如果您现在checkout的是⼀个已经有内容的
repository,您将会看到working⽬录下⾯现在多了许多⽬录及档案。
如果您要在⼀个已经存在的SVNServer上⾯checkout出上⾯的档案,您只需要给定正确的URL以及working⽬录的名称。就可
以取得指定的档案及⽬录了。
新增档案及⽬录到Repository中
假设您前⾯的动作都⽆误。现在您开始开发⼀个新的程序。假设您开发的程序将放在前⾯建⽴的working⽬录下⾯的my_prj⼦
⽬录。如下所⽰:
假设您已经编辑好档案,准备把他们放到SVN的repository中。您需要在my_prj⽬录的icon上⾯,按⿏标右键,并且选择
TortoiSVN->Add:
接着,TortoiSVN会把准备要加⼊的档案及⽬录,显⽰给您看。打勾的就是等下要被加⼊到Repository中的。如果您有某些
档案或是⽬录不想在这次加⼊,您可以让该项⽬不要被勾选。如此,它就不会被加⼊到Repository去。
按下OK后,您将会看到如下的讯息窗⼝:
这样就表⽰成功了。有⼀点要注意的是,这个Add的动作并未真正的将档案放到Repository中。仅仅是告知SVN准备要在
Repository中放⼊这些档案。此时,如果您透过档案管理员查看这些档案,应该会看到⼀个⽩⾊红底的惊叹号在档案icon的下
⽅。
这是表⽰您的working⽬录中的档案与Repository中的档案还没有同步。现在我们要多⼀个commit的动作。让这些档案真正的
放⼊到Repository中。您可以在my_prj⽬录的icon上或者是my_prj⽬录内的空⽩处按下⿏标右键,叫出如下的选单,并且选择
SVNcommit。
紧接着,您将会看到如下的窗⼝出现:
在这个窗⼝中,下半部会列出⼀个清单,让您清楚的了解到哪些档案要被commit到repository中。同样的,如果您有档案不想
在这个时候commit到Repository,您可以取消选取的档案,这样他们就不会被commit到Repository中。
在档案列表的上⽅是Message栏,您可以在栏中输⼊本次commit的⽬的。这是⼗分重要的字段,当您commit的次数很多时,
可以靠这个讯息知道版本与版本之间的差异。当您输⼊好Message,按下OK之后,就可以看到如下的窗⼝出现,通知您已经
将指定的档案送到Repository中。
您可以到先前的folder中,确定是否所有的档案icon都有如下的绿⾊勾勾在上⾯,这样代表您的档案都正确⽆误的到repository
中。
有时候,因为Windows本⾝的问题,您可能会看到有些icon没有变成绿⾊的勾勾。此时,多按F5⼏次,应该就可以解决这个
问题。如果,仍然不⾏,表⽰您之前的commit动作真的有问题。请仔细检查之前的commit动作是否正确。
更新档案及⽬录
为何需要更新?由于版本控制系统多半都是由许多⼈共同使⽤。所以,同样的档案可能还有⼈会去进⾏编辑。为了确保您⼯作
⽬录中的档案与Repository中的档案是同步的。建议您在编辑前都先进⾏更新的动作。在此,我们都先假设您已经将档案
checkout过⼀次。现在要说明的是如何在⼀个checkout过的⽬录进⾏update。在想要更新的档案或⽬录icon上⾯按下⿏标右
键。并且选择SVNUpdate。
正常的状况下,您可以看到如上的窗⼝。在这个窗⼝中会显⽰有哪些⽂件更新了。如果没有看到档案更新的相关信息,这表⽰
您的⽬录中的档案已经是最新的,所以⽆须进⾏更新。
更新⾄特定版本
有时我们需要回溯⾄特定的⽇期或是版本,这时就可以利⽤SVN的Updatetorevision的功能。在想要更新的档案或⽬录icon
上⾯按下⿏标右键。并且选择TortoiSVN->Updatetorevision。
在这个Update窗⼝中,您可以选择更新到最新版本(HEAD)。也可以选择更新到某个指定的版本(Revision)。当然,您可能早
就记不起来正确的版本号码。可能只隐约的记得⼤概在什么时间。没关系,按下Showlog按钮,您就可以回顾历史了。
所有您曾经做过的动作,及其⽇期与对应的版本都会列在这个窗⼝上⾯,只要在你想要的版上⾯点⼀下,让他变成反⽩,然后
按下OK。这个版本就会⾃动填⼊Update窗⼝中的Revision字段中。您只要再按下⼀次OK,这个版本就会被取出来到您的硬
盘中。
复制档案及⽬录
很多时候您会希望有另外⼀个复制的⽬录来进⾏新的编修。等到确定这个分⽀的修改已经完毕了,再合并到原来的主要开发版
本上。举例来说,我们⽬前在workingcopy下⾯有如下的⽬录及档案:
现在,我们要为trunk这个⽬录建⽴⼀个branch。假设我们希望这个⽬录是在
D:workingmy_prjbranchmy_new_branch_for_testing。⾸先我们可以在trunk⽬录下⾯的空⽩处,或是直接在trunk的icon下
⾯按下⿏标右键。
在选择Branch/Tag…这个项⽬后,您将会看到如下的对话框出现。
请先确认FromWCatURL:中的⽬录是您要复制的来源⽬录。接着,在ToURL中输⼊您要复制过去的路径。通常我们会将所
有的branch集中在⼀个⽬录下⾯。以上⾯的例⼦来说,branch档案都会集中在branch的⼦⽬录下⾯。在ToURL中您只需要输
⼊您要的⽬录即可。⽬录不存在时,会由SVN帮您建⽴。特别需要注意的是SVN因为斜线作为⽬录分隔字符,⽽⾮反斜线。
接着在Logmessage输⼊您此次branch的⽬的为何。按下OK就可以了。
如果成功,将可以看到下⾯的画⾯:
按下OK就可以关闭这个窗⼝了。如果您此时⽴刻去workingcopy的branch⼦⽬录下⾯,您将会失望的发现在该⽬录下⾯并没
有刚刚指定的⽬录存在。这是因为您workingcopy的部份还是旧的,您只需要在branch⼦⽬录下⾯进⾏SVNupdate就可以看
到这个新增的⽬录了。新增的⽬录就与原来的⽬录⽆关了。您可以任意对他进⾏编辑,⼀直到您确认好所有在branch下⾯该
做的⼯作都完成后,您可以选择将这个branchmerge回原来的trunk⽬录,或者是保留它在branch中。
要merge回trunk⽬录中,⽅法很简单。以上⾯的例⼦来说,我们在D:workingmy_prjtrunk⽬录空⽩处,按下⿏标右键,选择
Merge:
接着可以看到如下的画⾯:
这个画⾯主要分为三个部份,前⾯的From:与To:是要问您打算从Branch中的哪个版本到哪个版本,merge回原来的trunk⽬录
中。因此,From跟To的URL字段应当都是指定原来branch的⽬录下。剩下的就是指定要merge的revision范围。以上⾯的例⼦
⽽⾔,我们从Branch的Revision7开始merge到Branch下⾯的最新版本。您可以透过,Dryrun按钮,试作⼀次Merge。这个
merge只会显⽰⼀些讯息,不会真正的更新到trunk的⽬录去。只有按下Merge按钮后,才会真正的将branch的档案与trunk的
档案合并起来。
上⾯的讯息告诉我们在trunk⽬录下⾯的及已经被更改过了。如果您在现在到trunk⽬录下,会看到这两个档
案处于被修改的状态。
如果您确认这次的merge没有问题,您可以直接使⽤commit来将这两个被修改的档案commit回SVNrepository上。如果有问
题,您可以直接修改这两个档案,直到确认ok了,再⾏commit。
⼀切顺利的话,您就成功的将branch的档案merge回trunk了。
制作Tag或是Relea
所谓的Tag或是Relea就是⼀个特别的版本,因为这个版本可能有特别的意义。例如:这个版本是特别的Milestone或是
relea给客户的版本。其实,Tag与Relea的作法与Branch完全相同。只是Branch可能会需要merge回原来的trunk中,⽽
tag及relea⼤部分都不需要merge回trunk中。举例来说,今天我们的trunk做了⼀版,这个版本被认定是软件的1.0版。1.0版
对于开发来说是⼀个⾮常重要的⾥程碑。所以我们要特别为他做⼀个标记,亦即Tag。假设,这个1.0版是要正式relea给客
户或是相关vendor,我们要可以为他做⼀个Relea的标记。基本上,SVN只有⽬录的概念,并没有什么Tag的⽤法。所以您
会看到再SVN的选单上⾯,Branch与Tag是同⼀个项⽬。以这个1.0的例⼦来说,我们就是在Trunk上⾯,按下⿏标右键,选择
Branch/Tag的项⽬:
成功的话,您就在Tag⽬录下⾯建⽴了⼀个1.0的⽬录。当然,如果您这时到Tag的⽬录下⾯去,会看不到这个⽬录,您需要在
Tag⽬录下⾯update⼀下,才能看到它。
制作Relea的作法与Tag完全相同。只是把Tag的⽬录换成Relea⽽已。
看到这⾥,相信⼤家都已经领悟到⽆论是Branch,Tag或是Relea都只是将指定的Trunk版本复制⼀份到另外⼀个⽬录去。
⾄于这个⽬录要叫Branch还是叫Relea,SVN根本就不管。所以,您也可取其它的⽬录名称。不过,Branch,Tag及
Relea已经是SVN上⾯约定成俗的名称。所以,除⾮您知道⾃⼰为何这样做,否则,最好还是follow这个命名原则,以免后
⾯新加⼊的⼈看不懂。
NOTE:同样的道理Trunk也只是⼀个约定成俗的名称。不⼀定要叫Trunk。只是⼤家看到Trunk⽬录就会知道这⾥⾯放的是主
要的开发主⼲。
快速参考
前⾯写了不少废话,主要是给完全没有版本控制观念的⼈看的。如果你想直接知道某个功能如何使⽤,请看下⾯的章节。
在后⾯的说明,皆以d:working当作⼯作⽬录。您可以将他换成其它任何您想要的⽬录。
取得(Checkout)Repository
开启档案管理员,进⼊d:在档案管理员空⽩处按下⿏标右键,选择SVNCheckout在Checkout对话框中,
URLofrepository:repository的位置。Checkoutdirectory:要存放workingcopy的地⽅。
若d:working⽬录不存在,SVN会问您要不要建⽴这个⽬录,请选择Yes。接着按下OK,即可checkout该⽬录。
更新(Update)档案或⽬录
在您要由repository更新⾄workingcopy的档案或是⽬录的icon上⾯按下⿏标右键。选择SVNUpdate即可。如果是要更
新⾄特定的版本,则选择TortoiSVN->Updatetorevision。并且在Update对话框中的Revision字段输⼊您要的版本。
也可以透过ShowLog按钮来查看版本的信息。
新增(Add)档案或⽬录
在尚不属于repository的档案或⽬录的icon上按下⿏标右键。选择TortoiSVN->Add。选取要新增的档案。按下OK。
NOTE:新增的档案要经过提交(Commit)的动作才回真正的放⼊Repository中。
提交(Commit)修改过的档案或⽬录
在修改过的档案,或是在整个⽬录的空⽩处按下⿏标右键。勾选真正要提交⾄Repository的档案或⽬录。输⼊本次提交
的纪录讯息(Message)。这个讯息应该要清楚明了,但不应过份简单。以利⽇后版本追踪。按下OK。
Copy/Tag/Branch/Relea档案或⽬录
确认您要处理的档案或是⽬录已经是Repository中最新的版本。在要处理的⽬录或是档案上⾯按下⿏标右键,选择
TortoiSVN->Branch/Tag。在ToURL处输⼊您要的⽬的地。
branch:要产⽣⼀个分⽀。以区别与trunk不同的开发。tag:要形成⼀个标记,表⽰重要的milestone。relea:
表⽰⼀个已经正式的relea的纪录。其它:进⾏⼀个复制(copy)。
本文发布于:2022-12-28 12:39:36,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/46679.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |