博客列表 >SVN使用指南

SVN使用指南

书声的博客
书声的博客原创
2018年05月25日 13:31:041249浏览

SVN的目录结构

trunk 主干
branches 分支
tags 标记

默认情况下都是小写

SVN的工作机制在某种程度上就像一颗正在生长的树:
一颗有树干(trunk)和许多分支(branches)的树
分支从树干生长出来,并且细的分支从相对较粗的树干中长出
一棵树可以只有树干没有分支(但是这种情况不会持续很久,随着树的成长,肯定会有分支啦,^^)
一颗没有树干但是有很多分支的树看起来更像是地板上的一捆树枝
如果树干患病了,最终分支也会受到影响,然后整棵树就会死亡
如果分支患病了,你可以剪掉它,然后其他分支还会生长出来的哦!
如果分支生长太快了,对于树干它可能会非常沉重,最后整棵树会垮塌掉
当你感觉你的树、树干或者是分支看起来很漂亮的时候,你可以给它照张相(tags),这样就就可以记得它在那时是多么的赞。
三个目录的两种使用方法

一、主干开发
主干代码主要用于开发,主干代码始终是最新的开发版本,有可能是不稳定的,分支代码主要存储某个阶段性的稳定的代码分支,会在分支上做少量的开发维护工作,tags只在特定版本上做上一个标记不做开发

二、分支开发
主干代码不做开发,所有的开发任务在branches分支上开,开发完成后合并到主干代码上

两种目录结构在实际的开发工作中可能会交叉使用

使用场景
初期开发中使用主干开发
后其集中升级开发的情况下使用branches进行开发,最终合并到主干上去

具体使用情况根据实际需求来使用不同的开发方式
当前目录Import 导入代码到版本库中通常用于版本库初使化

clipboard.png


冲突处理
当两个人同时update后对同一个文件进行操作,操作完后A成功提交,B再去提交时B会产生冲突

2.png

看到上边的提示后首先在本地update一下看效果图
分别有冲突文件、自己修改的文件、自己修改前的版本、服务器上别人修改的最新版本


从上边的图可以看到SVN客户端自带了一个比较编辑工具,但是对中文的支持不好
大家可以用自己的编辑器来进行比较编辑,其实一般冲突比较少的时候可以直接打开冲突文件来进行编辑,有个开始和结束标志,把一样的东西保持不一样的东西修改好顺序,一般默认上边的内容还放在上边



修改后再进行 resolved操作,这操作的作用就是删除本地生成冲突文件,这步操作是必须的,然再进行commit操作就可以了



SVN客户端使用技巧
添加快捷菜单
在上边解决冲突的时侯可以看到经常需要选择二级菜单,许多常用的功能也得选择二级菜单非常的不方便 ,怎么解决呢
勾选上常用的操作,如
查看log 添加文件 编辑
冲突文件,解决冲突,
删除等,这些内容虽然设
置了一级显示,但是系统
会根据实际情况来显示的


第三比较冲突编辑工具,前边可以看到编辑冲突文件时自带的编辑器不是太好用,下边我们来集成一下第三方的工具
Beyond Compare ,主要有两个地方,一个是比较另一个是合并,合并也可以用于冲突编辑 主要参数
"D:\Program Files\Beyond Compare\BCompare.exe" %base %mine /title1=%bname /title2=%yname /leftreadonly
"D:\Program Files\Beyond Compare\BCompare.exe"  %mine %theirs %base %merged /title1=%yname /title2=%tname /title3=%bname /title4=%mname



Logs相关操作-添加
在进行提交操作时一般都需要写上message信息,这些信息对提交进行一些说明,对多多人开发来说非常重要
    添加message信息,在commit操作的时候

使用SVN show log 命令可以查看历史的logs记录

在日志上点右键可以修改日志的内容和作者

Logs相关操作-关联trac 任务单
在trac中新建的任务单,SVN可提交相关性,比如任务单 #1
完成后再commit的时候把 message的末尾加上 #1,这样对应的trac就会有相关信息的链接


目录或者文件的忽略
在SVN管理的代码中很多临时性的文件是不需要归到版本库的管理,但这些生成后会提示添加或者修改的图标,所以有些缓存目录或者临时性的文件怎么来设置为忽略,而不让SVN客户端提示
哪些类型的文件需要忽略

在window下自动生成的Thumbs.db文件
一些程序编译时生成的.obj等文件
程序生成的编译目录下的临时文件或者缓存文件
特定的目录


目录或者文件的忽略
整个目录的忽略

文件的忽略

分支的操作-新建分支
Branches 和 tags 目录下其实都分支,只是branches的分支有时候也用于开发,tags只是一个快照归档,在导入初使版本的代码的时候一般都放在trunk目录里边
新建分支 branch/tag,建立后到branches目录update


分支的操作-合并分支
在分支开发完成后把分支合并到主干执行merge命令,下图是把分支合并到主干上


可以先测试一下合并或者直接merge

当主干代码和分支代码有冲突的时候SVN客户端会提示冲突解决是现在解决还是稍后解决

上边操作使用的稍后解决,因为冲突的文件可能会比较多
通过下图可以看到冲突的文件不多一个新加一个冲突,对于数目较多的要注意修改所有冲突的文件

下图是合并后本地的代码,和普通的代码冲突是一样的,那么下边的处理方法就按代码冲突来进行处理,处理完成后 执行 SVN resolved,然后再执行commit操作,这样分支合并到主干的操作就完成了

分支的合并主要有分支-主干  分支-分支这样的操作,其实原理都是一样,都是以一个为基础,把另一个合并到当前的基础上,在基础代码上去除冲突 这样新的版本就形成了,然后再把当前基础代码进行提交,这样合并操作就完成了

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议