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本地使用,适用于单个人在本机开发提交代码。不适用团队开发。
1)创建本地仓库:选中某个文件夹(例如code),=》【TortoiseSVN】=》【create repository here】。
2)查看本地仓库地址:选中code目录,=》【TortoiseSVN】=》【repo-browse】。本机地址为:file:///E:/a/code。
3)check out仓库数据:选中另外一个目录(mycode),=》【SVN checkout】,在地址中输入file:///E:/a/code即可。