Contents

svn

Contents

SVN

介绍:

  • 代码版本管理工具
  • 能记住本版修改的情况
  • 查看所有的修改记录
  • 恢复到任何历史版本
  • 恢复已经删除的文件

svn与git相比的优势:

  • 使用简单、上手快
  • 目录权限控制,企业安全必备
  • 子目录checkout,减少不必要的文件检出

缺点:

  • svc是集中到版本库控制,需要依赖于中央版本控制服务,git是分布式的,可以独立工作

主要应用:

  • 开发人员代码版本管理
  • 重要文件的存储
  • 关系内部文件共享

windows客户端:TortoiseSVN

安装

基于centos7

1、安装svn

[root@localhost ~]# yum -y install svn

2、创建svn版本库

创建版本库目录

[root@localhost /]# mkdir -p /svn/repos
[root@localhost /]# svnadmin  create /svn/repos

3、配置svn

[root@localhost repos]# ll
total 8
drwxr-xr-x 2 root root  54 Jun 13 21:47 conf
drwxr-sr-x 6 root root 233 Jun 13 21:47 db
-r--r--r-- 1 root root   2 Jun 13 21:47 format
drwxr-xr-x 2 root root 231 Jun 13 21:47 hooks
drwxr-xr-x 2 root root  41 Jun 13 21:47 locks
-rw-r--r-- 1 root root 229 Jun 13 21:47 README.txt

1)conf目录

[root@localhost conf]# ll
total 12
-rw-r--r-- 1 root root 1080 Jun 13 21:47 authz
-rw-r--r-- 1 root root  309 Jun 13 21:47 passwd
-rw-r--r-- 1 root root 3090 Jun 13 21:47 svnserve.conf
  • authz:负责账号权限的管理,控制账号是否读写权限

  • passwd:负责账号和密码的用户名单管理

  • svnserve.conf:svn服务器配置文件

2)authz配置文件

[root@localhost conf]# vim authz

[repos:/]                 #  / 表示根目录 ,既/svn/repos
cccc = rw            #   rw表示seialt用户拥有读写权限
abc = rw

# 组设置
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
iso = zhang,wang
test = li

# [/foo/bar]
# harry = rw
# &joe = r
# * =
[repos:/iso]
jk = rw

[repos:/data]
@iso = rw

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[repos:/]
cccc = rw
abc = rw

3)passwd文件

[root@localhost conf]# vim passwd
[users]
# harry = harryssecret
# sally = sallyssecret
cccc = 123456
abc = 123

4)svnserve.conf文件

[root@localhost conf]# vim svnserve.conf
[root@localhost conf]# vim svnserve.conf
 19 anon-access = none
 20 auth-access = write
 27 password-db = passwd
 34 authz-db = authz
 39 realm = cccc
 
anon-access = none:表示禁止匿名用户访问。
auth-access = write:表示授权用户拥有读写权限。
password-db = passswd:指定用户名口令文件,即 passwd 文件。
authz-db = authz:指定权限配置文件,即 authz 文件。
realm = cccc:指定认证域,即/svn/repos目录。

4、启动svn

[root@localhost conf]# svnserve -d -r /svn       

[root@localhost conf]# ps -ef | grep svn
root      10923      1  0 22:49 ?        00:00:00 svnserve -d -r /repo
root      10925   1396  0 22:49 pts/0    00:00:00 grep --color=auto svn

[root@localhost conf]# ss -anpl | grep svn
tcp    LISTEN     0      7         *:3690                  *:*                   users:(("svnserve",pid=10923,fd=3))
[root@localhost conf]# 

5、连接

[root@localhost conf]# svn co svn://127.0.0.1/repos
Authentication realm: <svn://127.0.0.1:3690> /repos
Password for 'root': 
Authentication realm: <svn://127.0.0.1:3690> /repos
Username: cccc
Password for 'cccc': 

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <svn://127.0.0.1:3690> /repos

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
Checked out revision 0.
[root@localhost conf]# 

6、使用sasldb加密密码文件

说明:Linux下使用svnserve的SASL认证能解决这个问题,subversion1.5以上的版本默认装了sasl认证,解决svnserve密码文件passwd是明文的问题,生成一个sasl认证的密码文件sasldb。

1)修改conf/svnserve.conf文件

[sasl]
use-sasl = true
min-encryption = 128
max-encryption = 256

注释:# password-db = passwd这行保持注释掉的状态,不使用passwd文件。变量 min-encryption 和 max-encryption 控制服务器所需要的加密强度。要完全禁用加密,就将这 2 个变量的值都设为 0。要启用简单的数据校验(例如,为了防止篡改和保证数据的完整,不加密),就将这 2 个值都设为 1。如果你想允许(但不强制)加密,将最小值设为 0,最大值设为任意位数。要强制加密,将这 2 个值设为大于 1 的数字。在前面的例子中,我们要求客户端至少进行 128 位加密,但是不大于 256 位加密。

2)新建svn.conf文件

一般放在/usr/Lib/sasl2或者/etc/sasl2,内容如下

pwcheck_method: auxprop

auxprop_plugin: sasldb

sasldb_path: /svn/repo/cccc/sasldb

mech_list: DIGEST-MD5

注释:pwcheck_method指明检查的方法,这里是“auxprop ”,这个pwcheck_method还对应了如启动一个代理作为认证服务等方式,而现在的意思就是使用本文件说的方式去检查。然后我们指明auxprop_plugin为sasldb,也就是使用一个文件存放用户名密码,也就是/home/svn/svnjiami/sasldb,其它的认证信息存放plugin还有sql和ldapdb。而mech_list指明了认证信息传递机制。

3)重启svn

如果 svnserve 已经在运行,你需要重启服务,并确保它读取了更新后的配置参数

killall svnserve  //停止svnserve服务

svnserve –d –r /svn/repos    //启动svnserve服务

4)创建加密后的用户和密码

saslpasswd2 -c -f /svn/repo/cccc/sasldb -u cccc cccc

# –u [svnserve.conf里面配置的realm名字] [username] -p <pw //新建用户,可修改用户用户口令,pw是密码文件,里边存储了用户密码
                                                组织      用户    
 saslpasswd2 -d -f /svn/repo/cccc/sasldb -u cccc cccc