svn是当前一种注流的开源代码的版本控制系统。在一些大中型项目中,代码的版本控制是必不可少的。svn用于代码管理有以下几种作用:
1,可以多人同时进行编码,方便解决整合过程中的冲突。
2,可以追溯到之前版本,追溯问题代码的修改人,更快发现问题。
3,可以在进行权限的控制。
4,方便产品的发布。
我也是刚接触svn不久,在项目的开发中,它着实带给我很多方便,在此详细的说下svn的相关简介及具体用法。
一,svn的基本流程
如下图所示,svn就是以服务器为中心,多个客户端同时进行代码的提交和获取,不同客户端可能权限之间有所不同。
二,VisualSVN Server的使用
要使用svn,首要的就是有服务器,本文使用VisualSVN server在本地设置了一个svn server,在真正项目开发中一般server都己配置好,不需要开发者过分担心。VisualSVN server server的文件下载放在了链接里。
VisualSVN Server是一个免费的集成svn server工具,安装完成之后如下图:
1,添加资源库
添加资源库的方法是右键Repositories-->create new -->Repository,给资源库起名MyService,然后进入以下界面。
Empty repository:指的是建立一个空的资源库。
sigle-project repository:指的是建立有trunk,branches和tags的资源库,如何选择视自己的要求而定,一般情况下先后者。
以上界面中选择Customize permissions进行权限的自定义,Create。
Repository URL就是访问你建立的资源库的URL。可以把它复制下来。接下来就讲解如何进行分组。
2,用户分组
回看VisualSVN的首页,顾名思义,Users与Groups就是添加用户和添加分组的。首先右键Users --> Create User……进行用户的创建。设置用户名和密码,要记住密码,这是以用户访问资源库的一个权限。
本文创建好三个用户,分别人user1,user2,user3。
在一个公司中,不可能每个员工都需于同一个组,每个员工权限都一样。由于工作内容的不同,就涉及到分组的问题,接下来将用户进行分组。右键Groups -->Create New Group,设置组名Android(自写),点击Add,选择Android的成员user1与user2。如下图:
同理设置Ios组。
3,用户权限设置
右键MyService(你的资源库名)--> Properties后,点击Add弹出如下界面:
可以选择组或者用户来设置可以访问该资源库的群体,很简单。
二,客户端之eclipse
讲完了service后就开始讲开发个体了,在此我提一下TortoiseSvn这个软件。TortoiseSvn是svn版本控制系统的一个开源客户端,可以很方便地进行svn版本控制操作。因为本文主要讲解eclipse的svn版本控制,所以不对它进行介绍,如果有兴趣可以自行地下载进行操作,软件下载也在下载链接里。
1,eclipse与svn的关联
首先介绍下如何把eclipse与svn进行关联,下载svn插件,这里我使用的是eclipse_svn_site-1.6.5.zip,下载软件在链接里。将其解压到一个文件夹下,进入eclipse安装目录中的dropins目录中,创建文件起名为subclipse.link,写上刚下载文件的地址,如下:
path=E:/svn_eclipse(注意要用“/”,在此吃过亏的);
打开eclipse, window --> showview --> other,如果出现了SVN文件夹,则说明己关联成功。在此路径下点击SVN资源库,将SVN资源库视图加载到eclipse底部栏窗口中。
2,eclipse代码进行svn版本管理
首先在eclipse的svn资源库窗口中点击右上方的添加资源库按钮如下图:
接下来填写资源库的URL,也就是我们在创建资源库时复制的那个URL,如果找不到也可以重新回到VisualSVN Server中,右键MyService-->Copy URL to Clipboard,再粘贴过来即可,接下来填写创建账号密码,注意写的用户是要在上面有分配到权限的,这里用user1创建。创建完如下:
以下模拟两个用户来进行svn操作。为了模拟两个用户,就需要检出两个工程。右键刚生成的资源库底下的trunk文件-->检出为,选择做为工作空间的项目检出。
再检出一个工程,起名为user2,完成后如下图:
图中的*号下标指的是还没有提交到服务器。
3,简单的svn操作
svn的操作主要包括更新代码,提交代码,合并代码,解决冲突等,接下来分别介绍下:
更新代码:右键user1-->team-->更新进行文件的更新,也就是将本地文件更新到服务器当前最新版本,一般在提交前都要进行更新。
提交代码:右键user1-->team-->提交进行文件的提交,即将本地文件上传到服务器上。提交完成后文件右下标会变成黄色小圆桶。提交前到写清楚你本次提交程序完成的内容。有利于以后出问题后可以回溯及查找问题制造者。如下:
解决冲突:冲突的产生是有多个人同时修改了同个文件,在更新后就会出现冲突。比如user1写了如下代码:
class Person{
String s = 0;
String s2 = 1;
}
此时user2写出如下代码
class Person{
String s = 0;
String s1 = 1;
}
接下来user1先提交,则user2在更新时就会报错,如下图
简单说下,左边栏生成的三个文件,Person.mine是user2本地的程序,Person.r2是user2修改前代码,Person.r3是服务器中最新代码。
解决冲突的办法是右键user2下的Person-->team-->编辑冲突
通过点击右上角的几个按钮来解决冲突。如copy current change from right to left,就是把右边的复制到左边。next change就是寻找下一个变化处等。解决完冲突之后再右键Person-->team-->标志为解决,解除冲突编辑状态。接下来专门介绍下文件夹下的三个文件。
4,branches、tags、trunk
trunk:即主干,就是项目开发时的主干路,主要的编程都是在此完成的。
tags:一般不会修改这个文件夹下的代码,该文件夹用于存放己完成版本的代码,如v1.0版本v2.0版本等。
branches:分支,主要用于修改代码。比如项目开发完1.0版本正开发2.0,若想回过去修改1.0版本则要新建分支。
如果想从trunk把程序保存到tags作为1.0版本时,就右键工程-->team-->分支与标记,点击浏览选择tags,再在URL后添加/1.0作为其目录即可。
具体的切换步骤通过右键工程-->team-->切换,选择要切换的目录即可。
若想修改tags目录下的1.0版本,则应该新建分支修改,切换到tags的1.0目录下后,右键工程-->team-->分支与标记,选择branches后在URL后添加/1.0fix目录,再切换到branches的1.0fix目录下即可,如下图:
这样就可以在不修改tags情况下修改代码,当代码修改完成后,要与trunk进行合并,右键工程-->team-->Merge-->merge a range of revisions再选择tunk进行合并代码。
三,总结
第一次写博客,发了很长的时间,因为没有经验,写东西抓不住重点,思路也不清晰。希望以后能够改正不足,写比较好的东西出来。也希望本文对你有所帮助。
点我下载