使用分支的目的是,可以多个分支进行多版本并行开发,相互不干扰,而且任何时候都可以合并。同时,也保证了主干的稳定性。

项目目录格式,如:
一级目录(项目名称),如:Projectxxx
二级目录 (一级目录下的子目录),如:Projectxxx—trunk、branch、tag
三级目录(二级目录下的子目录),如:Projectxxx—trunk—projectXXX

1、trunk主干,永远只有一份完整的源码; 2、branch分支,可以有多个版本的源码; 3、tag存档,不同版本发布后存档(版本号+存档时间)。

分支开发
使用SmartSVN示例

从主干创建分支(创建分支方法及步骤)

1、通过SmartSVN的checkout功能,checkout 整个项目目录到本地,即一级目录和二级目录
2、在本地二级分支目录branch目录下,新建目录,如:V2.0.0
3、在SmartSVN的二级目录branch目录下,可以看到新建的目录V2.0.0,右击并选择Add(注意不进行Commit提交)
新建分支
4、在SmartSVN的二级目录branch目录下,选中新建的目录V2.0.0,后再选择菜单栏中的Copy From Repository(菜单栏-Modify-Copy From Repository)
分支源码
5、 在弹窗中进行相关目录的设置,1是 Copy 的源码目录,2是 Into Local 的分支的代码目录(Copy是复制前的目录,Into Local是复制后的目录且还在本地),3点击Copy进行复制,即创建分支的代码目录
分支选择
6、复制后,在SmartSVN中的分支目录branch目录下出现项目目录,选中并点击Commit进行提交,分支即创建成功
分支源码提交

分支合并到主干(从主干创建的分支)

1、在SmartSVN上,选择主干目录trunk目录下的项目目录
2、在菜单栏中选择合并Merge(菜单栏-Modify-Merge)
分支合并到主干
3、在弹窗中选择合并来源Other Location,并选择对应的svn路径,及选择All Revisions(not yet merged),后点击合并按钮Merge
分支合并到主干选择
合并代码选择
4、合并后,在SmartSVN中的主干目录trunk目录下,选择源码项目,并点击Commit进行合并后的代码提交
合并后提交

主干合并到分支(从主干创建的分支)

1、操作方工同分支合并到主干
1)选择要合并主干源码的分支(在svn项目全目录下,选择branch目录下的要被合并的分支源码目录)
2)选择:菜单栏-Modify-Merge
3)弹窗界面操作:Merge From(Other Location)-选择要合并到分支的主干源码SVN-All Revisions(not yet merged)-Merge
4)主干被合并到分支后,修改异常,编译正常再提交

报错:Cannot merge into a working copy that has local modifications
解决:因为只checkout了分支目录,且直接在分支目录进行合并操作;需要checkout整个项目目录,然后进入到分支目录再进行主干合并到分支的操作。

分支合并到分支(从分支创建的分支)

1、操作方工同分支合并到主干
1)选择要合并分支B源码的分支A(在svn项目全目录下,选择branch目录下的要被合并的分支A源码目录)
2)选择:菜单栏-Modify-Merge
3)弹窗界面操作:Merge From(Other Location)-选择要合并到分支的分支B源码SVN-All Revisions(not yet merged)-Merge
4)主干被合并到分支后,修改异常,编译正常再提交

注意:
1、不管是建立分支(主干创建分支,或分支再创建分支),还是合并(分支合并到主干,或主干合并到分支,或分支合并到分支),都是通过SVN工具把整个项目目录(包括一级,二级目录,三级目录等)checkout到本地后才能进行有效的操作。如果只是checkout主干,然后进行分支合并到主干操作,是不可行的,并且会给出错误提示;或只是checkout某个分支,然后进行主干合并到分支操作,也是不可行的。
2、合并前需要进行update操作,保证本地各分支源码都是最新的代码
3、提交修改备注时,注明修改的分支,如:主干上修改登录功能,或分支V2.0.0修改注册功能

