一、Subversion介绍
Subversion是一个集中式的信息共享系统。版本库是Subversion的核心部分,是数据的中央仓库。版本库以典型的文件和目录结构形式文件系统树来保存信息。任意数量的客户端连接到Subversion 版本库,读取、修改这些文件。客户端通过写数据将信息分享给其他人,通过读取数据获取别人共享的信息。
二、环境
[root@localhost ~]# cat /etc/redhat-releaseCentOS release 6.6 (Final)[root@localhost ~]# uname -aLinux localhost 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux[root@localhost ~]# ifconfigeth0 Link encap:Ethernet HWaddr 00:0C:29:0C:BA:2Einet addr:192.168.1.107 Bcast:192.168.1.255 Mask:255.255.255.0inet6 addr: fe80::20c:29ff:fe0c:ba2e/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:12430 errors:0 dropped:0 overruns:0 frame:0TX packets:7334 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:13341760 (12.7 MiB) TX bytes:598263 (584.2 KiB)lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
三、安装subversion
[root@localhost ~]# yum -y install subversion
四、验证是否安装
[root@localhost ~]# svnserve --version
显示内容:

五、创建版本库
[root@localhost ~]# mkdir /data/svn # 在/data目录下创建一个svn目录,便于管理[root@localhost ~]# svnadmin create /data/svn/repo0 # 我将svn作为所有版本库的目录,并创建了一个名为repo0的版本库[root@localhost ~]# cd /data/svn/repo0/[root@localhost repo0]# lsconf db format hooks locks README.txt[root@localhost repo0]# pwd/data/svn/repo0[root@localhost repo0]# cd conf/[root@localhost conf]# lsauthz passwd svnserve.conf说明:1) svnserve.conf: svn服务综合配置文件。2) passwd: 用户名口令文件。3) authz: 权限配置文件。
六、设置版本库的账号密码
编辑用户口令文件添加svn账号和密码
[root@localhost conf]# cat 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 = sallyssecretzhangcong = zhang_cong123 # 添加账号密码,左边账号,右边密码,等号两边有无空格无所谓
七、设置svn用户权限
[root@localhost conf]# cat authz### This file is an example authorization file for svnserve.### Its format is identical to that of mod_authz_svn authorization### files.### As shown below each section defines authorizations for the path and### (optional) repository specified by the section name.### The authorizations follow. An authorization line can refer to:### - a single user,### - a group of users defined in a special [groups] section,### - an alias defined in a special [aliases] section,### - all authenticated users, using the '$authenticated' token,### - only anonymous users, using the '$anonymous' token,### - anyone, using the '*' wildcard.###### A match can be inverted by prefixing the rule with '~'. Rules can### grant read ('r') access, read-write ('rw') access, or no access### ('').[aliases] # 用来设置别名,别名后面的内容没搞懂是啥东西# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average[groups] # 设置组和组成员,svn账户较多的时候能派上用场# 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[repo0:/] # 定义一个目录,为repo0版本库下面的根目录zhangcong = rw # zhangcong用户对该目录有读写权限
八、修改svnserve.conf
[root@localhost conf]# cat svnserve.conf | grep -v ^# | grep -v ^$[general]anon-access = read # 控制没有登录的用户不能访问auth-access = write # 登录的用户可以写入password-db = passwd # 密码文件为当前目录下的passwdauthz-db = authz # 验证文件为当前目录下的authz[sasl]
九、启动和关闭svn服务端
1)启动svn服务端
[root@localhost conf]# svnserve -d -r /data/svn/
2)检查svn服务端是否启动
[root@localhost conf]# netstat -anpt | grep svntcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 2187/svnserve
3)关闭svn服务端
①找到svn服务端的进程号[root@localhost conf]# ps aux | grep svnroot 2187 0.0 0.0 157000 776 ? Ss 01:13 0:00 svnserve -d -r /data/svn/②杀掉该进程[root@localhost conf]# kill 2187
十、导入工程(将新的目录导入到版本库中 – 服务端)
1)创建需要导入的目录文件
[root@localhost conf]# cd /data/[root@localhost data]# mkdir MyProject[root@localhost data]# mkdir MyProject/trunk[root@localhost data]# mkdir MyProject/branches[root@localhost data]# mkdir MyProject/tags[root@localhost MyProject]# touch test.txt[root@localhost MyProject]# ll总用量 12drwxr-xr-x 2 root root 4096 3月 26 01:19 branchesdrwxr-xr-x 2 root root 4096 3月 26 01:19 tags-rw-r--r-- 1 root root 0 3月 26 01:20 test.txtdrwxr-xr-x 2 root root 4096 3月 26 01:18 trunk[root@localhost MyProject]# pwd/data/MyProject
2)将创建好的目录导入到svn版本库中
[root@localhost MyProject]# svn import /data/MyProject/ svn://192.168.1.107/repo0/MyProject -m 'first import project'认证领域: <svn://192.168.1.107:3690> 974ca905-8b23-4d8a-bc99-a7e4f409eba7“root”的密码: # 这个地方直接回车就好认证领域: <svn://192.168.1.107:3690> 974ca905-8b23-4d8a-bc99-a7e4f409eba7用户名: zhangcong # 输入svn服务端定义的svn账号密码“zhangcong”的密码:-----------------------------------------------------------------------注意! 你的密码,对于认证域:<svn://192.168.1.107:3690> 974ca905-8b23-4d8a-bc99-a7e4f409eba7只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion可以保存加密后的密码。请参阅文档以获得详细信息。你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,来避免再次出现此警告。-----------------------------------------------------------------------保存未加密的密码(yes/no)?yes-----------------------------------------------------------------------注意! 你的密码,对于认证域:<svn://192.168.1.107:3690> 974ca905-8b23-4d8a-bc99-a7e4f409eba7只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion可以保存加密后的密码。请参阅文档以获得详细信息。你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,来避免再次出现此警告。-----------------------------------------------------------------------保存未加密的密码(yes/no)?yes增加 /data/MyProject/trunk增加 /data/MyProject/branches增加 /data/MyProject/test.txt增加 /data/MyProject/tags提交后的版本为 1。
十一、导出工程(将svn服务端的版本库导出到当前目录下 – 客户端)
[root@localhost ~]# yum -y install subversion # 安装svn[root@localhost ~]# mkdir /data # 创建svn数据存储目录[root@localhost ~]# cd /data/[root@localhost data]# svn co svn://192.168.1.107/repo0/MyProject # 将svn服务器端版本库中的数据下载至当前目录下认证领域: <svn://192.168.1.107:3690> 974ca905-8b23-4d8a-bc99-a7e4f409eba7“root”的密码: # 这里回车就好认证领域: <svn://192.168.1.107:3690> 974ca905-8b23-4d8a-bc99-a7e4f409eba7用户名: zhangcong # 输入svn服务器存储的账号密码“zhangcong”的密码:-----------------------------------------------------------------------注意! 你的密码,对于认证域:<svn://192.168.1.107:3690> 974ca905-8b23-4d8a-bc99-a7e4f409eba7只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion可以保存加密后的密码。请参阅文档以获得详细信息。你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,来避免再次出现此警告。-----------------------------------------------------------------------保存未加密的密码(yes/no)?yesA MyProject/trunkA MyProject/branchesA MyProject/test.txtA MyProject/tags取出版本 1。# 查看从服务器端版本库中down下来的数据[root@localhost data]# lsMyProject[root@localhost data]# ll MyProject/总用量 12drwxr-xr-x 3 root root 4096 3月 26 02:07 branchesdrwxr-xr-x 3 root root 4096 3月 26 02:07 tags-rw-r--r-- 1 root root 0 3月 26 02:07 test.txtdrwxr-xr-x 3 root root 4096 3月 26 02:07 trunk
参考:
http://www.centoscn.com/CentosServer/ftp/2014/0306/2505.html