1、02.SVN软件操作培训教程软件操作培训教程目目 录录n为什么需要使用配置管理软件为什么需要使用配置管理软件nSVN相关的基本概念相关的基本概念nTortoiseSVN的使用流程及图标说明的使用流程及图标说明nTortoiseSVN基本功能的介绍基本功能的介绍nEclipse下下SVN的使用的使用nVisual Studio.Net下的下的SVN的使用的使用1.使用配置管理的理由使用配置管理的理由n及时了解团队中其他成员的进度。及时了解团队中其他成员的进度。n轻松比较不同版本间的细微差别;轻松比较不同版本间的细微差别;n记录每个文件成长的每步细节,利于成果的复用记录每个文件成长的每步细节,利于
2、成果的复用(reuse);(reuse);n资料共享,避免以往靠邮件发送文件造成的版本混乱;资料共享,避免以往靠邮件发送文件造成的版本混乱;n人人为我,我为人人。所有成员维护的实际是同一个版本库,无人人为我,我为人人。所有成员维护的实际是同一个版本库,无需专人维护所有文件的最新版本;需专人维护所有文件的最新版本;n协同工作,大大提高团队工作效率,无论团队成员分布在天涯还协同工作,大大提高团队工作效率,无论团队成员分布在天涯还是海角;是海角;2.SubversionSubversion相关软件相关软件n基于基于Subversion和和TortoiseSVN的版本控制系统的版本控制系统nSubve
3、rsionSubversion:是一个开源的版本控制系统,拥有:是一个开源的版本控制系统,拥有CVSCVS的大部分特征,并在的大部分特征,并在CVSCVS的基础上有更强的扩的基础上有更强的扩展,用来代替展,用来代替 CVS CVS 系统。系统。nTortoiseSVNTortoiseSVN:SVNSVN的客户端工具,和资源管理器的客户端工具,和资源管理器完美集成,基于完美集成,基于TortoiseCVSTortoiseCVS的代码开发,使用上的代码开发,使用上与与TortioseCVSTortioseCVS极其相似极其相似;3.3.SVNSVN相关基本概念相关基本概念n配置库(配置库(Repo
4、sitory)nSVN的核心是配置库,储存所有的数据,配置库按照文的核心是配置库,储存所有的数据,配置库按照文件树形式储存数据包括文件和目录,任意数量的客户件树形式储存数据包括文件和目录,任意数量的客户端可以连接到配置库,读写这些文件。通过写数据,别端可以连接到配置库,读写这些文件。通过写数据,别人可以看到这些信息;通过读数据,可以看到别人的修人可以看到这些信息;通过读数据,可以看到别人的修改。改。n最特别的是最特别的是 Subversion 会记录配置库中的每一次更改,会记录配置库中的每一次更改,不仅针对文件也包括目录本身,包括增加、删除和重新不仅针对文件也包括目录本身,包括增加、删除和重新
5、组织文件和目录。组织文件和目录。SVNSVN相关基本概念相关基本概念n工作副本(工作副本(WorkSpace)与位于中央配置库相对应的是每个人的工作与位于中央配置库相对应的是每个人的工作空间,它是每个程序员工作的地方,程序员从配空间,它是每个程序员工作的地方,程序员从配置库拿到源代码,放在本地作为工作副本,在工置库拿到源代码,放在本地作为工作副本,在工作副本上进行查看、修改、编译、运行、测试等作副本上进行查看、修改、编译、运行、测试等操作,并把新版本的代码从这里提交回配置库库操作,并把新版本的代码从这里提交回配置库库中。中。SVNSVN相关基本概念相关基本概念 配置库配置库 工作副本工作副本C
6、heckoutCommit4.SVN4.SVN的工作模式的工作模式n复制复制-修改修改-合并方案合并方案(Subversion(Subversion默认的模式默认的模式)在这种模型里,每一个客户读取项目配置在这种模型里,每一个客户读取项目配置库建立一个私有库建立一个私有工作副本工作副本版本库中文件和版本库中文件和目录的本地映射。用户并行工作,修改各自的目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。操作,但
7、是最终要靠人工去确定正误。n锁定锁定-修改修改-解锁方案解锁方案 在这样的模型里,在一个时间段里配置库在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人修改。的一个文件只允许被一个人修改。此模式不此模式不适合软件开发这种工作。适合软件开发这种工作。5.5.TortoiseSVNTortoiseSVN的安装的安装n需要安装客户端需要安装客户端TortoiseSVNn安装完毕后,在安装完毕后,在“资源资源管理器管理器”里点击右键,里点击右键,会有如下菜单出现:会有如下菜单出现:6.6.TortoiseSVNTortoiseSVN的使用基本流程的使用基本流程7.7.SVNSVN常见图标说明
8、常见图标说明 一个新检出的工作副本使用绿色的对勾做重载。一个新检出的工作副本使用绿色的对勾做重载。表示表示Subversion状态正常状态正常.当我们开始编辑一个文件后,图标将变成红色感叹号。通过当我们开始编辑一个文件后,图标将变成红色感叹号。通过这种方式,可以很容易地看出我们对哪些文件进行了修改操作,这种方式,可以很容易地看出我们对哪些文件进行了修改操作,但是还没有提交到版本库中;但是还没有提交到版本库中;如果在提交的过程中出现了冲突,图标将变成黄色感叹号。如果在提交的过程中出现了冲突,图标将变成黄色感叹号。如果我们拥有了一个文件的锁,并且如果我们拥有了一个文件的锁,并且Subversion
9、Subversion状态是正常,状态是正常,这个重载图标将提醒我们:如果不使用该文件的话,请进行释这个重载图标将提醒我们:如果不使用该文件的话,请进行释放锁操作,允许其他成员提交对该文件的修改。放锁操作,允许其他成员提交对该文件的修改。SVNSVN常见图标说明常见图标说明 这个图标表示当前文件夹下的某些文件或文件这个图标表示当前文件夹下的某些文件或文件夹已经被计划从版本控制中删除,或是该文件夹夹已经被计划从版本控制中删除,或是该文件夹下某个受控的文件丢失了。下某个受控的文件丢失了。加号告诉我们有一个文件或是目录已经被计划加号告诉我们有一个文件或是目录已经被计划加入版本控制。加入版本控制。8.8
10、.CheckOut(CheckOut(检出检出)n作用:将版本库中的内容检出到本地工作作用:将版本库中的内容检出到本地工作副本副本n步骤:步骤:1.新建一个空文件夹;新建一个空文件夹;比如:比如:E:Proj_trunk 2.在此目录中点击右键在此目录中点击右键-SVN Checkout.9.9.CheckOutCheckOut的注意项的注意项n检出深度:检出深度:1.1.全递归全递归(默认选择默认选择)检出完整的目录树,包含所检出完整的目录树,包含所有的文件或子目录。有的文件或子目录。2.2.直接节点,包含目录直接节点,包含目录 检出目录,包含其中的文件或检出目录,包含其中的文件或子目录,但
11、是不递归展开子子目录,但是不递归展开子目录目录。3.3.仅文件子节点仅文件子节点 检出指定目录,包含所有文件,检出指定目录,包含所有文件,但是不检出任何子目录。但是不检出任何子目录。4.4.仅此项。仅此项。只检出目录。不包含其中的文只检出目录。不包含其中的文件或子目录。件或子目录。省略外部引用省略外部引用:如果项目含有外部项目的引用,而这些引用我们不希:如果项目含有外部项目的引用,而这些引用我们不希望同时检出,请选中忽略外部项目复选框。如果选中了这个复选框,望同时检出,请选中忽略外部项目复选框。如果选中了这个复选框,更新的时候要使用命令更新的时候要使用命令”更新至版本更新至版本Update t
12、o Revision.”Update to Revision.”10.10.Commit(Commit(提交提交)n对工作副本进行编辑后提交到对工作副本进行编辑后提交到SVNn在右键菜单中点击在右键菜单中点击SVN Commitn提交前写好信息,点击确定提交前写好信息,点击确定权限控制权限控制n当进行提交文件操作的时候当进行提交文件操作的时候您将看到权限提示信息您将看到权限提示信息n输入您的用户名和密码输入您的用户名和密码n保存权限设置(见红圈)保存权限设置(见红圈),可以避免将来重复输入用户可以避免将来重复输入用户名和密码名和密码如何删除认证数据如何删除认证数据 步骤:点击右键步骤:点击右键
13、 选择设置选择设置 以保存数据以保存数据 清除认证数据清除认证数据11.11.Update(Update(更新更新)n作用:更新工作副本使其成为版本库中的最新版本作用:更新工作副本使其成为版本库中的最新版本nSVNSVN将显示出更新的文件和更新的次数将显示出更新的文件和更新的次数12.12.A Adddd(添加添加)n选中文件选中文件/文件夹(在新文件文件夹(在新文件/文件夹所在父文件文件夹所在父文件夹点击右键),夹点击右键),n在菜单中选择在菜单中选择“添加添加AddAdd”命令。不需要受命令。不需要受SVNSVN控控制的文件请取消打钩。制的文件请取消打钩。13.13.Show log(Sh
14、ow log(显示日志显示日志)14.14.日志信息填写规则日志信息填写规则n好的日志信息和糟糕的日志信息好的日志信息和糟糕的日志信息 日志信息主要记录的是每次的修改内容。建议把日志信息主要记录的是每次的修改内容。建议把一些重要数据、关键操作写到日志信息中。一些重要数据、关键操作写到日志信息中。n注:注:修改人和提交时间由软件自动记录,无需人工修改人和提交时间由软件自动记录,无需人工写入日志信息写入日志信息不规范的日志规范的日志去除无用文件删除分支中的无用文件attachment.js_BAK_和moderation.js”线索报警修改线索的样式更新配置文件更新公司主题包和栏目配置文件15.1
15、5.如何得到历史版本如何得到历史版本n工作副本右键工作副本右键显示日志显示日志选择所需的版本号选择所需的版本号保保存版本至存版本至16.16.Revert(Revert(还原还原)n作用:撤销本地所有未提交的修改作用:撤销本地所有未提交的修改n注意:还没有执行注意:还没有执行CommitCommit操作之前执行此命令才可以,否操作之前执行此命令才可以,否则无效则无效17.17.Add to Ignore List Add to Ignore List(忽略文件)(忽略文件)n添加忽略文件添加忽略文件 右键一个单独的未进入版本控制文件TortoiseSVN(加入忽略列表)Add to Ignor
16、e List,会出现一个子菜单允许你仅选择该文件,或者所有具有相同后缀的文件。n删除忽略文件:删除忽略文件:如果你想从忽略列表中移除一个或多个条目,右击这些条目,选择TortoiseSVN 从忽略列表删除。n已进入版本控制的文件或已进入版本控制的文件或目录不能够忽略目录不能够忽略 18.18.版本分支图版本分支图n这个版本历史分析图能够显示分支这个版本历史分析图能够显示分支/标签从什么地方开始创标签从什么地方开始创建,以及什么时候删除。建,以及什么时候删除。n版本分支图将显示以下内容版本分支图将显示以下内容:(1 1)增加文件)增加文件/文件夹(文件夹(2 2)已删除文件已删除文件/文件夹文件
17、夹 (3 3)分支最新版本)分支最新版本 (4)(4)一般的文件一般的文件/文件夹文件夹 19.19.如何创建分支(如何创建分支(BranchBranch)n两种方式:两种方式:(1).在版本库浏览器中创建分支在版本库浏览器中创建分支如何创建分支(如何创建分支(BranchBranch)(2).在工作副本创建分支在工作副本创建分支如何创建分支(如何创建分支(BranchBranch)20.20.Switch(Switch(切换切换)n 文件创建分支后,可通过文件创建分支后,可通过SwitchSwitch选择选择在主干工作或者在分支工作在主干工作或者在分支工作;n注意注意:(1)(1)切换操作起
18、来就象更新,因为它切换操作起来就象更新,因为它没有丢弃我们在本地做的修改。没有丢弃我们在本地做的修改。(2)(2)在工作副本里,当我们进行切换在工作副本里,当我们进行切换的时候,任何没有提交过的修改都会的时候,任何没有提交过的修改都会被混合。被混合。n解决方法解决方法:1)1)在切换前提交修改在切换前提交修改;2)2)把工作副本恢复到一个已经提交过把工作副本恢复到一个已经提交过的版本的版本(比如最新版本比如最新版本)。21.21.合并合并n假设我们在分支上进行修改:添加一条输出语句:假设我们在分支上进行修改:添加一条输出语句:System.out.println(“测试是否能将分支的修改合测试
19、是否能将分支的修改合并到主干中并到主干中!”);提交到配置库中,现在执行将分提交到配置库中,现在执行将分支合并到主干的操作支合并到主干的操作分支合并到主干分支合并到主干n右键主干的文件右键主干的文件选择合并选择合并合并时出现冲突合并时出现冲突编辑冲突编辑冲突冲突已解决冲突已解决合并成功合并成功22.22.冲突冲突 n什么是冲突什么是冲突n冲突产生的原因冲突产生的原因n冲突产生的时机冲突产生的时机n解决冲突解决冲突n关于避免冲突的建议关于避免冲突的建议什么是冲突什么是冲突n冲突是指冲突是指团队协同工作时,当多位团队成员同时修改团队协同工作时,当多位团队成员同时修改同一个文件,造成本地文件与同一个
20、文件,造成本地文件与SVN系统中的文件系统中的文件版本不一致,而导致文件无法提交的情况版本不一致,而导致文件无法提交的情况冲突产生的原因冲突产生的原因n产生原因产生原因当团队协同工作的时候,多位团队成员同时当团队协同工作的时候,多位团队成员同时操作一个文件。团队成员操作一个文件。团队成员A操作完成后,将该文操作完成后,将该文件提交到件提交到SVN上。此时,其他团队成员的本地文上。此时,其他团队成员的本地文件与件与SVN上的文件版本不一致。当团队成员上的文件版本不一致。当团队成员B操操作完成并对文件进行提交操作时,就会产生冲突。作完成并对文件进行提交操作时,就会产生冲突。冲突的提示界面冲突的提示
21、界面n提交时产生的冲突提交时产生的冲突冲突的解决方案冲突的解决方案遇到冲突时,需要遇到冲突时,需要update该文件。我们将看到三个带问号的文件该文件。我们将看到三个带问号的文件filename.minefilename.rOLDREVfilename.rNEWREV面对文件冲突,我们可以选择以下两种方式解决冲突面对文件冲突,我们可以选择以下两种方式解决冲突n使用工具解决冲突使用工具解决冲突n用用revert放弃所做的修改放弃所做的修改使用工具解决冲突使用工具解决冲突n使用自带工具,如图所示使用自带工具,如图所示n对比两个版本的文件,解对比两个版本的文件,解决冲突决冲突n工具中会列出两个版本冲
22、工具中会列出两个版本冲突的部分,并让我们选择突的部分,并让我们选择使用哪个版本的内容使用哪个版本的内容解决冲突后解决冲突后n通过上面所说的方通过上面所说的方法,解决冲突后要法,解决冲突后要选择已解决的选择已解决的(resolved)n解决后,带问号的解决后,带问号的三个文件将自动删三个文件将自动删除除n最后选择最后选择commit提提交到交到SVN关于冲突的建议关于冲突的建议n修改文件之前,先进行一次修改文件之前,先进行一次update操作操作n修改完成后,及时修改完成后,及时commit,不要在本地停留过,不要在本地停留过长时间长时间n在多位团队成员协作时,尽量修改自己撰写的部在多位团队成员
23、协作时,尽量修改自己撰写的部分,尽量不要修改不属于自己撰写的部分分,尽量不要修改不属于自己撰写的部分n出现冲突很正常,可以通过前面的方法解决,不出现冲突很正常,可以通过前面的方法解决,不要相互覆盖要相互覆盖23.23.用用R Revertevert放弃所做的修改放弃所做的修改n选择选择SVN还原(还原(Revert)放弃自己所做的修改放弃自己所做的修改24.24.其他其他SVNSVN的功能的功能nExport(导出)(导出)导出你需要的文件,导出后不在受SVN控制;而checkout检出的文件仍受SVN控制;nImport(导入)(导入)将需要的文件导入到版本库中;nRelocated(重新定
24、位)(重新定位)当服务器上的版本库目录已经改变,我们可以把工作复本重新定位;nCleanUp(清理)(清理)递归的清理工作副本,删除锁定和保留的未完成操作,如果你得到工作副本已经锁定的错误,运行这个命令删除无用的锁定,并将工作副本恢复到可用的状态;25.Eclipse25.Eclipse插件插件SubclipseSubclipse的安装步骤的安装步骤 1.1.帮助帮助 软件更新软件更新 查找并安装查找并安装 2.2.选择选择“要安装的新功能部件要安装的新功能部件”选项并点击选项并点击NextNext。3.3.点击点击“新站点新站点”并且创建一远程站点,并且创建一远程站点,名字名字:Subcli
25、pse:Subclipse URL:http:/subclipse.tigris.org/update_1.URL:http:/subclipse.tigris.org/update_1.6 6.x.x 4.4.在结果安装窗口中,把在结果安装窗口中,把Subeclipse in the Features Subeclipse in the Features 选择到安装列表中,并且通过向导来开始安装插件。选择到安装列表中,并且通过向导来开始安装插件。5.5.完成这些之后,重新启动完成这些之后,重新启动EclipseEclipse。26.26.在在EclipseEclipse下使用的图标下使用的图
26、标n受受SVN控制的文件被标记为小黄桶;控制的文件被标记为小黄桶;n修改过的文件都被标记上一个黑色星号;修改过的文件都被标记上一个黑色星号;n未受版本控制的文件被标记为问号;未受版本控制的文件被标记为问号;27.27.EclipseEclipse下使用下使用SvnSvn的主要功能的主要功能n在在Eclipse下使用下使用Svn我们主要使用功能我们主要使用功能:1)将版本库导入到将版本库导入到SVN资源库资源库 2)将新建项目导入到版本库将新建项目导入到版本库 3)小组小组 4)比较对象比较对象 5)替换为替换为将版本库导入到将版本库导入到SVNSVN资源库资源库将新建项目导入到版本库将新建项目
27、导入到版本库EclipseEclipse中小组的使用中小组的使用n小组的主要功能小组的主要功能(如图如图1.1)比较对象比较对象n例如:例如:基本修订版基本修订版n1)基本修订版)基本修订版:在在Eclipse中的基本版中的基本版资源库中的最新内容资源库中的最新内容2)资源库中的最新内容资源库中的最新内容 分支分支/标记标记3)分支)分支/标记标记修订版修订版4)修订版)修订版 比较的对象是你选择的版本号对应的项目比较的对象是你选择的版本号对应的项目Eclipse中的替换为中的替换为注注:与比较对象的应用一样与比较对象的应用一样,只是这里是替换只是这里是替换.本地历史记录本地历史记录5)本地历
28、史纪录本地历史纪录 现修改的版本与本地修改的其他版本库进行比较现修改的版本与本地修改的其他版本库进行比较28.Visual Studio.Net28.Visual Studio.Net的的AnkhSvnAnkhSvn插件安装配置插件安装配置n到到AnkhSvnAnkhSvn官网下载安装文件:官网下载安装文件:nhttps:/ankhsvn.open.collab.Net/downloadshttps:/ankhsvn.open.collab.Net/downloadsn运行安装包内部的安装程序,完成安装过程,然后首先打运行安装包内部的安装程序,完成安装过程,然后首先打开自己的开自己的VS201
29、0,VS2010,进入菜单进入菜单“工具工具”-“”-“选项选项”,接着会弹,接着会弹出一个出一个“选项选项”窗口,选择窗口,选择“Source Control”-“Source Control”-“插件插件选择选择”这项,然后在窗口中选择插件为这项,然后在窗口中选择插件为“AnkhSVN”,“AnkhSVN”,接着接着保存。保存。29.VS.Net29.VS.Net使用使用AnkhSvnAnkhSvn插件检出代码插件检出代码n在在Visual Studio.Net2010Visual Studio.Net2010中打开中打开“文件文件”菜单菜单-“Subversion”“Subversion”菜单项,点击菜单项,点击Open from SubversionOpen from Subversion选项选项,弹出如下对话框,在,弹出如下对话框,在URLURL中输入中输入SVN URLSVN URL,加载出文件,加载出文件,选择选择.sln.sln文件文件.然后输入检出到的目录,点击然后输入检出到的目录,点击OKOK按钮开始检按钮开始检出代码出代码。