配置管理工具SVN使用规范.docx
《配置管理工具SVN使用规范.docx》由会员分享,可在线阅读,更多相关《配置管理工具SVN使用规范.docx(19页珍藏版)》请在冰豆网上搜索。
配置管理工具SVN使用规范
配置管理工具SVN
使用规范
西安四海为家房车有限公司
文档修订记录
章节编号
版本号
修订内容简述
修订日期
作者
第一次建立
2017-3-16
王宁
1.引言
1.1Subversion的介绍
SVN是Subversion的缩写。
Subversion管理随时改动的文件和目录,以二进制格式存储所有的文件,使用高效的比较二进制差异算法来计算版本之间的改动。
同时,它是一个时间机器,随时记录文件和目录的每次改动,例如:
文件的增加、删除、重新排列文件等。
同时SVN允许你恢复以前旧版本的数据,或者检查数据变化的历史。
SVN使用类似数据库事物的方式来处理用户提交入库的过程,整个改动要么成功的被提交,要么被中断并回滚。
在数据提交完之前,其他人是看不到用户提交的修改文件,你看到的要么是改动之前的状态,要么是改动之后的状态。
这样的行为被称为“原子提交”。
原子提交很有用,因为它能保证所有相关人员看到的总是相同的东西。
原子提交过程的其中一步就是包括把你的所有改动打包为一个“修订集”(有时被称为改动集),并且再给个改动标记的修订号(绿色勾变为红色叹号)。
1.2Subversion的特性
1.2.1版本化的目录
Subversion实现了一个可以跟踪目录树更改的“虚拟”版本化文件系统,文件和目录都是有版本的。
1.2.2真实的版本历史
通过Subversion你可以对文件或是目录进行增加、拷贝和改名操作,也可以新增一个具有干净历史的文件。
可以毫不夸张的将每一个版本都可以作为一个记忆片段定点。
1.2.3原子提交
版本库采用二进制差异形式提交修改的数据内容,一系列的改动,要么全部提交到版本库,要么一个也不提交,这样可以让用户构建一个需要提交修改的逻辑块,放置部分修改提交到版本库。
1.2.4一致的数据操作
Subversion表示文件是建立在二进制文件区别算法基础上的,对于文本(可读)和二进制(不可读)文件具备一致的草所方式,两种类型的文件都压缩存放在版本库中。
1.3SVN链接模式
其中本地工作副本与SVN系统链接的媒介是“.svn”隐藏文件夹,.svn隐藏文件夹中包含了系统链接、版本等信息,下图为本地工作副本与SVN系统链接后状态,绿色勾代表文件受系统控制(后面简称:
受控)标志,红色叹号为受控文件改动标志。
链接状态
1.4SVN操作流程
操作流程图
上图中总体概括了SVN整个操作过程:
首先用户从版本库通过网络“检出”到本地工作副本中,然后,在本地工作副本中进行增加、修改、删除文件后“提交”到版本库中,如果本地工作副本中版本较系统版本过时,用户使用“更新”功能与系统上版本保持一致。
2.SVN使用
2.1SVN软件安装
下载地址:
;
安装完不要忘记重启电脑
安装完成后,按下鼠标右键,会看到如下界面:
如果显示是这样的,就说明安装成功了。
2.2SVN库介绍
2.2.1SVN库
SVN库,分别是:
开发库和运营库。
其中开发库和运营库为同一帐号密码。
各库的登录路径如下:
⏹开发库:
研发部工作平台。
登录路径:
项目;
⏹运营库(project):
运营部工作平台。
登录路径:
运营项目
2.2.2帐号注册、权限申请
1.用户帐号注册:
新进员工没有SVN帐号,通过邮件联系SVN管理员,邮件正文注明申请SVN普通帐号,管理员处理完帐号注册事宜后,会邮件回复。
注:
普通帐号,只对公共区域目录有读取权限。
2.权限的申请:
凡是涉及到研发部层面的权限申请或者是涉及到非本部门的权限申请,一律填写如附件《特殊权限申请单》,在各方领导审核审批后,交由SVN管理员处理,在管理员处理完毕后回复用户。
2.3基本操作
2.3.1系统登录
点击鼠标右键出现功能选项,选择“TortoiseSVN”中的“版本库浏览器”,这时系统弹出URL界面,用户在URL中输入需要进入的库路径,弹出登录认证框,用户输入用户名和密码进入系统主界面。
图(a)系统登录
图(b)认证界面
图(c)public库系统界面
图(a)和图(b)是系统登录操作界面,图(c)是系统的主界面,三副图中整体描述了SVN系统的登录情况。
注:
图(b)中“Saveauthentication”是保存认证选项,用户根据需要对自己的用户名和密码进行保存,以便在下次操作时不需要再次输入用户名和密码了。
2.3.2设置功能(Settings)
在上节类容中主要讲述了系统的登录方式和认证保存的方法,接下来继续讲述系统“设置(Setting)”功能的使用。
在设置中,用户可以根据需要选择系统的语言显示、清除已保存的数据、显示特征标志等等。
(1)系统语言显示选择
系统语言中-英文转换
系统安装后全部默认为英文模式,这时需要用户手动切换到中文模式。
上图中描述了中英文切换的过程,在选择“设置(Setting)”功能后弹出的对话框自动显示语言栏(Language),用户选择“中文(简体)”后确认即可。
(2)忽略上传文件
SVN系统有一个似过滤器的功能,在本地工作副本中用户可以根据需要过滤一些不需要上传到服务器的文件,这个功能就是“全局忽略样式”。
全局忽略样式
忽略样式对提交文件扩展名进行选择性忽略,忽略格式通常以*.X形式被系统识别,例如:
用户不需要将编译产生的.o和.err文件提交到SVN上,这时用户在全局忽略样式中输入*.o*.err如上,各条目之间以空格分隔。
注意:
当用户在本地工作副本中对新添加文件采用了系统添加功能操作,忽略样式功能对本地副本中的文件将不起作用,如下表蓝色加号表示文件已添加;另外还有一种情况,如果已经将想忽略的文件提交到了SVN系统上,是无法进行忽略的。
添加文件样式
(3)保存清除
在对系统保存认证后相应需要对认证进行清除,清除功能仍然在设置模块中,界面如下图。
在保存清除中共可以对本地四种已保存数据进行清除,分别有URL历史记录、日志信息、窗口大小、认证数据,在对这些数据完全清理后系统自动恢复到“零”状态。
因此,用户在离机后也别忘记将保存认证数据清除掉,以保障资料的安全性。
认证清除
密码清除
(4)特征标志选择
不少用户在使用SVN“检出”功能后,本地工作副本没有出现特征符号——绿色勾或其他特征符号,这是由于系统无法识别默认的状态缓存,需要人工手推选择状态缓存方式,改变状态缓存方法如下图,在设置中选择“外观与样式”的“图标叠加”模块,再在“状态缓存”中选择“Windows外壳”。
特征显示
设置中其他不常用的功能不再进行一一介绍,用户可以根据日常操作实践来理解。
2.4系统规范使用
项目开发要求:
1、工作目录要及时更新,不要和SVN服务器有太大的差别
2、提交代码时,如果出现冲突,必须仔细分析解决,不可以强行提交
3、提交代码之前先在本地进行,确保项目能编译通过,且能够正常运行,不可盲目提交
4、必须保证SVN上的版本是正确的,项目有错误时,不要进行提交
2.4.1迁出配置库内容(SVNCheckout)
1.新建或进入目录下(比如E盘),右键→SVNCheckout
2.URLofrepository填写仓库路径即可
3.Revision处,“HEADrevision”是指最新版,也可以指定Revision为任意一个版本。
4.
5.点击“OK”按钮后,在弹出的对话框中输入用户名和密码,验证成功后,项目文件开始从远程服务器下载到本地工作目录中:
6.
5.点击“确定”按钮后,即可获取完成,出现如下下载界面:
6.下载完成后,服务器上所有内容会出现在本地文件夹下
2.4.2更新文件(SVNUpdate)
1.当从配置库迁出相应目录后,他人对服务器上此目录内容进行了修改,则需要再次获取改动内容到本地目录的过程称为更新。
更新可以针对一个文件、几个选中的文件或者整个文件目录。
2.选中要被更新的文件,右键选择“SVNUpdate”项,如下:
3.
4.2)点击“SVNUpdate”后会弹出窗口显示更新的进度,如下:
若上述框中的有文件出现亮红,说明来自配置库的内容与你本地修改内容合并时出现了冲突
2.4.3提交更新(SVNCommit)
1.本地文件修改后,若是需要更新到服务器上,则需要提交(Commit)最新的更新。
Commit的作用是将本地最新修改的文件同步到SVN服务端,供其他人来参考或者使用,当然使用之前,要先Update一下,来确保是最新的,在修改文件上击右键,出现菜单,选择“SVNCommit…”,如下:
2.然后填写关于本次更新的日志(logmessage),这是必填项,否则commit会失败,如下:
提交代码需注意如下规范:
●先更新,再提交
SVN更新的原则是要随时更新,随时提交。
当完成了一个小功能,能够通过编译并且自己测试之后,谨慎地提交。
如果在修改的期间别人也更改了svn的对应文件,那么commit就可能会失败。
如果别人和自己更改的是同一个文件,那么update时会自动进行合并,如果修改的是同一行,那么合并时会产生冲突,这种情况就需要同之前的开发人员联系,两个人一起协商解决冲突,解决冲突之后,需要两人一起测试保证解决冲突之后,程序不会影响其他功能。
在更新时注意所更新文件的列表,如果提交过程中产生了更新,则也是需要重新编译并且完成自己的一些必要测试,再进行提交。
这样既能了解别人修改了哪些文件,同时也能避免SVN合并错误导致代码有错。
●多提交
每次提交的间歇尽可能地短,以几个小时的开发工作为宜。
例如在更改UI界面的时候,可以每完成一个UI界面的修改或者设计,就提交一次。
在开发功能模块的时候,可以每完成一个小细节功能的测试,就提交一次,在修改bug的时候,每修改掉一个bug并且确认修改了这个bug,也就提交一次。
我们提倡多提交,也就能多为代码添加上保险。
●不要提交不能通过编译的代码
代码在提交之前,首先要确认自己能够在本地编译。
如果在代码中使用了第三方类库,要考虑到项目组成员中有些成员可能没有安装相应的第三方类库。
项目经理在准备项目工作区域的时候,需要考虑到这样的情况,确保开发小组成员在签出代码之后能够在统一的环境中进行编译。
●每次提交必须书写明晰的标注
在一个项目组中使用SVN,如果提交空的标注或者不确切的标注将会让项目组中其他的成员感到很无奈,项目经理无法很清晰的掌握工作进度,无法清晰的把握此次提交的概要信息。
在发现错误后也无法准确的定位引起错误的文件。
所以,在提交工作时,要填写明晰的标注,能够概要的描述所提交文件的信息,让项目组其他成员在看到标注后不用详细看代码就能了解你所做的修改。
●提交时注意不要提交本地自动生成的文件
例如eclipse中的.classpath文件,Windows生成的缩略图,项目编译生成的临时文件.obj,.class等等。
如果项目中没有进行这方面的配置来强行禁止提交这样的文件,请自觉不要提交这样的文件。
提交了这样的文件后,别人在更新后就可能与本地的环境冲突从而影响大家的工作。
●不要提交自己不明白的代码
代码在提交入SVN之后,你的代码将被项目成员所分享。
如果提交了你不明白的代码,你看不懂,别人也看不懂,如果在以后出现了问题将会成为项目质量的隐患。
因此在引入任何第三方代码之前,确保你对这个代码有一个很清晰的了解。
●慎用锁定功能
在项目中要慎用锁定的功能,在你锁定了一个文件之后别人就无法继续修改提交该文件,虽然可以减少冲突的发生率,但是可能会影响项目组中其他人员的工作。
平时只有在编辑那些无法合并的文件(例如图片文件,flash文件等)时,才适当的采用锁定操作。
2.4.4增加文件(Add)
1.将需要增加的新文件放入到本地迁出的文件夹TestManger目录的相应位置中,鼠标选中新文件右键选择“TortoiseSVN”的“Add”项,如下图所示:
2.鼠标选中TestManger文件夹右键选择“SVNCommit…”,将新文件上传配置库对应文件夹中(若只上传单个文件,只需点中单个文件上传即可)。
2.4.5检查更新(Checkformodifications)
1.此功能可以显示本地对文件所做的修改有哪些还没有提交。
不光能看到对文件的修改变化,还包括增加文件或目录,删除文件或目录,移动文件或目录等。
当他人提交了哪些文件的改动,也可通过此项来进行查询。
2.4.6删除文件(Delete)
1.选中要被删除的文件,右键选择“TortoiseSVN”的“Delete”项,如下:
1.删除文件后,鼠标选中TestManger文件夹右键选择“SVNCommit…”项进行提交,提交方式同增加文件的提交方式,提交后则将新文件从配置库中删除。
2.4.7撤销更改(Revert)
在修改了某些文件后(文件未上传到配置库),需要返回到修改前的状态,则选中文件夹右键选择“TortoiseSVN”的“Revert…”项进行撤销,本地硬盘上的文件将恢复到修改前的内容,修改的内容将被删除。
2.4.8锁定和解锁(GetlockandReleaselock)
当项目需要时可以在本地硬盘中将迁出的内容进行锁定,选中要被锁定的文件右键选择“TortoiseSVN”的“Getlock…”项进行锁定(锁定后他人将无法修改此文件),系统弹出锁定信息框。
当文本文件锁定后,需要通过解锁他人才能继续对文件进行修改。
选中被锁定的文件右键选择“TortoiseSVN”的“Releaselock…”项进行解锁。
2.4.9重命名文件(Rename)
修改文件名,选中需要重命名的文件或文件夹,然后右键“TortoiseSVN”的“Rename”,在弹出的对话框中输入新名称,点击“OK”按钮,并将修改文件名后的文件或文件夹“SVNCommit…”提交到SVN服务器上。
2.4.10获取历史文件(Showlog)
Showlog顾名思义是显示日志的作用,主要是显示该文件或者该目录被执行的操作,是被谁修改了,以及修改的时间和日期。
鼠标选中文件夹右键选择“TortoiseSVN”的“Showlog”项,系统弹出此路径下的所有文件版本信息,如下:
2.4.11版本控制
文件的追溯性主要表现在文件的版本提交控制情况,一个文件或数据的成型可能经历上百个版本修改。
因此,只要使用好版本控制,不仅节省脑力劳动,而且提高了工作效率,当日文件修改后提交过程中日志备注是必不可少的。
图2-14版本控制管理
2.4.12与目录无关内容
SVN系统平台是事业部各人员日常工作平台,提交的文件和数据均是工作相关内容,因此不允许用户将私人照片、电影等不相关内容上传。
另外在project库中研发工程师需按照PQE项目质量拟定的基线目录提交相关内容,下图中列举了M6车型中上传F3项目的不规范现在。
使用不规范目录
2.4.13文件夹目录名称规范
用户在提交日常文件成功后,系统会自动精确到秒的记录用户所有操作,因此,用户在日志备注中注明提交原因和较详细的描述修改的地方,不需要在文件夹名后添加文件修改日期,下图中形象的表现了用户在文件夹后加日期不规范现象。
文件夹带日期不规范现象
2.4.14文件上传格式
日常更新的文件、数据不能转换成PDF、压缩包等格式提交;文件不用压缩,不能设置密码。
2.4.15文件、数据放置
文件、数据不允许重复放置。
2.5日常使用问题
2.5.1版本库无响应
在版本库浏览器中输入SVN路径后系统处于无响应状态。
解决方法:
检查SVN路径是否输入正确,如果正确,请用户确认路径和符号是否在英文模式下输入的,如果不是请将其修改为英文模式。
导致原因:
由于SVN现阶段只支持全英文状态路径,因此用户在输入路径时要注意。
2.5.2邮件中的路径链接
直接点击邮件中的链接地址为何打不开文件
导致原因:
输入路径太长,OE(OutlookExpress)中只默认到一定字节数,导致点击链接文件无法达到底层目录或直接发生链接错误。
解决方法:
在OE中选择“插入”——“超级链接”——“URL”,将全部路径粘贴进URL中,接收方在点击链接后能顺利打开文件。
如下图:
outlook路径输入模式
2.5.3系统库最上层打不开
导致原因:
网络不通;
使用IE代理;
路径输入错误.
问题解析:
用户要清楚一点,所有系统帐号,最上层是一定能打开的,除非你没有SVN帐号。
一旦发现上述情况,用户首先是检查路径的正确性。
如果路径正确,请确认是否存是由以下两种因素引起的。
(1)首先,请检查网络是否连通;
(2)其次,检查是否使用了网络代理,由于Apache关系,用户在使用代理后是无法登录SVN的。
2.5.4提交失败(Commitfail)
(1)文件提交不上
文件无法提交
导致原因:
绿框内记录了问题点存在的直接原因,当用户提交文件时,系统提示路径不存在,该路径指代的是系统上与本地链接的路径已经不存在。
此时,用户首先确认是否对服务器上相应目录名称做过改动,或者是将该目录移植、删除。
(2)没有权限
看到报错信息中包含以上信息(Commitfail)时,请联系SVN管理员处理权限配置。
2.5.5SVN文件夹无法下载
如果一个文件夹内容的无法下载,导致原因有两种:
(1)文件名末尾有空格
解决方法:
将文件名称的空格去除,再执行下载操作。
(2)本地目录中已下载相同路径(如以下图片)
在本机中已存在“.svn”路径的目录下继续下载第二个目录是不可执行的操作,如图2-19。
解决方法:
如果真需要继续在本目录中下载其他文件夹,用户在该目录下新建一个文件夹后再执行检出操作,以新建目录为本地副本。
目录无法下载
2.5.6特征图标的显示
明明是检出了,受控文件(夹)为何没有绿色勾
导致原因:
由于个别电脑无法识别SVN默认选择的Default,因此电脑在检出后没有绿色勾特征。
解决方法:
在设置中的IconOverlays中选择Statuscache的(外壳)Shell项即可,如果仍然没有显示,用户重启电脑。
标志显示类型选择
2.5.7冲突问题解决
导致原因:
由于用户操作不当,或由于版本过期引起。
冲突现象分为轻微型冲突和死亡型冲突,由于版本过期使用更新操作时引起的可通过SVN功能解决的冲突定义为轻微型冲突,由于操作不当无法用SVN功能解决的冲突较死亡型冲突。
冲突产生
轻微型冲突解决方法:
在发生轻微型冲突现象后,用户使用功能已解决的(Resolved)来处理该事件。
冲突解决
死亡型冲突解决方法:
在发生死亡型冲突后,已解决的功能无法解决错误问题,用户只能舍弃现有本地工作副本,重新从服务器上下载版本库,然后通过覆盖新下载数据方式继续进行下一步操作。
注:
在覆盖前一定要将舍弃的本地工作副本中.svn隐藏文件夹删除掉。
2.5.8提交时出现的磁盘空间不足问题
部分用户在提交时数据到SVN上时,系统提示磁盘空间不足信息。
导致原因:
由于存放工作副本的磁盘剩余空间较小,达不到提交所需的资源释放。
问题解决:
用户检查磁盘空间量,并释放冗余空间。
2.5.9IE浏览器与版本库浏览器的差异
相同点:
两者都能下载。
两者差异:
使用版本库浏览器登录可以“检出”“提交”,并且包含所有的SVN系统功能;使用IE浏览器登录可以查阅及下载,不包括SVN系统涵盖的系统功能。
附录1:
SVN特殊权限申请表
SVN特殊权限申请表
表码:
01编号:
申请人
王敏
工号
576708
部门
开发部
职务
开发工程师
SVN申请路径
项目/二期项目-自驾营地
申请权限
■读取权限(R)备注:
□写入权限(RW)备注:
申请理由
学习车型项目管理
访问有效期
□无限期
■有限期:
2017年03月27日——2018年03月22日
申请部门审核意见:
□不同意□需再次确认■同意
主管/经理:
郑建日期:
确认部门审核意见:
□不同意□需再次确认□同意
主管/经理:
日期:
项目管理部处理结论:
SVN管理:
王宁日期:
流动路线:
申请部门→确认部门→项目管理部
保存单位:
质量控制部
保存期限:
3年
备注:
申请路径必须明确
2.*:
按文件夹秘密等级度选择
附录2:
SVN功能解析
主要功能
附属功能
Repo-browser
版本库浏览器
Import导入
Export导出
Checkout检出
Update更新
Commit提交
Showlog显示日志
Resolved已解决的
Updatetorevision更新至版本
Revert还原
Cleanup清理
Branch/tag分支/标志
Switch切换
Merge合并
Add增加
⏹导入(Import):
工作目录初始化或第一次向数据库上工作目录添加原始文件;
⏹导出(Export):
数据库中的文件夹内容复制到本地,不受SVN数据库管理;
⏹检出(Checkout):
将资料库中的文件夹内容复制到本地目录,受SVN数据库管理;
⏹提交(Commit):
在检出副本目录中对文件进行的添加、修改、删除等动作上传到数据库;
⏹更新(Update):
如果检出的版本过期则使用更新;
⏹显示日志(Showlog):
包含了该文件(夹)从起源开始操作的一切版本、操作方式、用户名称、日期。
用户可以通过该信息追溯原始数据变化的所有结点;
⏹版本库浏览器(Repo-browser):
进入SVN系统界面的途径;
⏹已解决的(Resolved):
当本地受版本控制文件夹由于版本过期导致冲突时使用;
⏹更新至版本(Updatetorevision):
同一目录不同版本间的切换;
⏹SVN还原(Revert):
对本地工作副本文件做了改动未提交,又想恢复到被改动以前的状态;
⏹清理(Cleanup):
轻微冲突时使用;
⏹切换(Switch):
应用于本地副本目录不同路径、不同版本间的切换;
⏹合并(Merge):
将分支文档、数据进行自动合并(由于系统自带合并功能不完善,建议用户不要使用);
⏹重新定位(Relocate):
将检出的本地副本切换到其他版本库(建议不使用);
⏹增加(Add):
新增文件或文件夹需要进行提交显示时使用。