• 1. TortoiseSVN培训文档 技术中心 2010年8月
  • 2. 课程安排TortoiseSVN简介和Client安装(10分钟) TortoiseSVN图标介绍(5分钟) TortoiseSVN Client基础操作(60分钟) CC和TortoiseSVN SVN操作对比(10分钟) TortoiseSVN与开发工具的集成(5分钟) 提问(10分钟)
  • 3. TortoiseSVN是Subversion版本控制系统的一个免费开源客户端,不需要为使用它而付费。 TortoiseSVN是 Subversion 的 Windows 扩展。它使你避免接触 Subversion 枯燥而且不方便的 Command Line。它完全嵌入 Windows Explorer,使用时只需在正常的窗口里右键操作就可以了。 TortoiseSVN简介
  • 4. 安装程序路径: 深圳:\\10.30.2.130\svn客户端工具及操作手册\TortoiseSVN1.4.8 南京、上海:\\10.40.23.1\svn客户端工具及操作手册\TortoiseSVN1.4.8 IT中心目前使用的Tortoise版本为TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi ,对应的汉化包 版本为LanguagePack-1.4.8.12137-win32-zh_CN.exe 下面以TortoiseSVN-1.4.8版本为例讲解安装步骤:TortoiseSVN Client安装
  • 5. 执行TortoiseTSVN-1.4.8.12137-win32-TSVN-1.4.6.msi,启动安装: TortoiseSVN Client安装
  • 6. 如下图按Next: TortoiseSVN Client安装
  • 7. 修改相应安装路径,如下图按Next: TortoiseSVN Client安装
  • 8. 如下图按Install: TortoiseSVN Client安装
  • 9. TortoiseSVN Client安装
  • 10. 如下图按Finish: TortoiseSVN Client安装
  • 11. 重启计算机,安装完成,如下图按Yes: TortoiseSVN Client安装
  • 12. 安装成功后在右键菜单里会新增如下TortoiseSVN 的菜单 : TortoiseSVN Client安装
  • 13. 安装完TortoiseSVN Client,请检查C:\WINDOWS\system32\drivers\etc路径下的hosts文件是否正确。如不正确将导致TortoiseSVN Client无法正常使用。注意事项:
  • 14. 下面开始安装TortoiseSVN Client汉化包。 执行LanguagePack-1.4.8.12137-win32-zh_CN.exe,启动安装: TortoiseSVN Client汉化包安装
  • 15. 如下图按Finish: TortoiseSVN Client汉化包安装
  • 16. 装完汉化包需要进行如下设置下才会生效 TortoiseSVN Client汉化包安装
  • 17. 选择中文简体 TortoiseSVN Client汉化包安装
  • 18. 汉化成功后可以看右键菜单都变成了中文显示TortoiseSVN Client汉化包安装
  • 19. TortoiseSVN图标介绍
  • 20. 一个新检出的工作复本使用如下绿色的对勾重载。表示Subversion状态正常。 TortoiseSVN图标介绍
  • 21. 在你开始编辑一个文件后,状态就变成了已修改,而图标重载变成了红色感叹号。通过这种方式,你可以很容易地看出哪些文件从你上次更新工作复本后被修改过,需要被提交。 TortoiseSVN图标介绍
  • 22. 如果在提交的过程中出现了冲突,图标变成黄色感叹号。 TortoiseSVN图标介绍
  • 23. 如果你给一个文件设置了svn:needs-lock属性,Subversion会让此文件只读,直到你获得文件锁。只读文件具有这个重载图标来表示你必须在编辑之前先得到一个锁。 TortoiseSVN图标介绍
  • 24. 如果你拥有了一个文件的锁,并且Subversion状态是正常,这个重载图标就提醒你如果不使用该文件的话应该释放锁,允许别人提交对该文件的修改。 TortoiseSVN图标介绍
  • 25. 这个图标表示当前文件夹下的某些文件或文件夹已经被计划从版本控制中删除,或是该文件夹下某个受控的文件丢失了。 TortoiseSVN图标介绍
  • 26. 加号告诉你有一个文件或是目录已经被计划加入版本控制。 TortoiseSVN图标介绍
  • 27. TortoiseSVN工作模式
  • 28. SVN 检出(SVN Checkout) 增加(Add) 删除(Delete) 改名(Rename) 移动 SVN 还原 (SVN Revert) 检查更新(Check for modifications) SVN 更新(SVN Update) SVN 提交(SVN Commit) TortoiseSVN Client基础操作(一)
  • 29. 显示日志(Show log) 版本库浏览(Repo-browser) 版本分支图(Revision graph) 追溯(blame) 导入(Import) 导出(Export) 获取锁定(Get lock) 解除锁定(Release lock) 分支/标记(Branch/tag) 切换(Switch) 合并(Merge)TortoiseSVN Client基础操作(二)
  • 30. 在拷贝工作目录下单击右键选择SVN检出,此操作相当于CC建静态视图。如下图所示: SVN 检出(SVN Checkout)
  • 31. 在弹开窗口的版本库URL框中输入版本库的目录地址(如http://10.30.2.131/svn/ITSPI_CM), 如下图所示: SVN 检出(SVN Checkout)
  • 32. 您可以获取最新版本,也可以根据自己的需要获取相应的版本,点击查看日志来确认自己需要获取的版本。 SVN 检出(SVN Checkout)
  • 33. 确认自己需要获取的版本后在版本里面输入相应的版本号再点确定。 SVN 检出(SVN Checkout)
  • 34. 在弹出的对话框中录入用户名和密码(域用户和密码),验证成功后,项目文件开始从远程服务器下载到本地工作目录。 SVN 检出(SVN Checkout)
  • 35. 点击确定即获取完成。 SVN 检出(SVN Checkout)
  • 36. 注意:.svn这个隐藏目录记录着两项关键的信息: 工作文件的基准版本和一个本地副本最后更新的时间戳。千万不要手工修改或删除这个 .svn隐藏目录和里面的文件!!! 否则将会导致你本地的工作拷贝 (静态视图)被破坏,无法再进行操作。 注意事项:
  • 37. 增加是将文件或目录加入TSVN库,如果添加目录的话,目录下边的所有文件会同时添加。 增加(Add)
  • 38. 可以选择要把哪些文件加入到库中,增加命令会递归搜索所选择目录下的所有路径来查看有哪些文件可能需要被增加,选择好后,点击确认。 增加(Add)
  • 39. 删除文件或目录,不能直接用Windows的删除命令来操作,那样只是没有显示出来,实际并没有删除,在更新工作拷贝后,删除的文件又会被更新出来的。要想从库中删除,必须选中你要删除的内容,然后右键 TortoiseSVN->删除,这样才会将这个文件标记成要删除的,如下图:删除(Delete)
  • 40. 确认需要删除后,使用前面所讲的提交命令,就会真正的在库中删除了。 删除(Delete)
  • 41. 修改文件名,不能直接用Windows的重命名命令来操作,必须选中你要重命名的文件,然后右键 TortoiseSVN->改名。如下图: 改名(Rename)
  • 42. 在如下提示框内输入新名称,确定后即可修改。要想其他人看到效果就得进行提交。改名的处理方式相当于新增了一个以新名称命名的文件,原名称命名的文件进行了删除。改名(Rename)
  • 43. 如果有几个后缀名不一样,但前面名称一样的文件(如:Resources.cs、Resources.xml和Resources.resx),这时你使用改名操作,会弹出一个提示框提示你是否所有的同类名称的文件都需要改名。 改名(Rename)
  • 44. 右键点到要移动的文件或文件夹然后拖拉到你想要移动到的目录,再选择你想移动的方式。 版本库中文件或文件夹的移动
  • 45. 在未提交之前,你对前面做的操作反悔了,可以使用TortoiseTSVN->SVN还原来恢复,相当于CC里的undo操作,如下图: SVN 还原 (SVN Revert)
  • 46. 这时会弹出一个提示框,让您选择需要还原哪几个步骤,选好确定后即可以还原。如下图: SVN 还原 (SVN Revert)
  • 47. 此功能可以显示你所做的修改有哪些还没有提交的。此功能不光能看到对文件的修改变化,所有的变化都能看到,包括增加文件或目录、删除文件或目录、移动文件或目录等。 检查更新(Check for modifications)
  • 48. 如果你点击检查版本库,那你还可以看到版本库里的改动,即别人提交了哪些文件的改动,你还没更新到本地。 检查更新(Check for modifications)
  • 49. 当有人提交了文件时,用户需要进行SVN更新才能看到最新的版本,相当于CC的update,如下图: SVN 更新(SVN Update)
  • 50. 更新完后会提示您更新到的最后版本是多少,通过显示日志可以查看到更新到的版本,和每个版本都做了些什么操作。 SVN 更新(SVN Update)
  • 51. 有时当你从版本库中更新你的文件时,会有冲突。冲突出现的原因是两个开发人员修改了文件中相同的几行。由于Subversion不知道你的项目的具体情况,它把解决冲突的工作留给了开发人员。 SVN 更新(SVN Update)
  • 52. 对于每个冲突的文件Subversion在你的目录下放置了三个文件: filename.ext.mine 这是你的文件,在你更新你的工作复本之前存在于你的工作复本中,没有冲突标志。这个文件除了你的最新修改外没有别的东西。 filename.ext.rOLDREV 这是在你更新你的工作复本之前的基础版本(BASE revision)文件。也就是说,它是在你做最后修改之前所检出的文件。 filename.ext.rNEWREV 这个文件是当你更新你的工作复本时,你的Subversion客户端从服务器接收到的。这个文件对应与版本库中的最新版本。SVN 更新(SVN Update)
  • 53. 你可以通过TortoiseSVN → 编辑冲突,这时你需要确定哪些代码是需要的,做一些必要的修改然后保存。 SVN 更新(SVN Update)
  • 54. 然后,执行命令TortoiseSVN → 已解决并提交你的修改到版本库。需要注意的是已解决命令并不是真正的解决了冲突,它只是删除了filename.ext.mine和filename.ext.r*两个文件,允许你提交修改。 SVN 更新(SVN Update)
  • 55. 如果你的二进制文件有冲突,Subversion不会试图合并文件。本地文件保持不变(完全是你最后修改时的样子),但你会看到filename.ext.r*文件。 如果你要撤消你的修改,保留版本库中的版本,请使用还原(Revert)命令。 如果你要保持你的版本覆盖版本库中的版本,使用已解决命令,然后提交你的版本。SVN 更新(SVN Update)
  • 56. SVN的提交是将在工作空间做的修改进行提交,包括文件内容的修改,文件或目录的添加,删除,命名,移动等操作,相当于CC中的check in。 如:新增了一个PDM_Q07.07 配置管理计划.doc文档需要提交: SVN 提交(SVN Commit)
  • 57. 这时会出现如下的对话框,您需要输入一些信息(如:关联的CQ活动号,文档修改了什么内容等)相当于CC签入的时候需要关联一个CQ里面的活动。 SVN 提交(SVN Commit)
  • 58. 通过此功能可以查到谁,什么时候,对哪个目录下的哪些文件进行了哪些操作,操作的时候是否关联了正确的活动号。 显示日志(Show log)
  • 59. 显示日志(Show log)
  • 60. 版本日志对话框的顶部面板的右键菜单 显示日志(Show log)
  • 61. 版本库浏览功能是用来浏览需要查看的资料库,操作步骤如下: 版本库浏览(Repo-browser)
  • 62. 如下图输入资料库地址,再输入用户名和密码。版本库浏览(Repo-browser)
  • 63. 就能查看到您需要查看的版本库中的内容,在这你还能看到哪些文件被谁锁定了。 版本库浏览(Repo-browser)
  • 64. 在版本库浏览中可以移动版本库中的文件或文件夹到一个新的位置。只需用左键选中你想要移动的文件,然后将其拖到它要去的位置。 如果你要移动一个文件或文件夹到一个新的位置并重命名,你可以选中你想要移动的文件,然后将其拖到它要去的位置,而不用左键拖。这样,就会显示对话框来为该文件或文件夹重命名。 版本库浏览(Repo-browser)
  • 65. 有时你不仅要知道哪一行做了修改,还要精确地知道谁修改了一个文件中的哪一行。这就是TortoiseSVN → 追溯...命令 。 追溯(blame)
  • 66. 选择追溯的版本,会显示哪个版本谁什么时候改了哪些行? 追溯(blame)
  • 67. 在将您的项目导入到版本库之前,你应该:删除所有不需要的文件(如:临时文件,编译器产生的文件等)组织好目录和子目录内的文件。 然后进入资源管理器,选择你的项目的顶层目录,右键选择TortoiseSVN → 导入,如下图: 导入(Import)
  • 68. 在将您的项目导入到版本库之前,你应该:删除所有不需要的文件(如:临时文件,编译器产生的文件等)组织好目录和子目录内的文件。 然后进入资源管理器,选择你的项目的顶层目录,右键选择TortoiseSVN → 导入,如下图: 导入(Import)
  • 69. 在如下对话框中,输入您的项目导入到版本库的URL。 导入信息里面输入的内容将作为提交日志。 导入(Import)
  • 70. 当你点击确认时,TortoiseSVN 会导入包含所有文件的完整目录树到版本库。你导入的文件夹名称不会在版本库中出现,只有这个文件夹的内容会在版本库中出现。 请注意:你导入的文件夹没有被版本控制!你需要检出刚才导入的版本,以便获得受版本控制的工作目录。导入(Import)
  • 71. 导出一份干净的目录,导出步骤和SVN 检出步骤类似。 导出的目录不带TSVN的绿色标记,也没有.svn目录,为干净的目录树;而SVN检出的目录带TSVN的绿色标记,每个目录下有个.svn目录。导出相当于复制了一份服务器中的资料,而检出相当于创建了一个本地的工作拷贝(相当于CC中的一个静态视图)。 导出(Export)
  • 72. 版本分支图能告诉我们从哪开始有了分支和标签,同时能够知道这条支路是单独的分支还是树型结构。 版本分支图(Revision graph)
  • 73. 版本分支图(Revision graph)
  • 74. 如果你对一个文件取得锁定,那么只有你可以提交这个文件,其他用户的提交都会被拒绝,直到你释放了这个锁。 获取锁定(Get lock)
  • 75. 注明对文件加锁的原因,这样别人可以知道你为什么锁定这个文件,注释是可选的。在文件框内选择你需要加锁的文件。 当且仅当你需要窃取别人的锁的时候,勾选偷取此锁定复选框。 获取锁定(Get lock)
  • 76. 为了确保你不会忘记释放锁,你不需要做别的事,在提交对话框中,总是会显示锁定的文件,并总是默认被选中。 如果你希望保持一个修改过的文件的锁,你需要在提交之前选中保持锁定复选框。获取锁定(Get lock)
  • 77. 手动解除锁定,选中工作复本中要释放的文件,选择命令TortoiseSVN → 解除锁定。 你可以对一个文件夹来使用这个命令释放其中的所有锁定项。 解除锁定(Release lock)
  • 78. TortoiseSVN的分支/标记相当于创建一个内部的连接,指向一个具体的版本树。所以TortoiseSVN的分支和标记创建起来比较快,并且没有在版本库里占据任何额外的空间。 创建分支的最大的目的就是跟主线进行并行开发的时候不影响主线的开发。你在分支上所做的提交都只存于分支上,主线上的Update是看不到分支的修改的。 分支/标记(Branch/tag)
  • 79. 在你当前的工作拷贝中给你想要拷贝的分支或标记选择一个目录,然后选择命令TortoiseSVN → 分支/标记...。 分支/标记(Branch/tag)
  • 80. 分支用来维护独立的开发支线,在一些阶段,你可能需要将分支上的修改合并到最新版本,或者将最新版本的修改合并到分支,这时候你就需要进行合并操作。 合并是首先将两个版本库树进行比较,然后将区别应用到本地拷贝. 这个命令包括三个参数: 1、初始的版本树 2、最终的版本树 3、一个接收区别的工作拷贝。合并(Merge)
  • 81. 例如我们在分支上的版本38修改了“合并操作测试2.txt”文件,在文件中添加了合并操作测试的内容,主线上的版本37也修改了“合并操作测试2.txt”文件,在文件中添加了合并操作2的内容,我们如何将分支版本的信息合并到主线上呢? 合并(Merge)
  • 82. 在主线的目录上右键点击,选择TortoiseSVN → 合并 合并(Merge)
  • 83. 在弹出的提示框中,选择分支目录和其起始版本号,接收区默认为你右键所指的目录。 合并(Merge)
  • 84. 在合并之前我们可以通过点击“准差异”,查看两版本树之间所有文件的内容的变化,“比较差异”显示出有发生变化的文件列表,“预检”能显示真正合并时的状态信息,但并没有做任何的合并操作。 点击“合并” 后即对主线上的文件补上了分支上修改的内容,如无冲突则可以在主线上像其它文件一样使用了,如果合并后的内容不满意,可以通过撤销来取消这次的合并操作,前提是未对合并后的文件做提交操作。 合并(Merge)
  • 85. 如合并的过程中文件有冲突,则点完合并后会弹出如下提示框告诉你哪些文件在合并的过程中有冲突: 合并(Merge)
  • 86. 这时查看主线的工作目录下,会产生如下图的三个文件,有冲突的文件也打上开始讲解的有黄色感叹号的冲突文件标记: 合并(Merge)
  • 87. Filename.working 这是主线上合并前的文件,没有冲突标志,文件内容是你合并前的最新内容。 Filename.merge-left.rOLDREV 这是你选择合并的分支的版本的前一次修改的版本文件。 Filename.merge-right.rNEWREV 这是你选择合并的分支的版本的版本文件。 合并(Merge)
  • 88. 冲突的文件内容,在冲突的地方将被使用“>>>>”标志出来,用户自己进行合并的取舍。合并(Merge)
  • 89. 选择带有冲突文件标记的需要合并的文件右键-TortoiseSVN-编辑冲突。 合并(Merge)
  • 90. 如下图点到红色冲突地方解决冲突: 合并(Merge)
  • 91. 解决冲突之后,右键选择“TortoiseSVN-已解决的..”,Subversion将删除冲突所产生三个文件删除,此时你才可以进行提交。( 也可以手动删除此三个文件。) 合并(Merge)
  • 92. 注意:SVN不能进行文件与文件夹的合并,反之亦然。即只能文件夹对文件夹,文件对文件进行合并。如果选择了文件,打开合并对话框,那么你必须在对话框中给出文件的路径。如果你选择了文件夹,打开合并对话框,那么你必须给出文件夹的对话框。 合并(Merge)
  • 93. 你可以将浏览器指向版本库的URL,这样你无需安装Subversion客户端就可以浏览内容版本库中的内容。 Web方式浏览版本库
  • 94. 如果你需要设置TortoiseSVN中的一些属性,你可以右键选择“TortoiseSVN-设置”,在已保存数据中,你可以通过清除操作,来修改TortoiseSVN保存的很多你用过的设置。 TortoiseSVN设置
  • 95. 在外部程序:差异查看器中,可以将版本比较工具设置为你本地的用来比较不同版本的查看工具。 TortoiseSVN设置
  • 96. CC和TortoiseSVN SVN操作对比操作clearcasesubversion创建视图"可以在流上建立静态视图和动态视图Create view"通过checkout建立本地工作空间检出checkout建立本地工作空间拷贝后不需再检出添加新文件Add to SourceControl,最底层文件添加后上层目录会添加Add+commit,add最顶层目录即可更新视图updateupdate导入clearfsimportimport删除文件deletedelete重命名renamerename交付deliver无合并mergemerge提交checkincommit
  • 97. CC和TortoiseSVN SVN操作对比操作clearcasesubversion取消修改undo checkoutrevert基线make baselinecreate tags,以目录显示标签apply labelcreate tags,以目录显示建立分支create streamcreate branch,以目录显示组件共享component添加到流svn:externals属性引用版本历史historyshow log检查更新find checkout,可查所有人的check for modification,只能查自己的文件版本树version treeRevision Graph,非常慢,建议通过log查看版本比较Compare with VersionCompare 、Show differences
  • 98. TortoiseSVN与Eclipse工具集成插件和参考文档路径: \\10.30.2.130\svn客户端工具及操作手册\Eclipse集成工具 TortoiseSVN与JDeveloper工具集成插件和参考文档路径: \\10.30.2.130\svn客户端工具及操作手册\JDeveloper集成工具 TortoiseSVN与VisualStudio工具集成插件和参考文档路径: \\10.30.2.130\svn客户端工具及操作手册\VisualStudio集成工具 TortoiseSVN与开发工具的集成
  • 99. 测试环境,访问地址为:http://10.30.2.131/svntest TortoiseSVN客户端测试环境
  • 100.   Q&A
  • 101. (本页无文本内容)