SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理
服务安装配置介绍
[root@server ~]# cat /etc/services | grep Subversion
svn 3690/tcp # Subversion
svn 3690/udp # Subversion
[root@server ~]# yum install subversion httpd mod_dav_svn -y
创建用户管理svn
[root@server ~]# useradd svn
创建版本库目录
[root@server ~]# mkdir /var/repos
[root@server ~]# chown svn:svn /var/repos/
[root@server ~]# ll -d /var/repos/
drwxr-xr-x 2 svn svn 6 7月 20 17:30 /var/repos/
创建项目仓库
[root@server ~]# su - svn
[svn@server ~]$ svnadmin create /var/repos/svn1
[svn@server ~]$ svnadmin create /var/repos/svn2
[svn@server ~]$ ll /var/repos/svn1/
总用量 16
drwxrwxr-x 2 svn svn 51 7月 20 17:31 conf
drwxrwsr-x 6 svn svn 4096 7月 20 17:31 db
-r--r--r-- 1 svn svn 2 7月 20 17:31 format
drwxrwxr-x 2 svn svn 4096 7月 20 17:31 hooks
drwxrwxr-x 2 svn svn 39 7月 20 17:31 locks
-rw-rw-r-- 1 svn svn 229 7月 20 17:31 README.txt
[svn@server ~]$ cd /var/repos/svn1/conf/
[svn@server conf]$ vim svnserve.conf
部分说明
[general]
# anon-access = read #匿名访问的权限,可以是read,write,none,默认read
# auth-access = write #认证用户的权限,可以是read,write,none,默认write
# password-db = passwd #密码数据库路径
# authz-db = authz #权限验证文件
# realm = #指定库的认证领域
[svn@server conf]$ vim passwd
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
[users]
# harry = harryssecret #用户名=密码
# sally = sallyssecret
[svn@server conf]$ vim authz
[groups]
# harry_and_sally = harry,sally #组名=<用户1>,<用户2>。
# harry_sally_and_joe = harry,sally,&joe
[/目录]
@<用户组名> = <权限>
<用户名> = <权限>
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
启动SVN
[svn@server conf]$ svnserve -d -r /var/repos/
-d 表示以daemon方式启动
-r 指定根目录
[svn@server conf]$ netstat -antup | grep svn
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 20722/svnserve
配置apache
[root@server ~]# vim /etc/httpd/conf/httpd.conf
User svn
Group svn
[root@server ~]# vim /etc/httpd/conf.d/subversion.conf
<Location /svn>
DAV svn
SVNParentPath /var/repos #仓库根路径
AuthType Basic
AuthName " SVN server of bgy!" #认证窗口消息
AuthUserFile /home/svn/passwd #认证用户密码文件
AuthzSVNAccessFile /home/svn/auth #权限设置权限
Require valid-user
</Location>
[root@server ~]# htpasswd -c /home/svn/passwd admin
New password:
Re-type new password:
Adding password for user admin
[root@server ~]# touch /home/svn/auth
1 [/]
2 admin=rw
浏览器:http://192.168.220.138/svn/svn1/ 访问
SVN常用命令
1、将文件checkout到本地目录
svn checkout path
[root@server ~]# svn checkout file:///var/repos/svn1
简写:svn co
2、往版本库中添加新的文件
svn add file
[root@server ~]# cd svn1/
[root@server svn1]# touch 1.txt
[root@server svn1]# svn add 1.txt
A 1.txt
3、将改动的文件提交到版本库
svn commit -m “LogMessage” PATH
简写:svn ci
4、加锁/解锁
svn lock -m “LockMessage” [--force] PATH
svn unlock PATH
5、更新到某个版本
svn update -r m path
简写:svn up
6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
2)svn status -v path(显示文件和子目录状态)
简写:svn st
7、删除文件
svn delete path -m “delete test fle”
简写:svn (del, remove, rm)
8、查看日志
svn log path
9、查看文件详细信息
svn info path
10、比较差异
svn diff path(将修改的文件与基础版本比较)
svn diff -r m:n path(对版本m和版本n比较差异)
简写:svn di
11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
12、SVN 帮助
svn help
svn help ci