SVN详细配置与使用 ——一步步教会您使用
项目管理在项目开发活动中起到非常重要的作用,而对于初学者来说学习有一定的难度,且不说如何使用,就是搭建过程恐怕也要费一般周折,介于此下面就通过图解的方式一步一步详细的教大家如何使用SVN,你只要耐心的一步步去实践就能掌握
目录:
一、SVN介绍
二、SVN服务器安装
三、SVN客户端安装
四、SVN服务配置
五、SVN客户使用
一、SVN介绍 |
SVN是个自由、开源的版本控制系统,绝大多数开源软件都使用SVN作为代码版本管理软件。
SVN的官方网站http://subversion.apache.org/。目前SVN在开源社区中非常流行的一款版本控制软件,它是CVS的替代产物。
二、SVN服务器安装 |
1、下载CollabNetSubversion-server-1.5.6-2.win32
2、执行安装程序CollabNetSubversion-server-1.5.6-2.win32 ---------SVN服务器软件
安装完成后,右键菜单出现”SNV Checkout”(可将服务器中的项目签出到本地),如图所示
三、SVN客户端安装 |
1、 下载TortoiseSVN-1.5.9.15518-win32-svn-1.5.6.msi
2、 执行TortoiseSVN-1.5.9.15518-win32-svn-1.5.6.msi---------SVN客户端软件
执行LanguagePack_1.5.9.15518-win32-zh_CN.msi------------SVN客户端软件汉化包(可选)安装完成后,右键菜单出现”TortoiseSVN”,如上图所示
四、SVN服务配置 |
方案1:使用命令和手动修改配置文件
如果感觉麻烦,可跳过后面的使用方案2
1、 执行创建目录 svnadmin create c:\ Repositories
2、 打开conf目录下的authz文件
添加组及其用户accp=user01,user02
为组用户设置目录的读写权限,组前面要用@符,第一个[/]表示目录,[/]@accp=rw
3、 编辑passwd文件
格式:用户名=密码
user01=1234
user02=1234
4、打开svnserverconf
取消以下几个注释
password-db = passwd
authz-db = authz
5、 开机自动启动SVN
sc create MySVNServer binpath= "\"C:\ProgramFilesSubversion\svnserve\svnserve\svnserve.exe" --service -r c:\ Repositories" displayname= "SVNService" depend= Tcpip start= auto
注意之处
(1)sc是windows自带的服务配置程序,MySVNServer 是服务的名称,没什么用。
(2)参数binPath表示svnserve可执行文件的安装路径,由于路径中的"Program Files"带有空格,因此整个路径需要用双引号引起来。而双引号本身是个特殊字符,需要进行转移,因此在路径前后的两个双引号都需要写成\" 。
(3)--service参数表示以windows服务的形式运行,--r指明svn repository的位置,service参数与r参数都作为binPath的一部分,因此与svnserve.exe的路径一起被包含在一对双引号当中,而这对双引号不需要进行转义。
(4)displayname表示在windows服务列表中显示的名字, depend =Tcpip 表示svnserve服务的运行需要tcpip服务,start=auto表示开机后自动运行。安装服务后,svnserve要等下次开机时才会自动运行。
(5)binPath的等号前面无空格,等号后面有空格 displayname depend start也都一样。 service前面是--,不是- ,而r前面是-
(6)若要卸载svn服务,则执行 sc delete svnserve 即可。
(7)从“sc”到“auto”是在同一个命令sc,必须写在同一行。
6、启动服务:
C:\>net start svnservice
SVNService 服务正在启动 .
SVNService 服务已经启动成功。
停止服务:
C:\>net stop svnservice
SVNService 服务正在停止.
SVNService 服务已成功停止。
删除创建的服务
C:\>sc delete svn svnservice
方案2:使用可视化工具
方案1的确比较麻烦,我们可以使用VisualSVN-Server-1.6.3.msi----------SVN服务配置可视化工具
1、下载
2、执行VisualSVN-Server-1.6.3.msi安装程序
3、VisualSVN-Server的使用
(1)创建版本库
主键面,表明SVN服务已运行,
Repositories表示版本库是svn文件共享的核心,它储存所有的数据,并对数据进行版本化管理。按照文件树形式存储数据——包括文件和目录。安装SVN Server 时设置版本库的路径,默认c:\ Repositories。SVN使用URL来识别版本库中的资源
在Repositories下创建Repository组织不同项目的版本库,例如:
(2)创建组和用户
创建用户并设置密码,如图所示:
创建组并添加用户,如图所示:
为用户设置版本库的读/写权限,选择其中某个版本库—>右键属性,弹出权限设置窗口
如图所示:
选择组或用户设置读/写权限,建议删除默认的Everyone的读写权限
五、SVN客户使用 |
软件开发团体的一员就是SVN的一个客户,因此SVN客户端的使用显得十分重要,主要操作包括import、check out、add 、commit、update
具体操作如下:
5.1 import入库操作
5.2 签出操作
5.3 提交添加新文件
5.4 提交文件更新(修改、删除的文件)
5.6 版本冲突的相关操作
5.7 避免冲突方法——加锁文件
5.8 版本还原
5.1 import入库操作
将初始的项目(项目目录结构、接口、通用组件、静态页面等)导入版本库,操作如图:
执行import命令弹出import对话框,图中Import对话框与Visaul SVN Server窗口
在URL of repository中输入或选择URL(对应版本库中的资源),注意URL所对应版本库中的资源的必须存在(如上图所示),若不存在要首先在VisualSVN中创建(或使用命令方式svnadmin create c:\ Repositories\mycrm),创建成功后c:\ Repositories\mycrm
产生一些版本库相关的系统文件和目录,如下所示:
单击import对话框的ok按钮,按提示输入用户名和密码(指在SVN Server设置的账户和密码,可勾选Save authentication以后不再提示),完成后在VisualSVN Server可看到
这表示你的项目已入库,处于SVN版本控制中
5.2 签出操作
有两种方式check out 和 export,区别在于:
① export 方式仅仅是将版本库的文件拷贝到本地而已。
② check out 方式获得文件后,本地文件仍处于SVN版本控制中,这一点很重要。这也是主要的一种方式
在本地目录下,单击右键选择菜单命令,如图所示
执行Check out 弹出对话框,如图所示
URL of repository指你要导出的版本库,Checkout Directory设定存储的本地目录,单击Ok,导出完成后可看SVN服务器版本库中文件已迁出到指定的本地目录下,并且多出.svn目录这个表示该本地目录是受SVN服务器版本化控制的,图标表示文件或目录处于正常状态
5.3 提交添加新文件
在项目中增加一个新文件,例如在crm项目中添加一个login.html文件,新增的文件的图标为,表示该文件没有入库SVN服务器无法识别,选择该文件单击鼠标右键执行add命令,将文件入库如图所示
此时文件图标变为表示该文件已入库但还未更新,然后执行svn commit命令,从而完成新文件的版本化处理,如图所示
5.4 提交文件更新(修改、删除的文件)
操作和添加新文件类似,实际上对于本地变化的文件(包括添加、修改、删除的文件)都是执行svn commit命令提交给到SVN服务器完成版本化处理(该版本号会递增)。只不过对于新增文件需要先执行add命令让SVN服务器识别该文件,表示该文件内容发生变化,可通过菜单show Log命令查看版本的变化,如图所示
可以看到新增login.html版本号为2。
5.5 更新操作(将SVN服务器中所有版本变化更新到本地)
对于其他用户(指不是提交变化的用户),可执行SVN update命令完成将SVN服务器发生版本变化的文件更新到本地
如图所示:
通常我们(记住每个人就是SVN的本地客户)在工作时,会不断执行SVN Update命令以获取SVN服务器中最新的文件,从而获得其他人的变更。这也是作为一个项目版本管理软件最重要的功能之一——及时通知项目的变更
5.6 版本冲突的相关操作
冲突是指团队协同工作时,当多人修改同一个文件,造成本地文件与SVN系统中的文件版本不一致,而导致文件无法提交的情况。例如:user01对temp.txt文件进行编辑
添加“User01的数据信息”,User02也对temp.txt文件进行修改添加“User02的数据信息”,User01完成后执行SVN Commit,这时User02在执行SVN Commit提交就会产生冲突而提交失败,如图所示
这时(遇到冲突时)需要执行SVN Update更新这个文件,产生如图所示的信息框
并且会看到新增了三个文件
原文件的图标变为表示内容含有冲突
temp.txt.mine(格式:冲突文件名.扩展名.mine)记录了你的文件名内容
temp.txt.r7(格式:冲突文件名.扩展名.r版本号)记录了当前版本的上一个版本内容
temp.txt.r8(格式:冲突文件名.扩展名.r版本号)记录了当前版本的内容
接下来就是如何解决文件中的冲突,你可以选择以下方式解决冲突
5.6.1、手动合并冲突文件
打开temp.txt可以看到
说明:<<<<<.mine到 >>>>>.r8之间的就是冲突的部分,======之前的是你的内容,=====之后的是当前版本的内容可根据情况进行取舍,然后删除注释符号并删除新增的新增了三个文件,然后再提交就OK了!
5.6.2、执行Edit conficts命令解决冲突,如图所示
然后弹出如下窗口
可明显看出第2行冲突,操作如下:
1、 首先选择冲突行
2、单击工具栏按钮
单击按钮:
单击按钮:
单击按钮:
单击按钮:
单击保存会看到新增的三个文件已自动被删除(如果仍存在手动删除即可),这时再执行SVN Commit也OK了!
5.6.3执行revert命令放弃所做的修改,如图所示
该命令会自动用当前版本替换你的变化,并删除三个新增文件
5.7 避免冲突方法——加锁文件
多人同时操作同一个文件是产生冲突的根本原因。
为了减少冲突的发生避免一些不必要的麻烦,通常在变更文件之前执对该文件行一次SVN Update操作,但这样冲突还是会发生的,一个比较有效的方法是对文件加锁。其原理很简单在对文件变更之前先对文件上锁,这是有两种可能若文件有锁(表明有人在编辑)加锁失败,若文件没有锁则加锁成功。一个文件上锁后除了自己别人是不能对文件编辑的,当我们编辑完成之后再解锁,然后别人就可以加锁编辑了。这样就有效的避免了多人同时操作同一个文件时产生冲突
5.7.1加锁
执行Get Lock…命令,操作如下:
5.7.2 解锁
对已加锁的文件执行Release lock命令,如图所示:
5.8 版本还原
在开发中有时我们希望将文件的变更恢复到之前某个版本,这也是一个项目管理软件必备的功能,对于SVN执行Update to revision.. 命令即可
比如我们把temp.txt恢复到最初的状态,目前文件的内容如下图所示:
我们可以先执行Show log查看temp.txt的版本信息如图所示
可看出最初添加的文件的版本号18(不是2说明该文件被删除过,然后又被重新创建),然后执行Update to revision..命令,如图所示:
单击Ok按钮,完成后打开temp.txt文件可以看到文件已恢复到初始的内容了
六、Eclipse SVN客户端插件安装 |
Eclipse也提供了对SVN支持,但我个人感觉Eclipse提供的SVN客户端插件,不如TortoiseSVN好用,但Eclipse是我们开发的环境,因此建议两个结合起来应用。对于Eclipse提供的SVN客户端的使用同TortoiseSVN差不多,这里重点介绍一下在MyEclipse安装SVN客户端插件,站点地址:http://subclipse.tigris.org/
详细步骤如下:
6.1 安装
6.2 从SVN服务器导入项目
6.3 提交文件更新
6.1 安装
具体操作:
Step 1:选择Help——>SoftwareUpdates——>add/Remove Soft
单击ADD按钮,弹出如下窗口
Step 2:单击Add Site,
在弹出的对话框中输入URL: http://subclipse.tigris.org/update_1.6.x,单击Ok即可
Step 3:选择内容一路Next即可
6.2 从SVN服务器导入项目
具体操作:
打开eclipse ,选File——>import——>选SVN,如图所示:
在URL中输入:版本库的路径比如https://jb:8433/svn/mycrm ,单击完成即可
6.3 提交文件更新
选择文件单击右键,选择team提交,即可
6.4 更新操作(将SVN服务器中所有版本发生变化的更新到本地)
选择文件或目录单击右键,选择team-à更新,即可。