TortoiseSVN打分支、合并分支、切换分支

SVN几个重要文件夹说明

       我们一般习惯性在创建repository仓库后,再在刚才创建的仓库里面再创建trunk、branches、tags这三个文件夹,而不是直接将项目提交到仓库的根目录下(虽然直接将项目分享到仓库的root根目录下也是可以的,但是我们一般不这么做)。主要目的是:为了给项目各个阶段,各个版本归类、分阶段存储、并行开发。

trunk文件夹: 主干,我们一般把项目提交到此文件夹里面,在trunk中开发。

branches文件夹:分支,我们一般把那些需要打分支,但是有可能会修改的项目代码,打分支到此目录。

tags文件夹:分支,我们一般把那些阶段性(如迭代各期)的项目代码,打分支到此目录。

注:其实也不一定非要手动创建这三个目录,在我们打分支选择打到branch或tags等时,会自动在对应的repository
        仓库的根目录下创建该文件夹。

注:我们在第一次连接SVN的repository时,可以指定连接目标仓库下的不存在的文件夹,当我们第一次将项目
        team>>>share project时,将会在该仓库下自动创建URL中不存在的文件夹,并把代码放进去。

提示开发时,可以以开发trunk中的项目代码为主,当开发到某个时期(你觉得比较重要的时期)时,可以看情况将需
           要备份的文件夹(或文件)打分支到其他如branches、tags等文件夹下。

TortoiseSVN打分支、合并分支、切换分支_第1张图片

注:需要时,我们可以从SVN上同步分支中的任意时期的项目代码(注:我们当然也可以同步trunk主干下的最新的代码)。

注:有时,我们也可以在branches中开发(但是需要即时将trunk中的代码合并到branches中,但是暂时不将branches中
       合并到trunk主干上),然后开发到一定程度的时候,再将branches合并到主干trunk上。此方式,也很常用


声明一:本次示例的软硬件环境为:Windows10、VisualSVNServer、TortoiseSVN、Eclipse。

注:VisualSVNServer主要用作SVN服务端、TortoiseSVN主要用作SVN客户端。

声明二:由于Eclipse或其它IDE开发工具的SVN插件版本不同等原因,所以这里并不以SVN插件来介绍分支的使用,
               下面是以TortoiseSVN客户端来介绍分支的使用的。

准备工作

使用VisualSVNServer创建一个本地仓库:

TortoiseSVN打分支、合并分支、切换分支_第2张图片

TortoiseSVN打分支、合并分支、切换分支_第3张图片

注:创建repository时需要先创建user,这里就不详细介绍了。

注:创建SVN仓库的方式较多,本人这里是利用VisualSVN Server创建的。

创建完成,如下图所示:

TortoiseSVN打分支、合并分支、切换分支_第4张图片

注:右键目录或仓库,会出现拷贝连接SVN的URL的选项。

往SVN中放入一些东西,方便下面讲解。

注:可以使用Eclipse的SVN插件将项目分享到SVN的仓库中,也可以使用TortoiseSVN将文件夹add到SVN的仓
       库中,还可以……这里就不再给出具体步骤了。

使用TortoiseSVN来管理SVN:

使用TortoiseSVN来查看一下SVN中的内容:

TortoiseSVN打分支、合并分支、切换分支_第5张图片

TortoiseSVN打分支、合并分支、切换分支_第6张图片

TortoiseSVN打分支、合并分支、切换分支_第7张图片

使用TortoiseSVN检出SVN中的项目:

TortoiseSVN打分支、合并分支、切换分支_第8张图片

TortoiseSVN打分支、合并分支、切换分支_第9张图片

可以看见,以检出到桌面了:

TortoiseSVN打分支、合并分支、切换分支_第10张图片


SVN打分支

方式一:先检出,再打分支

TortoiseSVN打分支、合并分支、切换分支_第11张图片

TortoiseSVN打分支、合并分支、切换分支_第12张图片

