一个大项目在开发中可能会拆分成几个小项目,分别分去,同时共通的部分再由人做,做完后再统一合并。同时,在开发中,共通的部分修改后,其它人要保持同步。
这种情况反应到SVN的分支/合并功能上,再贴切不过了。
SVN可以为一个版本库中的内容(主干)建立一个分支.分支和主干完全独立,就相当于把代码再复制一份,重新添加到版本库中。但SVN提供另一个功能,就 是把主干做出的修改合并到分支中,以及把分支修改的内容合并到主干中。当然,我们也可以把主干的版本库的路径切换到分支上,然后更新,来实现把分支的修改 更新到主干;以及修改分支路径来同步主干的修改。但过程复杂,还容易出错。
SVN 的分支功能还提供一些合并的测试,可以在不改动版本路径的情况下完成上面的需求。
示例:
1.将一个整项目建一个分支.
建立时要注意:
1.当前复制源,即专业术语中的 "主干(truck)"
2.分支存放的位置. 当然,分支也是在SVN版本库中.
3.写上日志.这个大家应该懂的.
4.是否把主干的路径切换到分支.如果勾选了,建立分支后,在主干里做出的修改并提交后,更新会提交到分支上。主干的版本源内容不会变.
这时我们看一下 trunk 目录的属性,可以看到它的路径已经变成: /calc/branches/my-calc-branch 了。
注意:
1.主干的目录
2.版本库源路径
这时你便可以在 /calc/branches/my-calc-branch 分支上开发新的功能,且不会影响到其他成员开发或维护主干的内容。
2.合并主干的变更
也许过了一段时间,原本的 /calc/trunk 主干可能已经有其他成员陆续修正了一些 Bugs,但这时你的分支 /calc/branches/my-calc-branch 就可以直接套用主干 ( /calc/trunk ) 的更新,除了避免重复的工作外 ,也可以避免版本的冲突,因为多人改同样的文件可能发生冲突。
经常將 开发主干 ( /calc/trunk ) 的变更透过 svn merge 合并至 分支 ( /calc/branches/my-calc-branch ) 是一个非常好的习惯,这样才不会让你脱离主干(trunk) 过久而导致将分支 ( /calc/branches/my-calc-branch ) 合并回 主干 ( /calc/trunk ) 时发生许多冲突。
从主干 ( /calc/trunk ) 合并至分支 ( /calc/branches/my-calc-branch ) 通常选第 1 个,也就是 [Merge a range of revisions]
注意.我们是在分支上使用的 Merge 功能.因为是要在分支上应用主干的更新.
在 Merge 的窗口有以下注意事項:
1.合并的来源,由于我们打算从主干 ( /calc/trunk ) 合并至分支 ( /calc/branches/my-calc-branch ),所以合并的來源要选 /calc/trunk 才对!
2.合并的结果会直接与目前「工作目录」(Working Copy) 做比对,并修改目前工作目录中的所有文件。因此建议在做合并之前可以将所有尚未 commit 的档案先 commit 到版本库,避免不必要的冲突事件发生。
在正式进行合并(Merge)之前,建议先执行 Test merge 看看是否会发生什么事!
在合并之后如果没有发生冲突,不代表真的没冲突,所以必须再次对原始码做出验证后才能 commit 进版本库,建议可参考以下流程:
1.将项目进行建置(Build)
2.如果没问题再对项目进行单元测试(Unit Testing)或手动测试(Manual Testing)
3.如果都没问题再 commit 目前合并无误的版本到版本库!
3.合并分支到主干
最后我们的 my-calc-branch 分支已经将新功能开发完成且测试无误,所以要将 分支 ( /calc/branches/my-calc-branch ) 的最终版本合并回 主干 ( /calc/trunk ),这时的手续如下:
从 分支 ( /calc/branches/my-calc-branch ) 合并回 主干 ( /calc/trunk ) 通常选第 2 个,而特别选择 [Reintegrate a branch] 这个选项是很重要的,因为这有以下好处:
1.让 Subversion 能知道 主干 ( /calc/trunk ) 是从哪个分支、哪些版本合并进来的
2.有效节省 Subversion Repository (SVN储存库) 的空间,因为不用重复储存分支的所有变更信息
3.可以产生 Revision graph 得知项目开发的分支状况
4.删除使用完毕的分支
当 分支 ( /calc/branches/my-calc-branch ) 合并回 主干 ( /calc/trunk ) 并 commit 了之后,该分支就没用了,该分支如果未来不再更新或继续开发,Subversion 也不会继续追踪这个分支的变更 (因为之前已经 Reintegrate 过了),建议将该分支删除。
转自: http://blog.sina.com.cn/s/blog_5f54f0be0101f04y.html
相关推荐
删除文件或目录使用`svn delete`或`svn rm`,合并不同分支的更改使用`svn merge`,而`svn diff`则用于查看两个版本之间的差异。 在使用SVN时,可能会遇到权限验证,需要输入用户名和密码。此外,SVN还支持匿名访问...
以上就是SVN客户端的基本使用方法,以及在Eclipse中借助eclipse-svn插件进行版本控制的主要操作。了解和熟练掌握这些技能,对于提升团队协作效率和代码质量至关重要。通过不断实践和熟悉SVN的各种功能,开发者能够更...
【Svn使用方法和问题的解决方案】 Svn,全称Subversion,是一种广泛使用的版本控制系统,用于管理和跟踪项目源代码的变化。它允许开发者在多个人协作的环境中进行代码的版本控制,确保团队成员的工作同步,并能追溯...
SVN,全称为Subversion,是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的变更历史。在软件开发过程中,SVN可以帮助团队协同...掌握SVN的安装和使用方法,将有助于提升团队的开发效率和代码质量。
`svn branch`用于创建分支,`svn merge`用于合并分支。标签(或快照)则是某个特定时间点的项目状态,常用于发布里程碑或稳定版本。`svn copy`可以创建标签,但通常不会对其进行修改,以保持其一致性。 此外,SVN...
在Linux环境中,使用SVN可以高效地管理代码和其他项目资源。以下是一些常用的SVN命令及其实现的功能: 1. **Checkout (检出)**:`svn checkout` 或 `svn co` 命令用于从远程仓库下载项目到本地工作副本。例如,`svn...
SVN,全称为Subversion,是一种版本控制系统,用于管理和跟踪文件和目录的变更。通过SVN,用户可以记录项目的历史版本,便于恢复旧版本、管理多人...通过熟练掌握SVN的使用,可以显著提升开发效率和团队协作的流畅度。
使用`svn merge`合并不同版本间的差异。例如: ``` svn merge -r 200:205 test.php ``` 12. **Help(帮助)** 使用`svn help`获取命令帮助。例如: ``` svn help svn help ci ``` 以上是Linux SVN客户端...
【SVN客户端的使用方法】 SVN(Subversion)是一种版本控制系统,用于管理软件开发过程中的源代码和其他文件。在本文中,我们将详细介绍如何使用SVN客户端,特别是TortoiseSVN,进行代码的导入、迁出、提交、添加新...
SVN常用命令集合及简单用法 SVN(Subversion)是一种版本控制系统,用于管理代码、文档、图片等文件的版本变更。下面是常用的 SVN 命令集合及简单用法: 1. 检出文件:svn checkout path(path 是服务器上的目录)...
本资源包提供了SVN的安装包、工作原理的详细解释以及使用方法,对于理解和操作SVN具有极大的帮助。 首先,我们来看SVN的安装。在压缩包中,你应该能找到SVN的安装教程。通常,安装过程包括下载适用于你操作系统的...
### Linux 下 SVN 的使用 #### 一、简介 Subversion(简称 SVN)是一种分布式版本控制系统,主要用于软件开发项目中管理源代码的...熟练掌握 SVN 的使用方法,有助于提高团队协作效率,确保项目的稳定性和可维护性。
本篇文章将详细介绍SVN的使用方法,包括安装、配置、基本操作以及解决常见问题。 **一、安装与配置SVN** 1. **Windows安装**: 可以下载TortoiseSVN,它是一个Windows下的SVN图形化客户端。在官方网站下载最新版本...
4. **合并分支**:当分支开发完成,使用`svn merge`命令将分支的更改合并回主分支。 ### 学习资源 - `svn命令.docx` 文件很可能包含了SVN常用命令的详细解释和使用示例,建议仔细阅读以加深理解。 - `SVN外部定义....
1. **分支定期同步主干修改**:为了保持分支与主干的一致性以及尽早发现潜在的合并冲突,推荐定期使用命令`svn merge <主干URL>`来同步主干上的最新更改到分支中。这样做的好处在于可以及时发现并解决冲突,减少最终...
1. **分支与合并**:`svn branch`创建分支,`svn merge`合并分支。分支策略有助于并行开发和代码审查。 2. **标签**:`svn copy`可以创建版本标签,用于标记特定里程碑。 3. **冲突解决**:当两个或更多用户对同一...
**SVN客户端的使用方法详解** SVN(Subversion)是一种版本控制系统,用于管理多个用户对同一份文件或项目代码的协作编辑。使用SVN客户端可以帮助团队成员有效地协同工作,跟踪文件的历史版本,防止冲突,并实现...
### SVN使用指南与命令详解 #### 一、概述 Subversion(简称SVN)是一种集中式的版本控制系统,广泛应用于软件开发和其他需要版本控制管理的领域。通过SVN,团队成员可以方便地协作开发项目,同时确保项目的每个...
以下是对SVN工具及其使用方法的详细说明: 1. **基本概念** - **版本库(Repository)**:存储所有文件和目录的中央仓库,记录了文件的所有历史版本。 - **工作副本(Working Copy)**:用户在本地计算机上的项目...
Linux Fedora下的Subversion(简称svn)是一个版本控制系统,用于跟踪文件和目录的...在实际工作中,根据团队的需求和工作流程,可能会有更复杂的用法,比如解决冲突、分支管理等,但这些基本命令构成了svn操作的基础。