VisualSVN Server与TortoiseSVN搭建SVN版本控制系统
SVN是一种集中式管理代码的版本控制系统,原理就是
把代码都保存到一个固定的位置,每次从这个位置拷贝更新代码,进行编辑;再把修改后的代码提交到该目录中。
多人协作开发也是如此。
因此需要一个类似Oracle或者Mysql的服务器用于保存和管理库文件(要保存的代码等文件)的服务端——VisualSVN Server。
还需要一个用户的操作端,用于提交更新检出代码,常用的有TortoiseSVN(小乌龟)。
使用工具:
1 客户端:TortoiseSVN (小乌龟)
2 服务端:VisualSVN Server
搭建出图形化管理,以及右键菜单版本控制管理的SVN系统。
用到的版本:服务器VisualSVN-Server3.5.4;客户端:TortoiseSVN
下面我们开始安装VisualSVN-Server
1.1双击安装包VisualSVN-Server-3.5.4
1.2点击next
1.3选择“I accept”,这一项是安装VisualSVN Server以及控制台,下一步。
1.4默认一二两步的选项,这里是自动添加环境变量,下一步
1.5选择Standard Edition(标准安装)
1.6出现下图:1.本地地址可修改,也可不修改;2.Repositories(仓库)的路径要记得,最好不要放在c盘,这里默认e盘;3.端口选择“443”出现图二,表示443端口之前被别人注册过,现在选择8443,点击next。(1)确认文件安装目录,以及(2)代码库的位置(你的代码想要保存的位置)(3)所占用端口。
1.7选择Install,安装。
1.8完成安装,点击finish
1.9安装完成后,在下图路径下可以看到
1.10在计算机→所有程序打开VisualSVN-server控制管理界面
1.11打开后显示
-------------------------------
2安装TortoiseSVN(小乌龟)
2.1双击打开桌面上的TortoiseSVN
2.2下一步
2.3接受,下一步
2.4默认,下一步
2.5安装
2.6点击完成
2.7在任意空白位置右键可看到安装的两个菜单
3创建仓库
首先右键Repositories,创建仓库
3.2默认下一步
3.3给仓库命名
3.4创建空的仓库,或者创建带有trunk braches tags目录的仓库,一般选择第一个。
3.5给用户分配权限,1为没有人有权限,2为所有人都有权限,3为可自定义添加权限
3.6创建完成仓库后,记录仓库的URL地址,稍后会使用改地址连接仓库。
3.7创建用户,设定用户密码
3.8同样的步骤,创建组
----------------
4如何管理代码
4.1首先在想要下载代码的位置,右键单击SVN Checkout
4.2填写仓库URL,以及本地代码文件夹名称。可以选择全部检出,或者根据特定的版本号检出。
4.3检出完成后,发现本地文件夹中多了一个文件夹。
4.4文件夹中有一个.svn的隐藏文件,用于记录SVN版本控制所需的信息。
为了便于测试,在文件夹中创建一个记事本文件,右键空白处选择SVN commit提交。
注意:只有安装TortoiseSVN客户端工具后,在相应的检出目录中,才会出现该右键菜单。
4.5选中文件,点击OK
4.6提交完成
4.7刷新仓库,可以发现,文件已经提交到服务端。
---------------------------
5.在SVN中常用的图标:
5.1清除数据信息
5.2目标URL
5.3添加文件
5.4 SVN Commit 上传(每次文件修改都要重新上传)
SVN Update 更新文件端
5.5
Edit conflicts 解决冲突
Get lock 锁定
Release lock 解锁(Commit 后会自动解锁)
Revert 恢复对文件的修改
Show log 查看修改
Rename 修改文件名(要点空白处 Commit)
Delete 删除(要点空白处 Commit)
Import 导入
Export 导出
Update to revision 更新到之前的版本
Relocate 更换 Ip 地址
------------------------
6SVN 的命令行方式
进入 DOS 窗口,切换到 E:\Repositories 目录下
1、建立仓库:svnadmin create test1(在当前目录下创建文件)
输入以下命令,切换到E:\Reporsitories目录下
E:
Cd Repositories
3)输入:svnadmin create test1 ,则在当前目录创建版本库test1
Cd test1
Dir
查看版本库文件已生成
版本库创建完成后,需要创建用户、组以及配置对应的权限了
linux系统中直接cd 到对应配置文件目录下,采用vi命令去编辑即可,此处还是以windows
系统下进行操作讲解。
如本机已创建一个Test1的仓库:E:\Repositories\Test1,在conf文件夹下配置以下3个文件
1)svnserve.conf:SVN服务的配置文件,将以下配置取消注释:
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
2)authz:存放用户或组的权限(读、写),配置如下
3)passwd: 存放用户和密码,如增加以下用户和密码
4)以上3个文件的配置信息只针对通过svn://方式去访问时才有效,通过http://或file://方式
访问时无效。
配置完成后,在cmd窗口启动svn服务
Svnserve -d -r E:\Repositories\Project5
-d 指服务作为一个独立的端口监控进程,-r 即批定要暴露的仓库路径,如本机仓库路径为E:
\Repositories\test1,那么客户端svn访问时只需采用如下地址即可访问:svn://ip/test1,
E:\Repositories 就不需要展示出来。(注意,ip后面不要跟端口号)
右击鼠标-》tortoise SVN ->Rebo - browse
在地址栏输入:svn://T420-PC/Test3/,输入authz文件中授权的用户名和密码登录。
(T420-PC 是服务器的计算机名,通常客户端访问时是替换成该机器IP)
在本地新建一个空文件夹,通过SVN客户端将上述仓库checkout到该文件夹中,能成功
checkout代表配置无问题了。
-------------------------
6
四、SVN基本操作
1、create new repository 版本库创建
三种方式
1)svn manager 工具创建服务器,可被远程访问(重点)
2)svn客户端创建本地库,只能本机访问,创建后需启动服务
3)命令行方式创建,创建后启动服务,修改3个配置文件,可被远程访问(了解)
2、repo browser 版本库浏览
两种方式:
1)svn manager 工具中,选择库后点击browse
2)svn 客户端 repo -browse
3、check out 签出
将版本库签出至本地,开始实现版本管控--上述在创建版本库时也提到过了。
1)注意输入版本库的 访问地址(使https://t420-pc:8443/svn/Test1/ 演示)和签出的 本地地址,
用户名和密码(使用E:\Repositories\Test1 库 dev1 / 1登录)
a, 图开界面创建的版本库使用“https://ip:port/svn/版本库名称 ” 签出
b,本地创建的库直接使用" file:///C:/Repositories/test2/" 签出
c, 命令方式创建的库,若启动服务时使用如:svnserve -d -r C:\reporsitores 启动,则使用
“svn://ip/test3”签出,若使用svnserve -d -r c:\repositories\test3 启动,则使用“svn://ip”
签出。--test3 指具体的版本库名称
2)本地地址中的文件夹要是空的
3)签出成功后该文件夹会显示打勾状态。
4、Add 添加文件
1)可新建文件夹和文件
2)右击选择该文件夹或文件,点击tortosies svn -> add 添加该文件
此时只是记录文件添加日志,还未真址添加到svn服务器上。文件前显示加号
5、 Commit 提交
1)对4中添加后的文件进行svn commit ,这时才会把该文件提交到svn服务器,提交成功后该文
件夹会显示打勾状态
2)通过 browse浏览服务器,会发现文件已添加进去。
6、update 更新
每次操作前先执行update, 将服务器最新版本更新到要本地
7、delete 删除
delete之后需commit,才会生效
8、rename 重命名
改名后,需选择上一级目录后再进行commit才能提交
9、revert 还原
修改某文件内容,然后点击 revert,会还原成修改前。
10、show log 显示日志
右击选择某个文件或文件夹,选择show log
11、import 导入
将本地文件提交至svn版本库
12、get lock 锁定/ release lock 解锁
Getlock 后,别人无法编辑
Release lock后,别人可编辑
1)check out到2个不同文件夹
2)第1个文件夹中将文件lock
3)在第2个文件中编辑该文件并commit,提示被锁,无法提交
4)第1个文件中解锁
5)第2个文件夹中重新提交 ,则能成功
----日常工作中经常会遇到这个情况,如2个开发人员在编写同一个代码文件
解锁:通过release lock 或commit都可以
13、 diff 差异比较
修改某文件,commit前可通过diff检查2个版本之间的差异情况
·
14、conflict 冲突 // conflict fixed ////edit conflict
1)在第1文件夹中修改某文件,commit
2)第2文件未先update,也直接修改该文件,commit,此时会提示有error
3)提示需要先update ,但选择update后提示无法更新,有conflict
4)这时需要解决冲突,本地文件中会显示如下几个文件,表示aaaa.txt这个文件有冲突
8)选择该文件,点击 edit conflict,根据冲突内容人工判断解决,最后commit。
15、relocate 服务器地址切换
由于服务器地址变更,直接通过switch将本地文件库路径切换到新的服务器上
16、merge 分支合并/ Branch/tag
1)SVN 标准文件夹
Trunk : 主干,主开发目录
Branches: 分支版本开发目录
Tags: 存档目录,用于存放稳定的版本
开发方法:
Trunk 作为主开发目录,用于发布
Branches 是每个release版本的开发目录
2)branches的创建
选择trunk目录 ,选择branch/tag
然后选择branches文件夹,update,则会将trunk目录下的文件结构更新到branches目录下
3)分支合并--merge
a, 先创建一个标准化项目Testing ,自动包含trunk, braches, tags 三个文件夹
b, checkout 到本地
c, 在trunk目录下新建文件夹examples1,在下面新建文件hello1.txt,并commit到服务器
d,在trunk目录下选中examples1目录,右键-》选择branch/tag ,to path: braches/examples1 ,
创建分支
e, 在分支braches下先update,则trunk下文件更新到本文件目录 下,然后在该文件下修改
hello1.txt,并新增一个文件hello2.txt。Commit 到服务器
f, 这时选择将分支合并到trunk,在trunk目录下选择merge.最后分支新增和修改的文件内容更新
到trunk下。
五、常用命令行
1、建立仓库
Svadmin create E:\Repositories\[版本库名称]
E:\Repositories 指服务器上安装server时指定的版本库目录。不同安装路径这里不一样。
2、启服务
Svserve -d -r E:\Repositories
Vi 修改conf 几个配置文件。
3、签出 svn checkout 版本库路径
1)进入到要签出到的空文件夹目录 (cd e:\svn_test)
2)使用命令 svn checkout 版本库路径,如:
Svn checkout https://ts20-PC:8443/svn/test5
Svn co svn://t420-PC/test2
Svn co file:///E:/repositories/file
则成功将版本库test5中文件签出到本地
4、添加文件 svn add 文件名
1)先创建一个文件a.txt ,且输入文件内容为:aaaaa
Echo aaaaa > a.txt
2)先执行添加操作
Svn add a.txt
分区 新分区 2 的第 6 页
Svn add a.txt
注文件名 a.txt 后面需输入一个空格,代表使用文件进入版本控制状态,否则commit不了