TortoiseSVN 图文使用教程

一、安装及下载client 端

安装成功后,在档案管理员内按下鼠标右键,应该可以看到如下的画面:

TortoiseSVN 图文使用教程_第1张图片

假设您的要放置Repository的地方是E槽。您需要先建立一个空的目录。以下面的例子而言,我们在E槽下面建立了一个名为svn_repo的目录。SVN并没有限定Repository目录名称。您可以建立任何您自己喜欢的名称。但是,强烈建议勿使用非英文的档名(如中文或日文)。

TortoiseSVN 图文使用教程_第2张图片

透过您的档案管理员,在E:/svn_repo的Icon上面,按下鼠标右键后,选择TortoiseSVN->Create repository here。

TortoiseSVN 图文使用教程_第3张图片

接着,您会看到如下的一个窗口,这个窗口主要是问您,您希望使用的Repository数据库格式是FSFS还是BDB。基本上,请选择FSFS就可以了。按下OK按钮后,您将可以看到下一个画面。


这就表示您的SVN repository已经成功的建立了。接下来就是要把您的档案备份进来。日后,只要需要使用这个repository,我们就可以使用file:///E:/SVN_REPO表示它。SVN就是透过这种URL的方式到如何与Repository取得联系。各种URL的格式如下:

file:///磁盘驱动器|/repository所在目录/子目录http://账号@服务器名称/ repository所在目录/子目录https://账号@服务器名称/ repository所在目录/子目录svn+ssh://账号@服务器名称/ repository所在目录/子目录

其中,http表示使用一般的超文字传输通讯协议。https表示使用加密的超文字传输通讯协议。svn+ssh表示透过SSH加密通讯的管道,进行存取。

2. 建立一个Working目录


所谓的Working目录其实就是您平常用来存放工作档案的地方。通常我们会等到自己的工作做的一个段落的时候再进行备份。所以我们平常都是在Working目录下面工作,等到适当时机在commit到repository中。举例来说,我们想在D槽下面建立一个名为working的目录。首先先把这个目录建立出来。

TortoiseSVN 图文使用教程_第4张图片

此时,这个目录应该为空的。

在档案管理员中按下右键后(您可以在working目录的icon上按,也可进入working目录后,在空白的地方按),选择SVN checkout。


接着您可以看到如下的画面:

TortoiseSVN 图文使用教程_第5张图片

首先我们要填入的是repository的位置,对于SVN来说,repository的位置都是URL。由于我们前面已经在E槽建立一个repository,因此,我们现在要在URL of repository这一栏填入file:///E:/svn_repo/。

接着,稍微看一下Checkout directory,这个字段应该要指向您的working目录。确认后,按下OK按钮,您应该可以看到如下的讯息窗口。

TortoiseSVN 图文使用教程_第6张图片

这样就表示动作完成。按下OK按钮后,再到您刚刚建立的目录下。您将会看到working目录下面多了一个名为.svn的目录(这个目录是隐藏的,如果您的档案管理员没有设定可以看到隐藏目录,您将无法看到它) 。


SVN会在您的工作目录下,以及其子目录下建立这个.svn的子目录。您不应该进去这个目录,尤其不应该更动这个目录下面的任何内容。否则会很可能会造成SVN无法正常运作。

由于,原来的repository是空的,所以我们现在的working目录也是空的。如果您现在checkout的是一个已经有内容的repository,您将会看到working目录下面现在多了许多目录及档案。

如果您要在一个已经存在的SVN Server上面checkout出上面的档案,您只需要给定正确的URL以及working目录的名称。就可以取得指定的档案及目录了。

新增档案及目录到Repository中

假设您前面的动作都无误。现在您开始开发一个新的程序。假设您开发的程序将放在前面建立的working目录下面的my_ prj子目录。如下所示:

TortoiseSVN 图文使用教程_第7张图片
TortoiseSVN 图文使用教程_第8张图片

假设您已经编辑好档案,准备把他们放到SVN的repository中。您需要在my_prj目录的icon上面,按鼠标右键,并且选择TortoiseSVN->Add:


接着,TortoiseSVN会把准备要加入的档案及目录,显示给您看。打勾的就是等下要被加入到Repository中的。如果您有某些档案或是目录不想在这次加入,您可以让该项目不要被勾选。如此,它就不会被加入到Repository去。

TortoiseSVN 图文使用教程_第9张图片

按下OK后,您将会看到如下的讯息窗口:


这样就表示成功了。有一点要注意的是,这个Add的动作并未真正的将档案放到Repository中。仅仅是告知SVN准备要在Repository中放入这些档案。此时,如果您透过档案管理员查看这些档案,应该会看到一个白色红底的惊叹号在档案icon的下方。

TortoiseSVN 图文使用教程_第10张图片

这是表示您的working目录中的档案与Repository中的档案还没有同步。现在我们要多一个commit的动作。让这些档案真正的放入到Repository中。您可以在my_prj目录的icon上或者是my_prj目录内的空白处按下鼠标右键,叫出如下的选单,并且选择SVN commit。

TortoiseSVN 图文使用教程_第11张图片

紧接着,您将会看到如下的窗口出现:

