TortoiseSVN中Branching和Merging实践

本文详细介绍了TortoiseSVN中分支(Branching)和合并(Merging)的实践操作,旨在帮助开发者理解分支的意义,避免在项目开发过程中因分支管理不当造成的困扰。通过创建分支、分支开发、同步与合并,最后将分支合并回主线的全过程,展示了如何有效地使用分支进行并行开发和管理。
摘要由CSDN通过智能技术生成

使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并的方法不甚了解,这才是硬伤。


最近由于适配机型的需要(本人从事手机客户端的开发),需要经常接触分支和合并两项工作,突然发现这玩意整不明白很难开展工作,遂这两天着重研究了一下,有点收获,怕以后忘了,故趁着余温尚在赶紧写下来,好记性不如烂笔头嘛。下文的实践主要是参考了TortoiseSVN的帮助文档和Subversion的在线文档,Subversion的在线文档:http://svnbook.red-bean.com/en/1.5/svn-book.html


话说我公司现在的源代码管理挺乱的,svn目录并没有采取标准的source/branches、source/trunk结构,主线和分支放得到处都是,release版本也并没有当成tag处理,而是当成branch来管理,经常还要在release版本上改来改去。。。


先说说什么是branch。按照Subversion的说法,一个branch是某个development line(通常是主线也即trunk)的一个拷贝,见下图:


branch存在的意义在于,在不干扰trunk的情况下,和trunk并行开发,待开发结束后合并回trunk中,在branch和trunk各自开发的过程中,他们都可以不断地提交自己的修改,从而使得每次修改在repository中都有记录。


设想以下场景,如果你的项目需要开发一个新功能,而该功能可能会修改项目中的绝大多数文件,而与此同时,你的另一位同事正在进行bug fix,如果你的新功能不在branch中开发而直接在trunk中开发,那么你极有可能影响另一位同事的bug fix,他/她在bug修复中可能会遇到各种各样的问题,因为你的频繁提交代码引入了过多的不稳定因素。你可能会说,那我在开发的过程中不提交不就行了,等到我全部开发结束我再提交,是,你可以这么做,那还要版本控制干什么呢?也许等到你最后提交代码的时候(也许一周,也许两周?),你会发现有一大堆conflict等着你resolve。。。


那么,正确的做法是什么?使用branch,从trunk创建branch,然后在你的branch上开发,开发完成后再合并到trunk中。


关于branch先讲到这里,下面说说什么叫做合并。很好理解,当branch开发完成后(包括必要的测试),将branch中的修改同步到trunk中&#

前言 1. 什么是 TortoiseSVN? 2. TortoiseSVN 的特性 3. 许可协议 4. 开发 4.1. TortoiseSVN 的历史 4.2. 致谢 5. 阅读指南 6. 本文使用的术语 1. 开始 1.1. 安装 TortoiseSVN 1.1.1. 系统要求 1.1.2. 安装 1.2. 基本概念 1.3. 开始试用 1.3.1. 创建版本库 1.3.2. 导入项目 1.3.3. 检出工作副本 1.3.4. 进行修改 1.3.5. 添加更多的文件 1.3.6. 查看项目历史 1.3.7. 撤消更改 1.4. 继续前进 ... 2. 基本版本控制概念 2.1. 版本库 2.2. 版本模型 2.2.1. 文件共享的问题 2.2.2. 锁定-修改-解锁 方案 2.2.3. 复制-修改-合并 方案 2.2.4. Subversion 怎么做? 2.3. Subversion 实战 2.3.1. 工作副本 2.3.2. 版本库的 URL 2.3.3. 修订版本 2.3.4. 工作副本怎样跟踪版本库 2.4. 摘要 3. 版本库 3.1. 创建版本库 3.1.1. 使用命令行工具创建版本库 3.1.2. 使用 TortoiseSVN 创建版本库 3.1.3. 本地访问版本库 3.1.4. 访问网络共享磁盘上的版本库 3.1.5. 版本库布局 3.2. 版本库备份 3.3. 服务器端钩子脚本 3.4. 检出链接 3.5. 访问版本库 4. 日常使用指南 4.1. 基本特性 4.1.1. 图标重载 4.1.2. 右键菜单 4.1.3. 拖放 4.1.4. 常用快捷方式 4.1.5. 认证 4.1.6. 最大化窗口 4.2. 导入数据到版本库 4.2.1. 导入 4.2.2. 导入适当的位置 4.2.3. 专用文件 4.3. 检出工作副本 4.3.1. 检出深度 4.4. 将你的修改提交到版本库 4.4.1. 提交对话框 4.4.2. 修改列表 4.4.3. 从提交列表排除项目 4.4.4. 提交日志信息 4.4.5. 提交进程 4.5. 用来自别人的修改更新你的工作副本 4.6. 解决冲突 4.6.1. 文件冲突 4.6.2. 属性冲突 4.6.3. 树冲突 4.6.3.1. 本地删除,当更新时有更改进入 4.6.3.2. 本地更改,当更新时有删除进入 4.6.3.3. 本地删除,当更新时有删除进入 4.6.3.4. 本地缺少,当合并时有更改进入 4.6.3.5. 本地更改,当合并时有删除进入 4.6.3.6. 本地删除,当合并时有删除进入 4.6.3.7. 其它树冲突 4.7. 获得状态信息 4.7.1. 图标重载 4.7.2. 详细状态 4.7.3. 在 Windows 资源管理器TortoiseSVN 列 4.7.4. 本地与远程状态 4.7.5. 查看差别 4.8. 修改列表 4.9. 版本日志对话框 4.9.1. 调用版本日志对话框 4.9.2. 版本日志动作 4.9.3. 获得更多信息 4.9.4. 获取更多的日志信息 4.9.5. 当前工作副本的版本 4.9.6. 合并跟踪特性 4.9.7. 修改日志消息和作者 4.9.8. 过滤日志信息 4.9.9. 统计信息 4.9.9.1. 统计页 4.9.9.2. 作者提交次数统计页 4.9.9.3. 按日期提交统计页 4.9.10. 离线方式 4.9.11. 刷新视图 4.10. 查看差异 4.10.1. 文件差异 4.10.2. 行结束符和空白选项 4.10.3. 比较文件夹 4.10.4. 使用 TortoiseIDiff 进行比较的图像 4.10.5. Diffing Office Documents 4.10.6. 其他的比较/合并工具 4.11. 添加新文件和目录 4.12. 复制/移动/重命名文件和文件夹 4.13. 忽略文件和目录 4.13.1. 忽略列表的模式匹配 4.14. 删除、移动和改名 4.14.1. 正在删除文件/文件夹 4.14.2. 移动文件和文件夹 4.14.3. 处理文件名称大小写冲突 4.14.4. 修复文件改名 4.14.5. 删除未版本控制的文件 4.15. 撤消更改 4.16. 清理 4.17. 项目设置 4.17.1. Subversion 属性 4.17.1.1. svn:keywords 4.17.1.2. 增加和编辑属性 4.17.1.3. 导出和导入属性 4.17.1.4. 二进制属性 4.17.1.5. 自动属性设置 4.17.2. TortoiseSVN 项目属性 4.17.3. 属性编辑器 4.17.3.1. 外部条目 4.17.3.2. SVN 关键字 4.17.3.3. EOL 样式 4.1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值