SVN配置管理系统的搭建、使用和维护.ppt
2009.2.27,SVN配置管理系统搭建、使用和维护,TSD,Copyright 2008 by Neusoft Group.All rights reserved.,目 录,第一部分:SVN的基本概念配置管理环境搭建客户端TSVN基本功能的介绍及使用方法Eclipse下SVN的使用第二部分SVN系统日常维护配置库规划分支策略,目 录,第一部分SVN的基本概念配置管理环境搭建客户端TSVN基本功能的介绍及使用方法Eclipse下SVN的使用第二部分SVN系统日常维护配置库规划分支策略,2009.2.27,版本库(Repository)工作拷贝版本模型 复制-修改-合并方案 锁定-修改-解锁方案 如何选择?修订版本,SVN的基本概念,2009.2.27,SVN的基本概念,版本库(Repository)SVN的核心是版本库,储存所有的数据,版本库按照文件树形式储存数据包括文件和目录,任意数量的客户端可以连接到配置库,读写这些文件。通过写数据,别人可以看到这些信息;通过读数据,可以看到别人的修改。版本库通常是配置管理中的配置库 最特别的是 Subversion 会记录版本库中的每一次更改,不仅针对文件也包括目录本身,包括增加、删除和重新组织文件和目录。,2009.2.27,SVN的基本概念,工作副本 与位于版本库相对应的是每个人的工作空间,它是每个程序员工作的地方,程序员从配置库拿到源代码,放在本地作为工作副本,在工作副本上进行查看、修改、编译、运行、测试等操作,并把新版本的代码从这里提交回配置库库中。工作副本的结构,2009.2.27,SVN的基本概念,版本模型 复制-修改-合并方案(Subversion默认的模式)在这种模型里,每一个客户读取项目配置库建立一个私有工作副本。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种合并通常可以由系统辅助操作,但是最终要靠人工去确定正误。锁定-修改-解锁方案 在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人修改。如何选择?Subversion 缺省使用复制-修改-合并方案,如果你有不可合并的文件,或者你只是想实行强制管理策略,可选择锁定-修改-解锁方案。,2009.2.27,SVN的基本概念,修订版本 在版本库中,每一次提交被当作一次原子事务操作。每当版本库接受了一个提交,文件系统进入了一个新的状态,叫做一次修订(revision),每一个修订版本被赋予一个独一无二的自然数,初始修订号是0。全局修订号:不像其他版本控制系统,SVN的修订号是针对整个目录树的,而不是单个文件。每一个修订号代表了一次提交后版本库整个目录树的特定状态。,目 录,SVN的基本概念配置管理环境搭建客户端TSVN基本功能的介绍及使用方法Eclipse下SVN的使用SVN系统日常维护配置库规划分支策略,2009.2.27,配置管理环境搭建,Subversion相关软件配置管理环境搭建 服务器安装 客户端安装,2009.2.27,Subversion相关软件,基于VisualSVN Server和TortoiseSVN的版本控制系统VisualSVN Server:免费。包含了所有需要的安装和配置,用于Windows平台:Subversion,Apache,管理端口。可以使用任何SVN客户端与其连接,或者直接通过浏览器快速浏览配置库。TortoiseSVN:免费。SVN的客户端工具,和资源管理器完美集成。使用简单方便。,2009.2.27,配置管理环境搭建:服务器配置,服务器软件下载:http:/操作系统要求:Windows XP Windows 2003 Server Microsoft Windows Vista Windows 2008 Server 硬件要求:Pentium 500MHz or greater 128 MB RAM or greater 30 MB hard drive space,2009.2.27,配置管理环境搭建:服务器配置,1.创建管理员帐户 2.创建Repository(版本库)3.测试,2009.2.27,配置管理环境搭建:服务器配置,Repository版本库布局 推荐建立:trunk,tags,branches三个目录,他们不是必须的,但其设置贴合SVN功能,在使用中你将会发现这样设置的好处。Trunk:最新的代码;Tags:Subversion使用过程中创建的标签;Branches:保存Subversion的工作分支。导入数据到版本库在你的硬盘上创建一个空的文件夹在那个文件夹下创建你想要的顶级目录通过在那个文件夹右键,选择TortoiseSVN 导入.将这个结构导入到版本库中。注意导入路径的选择,2009.2.27,配置管理环境搭建:客户端安装,客户端软件下载Tortoisesvn、中文语言包:http:/资源管理器完美集成,目 录,第一部分SVN的基本概念配置管理环境搭建客户端TSVN基本功能介绍及使用方法在Eclipse中使用SVN第二部分SVN系统日常维护配置库规划分支策略基线策略,2009.2.27,客户端TSVN基本功能介绍及使用方法,TSVN的图标说明TSVN的使用基本流程TSVN基本操作访问版本 CheckOut(检出)Show log(显示日志)Update(更新)Commit(提交)Revert(还原)ADD(添加)Rename(改名),Add to Ignore List(忽略文件)删除认证数据得到历史版处理冲突创建分支与切换SVN的其他功能创建分支与切换SVN的其他功能,2009.2.27,TSVN图标说明,2009.2.27,一个新检出的工作副本使用绿色的对勾。表示Subversion状态正常.当我们开始编辑一个文件后,图标将变成红色感叹号。通过这种方式,可以很容易地看出我们对哪些文件进行了修改操作,但是还没有提交到版本库中;如果在提交的过程中出现了冲突,图标将变成黄色感叹号。如果我们拥有了一个文件的锁,并且Subversion状态是正常,这个重载图标将提醒我们:如果不使用该文件的话,请进行释放锁操作,允许其他成员提交对该文件的修改,TSVN图标说明,2009.2.27,文件或文件夹被版本控制忽略。该文件或文件夹没有纳入版本控制,并且也没有被忽略。这个图标表示当前文件夹下的某些文件或文件夹已经被计划从版本控制中删除,或是该文件夹下某个受控的文件丢失了。加号告诉我们有一个文件或是目录已经被计划加入版本控制。如果你给一个文件设置了svn:needs-lock属性,Subversion 会让此文件只读,直到你获得文件锁。具有这个重载图标的文件来表示你必须在编辑之前先得到锁。,TSVN图标说明,2009.2.27,TSVN的使用基本流程,2009.2.27,TSVN基本操作:访问版本库,VisualSVN Server使用https:/.访问,2009.2.27,TSVN基本操作:CheckOut(检出),作用:将版本库中的内容检出到本地工作副本步骤:1.新建一个空文件夹;比如:E:Proj_trunk 2.在此目录中点击右键-SVN Checkout.,2009.2.27,CheckOut的注意项,检出深度:1.全递归(默认选择)检出完整的目录树,包含所有的文件或子目录。2.直接节点,包含目录 检出目录,包含其中的文件或子目录,但是不递归展开子目录。3.仅文件子节点 检出指定目录,包含所有文件,但是不检出任何子目录。4.仅此项。只检出目录。不包含其中的文件或子目录。,省略外部:如果项目含有外部项目的引用,而这些引用我们不希望同时检出,请选中忽略外部项目复选框。如果选中了这个复选框,更新的时候要使用命令”更新至版本Update to Revision.”,2009.2.27,TSVN基本操作:Showlog(显示日志),2009.2.27,TSVN基本操作:Update(更新),作用:获取其他用户对文件进行的修改,与自己对文件进行的修改进行合并,保证本地的文件总是最新的。SVN将显示出更新的文件和更新的次数注意:经常更新工作副本,确保得到最新的修改。,2009.2.27,TSVN基本操作:Commit(提交),对工作副本进行编辑后提交到SVN在右键菜单中点击SVN 提交(C)提交前写好信息,点击确定,2009.2.27,Commit(提交)的注意项,提交之前要确保你的工作副本是最新的,避免冲突使用TortoiseSVN 更新使用TortoiseSVN 检查更新,看看哪些文件在本地或是服务器上已经有了改动提交文件与提交文件夹的区别当你提交文件时,提交对话框只显示你选择提交的文件。当你提交文件夹,提交对话框将自动选择该文件夹中有改动的所有文件。如果你忘记你建立了一个新文件,提交文件夹将使你可以找到它。填写好的日志信息日志信息主要记录的是每次的修改内容。建议把一些重要数据、关键操作写到日志信息中。(修改人和提交时间由软件自动记录,无需人工写入日志信息),2009.2.27,TSVN基本操作:ADD(添加),选中文件/文件夹(在新文件/文件夹所在父文件夹点击右键),在菜单中选择“添加Add”命令。不需要受SVN控制的文件请取消打钩。确认添加执行提交操作,2009.2.27,TSVN基本操作:Delete(删除),选中文件/文件夹,在菜单中选择“删除(D)”命令。确认删除执行提交操作。如何找回已删除的文件或目录?在删除的文件或目录所在 的目录中打开日志,找出删除的版本和文件右键浏览版本库,选择删除的文件或目录,右键并选择“复制到工作副本”,2009.2.27,TSVN基本操作:Revert(还原),作用:撤销本地所有未提交的修改注意:还没有执行Commit操作之前执行此命令才可以,否则无效,2009.2.27,TSVN基本操作:Rname(改名),对文件/目录进行Subversion控制下的改名操作,用此功能对文件/目录进行改名后文件仍处于SVN的控制下并保持连续的变更信息。注意:必须使用TortoiseSVN的重命名功能,直接在资源管理器中进行重命名SVN无法监控。,2009.2.27,TSVN基本操作:删除认证数据,步骤:点击右键 选择设置 以保存数据 清除认证数据,2009.2.27,TSVN基本操作:得到历史版本,工作副本右键显示日志选择所需的版本号保存存版本至,2009.2.27,TSVN基本操作:AddtoIgnoreList(忽略文件),添加忽略文件 右键一个单独的未进入版本控制文件TortoiseSVN(加入忽略列表)Add to Ignore List,会出现一个子菜单允许你仅选择该文件,或者所有具有相同后缀的文件。删除忽略文件:如果你想从忽略列表中移除一个或多个条目,右击这些条目,选择TortoiseSVN 从忽略列表删除。已进入版本控制的文件或目录不能够忽略,2009.2.27,TSVN基本操作:处理冲突,冲突的产生产生原因:两个开发人员修改了文件中相同的几行产生步骤:commit时出现错误提示:“文件或目录“README.txt”已经过时;请先更新”更新后出现“至少还有一个的文件处于冲突状态”红色警告。svn自动在当前目录产生几个文件记录冲突文件解释:filename.mine:你更新前的文件,没有冲突标志,只包含你最新更改的内容。filename.rOLDREV:这个是你做更新操作以前的BASE版本,就是你在上次更新之后未作更改的版本。filename.rNEWREV:这是Subversion从服务器刚刚收到的版本。这个版本就是版本库的HEAD版本,2009.2.27,TSVN基本操作:处理冲突,面对文件冲突,我们可以选择以下两种方式解决冲突使用工具解决冲突用revert放弃所做的修改,2009.2.27,使用工具解决冲突选择冲突文件-”编辑冲突”出现merge界面,分为”远程文件”、”本地文件”和”已合并”3部分,表示”别人修改的内容”、”我修改的内容”和”合并后的结果”3部分。,TSVN基本操作:处理冲突,2009.2.27,TSVN基本操作:处理冲突,合并目标是将”别人修改的内容”和”我修改的内容”有取舍地合并起来,形成”合并后的结果”。一般分为4种情况:保留”我的修改”,舍弃”别人的修改”。鼠标右键点击Mine框的相应行,点击”使用此文件块”。舍弃”我的修改”,保留”别人的修改”。鼠标右键点击Theirs框的相应行,点击”使用此文件块”。同时保留”我的修改”和”别人的修改”,并将”我的修改”放在前面。鼠标右键点击Mine框的相应行,点击”优先使用本地而非远程文件块”。同时保留”我的修改”和”别人的修改”,并将”别人的修改”放在前面。鼠标右键点击Mine框的相应行,点击”优先使用远程而非本地文件块”。合并完成,Ctrl+S存盘,退出。,2009.2.27,TSVN基本操作:处理冲突,选择SVN还原(revert)放弃自己所做的修改,2009.2.27,TSVN基本操作:处理冲突,通过上面所说的方法,解决冲突后要选择已解决的(resolved)解决后,带问号的三个文件将自动删除最后选择commit提交到SVN,2009.2.27,TSVN基本操作:处理冲突,关于冲突的建议修改文件之前,先进行一次update操作修改完成后,及时commit,不要在本地停留过长时间在多位团队成员协作时,尽量修改自己撰写的部分,尽量不要修改不属于自己撰写的部分出现冲突很正常,可以通过前面的方法解决,不要相互覆盖,2009.2.27,TSVN基本操作:获取标签和分支中的文件,什么是分支?什么是标签?分支版本控制系统的一个特性是能够把各种修改分离出来放在开发品的一个分割线上。这条线被称为分支。标签版本控制系统的另一个特性是能够标记特殊的版本(例如某个发布版本),所以你可以在任何时候重新建立一个特定的构件和环境。这个过程被称作标记。,2009.2.27,TSVN基本操作:获取标签和分支中的文件,切换到分支工作第一个方法:checkoutCheckout,在本地任意位置创建新的工作副本。对于已经创建了工作副本的版本库,不建议采用此操作。造成多个本地工作副本,不便管理。第二个方法:switch对于已经checkout的版本库,可以在本地工作副本中使用switch方便的切换到该目录的任意历史版本。注意:在工作副本里当进行本操作时,任何没有提交过的修改都会被混合。如果你不想看到这样的结果,那么你可以有两种选择,要么在切换前提交修改,要么把工作副本恢复到一个已经提交过的版本(比如最新版本)。,2009.2.27,TSVN基本操作:获取标签和分支中的文件,TortoiseSVN-切换.仅仅传输已经被修改的数据到你的工作副本中,2009.2.27,TSVN的其他功能,Export(导出)导出你需要的文件,导出后不在受SVN控制;而checkout检出的文件仍受SVN控制;Import(导入)将需要的文件导入到版本库中;Relocated(重新定位)当服务器上的版本库目录已经改变,我们可以把工作复本重新定位;CleanUp(清理)递归的清理工作副本,删除锁定和保留的未完成操作,如果你得到工作副本已经锁定的错误,运行这个命令删除无用的锁定,并将工作副本恢复到可用的状态;,目 录,第一部分SVN的基本概念配置管理环境搭建客户端TSVN基本功能的介绍及使用方法在Eclipse中使用SVN第二部分SVN系统日常维护配置库规划分支策略,2009.2.27,在Eclipse中使用SVN,将版本库导入到SVN资源库将项目文件导入到版本库在Eclipse下使用的图标Eclipse下使用Svn的主要功能菜单介绍:Team:最常用,与SVN版本库互动操作的大部分命令菜单Compare with:比较版本差异Replace with:常规操作更新项目 添加文件或目录 删除文件或目录,重命名文件或目录 忽略文件 提交更改,2009.2.27,在Eclipse中使用SVN:下载安装,下载插件 Subclipse需要根据 Eclipse 的版本下载相应版本的 Subclipse插件 下载地址:http:/subclipse.tigris.org 安装Subclipse插件,2009.2.27,在Eclipse中使用SVN:将版本库导入到SVN资源库,2009.2.27,在Eclipse中使用SVN:将项目文件导入到版本库,2009.2.27,在Eclipse下使用的图标,受SVN控制的文件被标记为小黄桶;修改过的文件都被标记上一个黑色星号;未受版本控制的文件被标记为问号;,2009.2.27,菜单介绍:小组 Team,2009.2.27,菜单介绍:比较对象 Compare with,例如:,2009.2.27,菜单介绍:比较对象 Compare with,1)基本修订版:在Eclipse中的基本版,2009.2.27,菜单介绍:比较对象 Compare with,2)资源库中的最新内容,2009.2.27,菜单介绍:比较对象 Compare with,3)分支/标记,2009.2.27,菜单介绍:比较对象 Compare with,4)修订版 比较的对象是你选择的版本号对应的项目,2009.2.27,菜单介绍:比较对象 Compare with,5)本地历史纪录 现修改的版本与本地修改的其他版本进行比较,2009.2.27,菜单介绍:比较对象 Compare with,注:与比较对象的应用一样,只是这是替换.,2009.2.27,常规操作,更新项目 右击您要更新的项目,然后从菜单中选择 Team Update。Eclipse 将从存储库中检索任何变更,并尝试将它们与本地副本合并。添加文件或目录 右击新文件,然后选择 Team Add to Version Control。下一次将此项目中的变更提交给存储库时,新文件也会检入。删除文件或目录 右击文件,然后选择 Delete。不需要使用 Team 菜单,Subclipse 自动将标记要删除的文件,并将它从项目中移除。下一次将变更提交给存储库时,该文件被删除了。重命名文件或目录 要重命名 Subclipse 控制的文件或目录,请右击它,然后选择 Rename。在输入字段中键入项的新名称,按 Enter 键。文件是在项目中重命名的,重命名操作(通过 Add 操作添加新名称、通过 Delete 操作删除旧名称)排队等待您下一次提交。忽略文件 如果项目生成文件,或者包括您不想检入的 Subversion 存储库文件,则可以通知 Subclipse 忽略它们。右击您要在版本控制中排除的文件或目录,然后选择 Team Add to svn:ignore 即可显示Add to svn:ignore 对话框 提交更改 在尝试提交变更之前,请确保更新您的项目(参阅“更新项目”)。右击项目,并从菜单中选择 Team Commit。Eclipse 会显示一个 Commit 对话框(参见图 18),其中汇总了您作出的变更。,目 录,第一部分SVN的基本概念配置管理环境搭建客户端TSVN基本功能的介绍及使用方法在Eclipse中使用SVN第二部分SVN系统日常维护配置库规划分支策略,2009.2.27,SVN系统日常维护,Subversion属性TSVN专用属性钩子脚本管理磁盘空间与数据库恢复备份与恢复,2009.2.27,SVN系统日常维护:Subversion属性,Subversion属性用于存放文件的特殊信息,作为支持某些特殊操作的一种方法。属性也是版本化的。Subversion保留了一组名称以svn:开头的属性,来预定义一些有用的功能。svn:keywords:关键字替换,告诉客户端如何扩展文件的特定关键字 值:见后页svn:externals:外部定义,如果出现在一个目录上,则这个之就是客户端必须要检出的路径和URL列表 值:可选的修订版本标记和完全有效的版本库URL列表svn:needs-lock:锁定交流,提醒用户在开始编辑以前必须锁定这个文件:除非用户锁定这个文件,否则文件一直是只读的。值:任意,2009.2.27,Subversion属性:svn:keywords,右键-TortoiseSVN-属性-新建 设置后提交,Id这是一种综合的格式,例如“$Id:V2EXCore.php 4 2005-10-29 23:08:09Z livid$”。LastChangedDate最后被修改的时间,这个属性也可以缩写为 Date。LastChangedBy最后修改该源代码文件的用户名,这个属性也可以被缩写为 Author。LastChangedRevision最后修订的版本号,这个属性也可以被缩写为 Revision 或者 Rev。HeadURL该源代码文件所位于的 Repository 上的绝对 URL 地址,这个属性也可以被缩写为 URL。,在源代码文件中需要 Subversion 进行自动更新的地方插入$Id$这样的 Keyword下次进行 svn commit 之后,$Id$就会被 Subversion 自动替换为$Id:log4j.properties 12 2009-02-19 12:54:51Z zhaoxin$这样的格式。,2009.2.27,SVN系统日常维护:TSVN专用属性,TortoiseSVN 有自己专用的几个属性,它们都有tsvn:前缀。tsvn:logminsize设置提交日志的最小长度。如果你输入的日志短于预设值,提交会被禁止。tsvn:logtemplate在需要定义日志消息格式化规则的工程中使用。在你开始提交时,这个属性的多行消息会被插入日志消息编辑框。你可以编辑它以便包含需要的信息。,2009.2.27,SVN系统日常维护:版本库钩子,钩子脚本是被版本库事件触发的程序,例如新修订版本的创建或未版本控制属性的修改。每一种钩子都会被告知事件的足够信息,操作的目标,触发事件的用户名。依赖于钩子的输出或返回状态,钩子程序可以继续执行,停止或以某种方式挂起。SVN版本库钩子模板的位置:hooks文件夹每种Subversion版本库支持的钩子都有一个模板,需要在repos/hooks目录下安装一些与钩子同名的可执行程序或脚本。注意:钩子脚本的默认执行者是访问svn的用户,必须确保该用户有执行局程序的权限。,2009.2.27,SVN系统日常维护:版本库钩子,Svn的9种钩子Start-commit:开始提交的通知,通常用来确定用户是否有提交权限 pre-commit:在提交结束之前提醒,用来保护因为内容或位置而不允许的提交Post-commit:成功提交的通知。多用于发送关于提交的描述性电子邮件Pre-revprop-change:修订版本属性修改的通知。如脚本没有返回一个非零值,属性修改不成功Post-revprop-change:修订版本属性修改成功的通知,用于修改后发送邮件通知Pre-lok:路径尝试锁定的通知,用来控制哪些用户可以锁定特定路径Post-lock:成功锁定路径的通知。用来发送锁定事件的邮件通知Pre-unlok:路径尝试解锁的通知。限制哪些用户可以解除文件锁定。Post-unlok:路径成功解锁的通知。发送解锁事件通知邮件,2009.2.27,SVN系统日常维护:管理磁盘空间与数据库恢复,删除终止的事务原因:客户端粗暴的结束提交进程,或操作过程出现网络故障,导致出现死亡事务。仅消耗磁盘空间,没有负面影响清除方法:1、暂时关闭版本库和客户端的连接,保证不会有正常事务进入版本库2、在服务器端执行如下命令:svnadmin rmtxns myrepos svnadmin lstxns myrepos删除不使用的Berkeley DB日志文件耗费磁盘空间最大的凶手,预写入使日志文件快速增长删除命令:rm svnadmin list-unused-dblogs/path/to/reposBerkeley DB数据库恢复致命错误或异常中断导致某个进程没有及时将锁删除,结果任何访问数据库的操作都会被挂起恢复方法:关闭版本库和客户端的连接运行命令:svnadmin recover/path/to/repos重新启动服务进程,2009.2.27,SVN系统日常维护:备份与恢复,最简单(但不推荐)的方法:直接备份仓库整个文件夹(全部版本),重装svn程序后直接还原过去。绝对确定没有访问数据的进程,即不能有任何访问。推荐的方法:通过svn命令行备份和还原指定版本号的数据全备份:使用svnadmin hotcopy 或svnsync 例:svnadmin hotcopy path/to/repository path/to/backup clean-logs增量备份:使用svnadmin dump的incremental选项来实现命令格式:svnadmin dump 版本库路径及名称 revision 上次导出的版本号:到本次要导出到的版本号 incremental 导出的命名还原版本:svnadmin load 要恢复的版本库路径及名称,2009.2.27,SVN系统日常维护:备份与恢复,svnadmin dump优点:比较灵活,可以全量备份也可以增量备份,并提供了版本恢复机制。缺点:如果版本比较大,如版本数增长到数万、数十万,那么dump的过程将非常慢;备份耗时,恢复更耗时;不利于快速进行灾难恢复。建议在版本数比较小时使用svnadmin hotcopy优点:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。缺点:比较耗费硬盘,需要有较大的硬盘支持,不能增量备份。Svnsync实际上是制作2个镜像库,当一个坏了的时候,可以迅速切换到另一个。不过,必须svn1.4版本以上才支持这个功能。优点:当制作成2个镜像库的时候起到双机实时备份的作用;缺点:当作为2个镜像库使用时,没办法做到“想完全抛弃今天的修改恢复到昨晚的样子”;,目 录,第一部分SVN的基本概念配置管理环境搭建客户端TSVN基本功能的介绍及使用方法在Eclipse中使用SVN第二部分SVN系统日常维护配置库规划分支策略,2009.2.27,版本库规划:使用一个版本库?还是多个版本库?,使用一个版本库支持多个项目优点:不需要维护好几个本库。单一版本库只需要一个钩子程序,只需要备份一个数据库。轻易在项目之间移动数据,不会损失任何历史版本信息。缺点:不同版本库有不同的版本库触发事件需求。其他项目版本升级,自己的项目修订版本号也会提升。折中的方法把多个项目按照彼此之间的关联程度划分成多个组,每个组创建一个版本库版本库目录层次为每个项目创建一个顶级目录每个项目的顶级目录下创建三个字目录:trunk:保存项目的开发主线branches:保存项目的各种开发分支tags:保存项目的标签,也就是永远不会修改的分支(可能会删除),2009.2.27,配置库规划,配置项识别配置项标识配置项分类配置项存储,目 录,第一部分SVN的基本概念配置管理环境搭建客户端TSVN基本功能的介绍及使用方法在Eclipse中使用SVN第二部分SVN系统日常维护版本库规划分支策略,2009.2.27,分支策略,什么是分支?分支能解决什么问题?常见的分支类型及适用场景 如何能更好的使用分支?常见问题及解决方案在SVN中实现分支,2009.2.27,分支策略:什么是分支?分支能解决什么问题?,分支:共享相同的历史的独立的开发线。,支持并行开发根据不同客户的不同需求,同时维护多个版本开发新版本的同时,维护已发布版本,随时发布补丁包隔离变更之间的相互影响多个功能或特性的并行开发,以节省开发时间,2009.2.27,分支策略,常见的分支类型及适用场景 如何能更好的使用分支?常见问题及解决方案,2009.2.27,分支策略:在SVN中实现分支,创建一个分支或标记在你当前的工作副本中给你你想要复制的分支或标记选择一个目录,然后选择命令TortoiseSVN-分支/标记.。默认的目标URL将会是你当前工作副本所处的源URL。你必须给你的分支/标记编辑一个新路径。来取代。例如:http:/,2009.2.27,ASK and ANSWER谢谢!,