![SVN使用帮助完整版课件_第1页](http://file4.renrendoc.com/view/a3e6749a3da22b460b58cc072d882e32/a3e6749a3da22b460b58cc072d882e321.gif)
![SVN使用帮助完整版课件_第2页](http://file4.renrendoc.com/view/a3e6749a3da22b460b58cc072d882e32/a3e6749a3da22b460b58cc072d882e322.gif)
![SVN使用帮助完整版课件_第3页](http://file4.renrendoc.com/view/a3e6749a3da22b460b58cc072d882e32/a3e6749a3da22b460b58cc072d882e323.gif)
![SVN使用帮助完整版课件_第4页](http://file4.renrendoc.com/view/a3e6749a3da22b460b58cc072d882e32/a3e6749a3da22b460b58cc072d882e324.gif)
![SVN使用帮助完整版课件_第5页](http://file4.renrendoc.com/view/a3e6749a3da22b460b58cc072d882e32/a3e6749a3da22b460b58cc072d882e325.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内容概要问题与案例SVN简介Linux版Windows版内容概要1问题与案例(一)电脑发生故障,文件没有备份而丢失了由于人员离职,导致某些资料丢失了我怎么知道手头的公共资料是不是最新版呢?想要追溯几个月前的某个状态,却发现那个版本的文件已经被当作垃圾删除了每天要花费很多时间来向别人提供需要共享的资料问题与案例(一)电脑发生故障,文件没有备份而丢失了2问题与案例(二)相似的应用系统,每次都重复开发,难以复用一个软件被用于多个项目,发现其中存在一个BUG,所有这些项目都要进行修复人员分布在两地开发,版本如何同步甲乙两人为不同目的修改了同一份文件,乙的提交在甲提交之后,导致甲修改的内容丢失了客户测试发现了BUG,开发人员却无法重现出来问题与案例(二)相似的应用系统,每次都重复开发,难以复用3BackSVN图例SVN简介(一)BackSVN图例SVN简介(一)4SVN简介(二)一个开源的版本管理软件可架设在Apache上,使用http或https协议访问;也可使用内置的svn协议访问在Windows环境下,最常用的客户端为TortoiseSVN(简称TSVN)在Linux/Unix环境下,用命令行方式操作SVN的版本号指的不是某个文件的状态,而是整个库的状态BackSVN简介(二)一个开源的版本管理软件Back5LinuxSVN服务器帮助手册一系统环境说明二svn客户端操作svn使用基本流程查询操作定义操作编辑操作三注意事项LinuxSVN服务器帮助手册一系统环境说6Linux系统环境说明公司linuxsvn服务器IP地址为1,服务器名字:dept5svn。操作系统版本.RedHatEnterpriseLinuxServerrelease5.4(Tikanga),32位。内核版本:2.6.18-164.el5xen软件环境:apache2.4.1,subversion1.7.0,sqlite3.7.0.Linux系统环境7
客户端操作(一)svn使用基本流程:初次checkout仓库项目,建立本地工作拷贝目录与项目同步(update),保证要进行的编辑时最新版本
编辑源代码(包括创建,修改,删除)、与项目同步,提交之前要同步到最新版本,保证所有在自己之前的有关提交已经在本地有所知晓解决冲突(resolveconflict)提交(commit),一定要写上这次提交的内容的摘要,便于以后查阅客户端操作(8(二)查询操作1.将文件checkout到本地目录通过浏览器查询,输入1/svn/smqv600/,在第一次访问时,输入svn账号和密码,成功验证后会弹出如下图示(二)查询操作1.将文件checkout到本地目录9(二)查询操作
2.查看文件或目录状态1)svnstatuspath(目录下的文件和子目录状态,正常状态不显示)
状态说明【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K;被锁定】2)svnstatus–vpath(显示文件和子目录状态)第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。注:svnstatus,svndiff,和svnrevert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。在checkout后的项目目录中输入svnstatus–v.简写:svnst–v(二)查询操作2.查看文件或目录状态103.查看文件详细信息在checkout后的项目目录中输入svninfopath如svninfotest.ph4.查看日志信息在checkout后的项目目录中输入svnlogpath例如:svnlogtest.php显示这个文件所有修改记录,及其版本号的变化SVN使用帮助完整版课件115.比较差异svndiffpath(将修改的文件与基础版本比较)在checkout后的项目目录中输入svndiff–rm:npath(对版本m和n比较差异)例如:输入$svndiff–r2:4test.php6
svn帮助在用户svn命令可执行的路径下输入svnhelpsvnhelpci如图示5.比较差异127.svnlistpath显示版本库下的文件和目录列表
简写:svnls8.svncat输出指定文件或URL的内容svncat–rPREVfilename>filename(PREV时上一版本,也可以写具体版本号,这样输出结果是可以提交的)SVN使用帮助完整版课件13(三)定义操作整个项目负责人具有项目定义的权限,因此这里简单介绍下,项目库定义的有关操作及说明1.创建项目:$svnadmincreate–-fs-typefsfs/home/svn/repository/xxx,这样就创建了xxx目录,其下还有许多辅助目录如图说明/home/svn/repository/xxx/conf时这个项目配置文件存放地方/home/svn/repository/xxx/hooks是hooks脚本的存放位置(三)定义操作整个项目负责人具有项目定义的权限,因此这里简142.项目布局:有实践经验,一个项目的生存周期也不是单线的,常常有些分支或者稳定版发布或者特定功能实验性加入等事件,项目的布局需要进行一定设计来支持这些事件,官方指导建议布局为Project/trunk项目主体存放位置Project/branches项目各种分支存放Project/tag公开发布的版本存档虽然官方提供svnmkdir等命令逐一建立,然后提交。但本人建议一种比较简便的方法,输入如下语句:cd/home/svn/repository/xxxmkdirtrunk;mkdirbranches;mkdirtagssvnimport.file:///home/svn/repository/xxx/,注意它会自动调用vim编辑器,在编辑状态下输入此次操作的信息如:’Initialrepositorylayout’如图所示:2.项目布局:15导入过程如图:导入过程如图:163.实现过程例如文件的配置,账号的建立和权限的控制,鉴于篇幅和实际工作环境中的需求,在此不作累述。如有疑问可咨询IT中心4.项目的删除,注意不是仓库的清空。简单的把项目目录删除就可以了
rm–rf/home/svn/repository/xxxSVN使用帮助完整版课件17(四)编辑操作1.在项目目录中,创建文件,目录
执行svnaddtest.php(添加test.php)svnadd*.php(添加当前目录下所有的php文件)svnaddtest(目录)2.将改动的文件提交到版本库如执行svncommittest.php简写为svnci
提交整个目录
(四)编辑操作1.在项目目录中,创建文件,目录183.加锁/解锁svnlock–m“locktest.phpfile”test.php为了方便编辑和管理控制,服务器端数据库没有开放lock。如有特殊需要,可以向IT中心咨询svnunlocktest.php
4.更新到某个版本svnupdate–rmpath(简写svnup)例如:svnuptdate如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本svnupdate-r9test.php(将版本库中的文件test.php更新到版本9)注意svnupdatetest.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svnresolved,最后再提交commit)3.加锁/解锁195.恢复本地修改svnrevert:恢复原始未改变的工作副本文件(恢复大部分的本地修改)。本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录用法svnreverttest6.删除文件svndeletepath–m“deletetestfile”
例如:svndelete1/svn/smqv600/test.php–m“deletetest.php”或者直接svndeletetest.php然后再svnci–m‘deletetest.php’简写为:svn(del,remove,rm)或者SVN使用帮助完整版课件20
三注意事项1在用浏览器进行访问的时候,要正确输入1/svn/,而如果输入1/svn则会报错http404未找到2在linux客户端操作下,客户端在svn进行编辑操作可能会出现“svn:无法使用外部编辑器获得日志信息,考虑设置环境变量$SVN_EDITOR或者使用—message(-m)或—file(-F)选项………..”这是只要设置环境变量如下$exportSVN_EDITOR=vim就可以了!三注意事项21Windows版本应用环境客户端安装简单应用复杂应用Windows版本22应用环境服务器端:Virsual的SVN服务器端安装包(内含Apache2.2.22)Windows客户端:推荐使用TortoiseSVN(以下简称TSVN)可通过TSVN进行读、写操作可通过IE浏览器进行读操作可通过各种插件与开发工具集成Back应用环境服务器端:Virsual的SVN服务器端安装包(内含23客户端安装(一)安装文件:TSVN客户端:TortoiseSVN-2459-win32-svn-1.7.2全部选择默认安装,安装完成后重启电脑TSVN通过右键菜单与Windows资源管理器集成,没有自己的窗口界面Back客户端安装(一)安装文件:Back24客户端安装(二)TSVN通过右键菜单与Windows资源管理器集成,没有自己的窗口界面Back客户端安装(二)TSVN通过右键菜单与Windows资源管理25简单应用TSVN右键菜单与图标创建版本库检出更新提交增加删除改名移动Back简单应用TSVN右键菜单与图标Back26TSVN右键菜单(一)Back第一次从服务器下载数据(含历史信息)查看服务器上版本库内容从服务器下载数据(不含历史信息)在服务器上创建新的版本库(限服务器上操作)导入新版本库的目录结构(不推荐使用)TSVN右键菜单(一)Back第一次从服务器下载数据(含历史27TSVN右键菜单(二)Back从服务器上下载最新版本将本地的修改上传到服务器查看修订历史信息标记冲突已经被解决取回之前的某个版本放弃本次进行的修改SVN控制下的改名和删除将新文件纳入SVN的控制创建分支或标记合并分支TSVN右键菜单(二)Back从服务器上将本地的修改上传到服28TSVN图标BackTSVN图标Back29创建版本库在SVN服务器端操作在相应文件夹内新建一个文件夹,用于存储数据在新建文件夹上点右键,选择“TortoiseSVN-在此创建版本库”,TSVN会在此文件夹内建立若干控制文件Back创建版本库在SVN服务器端操作Back30检出(一)“检出”用于客户端第一次从SVN服务器上下载版本库数据在客户端新建一个文件夹用于存放下载的数据在新建文件夹上点右键,选择“SVN检出…”Back检出(一)“检出”用于客户端第一次从SVN服务器上下载版本库31检出(二)在弹出窗口的“版本库URL”处填入版本库的访问地址,如:22/svn/project/点“确定”开始从SVN服务器下载数据Back检出(二)在弹出窗口的“版本库URL”处填入版本库的访问地址32更新“更新”用于客户端从SVN服务器下载最新版本在受SVN控制的某层文件夹上(或文件夹内空白处)点右键,选择“SVN更新”,TSVN自动比较该文件夹客户端与服务器的版本差异,并下载最新版本到客户端Back更新“更新”用于客户端从SVN服务器下载最新版本Back33提交(一)“提交”用于将客户端的改动上传到SVN服务器在受SVN控制的某层文件夹上(或文件夹内空白处,或某文件上)点右键,选择“SVN提交…”Back提交(一)“提交”用于将客户端的改动上传到SVN服务器Bac34提交(二)TSVN自动检查该文件夹客户端的改动,并将其列在弹出窗口的“变更列表”栏在弹出窗口的“信息”栏写上对此次提交的注释,以便将来追溯点击“确定”将客户端的改动上传到服务器Back提交(二)TSVN自动检查该文件夹客户端的改动,并将其列在弹35增加(一)“增加”用于将新文件或文件夹纳入SVN的控制之下在受SVN控制的某层文件夹上(或文件夹内空白处,或新增的某文件上)点右键,选择“TortoiseSVN-增加”Back增加(一)“增加”用于将新文件或文件夹纳入SVN的控制之下B36增加(二)如果“增加”是对文件夹进行操作,则会弹出窗口列出该文件夹下未受控的文件,点击“确定”将其纳入SVN控制“增加”后文件图标从变成“增加”仅是对客户端的文件进行标注,并不上传到服务器,需要执行“提交”操作才会上传Back增加(二)如果“增加”是对文件夹进行操作,则会弹出窗口列出该37删除(一)“删除”用于从当前版本中删除文件或文件夹在受SVN控制的文件夹中,通过Windows直接删除子文件夹或文件或:在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-删除”Back删除(一)“删除”用于从当前版本中删除文件或文件夹Back38删除(二)“删除”仅是对客户端的文件进行操作,并不改变服务器上的内容,需要执行“提交”操作才会将删除操作上传到服务器将“删除”操作“提交”到服务器后,仅是从服务器的最新版本中删除了此文件或文件夹,在历史版本中仍可找回此文件或文件夹Back删除(二)“删除”仅是对客户端的文件进行操作,并不改变服务器39改名(一)“改名”用于在受SVN控制的状态下,对文件或文件夹改名在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-改名”Back改名(一)“改名”用于在受SVN控制的状态下,对文件或文件夹40改名(二)“改名”仅是对客户端的文件进行操作,并不改变服务器上的内容,需要执行“提交”操作才会将改名操作上传到服务器不要用Windows“重命名”来实现改名,因为这个操作不受SVN控制,SVN会将其理解为删除原文件、增加一个新文件,从而导致文件改名后不能跟踪到改名前的状态Back改名(二)“改名”仅是对客户端的文件进行操作,并不改变服务器41改名(三)改名的另一种方法:在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-版本库浏览器”在弹出窗口右键点击要改名的文件夹或文件,选择“改名”由于是对服务器版本库直接操作,改名后将自动执行一次“提交”操作改名完成后需要在客户端执行一次“更新”,以下载最新状态Back改名(三)改名的另一种方法:Back42移动(一)“移动”用于在受SVN控制的状态下,移动文件或文件夹的位置在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-版本库浏览器”在弹出窗口拖动文件夹或文件到需要的位置由于是对服务器版本库直接操作,移动后将自动执行一次“提交”操作移动完成后需要在客户端执行一次“更新”,以下载最新状态Back移动(一)“移动”用于在受SVN控制的状态下,移动文件或文件43移动(二)不要用Windows的拖动操作或“剪切”、“粘贴”来实现移动,因为这些操作不受SVN控制,SVN会将其理解为在原位置删除文件、在新位置增加文件,从而导致文件移动后不能跟踪到移动前的状态Back移动(二)不要用Windows的拖动操作或“剪切”、“粘贴”44复杂应用更新至版本还原复原(回滚)冲突及解决分支/标记合并锁定/解锁权限管理Back复杂应用更新至版本Back45更新至版本“更新至版本”用于取出文件的某历史版本在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-更新至版本…”在弹出窗口中填写要取的版本号,点“确定”取回该版本Back更新至版本“更新至版本”用于取出文件的某历史版本Back46还原(一)“还原”用于放弃“增加”、“删除”、“改名”以及修改文件内容等客户端的本地操作,将客户端的数据恢复到改动前的版本状态在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-SVN还原…”Back还原(一)“还原”用于放弃“增加”、“删除”、“改名”以及修47还原(二)在弹出窗口中查看要还原的内容,点击“确定”还原客户端数据“还原”只能用于执行“提交”操作之前,即未将客户端的改变上传到服务器之前Back还原(二)在弹出窗口中查看要还原的内容,点击“确定”还原客户48复原(回滚)(一)复原(回滚)用于将项目恢复到之前的某个版本状态,并在此版本基础上继续后面的工作在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-显示日志”Back复原(回滚)(一)复原(回滚)用于将项目恢复到之前的某个版本49复原(回滚)(二)在弹出的日志窗口中,右键点击要复原的版本,选择“复原到此版本”复原结束后,执行“提交”操作,将此版本作为版本库的最新版本Back复原(回滚)(二)在弹出的日志窗口中,右键点击要复原的版本,50冲突及解决(一)冲突的产生:当两人从同一个版本出发,修改同一份文件并提交时,这两个修改版本就会发生冲突,后提交的人会收到发生冲突的提醒,且提交失败,要求先进行更新操作Back冲突及解决(一)冲突的产生:Back51冲突及解决(二)113114115113114115Back不会导致冲突可能导致冲突冲突及解决(二)113114115113114115Back52冲突及解决(三)发生冲突后,执行“更新”操作后:对于发生冲突的文件,TSVN会加上冲突标记如果发生冲突的文件是二进制文件(如doc文件、jpg文件),TSVN会增加2个文件,分别是起始版本和发生冲突的版本如果发生冲突的文件是文本文件(如c文件、txt文件),TSVN会将工作副本中的原文件改名增加“.mine”后缀,将两个版本的冲突写入原名文件(文件中用<<<<<<<、=======、>>>>>>>加以标识),并另外增加2个文件,分别是起始版本和发生冲突的版本Back冲突及解决(三)发生冲突后,执行“更新”操作后:Back53冲突及解决(四)例如:两人从第213版开始对start.c和SRS.doc进行修改,甲先修改完成并提交形成217版,乙随后提交时发生冲突,则在乙的该文件夹下将会存在七个文件:start.c:自动合并了甲和乙的修改内容的start.cstart.c.r213:甲乙修改前的start.cstart.c.r217:甲修改后的strat.cstart.c.mine:乙修改后的start.cSRS.doc:乙修改后的SRS.docSRS.doc.r213:甲乙修改前的SRS.docSRS.doc.r217:甲修改后的SRS.docBack冲突及解决(四)例如:两人从第213版开始对start.c和54冲突及解决(五)解决冲突:手工将前一版本中的修改整合到自己的文件中在冲突的文件或文件夹上点右键,选择“Tortoise-已解决的…”,标记为冲突已解决(此时会自动删除多余的文件),然后再次“提交”Back冲突及解决(五)解决冲突:Back55分支/标记(一)分支:“分支”通常用于在不同的线上同时工作的情况“分支”通常设置为分支的所有者拥有读写权限,其他人员仅有读取权限标记“标记”通常用于版本发布、标识基线状态等情况“标记”通常设置为配置管理员拥有读写缺陷,其他人员只有读取权限SVN使用同样的操作进行“分支”和“标记”Back分支/标记(一)分支:Back56分支/标记(二)推荐的目录结构Backprojecttrunkbranchestags代码文档分支/标记(二)推荐的目录结构Backprojecttrun57分支/标记(三)案例一709XXX软件711A版712B版713C版714718720726717719722727716721728715723724730710Release_V1_0725Release_V1_1tags标记trunk主干branches分支729Back分支/标记(三)案例一709XXX软件7117127137158分支/标记(四)案例二711XXX软件713V1_0维护715717719…714716718720712Release_V1_01012Release_V2_0tags标记trunk主干branches分支10111013V2_0维护…Back分支/标记(四)案例二711XXX软件7137157177159分支/标记(五)案例三Back712XXX软件713BUG037717718720721714715716719trunk主干branches分支722发现BUG,编号037分支/标记(五)案例三Back712XXX软件713717760分支/标记(六)创建分支在受SVN控制的某层文件夹上点右键,选择“TortoiseSVN-分支/标记…”在弹出窗口的“至URL”栏,填写分支的存放地址,通常将其存放到branches目录下,并加上分支的名称,如:http://5:8080/svn/软件中心/project/tags/Release_V1_0Back分支/标记(六)创建分支在受SVN控制的某层文件夹上点右键,61分支/标记(七)创建分支在弹出窗口的“从此复制到版本库”处选择从“最新版本”或“指定版本”或“工作副本”(工作副本可能是个混合版本)复制在弹出窗口的“日志信息”栏填写注释信息,然后点击“确定”在对应的文件夹执行“更新”操作,下载分支到客户端,之后对分支的操作均在此文件夹进行Back分支/标记(七)创建分支在弹出窗口的“从此复制到版本库”处选62分支/标记(八)创建标记创建标记与创建分支类似,只是通常将其存放到tags目录下,如:5:8080/svn/软件中心/project/tags/Release_V1_0标记实际是为某个版本做了个标签,不会为另存一份而消耗服务器的存储空间Back分支/标记(八)创建标记创建标记与创建分支类似,只是通常将其63合并(一)合并:对两个版本树进行比较,然后将区别应用到本地副本(合并后需进行“提交”操作)例如:在分支A上进行了一系列修改,现在要将这些修改合并到主干上,则可比较建立A分支的版本与A分支最终版本之间的差异,并将差异应用到主干上可从分支合并到主干,也可从主干合并到分支,也可从分支A合并到分支B可选择合并创建分支以来的所有改变,也可选择合并创建分支以来的某几个版本的改变Back合并(一)合并:对两个版本树进行比较,然后将区别应用到本地副64合并(二)在目标文件夹上点右键,如要将“branches/工行版”分支的内容合并到主干上,则在“trunk”文件夹上点右键,选择“Tortoise-合并…”在弹出窗口选择“合并一个版本范围”(常用选择)点击“下一条”Back合并(二)在目标文件夹上点右键,如要将“branches/工65合并(三)在“合并的源URL”处选择要合并进来的分支地址,如:5:8080/svn/软件中心/project/branches/工行版在“待合并的版本范围”处填入合并的版本范围,可点击边上的“显示日志”选择版本点击“下一条”Back合并(三)在“合并的源URL”处选择要合并进来的分支地址,如66合并(四)合并深度选择默认的“工作副本”“比较空白字符”、“忽略空白字符的变化”等选择用于对文本文件的比较“测试合并”可在正式合并之前测试合并结果,比如是否存在冲突等点击“合并”若未发生冲突,可在合并后执行“提交”操作Back合并(四)合并深度选择默认的“工作副本”Back67合并(五)若合并时发生冲突,通常可在弹出窗口选择“以后解决”,在本地副本中冲突的文件处将增加2个文件(对二进制文件)或3个文件(对文本文件)手动解决冲突后,使用“Tortoise-已解决的”标记冲突已解决,然后执行“提交”操作Back合并(五)若合并时发生冲突,通常可在弹出窗口选择“以后解决”68锁定/解锁(一)为了便于多人协作,SVN不提倡“锁定-修改-解锁”的方式由于存在冲突解决的机制,通常多人可对同一份文件进行修改,而不会导致严重问题但在某些情况下,比如对一张图片进行修改时,两份冲突的图片文件将很难被整合到一起,这时建议用锁定/解锁的方式Back锁定/解锁(一)为了便于多人协作,SVN不提倡“锁定-修改-69锁定/解锁(二)锁定方法一在需要锁定的文件夹或文件上点右键,选择“Tortoise-属性”在弹出的“属性”窗口选择“新建…”,在弹出的“增加属性”窗口,选择“svn:needs-lock”属性,并点“确定”增加属性执行“提交”操作,将属性的改变上传到服务器,若他人执行更新操作,将看到文件被设置为只读Back锁定/解锁(二)锁定方法一Back70锁定/解锁(三)在设置了needs-lock属性的文件或文件夹上点右键,选择“SVN获取锁定…”,以获取锁的拥有权在弹出窗口输入锁定的原因等注释信息,然后点击“确定”获取锁定获取锁的拥有权后,文件将被标识为Back锁定/解锁(三)在设置了needs-lock属性的文件或文件71锁定/解锁(三)锁定方法二在要锁定的文件或文件夹上点右键,选择“Tortoise-获取锁定”,即可锁定并拥有其所有权,文件将被标识为采用此锁定方法时,并不会自动设定svn:needs-lock属性,别人更新后也看不到此标记,但可阻止别人的提交Back锁定/解锁(三)锁定方法二Back72锁定/解锁(四)锁定后,他人提交时将被报告文件已被锁,并提交失败解锁:对应锁定方法一:在锁定的文件夹或文件上点右键,选择“Tortoise-属性”,删除svn:needs-lock属性,然后提交对应锁定方法二:当拥有锁的人提交被锁定文件时,锁将被自动取消(而且当前拥有的所有锁都将被解除);也可通过“解除锁定”来解锁窃取锁:他人可通过“获取锁定”(勾选“偷取此锁定”)来窃取锁的拥有权强制解锁:当拥有锁的人忘记解锁时,他人可通过SVN命令行强制解锁(TSVN目前不提供该功能,可通过窃取锁+解锁实现)Back锁定/解锁(四)锁定后,他人提交时将被报告文件已被锁,并提交73权限管理管理员可通过修改服务器上的权限文件,实现对权限的控制权限分为三种:无权限、只读权限和读写权限权限的控制以文件夹为最小单位可对单个用户的权限进行控制,也可以对用户组的权限进行控制Back权限管理管理员可通过修改服务器上的权限文件,实现对权限的控制74Q&A完毕,谢谢!Q&A完毕,谢谢!75内容概要问题与案例SVN简介Linux版Windows版内容概要76问题与案例(一)电脑发生故障,文件没有备份而丢失了由于人员离职,导致某些资料丢失了我怎么知道手头的公共资料是不是最新版呢?想要追溯几个月前的某个状态,却发现那个版本的文件已经被当作垃圾删除了每天要花费很多时间来向别人提供需要共享的资料问题与案例(一)电脑发生故障,文件没有备份而丢失了77问题与案例(二)相似的应用系统,每次都重复开发,难以复用一个软件被用于多个项目,发现其中存在一个BUG,所有这些项目都要进行修复人员分布在两地开发,版本如何同步甲乙两人为不同目的修改了同一份文件,乙的提交在甲提交之后,导致甲修改的内容丢失了客户测试发现了BUG,开发人员却无法重现出来问题与案例(二)相似的应用系统,每次都重复开发,难以复用78BackSVN图例SVN简介(一)BackSVN图例SVN简介(一)79SVN简介(二)一个开源的版本管理软件可架设在Apache上,使用http或https协议访问;也可使用内置的svn协议访问在Windows环境下,最常用的客户端为TortoiseSVN(简称TSVN)在Linux/Unix环境下,用命令行方式操作SVN的版本号指的不是某个文件的状态,而是整个库的状态BackSVN简介(二)一个开源的版本管理软件Back80LinuxSVN服务器帮助手册一系统环境说明二svn客户端操作svn使用基本流程查询操作定义操作编辑操作三注意事项LinuxSVN服务器帮助手册一系统环境说81Linux系统环境说明公司linuxsvn服务器IP地址为1,服务器名字:dept5svn。操作系统版本.RedHatEnterpriseLinuxServerrelease5.4(Tikanga),32位。内核版本:2.6.18-164.el5xen软件环境:apache2.4.1,subversion1.7.0,sqlite3.7.0.Linux系统环境82
客户端操作(一)svn使用基本流程:初次checkout仓库项目,建立本地工作拷贝目录与项目同步(update),保证要进行的编辑时最新版本
编辑源代码(包括创建,修改,删除)、与项目同步,提交之前要同步到最新版本,保证所有在自己之前的有关提交已经在本地有所知晓解决冲突(resolveconflict)提交(commit),一定要写上这次提交的内容的摘要,便于以后查阅客户端操作(83(二)查询操作1.将文件checkout到本地目录通过浏览器查询,输入1/svn/smqv600/,在第一次访问时,输入svn账号和密码,成功验证后会弹出如下图示(二)查询操作1.将文件checkout到本地目录84(二)查询操作
2.查看文件或目录状态1)svnstatuspath(目录下的文件和子目录状态,正常状态不显示)
状态说明【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K;被锁定】2)svnstatus–vpath(显示文件和子目录状态)第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。注:svnstatus,svndiff,和svnrevert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。在checkout后的项目目录中输入svnstatus–v.简写:svnst–v(二)查询操作2.查看文件或目录状态853.查看文件详细信息在checkout后的项目目录中输入svninfopath如svninfotest.ph4.查看日志信息在checkout后的项目目录中输入svnlogpath例如:svnlogtest.php显示这个文件所有修改记录,及其版本号的变化SVN使用帮助完整版课件865.比较差异svndiffpath(将修改的文件与基础版本比较)在checkout后的项目目录中输入svndiff–rm:npath(对版本m和n比较差异)例如:输入$svndiff–r2:4test.php6
svn帮助在用户svn命令可执行的路径下输入svnhelpsvnhelpci如图示5.比较差异877.svnlistpath显示版本库下的文件和目录列表
简写:svnls8.svncat输出指定文件或URL的内容svncat–rPREVfilename>filename(PREV时上一版本,也可以写具体版本号,这样输出结果是可以提交的)SVN使用帮助完整版课件88(三)定义操作整个项目负责人具有项目定义的权限,因此这里简单介绍下,项目库定义的有关操作及说明1.创建项目:$svnadmincreate–-fs-typefsfs/home/svn/repository/xxx,这样就创建了xxx目录,其下还有许多辅助目录如图说明/home/svn/repository/xxx/conf时这个项目配置文件存放地方/home/svn/repository/xxx/hooks是hooks脚本的存放位置(三)定义操作整个项目负责人具有项目定义的权限,因此这里简892.项目布局:有实践经验,一个项目的生存周期也不是单线的,常常有些分支或者稳定版发布或者特定功能实验性加入等事件,项目的布局需要进行一定设计来支持这些事件,官方指导建议布局为Project/trunk项目主体存放位置Project/branches项目各种分支存放Project/tag公开发布的版本存档虽然官方提供svnmkdir等命令逐一建立,然后提交。但本人建议一种比较简便的方法,输入如下语句:cd/home/svn/repository/xxxmkdirtrunk;mkdirbranches;mkdirtagssvnimport.file:///home/svn/repository/xxx/,注意它会自动调用vim编辑器,在编辑状态下输入此次操作的信息如:’Initialrepositorylayout’如图所示:2.项目布局:90导入过程如图:导入过程如图:913.实现过程例如文件的配置,账号的建立和权限的控制,鉴于篇幅和实际工作环境中的需求,在此不作累述。如有疑问可咨询IT中心4.项目的删除,注意不是仓库的清空。简单的把项目目录删除就可以了
rm–rf/home/svn/repository/xxxSVN使用帮助完整版课件92(四)编辑操作1.在项目目录中,创建文件,目录
执行svnaddtest.php(添加test.php)svnadd*.php(添加当前目录下所有的php文件)svnaddtest(目录)2.将改动的文件提交到版本库如执行svncommittest.php简写为svnci
提交整个目录
(四)编辑操作1.在项目目录中,创建文件,目录933.加锁/解锁svnlock–m“locktest.phpfile”test.php为了方便编辑和管理控制,服务器端数据库没有开放lock。如有特殊需要,可以向IT中心咨询svnunlocktest.php
4.更新到某个版本svnupdate–rmpath(简写svnup)例如:svnuptdate如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本svnupdate-r9test.php(将版本库中的文件test.php更新到版本9)注意svnupdatetest.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svnresolved,最后再提交commit)3.加锁/解锁945.恢复本地修改svnrevert:恢复原始未改变的工作副本文件(恢复大部分的本地修改)。本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录用法svnreverttest6.删除文件svndeletepath–m“deletetestfile”
例如:svndelete1/svn/smqv600/test.php–m“deletetest.php”或者直接svndeletetest.php然后再svnci–m‘deletetest.php’简写为:svn(del,remove,rm)或者SVN使用帮助完整版课件95
三注意事项1在用浏览器进行访问的时候,要正确输入1/svn/,而如果输入1/svn则会报错http404未找到2在linux客户端操作下,客户端在svn进行编辑操作可能会出现“svn:无法使用外部编辑器获得日志信息,考虑设置环境变量$SVN_EDITOR或者使用—message(-m)或—file(-F)选项………..”这是只要设置环境变量如下$exportSVN_EDITOR=vim就可以了!三注意事项96Windows版本应用环境客户端安装简单应用复杂应用Windows版本97应用环境服务器端:Virsual的SVN服务器端安装包(内含Apache2.2.22)Windows客户端:推荐使用TortoiseSVN(以下简称TSVN)可通过TSVN进行读、写操作可通过IE浏览器进行读操作可通过各种插件与开发工具集成Back应用环境服务器端:Virsual的SVN服务器端安装包(内含98客户端安装(一)安装文件:TSVN客户端:TortoiseSVN-2459-win32-svn-1.7.2全部选择默认安装,安装完成后重启电脑TSVN通过右键菜单与Windows资源管理器集成,没有自己的窗口界面Back客户端安装(一)安装文件:Back99客户端安装(二)TSVN通过右键菜单与Windows资源管理器集成,没有自己的窗口界面Back客户端安装(二)TSVN通过右键菜单与Windows资源管理100简单应用TSVN右键菜单与图标创建版本库检出更新提交增加删除改名移动Back简单应用TSVN右键菜单与图标Back101TSVN右键菜单(一)Back第一次从服务器下载数据(含历史信息)查看服务器上版本库内容从服务器下载数据(不含历史信息)在服务器上创建新的版本库(限服务器上操作)导入新版本库的目录结构(不推荐使用)TSVN右键菜单(一)Back第一次从服务器下载数据(含历史102TSVN右键菜单(二)Back从服务器上下载最新版本将本地的修改上传到服务器查看修订历史信息标记冲突已经被解决取回之前的某个版本放弃本次进行的修改SVN控制下的改名和删除将新文件纳入SVN的控制创建分支或标记合并分支TSVN右键菜单(二)Back从服务器上将本地的修改上传到服103TSVN图标BackTSVN图标Back104创建版本库在SVN服务器端操作在相应文件夹内新建一个文件夹,用于存储数据在新建文件夹上点右键,选择“TortoiseSVN-在此创建版本库”,TSVN会在此文件夹内建立若干控制文件Back创建版本库在SVN服务器端操作Back105检出(一)“检出”用于客户端第一次从SVN服务器上下载版本库数据在客户端新建一个文件夹用于存放下载的数据在新建文件夹上点右键,选择“SVN检出…”Back检出(一)“检出”用于客户端第一次从SVN服务器上下载版本库106检出(二)在弹出窗口的“版本库URL”处填入版本库的访问地址,如:22/svn/project/点“确定”开始从SVN服务器下载数据Back检出(二)在弹出窗口的“版本库URL”处填入版本库的访问地址107更新“更新”用于客户端从SVN服务器下载最新版本在受SVN控制的某层文件夹上(或文件夹内空白处)点右键,选择“SVN更新”,TSVN自动比较该文件夹客户端与服务器的版本差异,并下载最新版本到客户端Back更新“更新”用于客户端从SVN服务器下载最新版本Back108提交(一)“提交”用于将客户端的改动上传到SVN服务器在受SVN控制的某层文件夹上(或文件夹内空白处,或某文件上)点右键,选择“SVN提交…”Back提交(一)“提交”用于将客户端的改动上传到SVN服务器Bac109提交(二)TSVN自动检查该文件夹客户端的改动,并将其列在弹出窗口的“变更列表”栏在弹出窗口的“信息”栏写上对此次提交的注释,以便将来追溯点击“确定”将客户端的改动上传到服务器Back提交(二)TSVN自动检查该文件夹客户端的改动,并将其列在弹110增加(一)“增加”用于将新文件或文件夹纳入SVN的控制之下在受SVN控制的某层文件夹上(或文件夹内空白处,或新增的某文件上)点右键,选择“TortoiseSVN-增加”Back增加(一)“增加”用于将新文件或文件夹纳入SVN的控制之下B111增加(二)如果“增加”是对文件夹进行操作,则会弹出窗口列出该文件夹下未受控的文件,点击“确定”将其纳入SVN控制“增加”后文件图标从变成“增加”仅是对客户端的文件进行标注,并不上传到服务器,需要执行“提交”操作才会上传Back增加(二)如果“增加”是对文件夹进行操作,则会弹出窗口列出该112删除(一)“删除”用于从当前版本中删除文件或文件夹在受SVN控制的文件夹中,通过Windows直接删除子文件夹或文件或:在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-删除”Back删除(一)“删除”用于从当前版本中删除文件或文件夹Back113删除(二)“删除”仅是对客户端的文件进行操作,并不改变服务器上的内容,需要执行“提交”操作才会将删除操作上传到服务器将“删除”操作“提交”到服务器后,仅是从服务器的最新版本中删除了此文件或文件夹,在历史版本中仍可找回此文件或文件夹Back删除(二)“删除”仅是对客户端的文件进行操作,并不改变服务器114改名(一)“改名”用于在受SVN控制的状态下,对文件或文件夹改名在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-改名”Back改名(一)“改名”用于在受SVN控制的状态下,对文件或文件夹115改名(二)“改名”仅是对客户端的文件进行操作,并不改变服务器上的内容,需要执行“提交”操作才会将改名操作上传到服务器不要用Windows“重命名”来实现改名,因为这个操作不受SVN控制,SVN会将其理解为删除原文件、增加一个新文件,从而导致文件改名后不能跟踪到改名前的状态Back改名(二)“改名”仅是对客户端的文件进行操作,并不改变服务器116改名(三)改名的另一种方法:在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-版本库浏览器”在弹出窗口右键点击要改名的文件夹或文件,选择“改名”由于是对服务器版本库直接操作,改名后将自动执行一次“提交”操作改名完成后需要在客户端执行一次“更新”,以下载最新状态Back改名(三)改名的另一种方法:Back117移动(一)“移动”用于在受SVN控制的状态下,移动文件或文件夹的位置在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-版本库浏览器”在弹出窗口拖动文件夹或文件到需要的位置由于是对服务器版本库直接操作,移动后将自动执行一次“提交”操作移动完成后需要在客户端执行一次“更新”,以下载最新状态Back移动(一)“移动”用于在受SVN控制的状态下,移动文件或文件118移动(二)不要用Windows的拖动操作或“剪切”、“粘贴”来实现移动,因为这些操作不受SVN控制,SVN会将其理解为在原位置删除文件、在新位置增加文件,从而导致文件移动后不能跟踪到移动前的状态Back移动(二)不要用Windows的拖动操作或“剪切”、“粘贴”119复杂应用更新至版本还原复原(回滚)冲突及解决分支/标记合并锁定/解锁权限管理Back复杂应用更新至版本Back120更新至版本“更新至版本”用于取出文件的某历史版本在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-更新至版本…”在弹出窗口中填写要取的版本号,点“确定”取回该版本Back更新至版本“更新至版本”用于取出文件的某历史版本Back121还原(一)“还原”用于放弃“增加”、“删除”、“改名”以及修改文件内容等客户端的本地操作,将客户端的数据恢复到改动前的版本状态在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-SVN还原…”Back还原(一)“还原”用于放弃“增加”、“删除”、“改名”以及修122还原(二)在弹出窗口中查看要还原的内容,点击“确定”还原客户端数据“还原”只能用于执行“提交”操作之前,即未将客户端的改变上传到服务器之前Back还原(二)在弹出窗口中查看要还原的内容,点击“确定”还原客户123复原(回滚)(一)复原(回滚)用于将项目恢复到之前的某个版本状态,并在此版本基础上继续后面的工作在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-显示日志”Back复原(回滚)(一)复原(回滚)用于将项目恢复到之前的某个版本124复原(回滚)(二)在弹出的日志窗口中,右键点击要复原的版本,选择“复原到此版本”复原结束后,执行“提交”操作,将此版本作为版本库的最新版本Back复原(回滚)(二)在弹出的日志窗口中,右键点击要复原的版本,125冲突及解决(一)冲突的产生:当两人从同一个版本出发,修改同一份文件并提交时,这两个修改版本就会发生冲突,后提交的人会收到发生冲突的提醒,且提交失败,要求先进行更新操作Back冲突及解决(一)冲突的产生:Back126冲突及解决(二)113114115113114115Back不会导致冲突可能导致冲突冲突及解决(二)113114115113114115Back127冲突及解决(三)发生冲突后,执行“更新”操作后:对于发生冲突的文件,TSVN会加上冲突标记如果发生冲突的文件是二进制文件(如doc文件、jpg文件),TSVN会增加2个文件,分别是起始版本和发生冲突的版本如果发生冲突的文件是文本文件(如c文件、txt文件),TSVN会将工作副本中的原文件改名增加“.mine”后缀,将两个版本的冲突写入原名文件(文件中用<<<<<<<、=======、>>>>>>>加以标识),并另外增加2个文件,分别是起始版本和发生冲突的版本Back冲突及解决(三)发生冲突后,执行“更新”操作后:Back128冲突及解决(四)例如:两人从第213版开始对start.c和SRS.doc进行修改,甲先修改完成并提交形成217版,乙随后提交时发生冲突,则在乙的该文件夹下将会存在七个文件:start.c:自动合并了甲和乙的修改内容的start.cstart.c.r213:甲乙修改前的start.cstart.c.r217:甲修改后的strat.cstart.c.mine:乙修改后的start.cSRS.doc:乙修改后的SRS.docSRS.doc.r213:甲乙修改前的SRS.docSRS.doc.r217:甲修改后的SRS.docBack冲突及解决(四)例如:两人从第213版开始对start.c和129冲突及解决(五)解决冲突:手工将前一版本中的修改整合到自己的文件中在冲突的文件或文件夹上点右键,选择“Tortoise-已解决的…”,标记为冲突已解决(此时会自动删除多余的文件),然后再次“提交”Back冲突及解决(五)解决冲突:Back130分支/标记(一)分支:“分支”通常用于在不同的线上同时工作的情况“分支”通常设置为分支的所有者拥有读写权限,其他人员仅有读取权限标记“标记”通常用于版本发布、标识基线状态等情况“标记”通常设置为配置管理员拥有读写缺陷,其他人员只有读取权限SVN使用同样的操作进行“分支”和“标记”Back分支/标记(一)分支:Back131分支/标记(二)推荐的目录结构Backprojecttrunkbranchestags代码文档分支/标记(二)推荐的目录结构Backprojecttrun132分支/标记(三)案例一709XXX软件711A版712B版713C版714718720726717719722727716721728715723724730710Release_V1_0725Release_V1_1tags标记trunk主干branches分支729Back分支/标记(三)案例一709XXX软件71171271371133分支/标记(四)案例二711XXX软件713V1_0维护715717719…714716718720712Release_V1_01012Release_V2_0tags标记trunk主干branches分支10111013V2_0维护…Back分支/标记(四)案例二711XXX软件71371571771134分支/标记(五)案例三Back712XXX软件713BUG037717718720721714715716719trunk主干branches分支722发现BUG,编号037分支/标记(五)案例三Back712XXX软件7137177135分支/标记(六)创建分支在受SVN控制的某层文件夹上点右键,选择“TortoiseSVN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京课改版历史八年级下册第2课《新中国的初步巩固》听课评课记录
- 人民版道德与法治九年级上册4.2《城乡差距》听课评课记录
- 招投文件合同范本(2篇)
- 生物燃料锅炉购买合同(2篇)
- 人教版数学七年级下册《7-2-2用坐标表示平移》听评课记录
- 鲁人版道德与法治九年级上册9.1《公正律师法律援助》配套听课评课记录
- 湘师大版道德与法治七年级上册2.3《快乐学习》听课评课记录
- 道德与法治部编版七年级上册同步听课评课记录《第8课 生命可以永恒吗》
- 【部编版】八年级历史上册《鸦片战争》公开课 听课评课记录及教学反思
- 苏科版数学八年级上册《课题学习 关于勾股定理的研究》听评课记录
- 藏族唐卡艺术特色分析
- 操作系统课程设计报告
- 护士团队的协作和领导力培养培训课件
- QFD模板含计算公式计分标准说明模板
- 医院护理培训课件:《早产儿姿势管理与摆位》
- 人工智能在生物医学伦理与法律中的基因编辑与生命伦理问题研究
- 《论文的写作技巧》课件
- 国有资产管理办法-国有资产管理办法条例
- 公务车辆定点维修车辆保养(附彩图) 投标方案
- 00015-英语二自学教程-unit3
- 第二章共混改性基本原理
评论
0/150
提交评论