SVN默认端口:3690
svnserve -d -r/home/declan/svnproject--listen-port 21 #修改svn监听端口
一、安装svn
yum install subversion -y
二、检查是否安装成功
svnserver --version
svnserve, version 1.6.11 (r934486)
compiled Aug 17 2015, 08:37:43
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
The following repository back-end (FS) modules are available:
* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.
Cyrus SASL authentication is available.
#ok,安装成功,svn版本为1.6.11
三、创建代码仓库
mkdir -p /opt/svn/bokeyuan-xsj #新建一个目录作为仓库
svnadmin create /opt/svn/bokeyuan-xsj/ #创建svn仓库
进入仓库查看如出现下面的图片所示的目录和文件,则创建成功
四、配置svn服务器
仓库conf目录下有三个文件,passwd、authz、svnserver.conf
#passwd :存放用户和密码文件
#authz :存放用户权限文件
#svnserver.conf:svn主配置文件
4.1修改passwd,添加用户密码
vim passwd
[users]
xushijie = bokeyuan.xsj #格式:用户名 = 密码
4.2修改authz,添加用户权限
[bokeyuan-xsj:/] #为一个项目配置用户权限
xushijie = rw #设置开发者为读写权限
#这里也可以定义用户组
[groups]
#格式:user-group = username
groups1 = username1 #将用户1添加到开发组
groups2 = username2 #将用户2添加到设计组
[bokeyuan-xsj:/]
@username1 = rw
@username2 = r
4.3修改svnserver.conf
vim svnserver.conf
anon-access = none #去掉注释,修改匿名用户访问权限
auth-access = write #去掉注释,验证用户权限
password-db = /var/svn/projectname/passwd #去掉注释,指定密码文件路径
authz-db = /var/svn/project/authz #去掉注释,指定权限文件的路径
五、启动svn服务
svnserver -d -r /opt/svn/ # -r:svn仓库目录,-d:使用守护进程
还有一种方法启动,编辑启动脚本
vim /etc/init.d/svnserve
args="--daemon --pid-file=${pidfile} -r /opt/svn $OPTIONS" #编辑svn启动目录 -r /opt/svn
六、测试
使用三台机器
svn :192.168.1.198
开发:192.168.1.199
运维:192.168.1.200
6.1在192.168.1.199上创建三个目录
mkdir trunk branches tags #创建主干目录和分支目录
6.2创建三个文件导入到trunk上,提交到版本库中
echo a > trunk/a.txt echo b > trunk/b.txt
svn import ./ svn://192.168.1.198/bokeyuan-xsj -m "n1" #将创建的目录添加到版本库中
Password for 'xushijie': #输入你在passwd中创建的密码
6.3在192.168.1.200上把trunk目录下载下来
svn checkout svn://192.168.1.198/bokeyuan-xsj
七、svn版本库常用命令:
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 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
5、删除文件
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)
6、查看文件详细信息
svn info path
例如:svn info test.php
7、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di
8、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 1:2 test.php(将版本1与2之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)