为了在多个版本中并行 开发 ,提高 开发 效率,保证各个版本和各 个环境( 开发 、测试、主干)的独立,避免相互影响,减少最终 发布时 合并 主干出现冲突的概率,降低冲突处理的难度,特编写 Smartsvn 8,内有注册机。 Smartsvn for mac是Mac OS平台上的功能完备的Subversion客户端,可以运行在Linux, Mac OS X, OS/2, Unix和Windows(Java编写)。除了基本的Subversion命令如checkout, update, commit, merge以外,它也支持标签和 分支 处理(无需处理URL),有内置的比较和冲突解决工具,无需安装其他工具就可以处理 SVN 工作拷贝。 其最大的优势就是操作非常简单和方便,多有操作都可以通过鼠标点击完成。 由于大小限制,分成两部分,都免积分。 第二部分:http://download.csdn.net/detail/zhenghui89/8478529 SmartSVN 11 for Mac是 SVN 客户端, SmartSVN 可让您及时了解团队成员和项目的 SVN 活动。 SmartSVN 相对其他客户端更注意细节的变化,是一款非常使用的 SVN 客户端软件,支持标签和 分支 处理,操作非常简单和方便,大多数操作都可以通过鼠标点击完成。 SmartSVN 是可以使用存储库浏览器轻松选择存储库位置的工具。 smartsvn 11软件功能 标记和 分支 支持( SmartSVN ... 1、使用背景 在平时的项目研发中,存在项目版本 管理 的情况;做了很多项目,由于项目人数的问题,只是简单的使用 SmartSvn 进行Update、Commit交互;但是出现了几次这样的情况,游戏已经发布出去,但是线上的版本会不确定性的进行修改,可手里的版本已经进行了新功能的研发,由于服务器的表结构更改等相关类似问题,手里的版本是无法兼容线上版本。有几次比较傻傻的使用方式也可以解决,不过不方便,... 用Tortoise SVN Repo-browser,代码库先copy to ,创建 分支 b2 ![](https://img-blog.csdnimg.cn/6db0d713d71246b48a48bc140fe17373.png 此时看到版本库有 主干trunk 分支 b1 b2 检出到本地b2 本地b2 分支 修改内容,增加文件003,提交到版本库 分支 b2 本地 分支 合并 merge概念易混点 在From中选择trunk的路径,在to中选择branches路径 平时在工作中使用 SVN 只是限于 commit,update 这样的操作,至多再 reslove 解决一下冲突,没有用过 分支 管理 开发 过程中一般都是一个功能 开发 完成之后整体进行提交,而最近在项目中有一个比较大并且 开发 周期比较长的功能,所以在功能没有完成之前不方便进行提交,所以想到了使用 分支 管理 ,边学边用(所以工作最好一定要选 开发 流程规范的公司)。 /*环境: * ... 使用 svn 几年了,一直对 分支 合并 敬而远之,一来是因为 分支 管理 不该我操心,二来即使涉及到 分支 管理 ,也不敢贸然使用 合并 功能,生怕 合并 出了问题对团队造成不良影响,最主要的原因是,自己对 分支 的目的和 合并 的方法不甚了解,这才是硬伤。 最近由于适配机型的需要(本人从事手机客户端的 开发 ),需要经常接触 分支 合并 两项工作,突然发现这玩意整不明白很难开展工作,遂这两天着重研究了一下,有点收获,怕以后忘了,故... CornerStone是收费,如果是公司需要使用到,建议让公司购买软件使用版权,支持正版,当然网上也是有破解版本的。破解版提取密码(v5vh),如果下载成功需要输入密码(www.ifunmac.com)。 二、配置 SVN 1、在项目上右键,选择Tortoise SVN -->settings,  2、在弹出的Tortoise SVN Settings页面中选择“Saved Data”选项,  3、然后点击“Authentication data”对应的“Clear”按钮,清除一下之前的认证信息就可以了。      下次,就会要求输入用户名和密码,OK! LINUX环境: