SVN工具介绍(开发人员)配置管理培训.ppt
SVN工具介绍,工程技术中心软件质控部,TortoiseSVN的安装TortoiseSVN最常用的四个命令TortoiseSVN实用功能TortoiseSVN其他功能SVN开发模式SVN的特色SVN案例分析,主要内容,TortoiseSVN 安装版本的选择,TortoiseSVN安装,目前公司常用的三个版本:V1.4.8、V1.5.3、V1.6.6。三个版本大致功能类似,没有很大的变化。通过一段时间使用发现V1.4.8相比V1.5.3更为稳定,而且目录过深时,V1.5.3不能检出(该版本的 bug),而V1.4.8可以。但V1.5.3作为V1.4.8的升级版本操作更方便,功能更完善。最新版本V1.6.6,修改了V1.5.3深目录不能检出的bug,操作也更为方便,功能更加全面,目前正准备推广使用。,V1.4.8浏览版本库界面,V1.6.6版本浏览版本库界面,V1.5.3类似,TortoiseSVN安装,TortoiseSVN安装 乌龟安装时无需特殊配置,直接安装即可。安装成功后,在桌面上右键,即可看到下图:,SVN特色,建议:升级TortoiseSVN时,先卸载先前的安装版本,再重新安装新版本!,TortoiseSVN安装,中文版安装 若需安装中文版,则需再安装中文语言包,并在setting中将语言设置为中文,如下图所示:,TortoiseSVN最常用的四个命令,最常用的四个命令1.Repo-browser(浏览版本库)通过“浏览版本库”可以直接查看服务器上指定目录下的所有目录结构(需要有相关权限),包括特定版本的作者,提交时间等,并且在浏览版本库里面链接了很多SVN常用的功能。如显示日志,检出,导出,检入文件/文件夹,改名,删除文件,分支建立等。2.Checkout(检出)从SVN服务器上得到数据,即建立本地副本,并且修改后可以commit到SVN服务器上。相对于CC来说,SVN的checkout可以说完成了建立本地视图和checkout两个动作。checkout命令可以在本地计算机上,浏览版本库,显示日志等多个地方找到。3.Update(更新)更新本地副本,得到SVN服务器上最新的数据。一般check out建立本地副本后,都在该本地副本上修改提交,若想再次得到服务器上的最新版本,即需用Update。在修改之前,一般我们都需要执行Update动作,以保证在最新版本上做修改,以减少提交时冲突。特别是用锁定的模式开发,修改前必须先更新并获得锁后才能修改(后面会具体描述)提交。4.Commit(提交)提交修改到SVN服务器上。所有需提交到SVN服务器上本地副本的修改都需要用Commit命令完成。,TortoiseSVN最常用的四个命令,Repo-browser(浏览版本库),TortoiseSVN最常用的四个命令,TortoiseSVN最常用的四个命令,Update(更新)选中需要更新的本地副本,按右键,选择SVN Update即可得到服务器上最新的版本。若本地上有修改,更新时经常会出现冲突(黄色感叹号),此时表明您本地副本的修改和服务器上的最新版本有冲突,需要您解决冲突后才能提交你的修改(解决冲突方法后面具体叙述)。故为了减少冲突的产生,我们很有必要在修改前进行更新,等到服务器上最新的版本。,update,TortoiseSVN最常用的四个命令,Checkout(检出)本地计算机上:1.在本地计算机上按右键选择 SVN Checkout命令 2.填入/选择需检出URL,选择目标检出目录,根据需要选择检出深度和版本,OK即可。,服务器检出地址,检出深度选择,检出后本地副本显示为绿色的勾勾!,版本选择,TortoiseSVN最常用的四个命令,Checkout(检出)浏览版本库中:1.进入浏览版本库,选中需检出的目录文件夹,选择checkout。2.出现检出对话框,选择检出目标位置和检出深度等OK即可。,TortoiseSVN最常用的四个命令,Checkout(检出)显示日志里:选择show log命令,进入显示日志界面,选择需检出的版本,按右键选checkout,检出对应版本的文件资料。,TortoiseSVN最常用的四个命令,Commit(提交)1.选中已修改的本地副本(红色感叹号),按右键,选择SVN Commit命令 2.在对话框中填写日志(描述修改的内容,注意点等),选择需要提交的文件,点OK即可。,提交后红色的感叹号变成了绿色的勾勾!,日志必须填写哦!,待提交文件列表,可以选择是否提交,TortoiseSVN实用功能,实用功能之一-还原1.本地副本还原(Revert)放弃本地副本的修改,将其还原到本地修改前的版本(最后提交或者更新的版本)2.还原至某一历史版本(Revert to this revision)将本地副本复原到选中的某一个历史版本,若需将该复原版本提交到服务器上,则还需Commit!3.还原某一历史版本的修改(Revert changes from this revision)放弃某一历史版本的修改。该动作只还原某一个特定版本的修改,并不还原该版本之前所有版本的修改,若需将该复原版本提交到服务器上,则还需Commit!,TortoiseSVN实用功能,本地副本还原(Revert)选择需还原的本地副本,按右键,选“Revert”,在弹出的对话框中选择需还原的文件,OK即可。,可以选择是否还原?,还原后,红色感叹号消失,变成绿色勾勾!,TortoiseSVN实用功能,还原至某一历史版本(Revert to this revision)1.选中本地副本,进入显示日志对话框。选择还原版本,按右键,选择“Revert to this revision”,即出现如下还原对话框,OK即可。2.还原后,有修改则本地副本即变为红色感叹号,若需提交到服务器上,还需commit!,TortoiseSVN实用功能,还原某一历史版本的修改(Revert changes from this revision)操作同“Revert to this revision”。,实用功能之二-查询功能 1.显示日志(show log)日志查询功能主要作用是:查找历史版本信息,用于追溯。日志信息里包含了所有历史版本的5个W,who.when.where.what.why!同时“显示日志”命令充当了其他多个重要功能的接口,如“比较版本差异”,“更新至此版本”,“复原至此版本”等。“显示日志”命令位于多个对话框中,可以说无孔不入,即表明其实用性和重要性了!2.更新版本(Update to revision/update item to revision)更新版本可以使本地副本更新到任意一个历史版本,方便用户详细查看某一版本的具体内容。,TortoiseSVN实用功能,TortoiseSVN实用功能,显示日志(show log)在任意有“show log”命令的地方,点击“show log”,即可显示如下图。,“日志显示”筛选条件,其他功能的接口,TortoiseSVN实用功能,更新版本(Update to revision)选择Update to revision命令,填入版本号/通过show log选择版本,OK即可,此时本地副本显示的即为你选择的版本内容。,更新深度,更新后本地副本仅作为显示某一版本内容,不能复原为该版本,与复原命令不同!,TortoiseSVN实用功能,更新版本(update item to revision),TortoiseSVN实用功能,实用功能之三-比较功能 SVN提供了多个实现比较功能的命令,来满足不同事物的差异比较。1.检查更新(check for modification)获得本地副本所做的修改内容。2.与工作副本比较 获得任何一个历史版本与本地副本的差异。3.比较版本差异(追溯版本,以标准差异文件形式显示修改)获得任何两个历史版本之间的差异。其中:“追溯版本”不仅显示两个版本的差异,同时显示修改作者,时间等信息。“以标准差异文件形式显示修改”:以特定的形式显示差异,显示形式与比较版本差异和追溯版本命令不同。,TortoiseSVN实用功能,检查更新(check for modification)1.选择需检查的本地副本,按右键,选择“检查更新”,即显示修改文件列表。2.若需查看可编辑文件具体的修改内容,选中该文件按右键,选择“与基础版本比较”,确定,即可得到具体的修改内容。,得到本地副本修改的文件列表,与基础版本比较,得到文件内修改的具体内容,TortoiseSVN实用功能,与工作副本比较(Compare with working copy)1.选中本地副本,进入显示日志页面,选择任一版本,按右键,选择“与工作副本比较”,确定即显差异文件列表。2.双击差异文件列表中某一个具体的可编辑文件,即可显示该文件内容的具体差异。,TortoiseSVN实用功能,差异文件列表,服务器上版本,工作副本,比较后的结果,TortoiseSVN实用功能,比较版本差异(compare revision)1.使用CTRL+左键选择任意两版本,按右键,选择“比较版本差异”,出现差异文件列表。2.选择某一可编辑文件,按右键,选择“比较版本差异”,即可得到文件的具体差异。若选择“追溯版本”,则比“比较版本差异”多了时间,作者等信息的显示。,差异文件列表,TortoiseSVN实用功能,比较版本差异,TortoiseSVN实用功能,追溯版本,以标准差异文件形式显示修改,类似,不累述!,与“比较版本差异”比较,多了时间和作者等信息的显示,TortoiseSVN实用功能,实用功能之四-版本分支图(Revision graph)版本分支图主要显示以下内容:1.建立分支和标签的时间和版本 2.文件夹名称的修改 3.最新的版本 4.本地副本的版本 另外鼠标滑过任意版本框,都会显示该版本的日期、作者和备注信息等;选中版本框按右键可以使用另外很多的功能,如显示日志,合并版本等等;还可通过“CTRL+左键”选中两个版本进行比较等。,TortoiseSVN实用功能,版本分支图(Revision graph)进入版本分支图有多种方法,如本地副本、浏览版本库等。直接选择“Revision graph“即可。版本分支图中版本框不同的形状,颜色表示不同的分类。,分支,标签/基线,主干,最新版本,历史版本,日志,SVN其他常用功能,其他常用功能1.增加(Add)/删除(Delete)/改名(Rename)增加:增加未受版本控制的文件到版本控制中。删除:删除服务器上的文件。改名:重新命名文件。Add/Delete/Rename 都可以在本地副本上和浏览版本库中实现 注意:Add/Delete/Rename在本地副本上使用,都仅仅是修改,没有提交的动作,故一般Add/Delete/Rename和Commit一起使用,当 Add/Delete/Rename后,若需要在提交到配置库上,则还需Commit。2.增加到忽略列表(Delete and add to ignore list)很多时候我们不想把部分文件提交到配置库中,但是本地副本想保留,这时可以将文件增加到忽略列表,这样提交时这些文件不提交到配置库。如可以将编译生成的release文件夹加入到忽略列表里面。,SVN其他常用功能,3.导出(Exprot)有时只想需得到配置库的某些资料,但不想受SVN版本控制,此时可以用Exprot。Exprot与check out一样都是从服务器中得到数据资料,但是Exprot的数据资料不受版本的控制,无.SVN文件夹。4.另存为(Save as)对于单个的文件,从服务器上获取不受版本控制的文件可以通过浏览版本库里面的Save as命令实现。5.移动文件/文件夹 有时候我们需要将一个文件/文件夹移动到另一个文件夹下,SVN在本地副本上的文件和文件夹的移动也有特有的命令。6.重新定位(ReLocate)当URL修改(服务器搬迁IP地址修改等),但本地副本还需继续使用,则需重新定位URL,将先前checkout时的URL重新定位为最新的URL。,SVN其他常用功能,增加(Add)本地副本上增加:1.选中需加入版本控制的文件,右键,选择“TortoiseSVN Add”。2.“Add”后,按右键选择“Commit”命令,Add命令后,文件上显示为蓝色的加号,commit后为绿色的勾勾!,浏览版本库中增加(包含提交):Add Files:增加文件,在对应目录按右键Add Files,填入日志信息,OK即可 Add folder:增加文件夹,在对应目录按右键Add folder,填入日志信息,OK即可,SVN其他常用功能,删除(Delete)本地副本上删除:1.选中需删除的文件,右键,选择“TortoiseSVN Delete”。2.“Delete”后,在上一层目录按右键选择“Commit”命令。,“Delete”的文件消失,文件夹显示为红色的叉叉,上层目录显示红色的感叹号。,“Commit”后删除的文件夹消失,上层目录显示为绿色的勾勾。,浏览版本库里删除(包含提交):选中删除的文件,右键“Delete”,在弹出的对话框中输入日志即可。,SVN其他常用功能,改名(Rename)本地副本上改名:1.选中需改名的文件/文件夹,按右键,选择“TortoiseSVN Rename”2.“Rename”后,在上一层目录按右键选择“Commit”命令,Rename后新增一个改名后的文件/文件夹,若Rename文件则原文件消失,若Rename文件夹则原文件夹变成红色叉叉!,Commit后显示为绿色的勾勾。,浏览版本中改名(包含提交):选中需改名的文件/文件夹,按右键,输入新的名字,OK,在弹出的对话框中输入日志信息即可。,SVN其他常用功能,增加到忽略列表(Delete and add to ignore list)增加到忽略列表后,文件无特殊的标志,并且提交修改时该文件不提交。区别于未受版本控制的文件:未受版本控制的文件显示为“?”,并且在上层目录提交时可以提交到服务器。,SVN其他常用功能,导出(Exprot)导出命令可以在多个位置使用,如本地副本,浏览版本库,显示日志等。操作方法与checkout一致。导出的文件无特殊的标志,即windows文件。,浏览版本库里面使用,SVN其他常用功能,移动文件/文件夹 本地副本上移动:1.选中要移动的文件按住鼠标右键不放,拖动到目标文件夹,放开鼠标,出现如下图选项,选择需要的命令即可 2.在上一层目录上按右键,选择commit,提交到服务器上。,浏览版本中移动(包含提交):选中需移动的文件按左键不放,将文件拖动到目标目录文件夹,在弹出的提交对话框中输入日志,OK即可。,SVN其他常用功能,重新定位(ReLocate)选中本地副本,按右键选择ReLocate命令,将To URL里面修改为最新的URL即可。,SVN开发模式,1.分支与合并 支持并行开发,支持分支与主干之间的合并,即可将主干(分支)上修改完的bug合并到分支(主干)上,但这很可能引起冲突,故要求操作者有解决冲突的能力。建议:尽量少建分支,晚建分支。多建一个分支即表明多一点成本。(不可编辑的文件不可合并)2.锁定与解锁 支持并行开发,但锁定可能导致管理问题,不必要的线性开发,也可能导致错误的安全状态。该模式适用于不可编辑文件的并行开发。注意:使用该模式时,修改者在修改前必须先获得锁,这样才能保证是在最新的文件上做修改,避免冲突的产生。,SVN开发模式,分支和合并(branches/Merge)分支用途 1.软件开发时以主干为基础,实现并行开发,不断将分支上的修改合并到主干上。2.同一软件的发布版本BUG修改和升版的并行开发等。创建分支 命令1:Branches/Tags(工作副本使用)命令2:copy to(浏览版本库使用)命令3:Create branche/tag form this revision(show log使用),SVN开发模式,创建分支后,在未建立分支前checkout的本地副本上查看分支,还需先Update!,分支名,建立分支版本选择,日志填写,以命令1(Branches/Tags)方式举例说明:在本地副本上选择需建立分支的目录,按右键,选择Branches/Tags,在to url中填入分支建立的位置和名称,选择建立分支的版本,填写日志,提交即可。,SVN开发模式,合并(Merge)首先选择合并的种类,合并同一分支的不同版本之间差异,合并一个分支的所有差异,合并不同分支之间差异,SVN开发模式,合并branches所有的差异到本地副本上,合并举例;选择第二种合并方式,显示如下。选择需合并的分支和合并深度,Merge,最后还需将Merge的修改Commit。注意:Merge过程中很容易出现冲突,出现冲突就需要解决冲突后再提交。,SVN开发模式,冲突 冲突的产生:团队协同工作时,当多人同时修改同一个文件,造成本地文件与SVN系统中的文件版本不一致,而导致文件无法提交的情况。冲突的处理:遇到冲突时,文件显示为黄色的感叹号,这时你需要update该文件,看到新增了三个文件。filename.mine filename.rOLDREV filename.rNEWREV 面对文件冲突,您可以选择以下三种方式解决冲突手动合并冲突文件使用工具解决冲突用revert放弃所做的修改,SVN开发模式,用工具解决冲突,使用自带工具,如图所示对比两个版本的文件,解决冲突工具中会列出两个版本冲突的部分,并让您选择使用哪个版本的内容,SVN开发模式,放弃修改 选择revert 放弃自己所做的修改,SVN开发模式,提交解决结果,通过上面所说的三种方法,解决冲突后。要选择resolved解决后,新增的三个文件会自动删除再选择commit提交到SVN,SVN开发模式,锁定和解锁 获取锁定(Getlock):在加锁原因中加入备注,其他人可以浏览版本库/日志里面看到添加的信息,包括谁,什么时间,为什么锁定等。,获取锁定后,文件上显示一个小锁,SVN开发模式,解除锁定(Release lock):修改完文件并提交后,需及时的解锁,这样其他人才可以获取锁定,既而修改文件。,解除锁定后,小锁消失,文件显示为绿色的勾勾,SVN的特色,SVN特色-图标重载,SVN最直观的功能之一就是图标重载,根据文件的Subversion状态的不同,重载的图标也不同。重载的图标显示在工作副本的文件上,很直观的就可以知道文件目前处于什么状态,是否被修改过,是否已同步到配置库中。,SVN特色,SVN特色-图标重载,SVN特色,不像其他版本控制系统,Subversion的修订号是针对整个版本库的,而不是单个文件。每一个修订号代表了一次提交后版本库整个目录树的特定状态,另一种理解是修订号N代表版本库已经经过了N次提交。当Subversion用户讨论“文件Foo.c的修订号N”时,他们的实际意思是“版本库在修订号N时的Foo.c文件”。需要注意的是,如图:修订号不同并不表示文件内容不同。,SVN特色-全局修订号,SVN特色,这就是传说中的时间机器和时空隧道SVN版本控制系统,我们可以找到过去的任何一个版本的文件!,SVN特色,我们可以比较得到不同版本所做改动的文件列表,也可以得到一个可编辑文件所做的具体改动。,TortoiseSVN的案例分析,1.SVN修订号不连续 原因:SVN修订号是相对于整个配置库的,更新时看到的版本也是整个配置库的修订号,并不是某一个目录的修订号。解决方法:无,SVN特色。2.修改工作副本后,提交时提示“Resource out of date”,提交失败。原因:工作副本不是最新版本,提交失败。解决方法:先更新后再提交,遇冲突时解决冲突后再提交。3.提示400错误 原因:操作者某些操作不准确,引起混乱,可能属于SVN客户端本身的bug 解决方法:暂时无很好的解决方法。4.提示403错误 原因:不能进行该操作。比如URL不对;未开通该目录相关权限;用户名密码不对等。解决方法:检查操作对应的URL是否正确,是否有权限,输入的用户名和密码是否正确等,根据错误解决问题。,TortoiseSVN的案例分析,5.提示需“清理(clean up)”原因:服务器问题,一个SVN指令不能成功地完成,你的工作副本因此被滞留在一个不一致的状态。解决方法:在上一层目录执行清理动作(clean up),若执行不成功,根据错误提示,删除引起不能清理的文件夹,然后update。6.不能正常检出,提示URL过长 原因:目录过深,即URL过长,SVN客户端的bug,目前发现V1.5.3版本存在该问题。解决方法:在上一层目录检出,或许更换SVN客户端安装版本,同时注意建立配置库目录时不易建立过深的目录。7.本地副本不能删除,提示text-base过长 原因:目录过深。解决方法:修改目录的名字,缩短工作副本目录名字。,TortoiseSVN的案例分析,8.删除/重命名/移动/拷贝文件,提交后,服务器上与预期结果不一致 可能原因:使用WINDOWS删除或者重命名/移动命令进行操作.SVN有专有的Delete/Rename/move/copy命令,对于WINDOWS命令不能识别,使用WINDOWS命令会出现混乱。解决方法:还原到前一版本,重新使用SVN自身Delete/Rename/move/copy命令。9.将所有修改都提交后红色感叹号不消失 原因:页面刷新比较慢。解决方法:刷新页面或者重启电脑。10.使用比较功能时,提示“*is not a valid text file”!原因:不可编辑的文件不能比较具体的内容。解决方法:暂时无。11.能执行历史版本的日志信息修改动作,但是“ok”确定却不成功,提示出错 原因:SVN默认状态下不允许修改日志信息。解决方法:在SVN上服务器上增加 pre-revprop-change hook.但不建议使用,TortoiseSVN的案例分析,12.受版本控制的文件,显示”奇怪的“符号,如灰色的勾勾等 原因:SVN的特色图标重载:处于不同的状态,显示不同的图标。解决方法:可以通过TortoiserSVN-Setting中的Icon Set中查看各个图标表示的状态。13.域帐户密码修改后,SVN的命令不能成功执行 原因:密码错误,先前使用SVN命令时保存了认证信息,所以SVN命令的不能执行成功。解决方法:在桌面上按右键,选择Setting命令,进入Save date,将认证信息这一项clear掉。这样重新执行所需的SVN命令,即会出现让您输入用户名和密码。,SVN工具介绍,thank you,