由于最近较忙,好久没有更新博客了,近日公司内部组织培训svn的使用,正好把培训准备的资料整理出来分享给大家(划划水0.0),希望对初次接触这个软件的老哥有所帮助。
SVN是Subversion的简称,是版本控制系统的一个免费开源客户端。使用svn开发方便于团队的协助开发和代码的集中管理。
下面我们就简单介绍一下svn的基本用法和一些常见问题。
一、SVN的下载
1. 首先在百度搜索并下载 SVN
2. 建议从官网下载,软件分为32位和64位版本,下载时请根据自己的系统位数进行下载;
二、SVN的安装
1. svn下载完成后,双击程序进行安装,点击“Next”;
2. 在许可证协议页面,选择“I Accept the terms in the License Agreement”,点击“Next”;
3. 在自定义选项页面,可以选择安装目录,也可以直接点击“Next”进行安装;
4. 点击“Install”开始安装;
5. 安装完成后,点击“Finsh”;
注* svn默认安装是不安装本地命令行工具的,当出现如下界面时记得勾选安装command line client tools。
三、SVN的基本使用
1. 迁出配置库内容(SVN Checkout)
在本机创建文件夹2-sdk,右键点击Checkout,弹出如下图的窗体:
在上图中URL of Repository:下的文本框中输入svn server中的代码库的地址,其他默认,点击ok后开在同步svn代码库中对应2-sdk下的项目文件。同步完成后如下图所示:
通过观察我们可以发现从svn版本库中同步下来的文件夹都带有一个绿色的对勾图标,那么这些√图标所代表的含义是什么呢?还有什么其他的图标?通过查看svn从客户端的设置我们就能很容易的找到对应的含义,具体含义如下图所示:
2.增加文件(add)
svn的添加操作是将需要增加的新文件或者文件夹添加到svn的配置库中。
2.1.首先将新建的文件放入需要添加的svn本地库指定的目录下,如图在2-sdk目录先新建t1.txt文件。
2.2.接着鼠标选中新文件右键选择“TortoiseSVN”的“Add”项,点击add后,t1.txt文件就被标识为新建的文件,如下图所示:
但是需要注意的是此时svn的配置库并没有这个文件,还要我们做提交(commit)操作后,t1.txt文件才被添加到配置库中。
3.提交文件(commit)
SVN的提交是将在工作空间做的修改进行提交,包括文件内容的修改,文件或目录的添加,删除,命名等操作。
开发项目时,你会在工作拷贝中修改项目的代码,你总要把修改之后做过的改动又同步到配置库中去。这个过程称为“提交”。
我们选中只需要提交的文件,鼠标右键->SVN Commit,如下图所示:
点击ok后提交选中的文件到配置库。
4.更新文件(SVN Update)
当你从配置库中迁出相应目录后,他人对服务器上此目录内容进行了修改,你需要再次获取改动内容到你本地硬盘空间目录(即先前已迁出的目录)的过程称为更新。如下图所示:
5. 删除文件(delete)
选中要被删除的文件,右键选择“TortoiseSVN”的“Delete”项,同add操作相同,Delete操作后同样需要commit。如图所示:
6. 撤销更改(Revert)
在修改了某些文件后(文件未上传到配置库),需要返回到修改前的状态,则选中文件夹test右键选择“TortoiseSVN”的“Revert…”项进行撤销,本地硬盘上的文件将恢复到修改前的内容,修改的内容将被删除。如下图所示:
7.锁定和解锁(Get lock和Release lock)
当项目需要时可以在你本地硬盘中将你迁出的内容进行锁定,选中要被锁定的文件右键选择“TortoiseSVN”的“Get lock…”项进行锁定(锁定后他人将无法修改此文件),系统弹出锁定信息框,如下图所示:
解锁时选中被锁定的文件右键选择“TortoiseSVN”的“Release lock”项进行解锁。
8.重命名文件(rename)
鼠标选中指定文本文件右键选择“TortoiseSVN”的“rename…”项,系统弹出如下信息框:
在New name框中输入新文件名后点击“OK”按钮,将出现重命名后的文件,原文件被删除,将它们提交后重命名生效。
8. 获取历史文件()
8.1查看历史文件
鼠标选中先要查看的文件夹,右键选择“TortoiseSVN”的“Show log”项,系统弹出此路径下的所有文件版本信息,如下图所示:
此时也可双击选中文本文件查看修改的内容(比较上一版本所修改的内容)。
8.2 获取历史文件
鼠标选中文件夹test右键选择“TortoiseSVN”的“Update to revision”项,后系统提示需要选择下载的版本,如下图所示:
9. 检查修改(Check for modifications)
在提交你修改的文件到配置库前,可先检查本地修改的内容是否与配置库中的内容。选中修改的文件或文件夹,右键选择“TortoiseSVN”的“Check for modifications”项,将显示所有被修改的内容,检查指定文本如下图所示:
点击上图中“Check repository”按钮,后双击指定文本或右键处理,则显示出此文件在配置库中的改动内容和你本地的改动内容,
10.解决冲突
当你Update指定文本文件出现冲突时,Subversion会产生三个文件:“.txt.mine”;“.txt.r+行号” ;“*.txt.r+行号”,
其中, 。《《《《《.mine到====之间的内容为本地硬盘中文件的内容,====到 》》》》后的内容为配置库中文件的内容,需要手工修改解决这两个内容的不同之处。
手工修改冲突的内容后,右键选择“TortoiseSVN”的“Resolved…”项,删除冲突所产生三个文件(也可手动删除这三个文件)。
11.忽略无需版本控制的文件
在你给配置库中提交内容时,会有一些文件和目录不需要进行版本控制,只需要在你本地硬盘保存即可,这可能包括一些由编译器生成的文件,如*.gardle,*.build
等。此时可采用添加相应文件到该项目的忽略列表的方法解决。
选中本地硬盘中无需提交到配置库的文件(此文件在本地硬盘的父目录是处于版本控制下的),右键选择“TortoiseSVN”的“Add to ignore list”项,如下图所示:
点击“Add to ignore list”--.iml
代表只忽略这一个文件,若点击*.iml
代表忽略所有具有*.iml
后缀的文件。
12.去除SVN标志,导配置库中的项目
选中需要取消SVN标记(脱离版本控制)的文件夹(其子文件夹也要取消相应标记)右键选择“TortoiseSVN”的“Export…”项,系统弹出导出路径的信息框。
选定你要导出的路径,若选择E盘则会保存一份干净的文件到E盘。
选择上图中的“Export unversioned files too”复选框表示将本地不处于版本控制下的文件一起导出。
也可将每个文件目录下(包括子文件目录下)的.svn文件删除解决此问题。
13.查看文件每行的修改信息
如果需要精确地知道谁修改了文件的哪一行,选中文件右键选择“TortoiseSVN”的“Blame…”项,系统提示需要选择的版本范围,如下图所示:
14.打tag,建立标签
svn的tag的文件夹存储的是一个稳定的版本,如当项目的某一个版本测试通过稳定的上线后需要从trunk保留一下的当前的版本,通常的操作就是打出一个tag。
鼠标选中主线目录右键选择“TortoiseSVN”的“Branch/tag…”项,系统弹出有关标签路径的信息,
在To URL栏中输入标签目录,URL/V1.0.0.0(输入的V1.0.0.0可自动生成,无需事先建立V1.0.0.0文件夹),点击“OK”按钮建立V1.0.0.0版本标签。
15.建立分支
在实际操作时,trunk主干版本要时刻保持干净,即随时可以基于这个版本进行修改并将应用部署上线。branches是分支目录,存放并行开发的项目代码,tags目录用于存储稳定的线上版本。
1. 建立分支
分支建立方法和标签建立方法相同。
2. 合并分支
首先保证你在分支上的修改已经全部提交。
鼠标选中主线文件夹右键选择“TortoiseSVN”的“Merge…”项,系统弹出有关分支合并的信息。
在From框中选择URL点击show log选择起始版本。
在To框中选择URL(与From框中路径相同)和版本号(需合并的版本,若是最新版本可直接选择HEAD Revision)。
点击“Merge”后,即完成将分支修改内容合并到主线目录的工作。
3.查看版本分支图
选中要查看的文件,右键选择“TortoiseSVN”的“Revision graph”项,系统弹出有关版本分支的结构图。
补充:
关于svn目录下有些时候文件状态图标(如下图)不显示的问题解决方式通常有两种:
1、根据你的操作系统设置对应的style上图中修改不同风格显示。
2、如果第一种方式无效可以采用修改Icon Overlays的方式具体操作如下:
第一步:鼠标右键->TortoiseSVN->Settings->icon overlays->status cache选中shell->点击确定。
第二步:双击你的svn安装包->选择repair点击确定。
如果以上两种方式还是无法解决,那老哥估计你只能重启电脑了。
关于svn的基本使用就是这些,如有不足欢迎各位老哥留言指正。
如有疑问欢迎大家留言指正。祝大家生活愉快。
最后欢迎对Android开发感兴趣的老哥一起讨论。