TortoiseSVN说明
- TortoiseSVN简介
TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录,许多人将 Subversion 和版本控制系统看作一种“时间机器”。文件保存在中央版本库,除了能记录文件和目录的每次修改以外,版本库非常像普通的文件服务器。用户可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。
- TortoiseSVN功能说明及基本操作
- 检出源文件到本机
在本机创建项目文件夹,右键点击“SVN checkout...”即可,如图1所示,弹出如图2的窗体,设置好后点击“OK”即可检出SVN库里的文件;
注:
- Checkout Depth分为四个选项,“Fully recursive”、“Immediate children, including folders”、“Only file children”、“Only this item” ,默认为第一项即可;
- 文件左下角的小图标显示了文件的当前状态,一些常见的图标及其含义如下表所示:
图标显示 | 定义 |
绿底白对勾 | 正常 |
红底感叹号 | 已修改 |
黄底感叹号 | 版本冲突 |
灰底白对勾 | 只读文件夹 |
红叉 | 已删除 |
锁头 | 被锁定 |
蓝色加号 | 新添加 |
黑色问号 | 未修改 |
-
- 更新本机代码与SVN服务器上最新的版本一致
只需要在预更新的本机文件(夹)上点击右键或在该文件(夹)下的空白处点击右键,点击“SVN Update”即可,如图3所示:
-
- 上传文件到SVN服务器
对于修改后的文件:只需要在预提交的文件(夹)上点击右键或在该文件(夹)下的空白处点击右键,点击“SVN Commit”即可,如图4所示, 左下角显示“绿底白对勾”图标即表示提交成功;
对于新增文件:需要先将预上传的文件(夹)添加到SVN工作目录中来,右击空白位置如图5所示,然后右击文件(夹)再点击“SVN Commit”即可,左下角显示“绿底白对勾”图标即表示提交成功;
图4 图5
-
- 版本对比
查看历史记录,主要是查看文件或文件夹的提交历史,如谁、什么时间、提交了哪些文件或者文件夹;
两种方法:1)在SVN对应的文件夹的空白处右击,选择“TortoiseSVN”—>“Show log”,如图6所示;选择“Show log”后跳出日志信息,如图7所示;双击“路径”即可查看2个版本的文件对比;
2)选中需要查看历史记录的文件或者文件夹,选择“TortoiseSVN”—>“Diff”,如图8所示;
图6 图7
图8
- 常见问题处理措施
问题1:将文件checkout(检出)之后,没有出现SVN的图标,是怎么回事?
解答:有些时候在客户端Checkout 文件后,SVN的系统图标也会不显示,可以执行一下“Clean up”,就会出现SVN的系统图标。
问题2:为什么添加的文件,别人看不到,版本库里也没有?
解答:最可能的原因是,只是执行了“Add”(增加)而没有“Commit”(提交),这样只是在本地注明某个文件是预定要增加的,而没有实际添加到版本库中,要添加到版本库必须执行“Commit”。 没有绿色对勾的文件不会被commit。删除文件也是一样。
问题3:“Commit failed。……You have to update your working copy first”提交失败,需要首先执行更新操作。
解答:多人同时修改同一文件,在提交前其他人已经抢先提交到SVN服务器中,导致该错误;解决方法:对工作复本中的文件进行更新即可。
问题4:更新时提示文件发生冲突:“One or more files are not a conflicted state。”
解答:多人同时修改同一文件的同一部分,SVN无法自动进行合并,会导致该错误;
解决方法:对工作复本中的文件和服务器的文件进行比较,手工合并即可。
问题5:Working copy’**’locked. Please execute the ’Clean up’command.
解答:Subversion客户端在提交内容之前会在本地的工作拷贝写日志,防止其他客户端再次作操作,如果这个提交过程中发生错误,就会存在未清理的日志,解决这个问题之需要执行“清理”操作,整理计算机上的工作副本,清理错误的日志记录,可以继续操作。
问题6:执行clean up时,出现错误 “Subversion reported an error while doing a cleanup!” '**' is not a working copy directory ”
解答:遇到这种情况,先删除隐藏文件夹.svn中的tmp下面的临时文件,再执行clean up。
问题7:在SVN中选中一个目录show log时,出现了某些版本只显示版本号和(no date),没有其他信息,什么原因引起的 ?
解答:出现了(no date)的revision,因为其他人修改了你所没有权限访问的某个目录下的文件。