查看系统版本,安装SVN软件及创建目录
[root@A-linux ~]# uname -r 2.6.32-431.el6.x86_64 [root@A-linux ~]# cat /etc/redhat-release CentOS release 6.5 (Final) [root@A-linux ~]# rpm -qa subversion #<===查看是否安装了SVN软件包,如果没有安装,使用下面的命令安装即可 subversion-1.6.11-9.el6_4.x86_64 [root@A-linux ~]# yum -y install subversion [root@A-linux ~]# mkdir -p /application/{svndata,svnpasswd} #<===创建SVN目录 [root@A-linux ~]# ll /application/ 总用量 12 drwxr-xr-x 2 root root 4096 2月 15 16:04 svndata drwxr-xr-x 2 root root 4096 2月 15 16:04 svnpasswd
SVN常用的参数
[root@A-linux ~]# svnserve --help #<===以下为常用参数 用法: svnserve [-d | -i | -t | -X] [options] 有效选项: -d [--daemon] : 后台模式 -r [--root] ARG : 服务的根目录 --log-file ARG : svnserve 日志文件 --pid-file ARG : 写进程 PID 到文件 ARG
启动SVN服务(注意:不能使用service svnserve start 此种方式启动服务,否则会导致svn下载时出错,报svn: No repository found
in
'svn://*.*.*.*/*
)
[root@A-linux ~]# svnserve -d -r /application/svndata/ --pid-file=/application/svndata/svn.pid [root@A-linux ~]# ps -ef|grep svn|grep -v grep root 6880 1 0 16:11 ? 00:00:00 svnserve -d -r /application/svndata/ --pid-file=/application/svndata/svn.pid [root@A-linux ~]# netstat -lntup|grep svn tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 6880/svnserve
查看SVN其他相关命令
[root@A-linux ~]# svn svn svnadmin svndumpfilter svnlook svnserve svnsync svnversion [root@A-linux ~]# svnadmin help #<===查看子命令 一般用法: svnadmin SUBCOMMAND REPOS_PATH [ARGS & OPTIONS ...] 使用“svnadmin help <subcommand>” 得到子命令的帮助信息。 使用“svnadmin --version”查看程序的版本号和文件系统模块。 可用的子命令: crashtest create deltify dump help (?, h) hotcopy list-dblogs list-unused-dblogs load lslocks lstxns pack recover rmlocks rmtxns setlog setrevprop setuuid upgrade verify [root@A-linux ~]# svnadmin help create create: 用法: svnadmin create REPOS_PATH 在 REPOS_PATH 创建一个新的空版本库。 有效选项: --bdb-txn-nosync : 在提交事务时禁用fsync [BDB] --bdb-log-keep : 禁用自动删除日志文件 [BDB] --config-dir ARG : 从目录 ARG 读取用户配置文件 --fs-type ARG : 版本库类型: “fsfs”(默认)或“bdb” --pre-1.4-compatible : 使用与1.4之前版本兼容的格式 --pre-1.5-compatible : 使用 Subversion 1.5 之前版本的格式 --pre-1.6-compatible : 使用与 1.6 之前版本兼容的格式
创建新的空的版本档案库
[root@A-linux ~]# svnadmin create /application/svndata/test #<===注意,这里不能用mkdir创建此目录
[root@A-linux ~]# tree /application/svndata/test
/application/svndata/test
├── conf #<===配置文件目录
│?? ├── authz
│?? ├── passwd
│?? └── svnserve.conf
├── db #<===数据库目录
│?? ├── current
│?? ├── format
│?? ├── fsfs.conf
│?? ├── fs-type
│?? ├── min-unpacked-rev
│?? ├── rep-cache.db
│?? ├── revprops
│?? │?? └── 0
│?? │?? └── 0
│?? ├── revs
│?? │?? └── 0
│?? │?? └── 0
│?? ├── transactions
│?? ├── txn-current
│?? ├── txn-current-lock
│?? ├── txn-protorevs
│?? ├── uuid
│?? └── write-lock
├── format
├── hooks #<===钩子脚本目录
│?? ├── post-commit.tmpl
│?? ├── post-lock.tmpl
│?? ├── post-revprop-change.tmpl
│?? ├── post-unlock.tmpl
│?? ├── pre-commit.tmpl
│?? ├── pre-lock.tmpl
│?? ├── pre-revprop-change.tmpl
│?? ├── pre-unlock.tmpl
│?? └── start-commit.tmpl
├── locks #<===锁目录
│?? ├── db.lock
│?? └── db-logs.lock
└── README.txt
10 directories, 28 files
对SVN目录进行调整,授权
[root@A-linux conf]# pwd /application/svndata/test/conf [root@A-linux conf]# ll 总用量 16 -rw-r--r-- 1 root root 1080 2月 15 16:30 authz #<===权限管理文件 -rw-r--r-- 1 root root 309 2月 15 16:30 passwd #<===用户及密码文件 -rw-r--r-- 1 root root 2317 2月 15 16:49 svnserve.conf #<===项目档案库主配置文件 [root@A-linux conf]# cp svnserve.conf svnserve.conf.$(date +%F) [root@A-linux conf]# vim svnserve.conf #主要修改以下4项 # anon-access = read # auth-access = write # password-db = passwd # authz-db = authz [root@A-linux conf]# egrep -v "^#|^$" svnserve.conf #去掉注释和前面空格,更改为以下一致,然后需要杀死svnserve进程,重启其服务(此处没有写步骤) #anon-access = read #<===匿名访问=read,即允许匿名访问(为了安全,还是不开启) anon-access = none #<===不允许匿名访问(生产环境不允许匿名访问) auth-access = write #<===打开访问权限验证 password-db = /application/svnpasswd/passwd #<===统一使用此文件作为账号密码文件,最好使用全路径,开头不能有空格(必须顶格写) authz-db = /application/svnpasswd/authz #<===统一使用此文件作为权限控制文件,最好使用全路径,开头不能有空格(必须顶格写) [root@A-linux conf]# cp authz passwd /application/svnpasswd/ #<===为了方便统一管理,把用户及密码放在svnpasswd [root@A-linux conf]# ll /application/svnpasswd/ 总用量 8 -rw-r--r-- 1 root root 1080 2月 15 17:39 authz -rw-r--r-- 1 root root 309 2月 15 17:39 passwd [root@A-linux conf]# chmod 700 /application/svnpasswd/authz /application/svnpasswd/passwd [root@A-linux conf]# ll /application/svnpasswd/ 总用量 8 -rwx------ 1 root root 1080 2月 15 17:39 authz -rwx------ 1 root root 309 2月 15 17:39 passwd
为SVN版本库创建用户授权并指定可访问的项目档案库
[root@A-linux svnpasswd]# pwd /application/svnpasswd [root@A-linux svnpasswd]# ll 总用量 8 -rwx------ 1 root root 1080 2月 15 17:39 authz -rwx------ 1 root root 309 2月 15 17:39 passwd [root@A-linux svnpasswd]# vim passwd #<===添加用户及设置密码(注意添加格式和示例要一致) [users] #<===此模块定义用户及其密码,等号前是用户,等号后是密码 # harry = harryssecret # sally = sallyssecret test1 = test123456 test2 = test123456 注意:更改svnserve.conf需要重启服务,更改authz和passwd无需重启服务(以下非必须步骤) [root@A-linux svnpasswd]# kill -USR1 `cat /application/svndata/svn.pid` #<===或使用下面的方式杀死svnserve进程 [root@A-linux svnpasswd]# killall svnserve [root@A-linux svnpasswd]# ps -ef|grep svn [root@A-linux svnpasswd]# svnserve -d -r /application/svndata/ --pid-file=/application/svndata/svn.pid #<===重新启动服务 [root@A-linux svnpasswd]# cp authz authz.bak [root@A-linux svnpasswd]# vim authz [aliases] #<===这里是别名设置 # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Aver age [groups] #<===主要在这个模块下配置权限 # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe # [/foo/bar] # harry = rw # &joe = r # * = # [repository:/baz/fuz] # @harry_and_sally = rw # * = r ###以下是对用户授权示例(用户必须在passwd存在) sagroup = test1,test2 #<===定义组示例(注意顶格写,前面不能有空格) [test:/] #<===这里可以设置为其他具体的版本项目档案库,可以不用从根 / 开始,也可以从根开始 test1 = rw #<===读写权限,也可以单单只给r或w权限,如果为空,则没有任何权限 test2 = r #<===只读权限 @sagroup = r #<===如果单独对组授权,前面加@即可,如果前面是 * ,则表示所有用户 [root@A-linux svnpasswd]# tail -12 authz sagroup = test1,test2 [sadoc:/] #<===这里可以设置为具体一个版本库,可以不用从根开始 test1 = rw test2 = r @sagroup = r
加入开机自动启动
[root@A-linux svnpasswd]# echo "/usr/bin/svnserve -d -r /application/svndata" >>/etc/rc.local
以上即是配置单个项目档案库的步骤,如需配置多个项目档案库,更改名称,重复以上某些必需步骤即可。
Windows版本SVN客户端访问服务端方法:安装windows版本svn客户端软件TortoiseSVN,官方地址 https://tortoisesvn.net/downloads.html ,安装完成后
其使用方法可以看自述文件或者Google,百度,此处忽略。。。
主要的访问方式是基于TCP/IP协议,格式: svn://10.0.0.2:test ,输入用户名及密码验证即可
有关Windows下SVN客户端的使用,主要是以下几点:
- 提交commit
- 更新update
- 下载checkout
- 对比log,不同版本之间的差异
linux下SVN客户端使用待补充。。。