TortoiseSVN 图文使用教程_第12张图片

在这个窗口中,下半部会列出一个清单,让您清楚的了解到哪些档案要被commit到repository中。同样的,如果您有档案不想在这个时候commit到Repository,您可以取消选取的档案,这样他们就不会被commit到Repository中。

在档案列表的上方是Message栏,您可以在栏中输入本次commit的目的。这是十分重要的字段,当您commit的次数很多时,可以靠这个讯息知道版本与版本之间的差异。当您输入好Message,按下OK之后,就可以看到如下的窗口出现,通知您已经将指定的档案送到Repository中。

TortoiseSVN 图文使用教程_第13张图片

您可以到先前的folder中,确定是否所有的档案icon都有如下的绿色勾勾在上面,这样代表您的档案都正确无误的到repository中。

TortoiseSVN 图文使用教程_第14张图片

有时候,因为Windows本身的问题,您可能会看到有些icon没有变成绿色的勾勾。此时,多按F5几次,应该就可以解决这个问题。如果,仍然不行,表示您之前的commit动作真的有问题。请仔细检查之前的commit动作是否正确。

3.更新档案及目录


为何需要更新?由于版本控制系统多半都是由许多人共同使用。所以,同样的档案可能还有人会去进行编辑。为了确保您工作目录中的档案与Repository中的档案是同步的。建议您在编辑前都先进行更新的动作。在此,我们都先假设您已经将档案check out过一次。现在要说明的是如何在一个check out过的目录进行update。在想要更新的档案或目录icon上面按下鼠标右键。并且选择SVN Update。

TortoiseSVN 图文使用教程_第15张图片

正常的状况下,您可以看到如上的窗口。在这个窗口中会显示有哪些文件更新了。如果没有看到档案更新的相关信息,这表示您的目录中的档案已经是最新的,所以无须进行更新。

4.更新至特定版本


有时我们需要回溯至特定的日期或是版本,这时就可以利用SVN的Update to revision的功能。在想要更新的档案或目录icon上面按下鼠标右键。并且选择TortoiseSVN->Update to revision。


TortoiseSVN 图文使用教程_第16张图片

在这个Update窗口中,您可以选择更新到最新版本(HEAD)。也可以选择更新到某个指定的版本(Revision)。当然,您可能早就记不起来正确的版本号码。可能只隐约的记得大概在什么时间。没关系,按下Show log按钮,您就可以回顾历史了。


所有您曾经做过的动作,及其日期与对应的版本都会列在这个窗口上面,只要在你想要的版上面点一下,让他变成反白,然后按下OK。这个版本就会自动填入Update窗口中的Revision字段中。您只要再按下一次OK,这个版本就会被取出来到您的硬盘中。

5.复制档案及目录


很多时候您会希望有另外一个复制的目录来进行新的编修。等到确定这个分支的修改已经完毕了,再合并到原来的主要开发版本上。举例来说,我们目前在working copy下面有如下的目录及档案:

TortoiseSVN 图文使用教程_第17张图片

现在,我们要为trunk这个目录建立一个branch。假设我们希望这个目录是在D:/working/my_prj/branch/my_new_branch_for_testing。首先我们可以在trunk目录下面的空白处,或是直接在trunk的icon下面按下鼠标右键。

TortoiseSVN 图文使用教程_第18张图片

在选择Branch/Tag…这个项目后,您将会看到如下的对话框出现。


请先确认From WC at URL: 中的目录是您要复制的来源目录。接着,在To URL中输入您要复制过去的路径。通常我们会将所有的branch集中在一个目录下面。以上面的例子来说,branch档案都会集中在branch的子目录下面。在To URL中您只需要输入您要的目录即可。目录不存在时,会由SVN帮您建立。特别需要注意的是SVN因为斜线作为目录分隔字符,而非反斜线。

接着在Log message输入您此次branch的目的为何。按下OK就可以了。

如果成功,将可以看到下面的画面:

TortoiseSVN 图文使用教程_第19张图片

按下OK就可以关闭这个窗口了。如果您此时立刻去working copy的branch子目录下面,您将会失望的发现在该目录下面并没有刚刚指定的目录存在。这是因为您working copy的部份还是旧的,您只需要在branch子目录下面进行SVN update就可以看到这个新增的目录了。新增的目录就与原来的目录无关了。您可以任意对他进行编辑,一直到您确认好所有在branch下面该做的工作都完成后,您可以选择将这个branch merge回原来的trunk目录,或者是保留它在branch中。

要merge回trunk目录中,方法很简单。以上面的例子来说,我们在D:/working/my_prj/trunk目录空白处,按下鼠标右键,选择Merge:

TortoiseSVN 图文使用教程_第20张图片

接着可以看到如下的画面:

TortoiseSVN 图文使用教程_第21张图片

这个画面主要分为三个部份,前面的From: 与 To: 是要问您打算从Branch中的哪个版本到哪个版本,merge回原来的trunk目录中。因此,From跟To的URL字段应当都是指定原来branch的目录下。剩下的就是指定要merge的revision范围。以上面的例子而言,我们从Branch的Revision 7开始merge到Branch下面的最新版本。您可以透过,Dry run按钮,试作一次Merge。这个merge只会显示一些讯息,不会真正的更新到trunk的目录去。只有按下Merge按钮后,才会真正的将branch的档案与trunk的档案合并起来。

