Subversion安装,配置及权限管理
安装
yum install -y subversion
验证
1 | svnserve --version |
创建多版本库
创建目录+初始化版本库
1
2
3
4
5
6
7
8mkdir -p /data/svn
cd /data/svn
## 版本库1
mkdir svn_1
svnadmin create svn_1
## 版本库2
mkdir svn_2
svnadmin create svn_2权限管理
在每个版本库下面都有一个conf文件夹1
2
3
4
5
6
7
8[root@server conf]# ls -l svn_1/conf
总用量 12
-rw-r--r--. 1 root root 1080 4月 28 14:31 authz
-rw-r--r--. 1 root root 309 4月 28 14:31 passwd
-rw-r--r--. 1 root root 2283 4月 28 14:32 svnserve.conf
## passwd是密码文件
## authz是权限文件
## svnserve.conf是本版本库的配置文件
使用一个密码文件和权限文件管理所有版本库
1 | cp svn_1/conf/passwd passwd |
使用svn目录下的passwd和authz文件管理所有版本库
1 | ## 修改各个版本库的配置文件 |
权限使用自底而上的方式进行控制,如果在当前目录下无法找到该用户的权限, 则查看上一级目录是否有权限
,直到根目录位置,例如上例:
- 查看user用户的权限
1. 在访问noauthz目录时,没有user的权限配置,向上一级查看
2. 在user目录由user用户的权限配置,是读写, 因此,user用户具有noauthz目录的权限;
- 查看nozuthz用户的权限
1. 访问noauthz目录, noauthz没有读写该文件的权限,所以noauthz用户没有noauthz目录权限;
启动
svnserve -d -r /data/svn
-d 后台运行
-r svn的根目录
开机启动
1 | chkconfig --list | grep svnserve |
查看在/etc/init.d/svnserve的启动脚本文件,有如下代码:
1 | if [ -f /etc/sysconfig/svnserve ]; then |
1 | ## 增加配置文件 |
小技巧
ip改变后,修改svn地址
1
svn switch --relocate svn://192.168.0.253/xxx svn://192.168.0.100/xxx --username xxx --password xxx
svn提交部分文件
1
2svn status | awk '{print $2}' | 自定义grep > target.txt
svn ci --targets target.txt
HTTP支持
svnsverve和http使用不同的密码文件
安装
1 | ## apr,apr-util很关键 |
修改权限
1 | chown apache:apache /data/svn -R |
生成密码
1 | cd /data/svn |
配置
1 | ## vim /etc/httpd/conf.d/subversion.conf |
重启
1 | service httpd restart |
SVN+SSH
客户端设置
设置
->Network
->ssh client
->TortoisePlink.exe
;- 下载
putty
, 使用PUTTYGEN.EXE
将openssh2格式的密钥改成ppk格式的,使用PAGEANT.EXE
增加密钥。
svn authz
在svn的authz目录中增加:
1 | [/] |
方法1
在~/.ssh/authorized_keys
对应的public key前面增加如下:
1 | ## /data/svn为svn的根目录 |
例如:
1 | command="/usr/bin/svnserve -t -r /data/svn --tunnel-user=root",no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwEXTRkzM+/R8NTIY34ZJDg8/UeXTr+2oFX2PPiCazqwUKiD55EzgMcvaZKvGZ9LcswuNc26febwZEfnQDl0HxbIlH+5tlDGk35A/WrLsi3uekTjkIDIw3Do2xb9QlnDtYXRs24lHExdJQJvV7fOdoG9ZCcdX+bU63q3Qj5DfFCpjmw5ocCVcvWTOOIG2wT++0Jxr6W3vBu6fuCVFq6siOEzXEBRx63pj7uYRNvCs6GsgbQnyKNRyZSiouyrb/qRj1AbqRWGBr8kEofgwwnP3xO61pyovZLOrJ9FsjUxTLaGACoGJioOgu4vqywYXnX3TYnYWgx7MPXb/ayhZtHXHqQ== kingwen@kingwen |
使用svn co svn+ssh://root@192.168.1.245/p1
检出项目
此种方式该public key将不能登录ssh
方法2
直接使用绝对路径checkout项目:
1 | ## /data/.svn_repos/p1为项目的绝对路径 |