- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分支合并样例及意问题
一般svn版本库目录建议创建trunk、branches和tags三个目录。在实际操作时,trunk主干版本要时刻 保持干净,即随时可以基于这个版本进行修改并将应用部署上线。branches是分支目录,存放并行开发的项目代码,因为分支是主干的廉价拷贝(相当只是提交了一 次主干版本,增加了一个版本号, 并没有取出版本库作镜像拷贝),所以你可以放心建立很多分支版本。不过 Subversion不支持跨版本库的拷贝,当使用svn copy时你只能在同一个版本库内操作。tags目录存放trunk某个的快照,比如说release-1.0即trunk处于1.0版本时的快照。使用svn来作团队的代码管理,那么分支和合并将是非常常用的操作。需求一: 有一个客户想对产品做定制,但是我们并不想修改原有的svn中trunk的代码。 SVN 的副本是通过cheap copies 来实现的,建立一个副本就类似 Unix 中创建一个硬链接 hard link ,空间和时间的消耗都是固定并且很小的,因此不必太过担心副本太多而导致性能问题。方法: 用svn建立一个新的branches,从这个branche做为一个新的起点来开发需求二: 产品开发已经基本完成,并且通过很严格的测试,这时候我们就想发布给客户使用,发布我们的1.0版本 这个和branches有什么区别,好像啥区别也没有? 是的,branches和tags是一样的,都是目录,只是我们不会对这个release-1.0的tag做修改了,不再提交了需求三: 有一天,突然在trunk下的core中发现一个致命的bug,那么所有的branches一定也一样了,该怎么办?在本地将必威体育精装版的主干取出 svn co /repos/example/trunk example 2 、到当前的example目录下合并分支,4889,4906分别表示分支的最初版本号和最终版本号svn merge -r 4889:4906 /repos/example/branches/branches_test
4、典型的svn目录结构project/branches/project/tags/project/trunk/
5、项目代码测试发布前别忘打上tag,作为一个基准.代表一次发布版本。
6、实用的SVN命令* svn copy 创建分支或者标签? svn copy /repos/calc/trunk /repos/calc/tags/release-1.0 -m Tagging the 1.0 release of the calc project.
* svn switch 切换工作拷贝到指定的分支或者返回主干 svn switch /repos/calc/branches/my-calc-branch
* svn diff 版本比较svn diff rules.txt 比较本地修改svn diff --r 3 rules.txt??? 比较工作拷贝和版本库svn diff --r 2:3 rules.txt? 比较版本库与版本库
* svn revert? 删除你的本地修改,恢复到修改前的状态.
* 查一个过去的版本,重定向输出到一个文件svn cat -r 2 rules.txt rules.txt.v2
*svn info? 查看当前工作拷贝是在主干还是在哪个分支上。一些相关的概念和原理
分支 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 回主干时出现
文档评论(0)