TortoiseSVN 图文使用教程_第22张图片

上面的讯息告诉我们在trunk目录下面的yyyy.cpp及xxx1.cpp已经被更改过了。如果您在现在到trunk目录下,会看到这两个档案处于被修改的状态。


如果您确认这次的merge没有问题,您可以直接使用commit来将这两个被修改的档案commit回SVN repository上。如果有问题,您可以直接修改这两个档案,直到确认ok了,再行commit。

TortoiseSVN 图文使用教程_第23张图片

TortoiseSVN 图文使用教程_第24张图片

TortoiseSVN 图文使用教程_第25张图片

一切顺利的话,您就成功的将branch的档案merge回trunk了。

6.制作Tag或是Release


所谓的Tag或是Release就是一个特别的版本,因为这个版本可能有特别的意义。例如:这个版本是特别的Milestone或是release给客户的版本。其实,Tag与Release的作法与Branch完全相同。只是Branch可能会需要merge回原来的trunk中,而tag及release大部分都不需要merge回trunk中。举例来说,今天我们的trunk做了一版,这个版本被认定是软件的1.0版。1.0版对于开发来说是一个非常重要的里程碑。所以我们要特别为他做一个标记,亦即Tag。假设,这个 1.0版是要正式release给客户或是相关vendor,我们要可以为他做一个Release的标记。基本上,SVN只有目录的概念,并没有什么Tag的用法。所以您会看到再SVN的选单上面,Branch与Tag是同一个项目。以这个1.0的例子来说,我们就是在Trunk上面,按下鼠标右键,选择Branch/Tag的项目:

TortoiseSVN 图文使用教程_第26张图片


TortoiseSVN 图文使用教程_第27张图片

成功的话,您就在Tag目录下面建立了一个1.0的目录。当然,如果您这时到Tag的目录下面去,会看不到这个目录,您需要在Tag目录下面update一下,才能看到它。



制作Release的作法与Tag完全相同。只是把Tag的目录换成Release而已。

看到这里,相信大家都已经领悟到无论是Branch,Tag或是Release都只是将指定的Trunk版本复制一份到另外一个目录去。至于这个目录要叫Branch还是叫Release,SVN根本就不管。所以,您也可取其它的目录名称。不过,Branch,Tag及Release已经是SVN上面约定成俗的名称。所以,除非您知道自己为何这样做,否则,最好还是follow这个命名原则,以免后面新加入的人看不懂。

NOTE:同样的道理Trunk也只是一个约定成俗的名称。不一定要叫Trunk。只是大家看到Trunk目录就会知道这里面放的是主要的开发主干。

7.快速参考


前面写了不少废话,主要是给完全没有版本控制观念的人看的。如果你想直接知道某个功能如何使用,请看下面的章节。

在后面的说明,皆以d:/working当作工作目录。您可以将他换成其它任何您想要的目录。

1.取得(Checkout)Repository

开启档案管理员,进入d: 在档案管理员空白处按下鼠标右键,选择SVN Checkout 在Checkout对话框中,

URL of repository:repository的位置。 Checkout directory:要存放working copy的地方。

若d:/working目录不存在,SVN会问您要不要建立这个目录,请选择Yes。 接着按下OK,即可checkout该目录。

TortoiseSVN 图文使用教程_第28张图片

2. 更新(Update)档案或目录

在您要由repository更新至working copy的档案或是目录的icon上面按下鼠标右键。选择SVN Update即可。 如果是要更新至特定的版本,则选择TortoiseSVN->Update to revision。并且在Update对话框中的Revision字段输入您要的版本。也可以透过Show Log按钮来查看版本的信息。

新增(Add)档案或目录

在尚不属于repository的档案或目录的icon上按下鼠标右键。选择TortoiseSVN->Add。 选取要新增的档案。 按下OK。

TortoiseSVN 图文使用教程_第29张图片

NOTE:新增的档案要经过提交(Commit)的动作才回真正的放入Repository中。

3. 提交(Commit)修改过的档案或目录

在修改过的档案,或是在整个目录的空白处按下鼠标右键。 勾选真正要提交至Repository的档案或目录。 输入本次提交的纪录讯息(Message)。这个讯息应该要清楚明了,但不应过份简单。以利日后版本追踪。 按下OK。

TortoiseSVN 图文使用教程_第30张图片

4. Copy/Tag/Branch/Release档案或目录

确认您要处理的档案或是目录已经是Repository中最新的版本。 在要处理的目录或是档案上面按下鼠标右键,选择TortoiseSVN->Branch/Tag。 在To URL处输入您要的目的地。

branch:要产生一个分支。以区别与trunk不同的开发。 tag:要形成一个标记,表示重要的milestone。 release:表示一个已经正式的release的纪录。 其它:进行一个复制(copy)。

TortoiseSVN 图文使用教程_第31张图片


你可能感兴趣的:(SVN,版本控制,tortoiseSVN)