平时在工作中使用 SVN 只是限于 commit,update 这样的操作,至多再 reslove 解决一下冲突,没有用过分支管理。开发过程中一般都是一个功能开发完成之后整体进行提交,而最近在项目中有一个比较大并且开发周期比较长的功能,所以在功能没有完成之前不方便进行提交,所以想到了使用分支管理,边学边用(所以工作最好一定要选开发流程规范的公司)。

/*环境:
* 服务器操作系统 - CentOS 6.6
* SVN 服务器 - Subversion 1.6.11
* 客户端操作系统 - Windows 10 64位
* SVN 客户端 - TortoiseSVN 1.9.2
*/

SVN 目录结构一般包含 Trunk,Branches,Tags 三个一级目录。

Trunk 表示主干目录,从这里创建分支

Branches 表示分支目录,放置项目的 release 版,开发人员在这些版本上进行开发和测试,完成之后需要合并到 Trunk 中

Tags 存储项目的发布版本,一般设置为只读

流程:

① 首先在服务器创建新的 SVN 仓库并且进行配置(见:http://www.cnblogs.com/dee0912/p/4376447.html

仓库名:svnproject

仓库路径:/usr/local/www/svnroot/svnproject

② 在客户端创建目录 svnproject

进入 svnproject,右键 SVN Checkout

③ 在 SVN 服务器创建 Trunk 目录

在客户端目录 svnproject 中右键 TortoiseSVN,选择 Repo-browser,在服务器仓库目录上右键,选择 Create folder

创建 Trunk 目录

④ 回到客户端,在 svnproject 目录中右键,选择 SVN Update

此时 svnproject 目录中就多了 Trunk 目录。

进入 Trunk 目录,新建项目文件夹 project,在 project 里创建 index.php

把 project 目录 add 并且 commit。

开始创建分支

在客户端 Trunk 目录上右键,选择 TortoiseSVN -- Branch/tag(也可以在服务器上进行 copy to)

在 To path 中填写 Branches 的路径名称

在 Create Copy in the repository from 中选择 HEAD revision in the repository,表示选择 Trunk 中最新的代码建立分支

ok -- ok

(服务器上的)分支建立完成。

可以在 svnproject/Trunk 上右键选择 TortoiseSVN -- Revision graph 查看分支示意图

⑥ 在客户端 svnproject 中 SVN Update,Branches 就从服务上更新了下来。

进入 Branches 目录,发现里面有一个完整的 project 项目

合并分支

在客户端中,编辑分支中的 svnproject/Branches/project/index.php

同时编辑主干中的 svnproject/Trunk/project/index.php

将两个修改过的文件全部 commit。

将分支合并到主干

在 svnproject/Trunk/project 上右键,选择 TortoiseSVN -- Merge

在 Merge type 中选择第二项 Merge two different trees

Next

在 From 和 To 中都选择要合并的分支目录

起始 URL :在 From 的 Revision 选择创建分支时的那个Revision:点击Show log,选择最下面一条,原因是该版本是分歧的起始点

结束 URL :在 To 的 Revision 选择 HEAD Revision,也就是最新操作,即分歧的结束点

Next -- Merge

此时 svnproject/Trunk/Project/index.php 已经发生改变

参考:

1.关于SVN中的Branches与Tags

2.SVN的标准目录结构:trunk、branches、tags

3.SVN版本控制与分支设置

4.使用TortoiseSVN新建及合并分支图文教程

5.企业使用SVN策略

6.svn 版本控制 trunk branch tag

7.Subversion版本控制 — 分支和合并(三)

8.解决版本冲突-使用SVN主干与分支功能

9.实例剖析TortoiseSvn分支合并

SVN 分支管理的更多相关文章

  1. SVN分支管理策略个人见解

    本篇目录 前言 SVN分支管理策略 VisualSVN Server TortoiseSVN客户端 Repository的创建 Check out trunk创建新项目MyProject trunk更 ...

  2. svn分支管理进行迭代开发

    [root@ok svndata]# svn co svn://192.168.1.111/app01 # checkout项目到本机 开始规划我们的svn项目目录: [root@ok svndata ...

  3. git 教程(12)--分支管理

    分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...

  4. Git 分支管理详解

    大纲: 1.前言 2.创建分支 3.切换分支 4.合并分支(快速合并) 5.删除分支 6.分支合并冲突 7.合并分支(普通合并) 8.分支管理策略 9.团队多人开发协作 10.总结 注,测试机 Cen ...

  5. Atitit 版本管理----分支管理

    Atitit 版本管理----分支管理 版本管理系统"(Version Control System Branch/tag在一个功能选项中,在使用中很容易产生混淆. 分支(Branch)管理 ...

  6. Git之(四)分支管理

    当我们初始化Git仓库的时候,Git会默认创建一个名为master的主分支.在实际工作中,主分支要求是一个稳定.健壮.安全的主线,一般不允许在主分支上直接进行开发,而是拉取一个新的分支,开发.测试完成 ...

  7. git(二) 分支管理

    概念 分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇 ...

  8. git 入门教程之分支管理

    背景 什么是分支?简单地说,分支就是两个相对独立的时间线,正常情况下,独立的时间线永远不会有交集,彼此不知道对方的存在,只有特定情况下,两条时间线才会相遇,因为相遇,所以相知,因为相知,所以改变! 正 ...

  9. 【学习总结】Git学习-参考廖雪峰老师教程六-分支管理

    学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...

随机推荐

  1. poj1222 EXTENDED LIGHTS OUT 高斯消元||枚举

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8481   Accepted: 5479 Description In an ...

  2. configSections

         由于最近一个项目的数据库变动比较频繁, 为了减少数据层的负担, 打算采用.net的MVC框架, 使用LINQ对付数据层.       这个框架的web.config文件里出现了configS ...

  3. 【CLR in c#】属性

    1.无参属性 1.为什么有字段还需要属性呢? 因为字段很容易写出不恰当的代码,破坏对象的状态,比如Age=-1.人的年纪不可能为负数.使用属性后你可以缓存某些值或者推迟创建一些内部对象,你可以以线程安 ...

  4. Python学习笔记08

      正则表达式包re match,search,sub re.match(pattern, string, flags=0) re.search(pattern, string, flags=0) r ...

  5. UVa12092 Paint the Roads(最小费用最大流)

    题目大概说一个n个点m条带权有向边的图,要给边染色,染色的边形成若干个回路且每个点都恰好属于其中k个回路.问最少要染多少边权和的路. 一个回路里面各个点的入度=出度=1,那么可以猜想知道各个点如果都恰 ...

  6. BZOJ3257 : 树的难题

    设$f[x][i][j]$表示以$x$为根的子树,与$x$连通部分有$i$个黑点,$j$个白点,不联通部分都是均衡的最小代价.若$i>1$,则视作$1$:若$j>2$,则视作$2$. 然后 ...

  7. [Noi2015]软件包管理器 题解

    题目大意: 有n个软件安装包,除第一个以外,其他的要在另一个安装包的基础上安装,且无环,问在安装和卸载某个软件包时,这个操作实际上会改变多少个软件包的安装状态. 思路: 可构成树,用树链剖分,线段树. ...

  8. ACM 疯牛

    疯牛 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小 ...

  9. Jquery表格变色 复选框全选,反选

    /*jquery静态表格变色*/ $(".tr2").mouseover(function(){ $(this).css("background"," ...

  10. /var/log目录下的20个Linux日志文件功能详解

    如果愿意在Linux环境方面花费些时间,首先就应该知道日志文件的所在位置以及它们包含的内容.在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决. 以下介绍的 ...