Linux中SVN服务器安装与使用以及windows客户端的使用(CentOS-6.5)


1 SVN简介

svn是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS转移到Subversion。
svn服务器有2种运行方式:独立服务器和借助apache运行。两种方式各有利弊,用户可以自行选择。
svn存储版本数据也有2种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

2 SVN下载

Svn客户端与服务器端的下载地址: http://tortoisesvn.net/

3 SVN服务器的安装

3.1 Linux环境安装与配置

1)安装
# yum install -y subversion

2) 验证安装版本
# svnserve --version

3) 创建SVN 版本库, project1为版本库名称
# mkdir /data0/svn
# svnadmin create /data0/svn/project1

4)添加用户,格式为:用户名 = 密码
# vi /data0/svn/project1/conf/passwd
[users]
CleverCode = 123456
test1 = 123456
test2 = 123456

5)添加访问权限,CleverCode用户添加到admin组,能对/data0/svn/project1整个目录有读写权限;test1,test2用户添加到test组,只能对/data0/svn/project1/test目录有读写权限
# vi /data0/svn/project1/conf/authz
[groups]
admin = CleverCode
test = test1,test2

[project1:/]
@admin = rw

[project1:/test]
@test = rw
7) 配置svnserve.conf,这个文件开头每行开头不能有空格。
配置说明:
anon-access: 控制非鉴权用户访问版本库的权限。
auth-access: 控制鉴权用户访问版本库的权限。
password-db: 指定用户名口令文件名。
authz-db:指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
realm:指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件


# vi /data0/svn/project1/conf/svnserve.conf
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access = none
#认证用户的权限,可以是read,write,none,默认为write
auth-access = write
password-db = /data0/svn/project1/conf/passwd
authz-db = /data0/svn/project1/conf/authz

8)配置防火墙,svn 是3690端口
# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT
# service iptables restart

9) 启动SVN, -d表示后台运行,-r 指定根目录是 /data0/svn
# svnserve -d -r /data0/svn

10)查看SVN
# ps -ef | grep svn

3.2 Windows环境安装与配置

下载windows服务器端后,按照提示,下一步在下一步即可,windows的相对比较简单,所以不再详细说明。

4 SVN客户端的使用

4.1 Linux环境使用

1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co

2、往版本库中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)

3、将改动的文件提交到版本库
svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test“ test.php
简写:svn ci

4、加锁/解锁
svn lock -m “LockMessage“ [--force] PATH
例如:svn lock -m “lock test file“ test.php
svn unlock PATH

5、更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up

6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】M状态一般比较多
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st

7、删除文件
svn delete path -m “delete test fle“
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种
简写:svn (del, remove, rm)

8、查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化

9、查看文件详细信息
svn info path
例如:svn info test.php

10、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di

11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)

12、SVN 帮助
svn help
svn help ci

4.2 Windows环境使用

1) 通过官网下载svn的windows客户端,按照后。
2) 建立project1文件件,选中文件件点击右键,选择 【SVN checkout】。


3)然后如下图使用。

\


4)输入用户与密码。CleverCode:123456。

\


5 创建本地仓库

创建本地仓库是为了解决没有svn服务器。直接在windows本地使用,适用于单个人在本机开发提交代码。不适用团队开发。<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+MaOptLS9qLG+tdiy1r/io7rRodbQxLO49s7EvP680KOowP3I52NvZGWjqaOsPaG3ob5Ub3J0b2lzZVNWTqG/PaG3ob5jcmVhdGUgcmVwb3NpdG9yeSBoZXJlob+hozwvcD4KPHA+MqOpsum/tLG+tdiy1r/itdjWt6O60aHW0GNvZGXEv8K8o6w9obehvlRvcnRvaXNlU1ZOob89obehvnJlcG8tYnJvd3Nlob+ho7G+u/q12Na3zqqjumZpbGU6Ly8vRTovYS9jb2RloaM8L3A+CjxwPjxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/Collfiles/20150504/2015050409111089.png" alt="\">

3)check out仓库数据:选中另外一个目录(mycode),=》【SVN checkout】,在地址中输入file:///E:/a/code即可。



相关内容