注:to path中输入或选择要打分支到哪一个文件夹下;如果是输入的是不存在的文件夹的话,那么会自动在SVN中创建
        该文件夹。

注:/branches/project20180831是指当前仓库文件夹下的branches文件夹下的project20180831文件夹。

分支创建完毕,我们再去看一下:

TortoiseSVN打分支、合并分支、切换分支_第13张图片

TortoiseSVN打分支、合并分支、切换分支_第14张图片

注:在某一个枝干上的操作,其作用范围就是其自身,并不会影响到其他枝干(注意:这里说的是一般操作,分支合并等情况除外)。

可以简单测试一下:在主干trunk上略作修改之后,提交。再用TortoiseSVN查看一下分支上的对应文件,发现是修改
                                 前的;查看主干上的对应文件,发现是修改后的。说明枝干之间不会发生干扰。

注:打分支之前,要保证本地的和服务器上是一致的,即:打分支前需要update、commit。

方式二:直接在客户端,通过Copy to的方式,打分支

选择要备份的目录:

TortoiseSVN打分支、合并分支、切换分支_第15张图片

右击 > Copy to,填写要打分支到哪里:

TortoiseSVN打分支、合并分支、切换分支_第16张图片

填写分支信息:

TortoiseSVN打分支、合并分支、切换分支_第17张图片

点击ok后,刷新一下客户端,可看见打分支成功:

TortoiseSVN打分支、合并分支、切换分支_第18张图片


合并分支

提示:合并分支即>>>选择目标分支合并到当前所处分支。

TortoiseSVN打分支、合并分支、切换分支_第19张图片

注:可以合并文件也可以合并整个文件夹,看自己的需求。

TortoiseSVN打分支、合并分支、切换分支_第20张图片

TortoiseSVN打分支、合并分支、切换分支_第21张图片

TortoiseSVN打分支、合并分支、切换分支_第22张图片

如果Test merge测试没冲突的话,是这样的:

TortoiseSVN打分支、合并分支、切换分支_第23张图片

此时直接再点击Merge合并即可。

Merge解决冲突

如果Test merge测试有冲突的话,是这样的(示例):

TortoiseSVN打分支、合并分支、切换分支_第24张图片

此时点击Merge,会出现:

TortoiseSVN打分支、合并分支、切换分支_第25张图片

点击Edit conflict来编辑冲突:

TortoiseSVN打分支、合并分支、切换分支_第26张图片

在合并后的枝干对应栏中编辑后,Save保存后关闭。

点击已解决Resolved按钮:

TortoiseSVN打分支、合并分支、切换分支_第27张图片

点击OK即可:

TortoiseSVN打分支、合并分支、切换分支_第28张图片

此时,(冲突已经解决并且)已经合并完毕了。

注:Merge合并之后,只是在本地的当前枝干发生了变化,而在服务端SVN中的当前枝干还是合并之前的;所以合并之后确
     认没问题后还需要commit到服务端SVN,以保证其他小伙伴能拿到最新的代码。

注:如果发现合并之后,还有问题,那么可以回退

TortoiseSVN打分支、合并分支、切换分支_第29张图片


切换分支

TortoiseSVN打分支、合并分支、切换分支_第30张图片

TortoiseSVN打分支、合并分支、切换分支_第31张图片

我们在打分支时,取的分支文件夹名虽然和项目名不同(如下图),但是当我们切换分支时,右击项目(Abc_SVN_Test)
       之后,选择要切换到的分支时,直接选我们打分支时起的文件夹名字即可。虽然两个文件夹不同,但是切换分
       之后,还是会以Abc_SVN_Test为文件夹名,只是里面的内容变成了切换到的分支的内容

TortoiseSVN打分支、合并分支、切换分支_第32张图片

注:切换分支后,我们的update、commit等基本操作,其作用范围只是当前分支,并不会影响其他分支。

 

^_^ 如有不当之处,欢迎指正

^_^ 本文已经被收录进《程序员成长笔记(三)》,笔者JustryDeng

你可能感兴趣的:(Java知识大杂烩)