SVN使用规范.docx
- 文档编号:6132116
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:22
- 大小:1.34MB
SVN使用规范.docx
《SVN使用规范.docx》由会员分享,可在线阅读,更多相关《SVN使用规范.docx(22页珍藏版)》请在冰豆网上搜索。
SVN使用规范
SVN使用规范
第一章引言
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隐藏文件夹中包含了系统链接、版本等信息,图1-1为本地工作副本与SVN系统链接后状态,绿色勾代表文件受系统控制(后面简称:
受控)标志,红色叹号为受控文件改动标志。
图1-1链接状态
1.4SVN操作流程
图1-2操作流程图
图1-2总体概括了SVN整个操作过程:
首先用户从版本库通过网络“检出”到本地工作副本中,然后,在本地工作副本中进行增加、修改、删除文件后“提交”到版本库中,如果本地工作副本中版本较系统版本过时,用户使用“更新”功能与系统上版本保持一致。
第二章SVN使用
2.1基本操作
2.1.1操作介绍
1.系统登录
点击鼠标右键出现功能选项,选择“TortoiseSVN”中的“版本库浏览器”,这时系统弹出URL界面,用户在URL中输入需要进入的库路径,弹出登录认证框,用户输入用户名和密码进入系统主界面。
图2-1(a)系统登录
图2-1(b)认证界面
图2-1(c)public库系统界面
图2-1(a)和图2-1(b)是系统登录操作界面,图2-1(c)是系统的主界面,三副图中整体描述了SVN系统的登录情况。
注:
图2-1(b)中“Saveauthentication”是保存认证选项,用户根据需要对自己的用户名和密码进行保存,以便在下次操作时不需要再次输入用户名和密码了。
2.设置功能的使用
在上节类容中主要讲述了系统的登录方式和认证保存的方法,接下来继续讲述系统“设置(Setting)”功能的使用。
在设置中,用户可以根据需要选择系统的语言显示、清除已保存的数据、显示特征标志等等。
(1)系统语言显示选择
图2-2系统语言中-英文转换
系统安装后全部默认为英文模式,这时需要用户手动切换到中文模式。
图2-2中描述了中英文切换的过程,在选择“设置(Setting)”功能后弹出的对话框自动显示语言栏(Language),用户选择“中文(简体)”后确认即可。
(2)忽略上传文件
SVN系统有一个似过滤器的功能,在本地工作副本中用户可以根据需要过滤一些不需要上传到服务器的文件,这个功能就是“全局忽略样式”。
图2-3(a)全局忽略样式
忽略样式对提交文件扩展名进行选择性忽略,忽略格式通常以*.X形式被系统识别,例如:
用户不需要将编译产生的.o和.err文件提交到SVN上,这时用户在全局忽略样式中输入*.o*.err如图2-3(a),各条目之间以空格分隔。
注意:
当用户在本地工作副本中对新添加文件采用了系统添加功能操作,忽略样式功能对本地副本中的文件将不起作用,如图2-3(b)表蓝色加号表示文件已添加;另外还有一种情况,如果已经将想忽略的文件提交到了SVN系统上,是无法进行忽略的。
图2-3(b)添加文件样式
(3)保存清除
在对系统保存认证后相应需要对认证进行清除,清除功能仍然在设置模块中,界面如图2-4。
在保存清除中共可以对本地四种已保存数据进行清除,分别有URL历史记录、日志信息、窗口大小、认证数据,在对这些数据完全清理后系统自动恢复到“零”状态。
因此,用户在离机后也别忘记将保存认证数据清除掉,以保障资料的安全性。
图2-4(a)认证清除
图2-4(b)密码清除
(4)特征标志选择
不少用户在使用SVN“检出”功能后,本地工作副本没有出现特征符号——绿色勾或其他特征符号,这是由于系统无法识别默认的状态缓存,需要人工手推选择状态缓存方式,改变状态缓存方法如图2-5,在设置中选择“外观与样式”的“图标叠加”模块,再在“状态缓存”中选择“Windows外壳”。
图2-5特征显示
设置中其他不常用的功能不再进行一一介绍,用户可以根据日常操作实践来理解。
3.在SVN系统上进行日常工作
SVN系统不支持直接在系统上对文件修改的操作。
如果有受控文件需要修改,用户可以通过在本地工作副本中修改后提交到系统上,这中间的媒介就是.svn隐藏文件夹,系统的整个操作范围:
“检出”——“提交”——“更新”,接下来给大家详细介绍各操作。
(1)本机文件夹与服务器文件夹之间的链接
首先,在本地电脑新建一个文件夹,并给文件夹重新命名;
然后,鼠标选择文件夹,点击右键选择“检出(Checkout)”功能,使用检出功能后本地文件夹有一个绿色的勾,称之为本地“工作副本”。
图2-6(a)中黄色框为SVN路径选择区域,绿色框为本地路径选择区域,用户根据需要在后面按钮处选择相关下载路径。
图2-6(b)中为系统文件夹检出到本地后的状态。
图2-6(a)SVN检出按钮
图2-6(b)SVN检出视图
另外,用户还可以在系统界面直接检出需要文件夹到本地,在服务器界面选择需要下载文件夹如图2-6(c),然后点击右键选择“检出”功能再继续按照以上操作即可。
注:
用户需要注意“检出”功能只针对系统文件夹,对于系统中单个文件是不能够使用检出的。
图2-6(c)界面SVN检出
(2)日常操作上传SVN
当创建了本地工作副本后,可以在副本中进行任何日常操作,如:
增加文件夹、文件、修改文件、数据等,用户每天下班前将需要本地副本中做的修改提交(Commit)到SVN上,确保服务器上数据与本地副本中的数据保持同一版本。
需要强调的是,虽然用户在本地创建了工作副本,但如果所有执行操作没有提交到SVN上,一旦本机数据丢失,将无法追溯。
用户在提交时需要注意两点,如图2-7:
选择提交无版本控制选项,避免出现新增文件漏提现象;
日志备注的填写,方便后续对文件的追溯。
图2-7SVN提交
(3)文件修改差异比较
SVN系统有一个非常适用的功能——“修改差异的比较”,可以将本次修改内容和原稿作比较并显示出来,图2-8(a)为提交版本与修改前差异比较方法,图2-8(b)为追溯历史版本之间差异的比较方法。
图2-8(a)修改差异比较
图2-8(b)追溯差异比较1
图2-8(b)追溯差异比较2
(4)历史追溯
SVN系统的记忆犹如时间片段的集合,每一个版本代表了一个时间定点,当用户需要回顾或追溯之前的某一个时间节点时,通过系统的日志显示(showlog)功能来实现。
通俗一点讲,十五部的SVN系统正是一部录制过程中的电影,每一个用户提交的内容都是劳动集成点的片段,当某一天用户需要回忆某个记忆点时,可以结合图2-9的操作来实现。
在看图2-9之前,先回到2-8(b)的过程中,选择了显示日志功能列表中有一个专用“浏览版本库”功能,用户通过这个功能可以回到之前任意一个版本时代。
图2-9历史记录追溯
(5)系统自带的搜索功能
SVN系统自带强大的搜索功能,用户可以通过选择日志信息、路径、作者、版本号查询所需版本文件。
具体操作步骤如下:
第一步:
选择需要查找的目录,右键选择“显示日志”功能,弹出图2-10(a)界面。
第二步:
如果日志信息在100条以上,需要选择左下角的“全部显示”或“下100”按钮。
图2-10(a)日志显示
第三步:
从对话框右上角的放大镜窗口选择需要搜索的信息,例如:
需要查询zhaoxizu提交的文件,在对话框中输入zhaoxizu回车即可,如图2-10(b)。
图2-10(b)系统自带搜索
2.2系统规范使用
2.2.1规范操作
日常文件更新一律按照“检出—提交”的方法,用户需要在本地创建工作副本,在本地修改后提交到SVN系统上,不允许直接将文件拉到系统上,图2-13中列举用户操作不规范现象。
2-13使用不规范现象
2.2.2版本控制的使用
文件的追溯性主要表现在文件的版本提交控制情况,一个文件或数据的成型可能经历上百个版本修改。
因此,只要使用好版本控制,不仅节省脑力劳动,而且提高了工作效率,当日文件修改后提交过程中日志备注是必不可少的。
图2-14版本控制管理
2.2.3与目录无关内容
SVN系统平台是事业部各人员日常工作平台,提交的文件和数据均是工作相关内容,因此不允许用户将私人照片、电影等不相关内容上传。
另外在project库中研发工程师需按照PQE项目质量拟定的基线目录提交相关内容,图2-15中列举了M6车型中上传F3项目的不规范现在。
图2-15使用不规范目录
2.2.4文件夹目录名称规范
用户在提交日常文件成功后,系统会自动精确到秒的记录用户所有操作,因此,用户在日志备注中注明提交原因和较详细的描述修改的地方,不需要在文件夹名后添加文件修改日期,图2-16中形象的表现了用户在文件夹后加日期不规范现象。
图2-16文件夹带日期不规范现象
2.2.5文件上传格式
日常更新的文件、数据不能转换成PDF、压缩包等格式提交;文件不用压缩,不能设置密码。
2.2.6文件、数据放置
文件、数据不允许重复放置。
2.3日常使用问题
2.3.1版本库无响应
在版本库浏览器中输入SVN路径后系统处于无响应状态。
解决方法:
检查SVN路径是否输入正确,如果正确,请用户确认路径和符号是否在英文模式下输入的,如果不是请将其修改为英文模式。
导致原因:
由于SVN现阶段只支持全英文状态路径,因此用户在输入路径时要注意。
2.3.2邮件中的路径链接
直接点击邮件中的链接地址为何打不开文件?
导致原因:
输入路径太长,OE(OutlookExpress)中只默认到一定字节数,导致点击链接文件无法达到底层目录或直接发生链接错误。
解决方法:
在OE中选择“插入”——“超级链接”——“URL”,将全部路径粘贴进URL中,接收方在点击链接后能顺利打开文件。
如图2-17:
图2-17outlook路径输入模式
2.3.3系统库最上层打不开
导致原因:
网络不通;
使用IE代理;
路径输入错误.
问题解析:
用户要清楚一点,所有系统帐号,最上层是一定能打开的,除非你没有SVN帐号。
一旦发现上述情况,用户首先是检查路径的正确性。
如果路径正确,请确认是否存是由以下两种因素引起的。
(1)首先,请检查网络是否连通;
(2)其次,检查是否使用了网络代理,由于Apache关系,用户在使用代理后是无法登录SVN的。
2.3.4提交失败(Commitfail)
(1)文件提交不上
图2-18文件无法提交
导致原因:
绿框内记录了问题点存在的直接原因,当用户提交文件时,系统提示路径不存在,该路径指代的是系统上与本地链接的路径已经不存在。
此时,用户首先确认是否对服务器上相应目录名称做过改动,或者是将该目录移植、删除。
(2)没有权限
看到报错信息中包含以上信息(Commitfail)时,请联系SVN管理员处理权限配置。
2.3.5SVN文件夹无法下载
如果一个文件夹内容的无法下载,导致原因有两种:
(1)文件名末尾有空格
解决方法:
将文件名称的空格去除,再执行下载操作。
(2)本地目录中已下载相同路径(如以下图片)
在本机中已存在“.svn”路径的目录下继续下载第二个目录是不可执行的操作,如图2-19。
解决方法:
如果真需要继续在本目录中下载其他文件夹,用户在该目录下新建一个文件夹后再执行检出操作,以新建目录为本地副本。
图2-19目录无法下载
2.3.6特征图标的显示
明明是检出了,受控文件(夹)为何没有绿色勾?
导致原因:
由于个别电脑无法识别SVN默认选择的Default,因此电脑在检出后没有绿色勾特征。
解决方法:
在设置中的IconOverlays中选择Statuscache的(外壳)Shell项即可,如果仍然没有显示,用户重启电脑。
图2-20标志显示类型选择
2.3.7冲突问题解决
导致原因:
由于用户操作不当,或由于版本过期引起。
冲突现象分为轻微型冲突和死亡型冲突,由于版本过期使用更新操作时引起的可通过SVN功能解决的冲突定义为轻微型冲突,由于操作不当无法用SVN功能解决的冲突较死亡型冲突。
图2-21冲突产生
轻微型冲突解决方法:
在发生轻微型冲突现象后,用户使用功能已解决的(Resolved)来处理该事件。
图2-22冲突解决
死亡型冲突解决方法:
在发生死亡型冲突后,已解决的功能无法解决错误问题,用户只能舍弃现有本地工作副本,重新从服务器上下载版本库,然后通过覆盖新下载数据方式继续进行下一步操作。
注:
在覆盖前一定要将舍弃的本地工作副本中.svn隐藏文件夹删除掉。
2.3.8提交时出现的磁盘空间不足问题
部分用户在提交时数据到SVN上时,系统提示磁盘空间不足信息。
导致原因:
由于存放工作副本的磁盘剩余空间较小,达不到提交所需的资源释放。
问题解决:
用户检查磁盘空间量,并释放冗余空间。
注意事项:
1.提交必须写注释
清晰的提交注释有助于别人理解你所做的修改,出现问题时能够快速定位,也有助于项目经理把握开发进度。
所以,在提交代码时,要填写明晰的标注,能够概要的描述所提交文件的信息,让项目组其他成员在看到标注后不用详细看代码就能了解你所做的修改。
2.禁止提交未编译通过的代码
代码在提交之前,首先要确认自己能够在本地编译。
如果在代码中使用了第三方类库,要考虑到项目组成员中有些成员可能没有安装相应的第三方类库。
项目经理在准备项目工作区域的时候,需要考虑到这样的情况,确保开发小组成员在签出代码之后能够在统一的环境中进行编译。
∙单元测试通过
∙应用启动正常
3.不要提交自己不明白的代码
代码在提交入SVN之后,你的代码将被项目成员所分享。
如果提交了你不明白的代码,你看不懂,别人也看不懂,如果在以后出现了问题将会成为项目质量的隐患。
因此在引入任何第三方代码之前,确保你对这个代码有一个很清晰的了解。
4.不要提交本地自动生成文件
eclipse会自动生成一些工程文件如.classpath,.settings等文件,以及项目编译生成的临时文件target,.class等等。
提交了这样的文件后,别人在更新后就可能与本地的环境冲突从而影响大家的工作。
例如eclipse中的.classpath文件,Windows生成的缩略图Thumbs.db,项目编译生成的临时文件.obj,.class等等。
如果项目中没有进行这方面的配置来强行禁止提交这样的文件,请自觉不要提交这样的文件。
提交了这样的文件后,别人在更新后就可能与本地的环境冲突从而影响大家的工作。
5.按功能模块整体提交
完成一个功能模块后,将该模块相关修改作为整体提交。
不宜分离过于频繁提交,使功能上不同步,并无限增大svn版本号
6.慎用锁定功能
在项目中要慎用锁定的功能,在你锁定了一个文件之后别人就无法继续修改提交该文件,虽然可以减少冲突的发生率,但是可能会影响项目组中其他人员的工作。
平时只有在编辑那些无法合并的文件(例如图片文件,flash文件等)时,才适当的采用锁定操作。
∙如果你的需求开发跨度很大,建议每周合并一次主干
7.先更新,再提交
SVN更新的原则是要随时更新,随时提交。
当完成了一个小功能,能够通过编译并且自己测试之后,谨慎地提交。
如果在修改的期间别人也更改了svn的对应文件,那么commit就可能会失败。
如果别人和自己更改的是同一个文件,那么update时会自动进行合并,如果修改的是同一行,那么合并时会产生冲突,这种情况就需要同之前的开发人员联系,两个人一起协商解决冲突,解决冲突之后,需要两人一起测试保证解决冲突之后,程序不会影响其他功能。
在更新时注意所更新文件的列表,如果提交过程中产生了更新,则也是需要重新编译并且完成自己的一些必要测试,再进行提交。
这样既能了解别人修改了哪些文件,同时也能避免SVN合并错误导致代码有错。
8.多提交
每次提交的间歇尽可能地短,以几个小时的开发工作为宜。
例如在更改UI界面的时候,可以每完成一个UI界面的修改或者设计,就提交一次。
在开发功能模块的时候,可以每完成一个小细节功能的测试,就提交一次,在修改bug的时候,每修改掉一个bug并且确认修改了这个bug,也就提交一次。
我们提倡多提交,也就能多为代码添加上保险。
9.禁止拷贝文件夹
因为文件夹中包含一个隐藏目录(.svn),该目录保存的文件的版本信息,如果未删除该目录,提交时会更新被拷贝的目录文件,而不会在当前目录新增。
附录:
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):
新增文件或文件夹需要进行提交显示时使用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SVN 使用 规范