|
|
<div class="blog_content">
- 写在前面
- 一些相关的概念和原理
- 进行分支开发的最佳实践
- 合并的分类
- 在 Eclipse 中进行合并操作
- 相关资源
写在前面
本文是由演讲整理而来的,介绍了 SVN 分支与合并的概念、流程和一些实际操作方法,适合对版本控制有基本认识然后想了解 SVN 分支与合并的使用方法的读者。
对应 SVN 版本最低为 1.5,因为分支、合并的很多功能都是 1.5(release notes) 才加进来的。
一些相关的概念和原理
- 分支(branch)和标记(tag)对于 SVN 来说就只是副本(copy),没有任何其它意义。分支和标记的意义是我们人为给予的。
- SVN 的副本是通过"cheap copies"来实现的,建立一个副本就类似 Unix 中创建一个硬链接(hard link),空间和时间的消耗都是固定并且很小的,因此不必太过担心副本太多而导致性能问题。
- SVN 的文件储存是通过差异(diff)来实现的,底层储存方法有两种:1、Berkeley DB,完整保存一个文件的最新版本(revision),旧版本通过反向差异(reverse diffs)来获取。2、FSFS,跟 BDB 相反,完整保存一个文件的初始版本,后续版本通过正向差异来获取。当然,为了避免版本太多而造成性能下降,SVN 还使用了"skip-deltas"来减少需要追溯的版本数。
- SVN 属性(property)可以附带在文件、目录和版本(revision)上。文件和目录的属性类似文件内容,会被记录进版本库中的,例如每次提交时的注释,其实就是该版本的一个属性 svn:log。以"svn:"开头的属性是系统预留的,用户不应该自定义这样的属性。
进行分支开发的最佳实践
- 做分支上做开发的时候,必须定期使分支与主干同步,避免开发完成后合并(merge)回主干时出现严重冲突(confict)。
- 进行合并前,处理掉工作副本上的所有本地修改,方便合并失败时进行回滚(revert)。
- 进行合并时,特别注意 新增/删除 操作,因为很多冲突都是这类操作引起的。
- 完成一个分支的功能并合并回主干后,抛弃该分支,后续其它功能的开发使用新建的分支。当然,也有办法继续使用该分支。
合并的分类
1、从主干到分支
<div class="dp-highlighter"><div class="bar"><div class="tools">Svn代码 |
|