一:编译安装的
yum install httpd-devel sqlite sqlite-devel cyrus-sasl-md5 -y
tar zxvf subversion-1.7.13.tar.gz
cd subversion-1.7.13
./configure --prefix=/usr/local/svn --with-ssl --with-zlib
make && make install
ln -s /usr/local/svn/bin/svn* /usr/bin/
二:YUM安装的
yum install subversion.x86_64 subversion-devel.x86_64 cyrus-sasl-md5 -y
三:常用操作(其他SVN+HTTPD或者SVN+SSH就不介绍了)
mkdir -p /home/svn
mkdir -p /home/wwwroot/a.com/
touch /home/svn/{authz,passwd}
svnserve -d -r /home/svn/ --log-file /var/log/svn.log //启动命令,关闭直接KILL
编辑好用户和密码
svn co svn://127.0.0.1/a.com/ /home/wwwroot/a.com //a.com为仓库名称
cat /home/svn/authz
[groups]
admin = glq
[/]
= rw
[a.com:/] //仓库名称
yuangong1 = rw
cat /home/svn/passwd
[users]
glq = 123456
yuangong1 = 123456
编辑配置文件,取消注释并修改以下几点,公用passwd/authz
cat /home/svn/a.com/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = ../../passwd
authz-db = ../../authz
自动提交到测试站的根目录
cat /home/svn/a.com/hooks/post-commit
#!/bin/sh
export LANG=en_US.UTF-8
svn update --non-interactive /home/wwwroot/a.com/ --username glq --password 123456 --no-auth-cache
chmod +x /home/svn/a.com/hooks/post-commit
svn co http://127.0.0.1/a.com /home/wwwroot/a.com/ //输入账号密码并YES储存
现在可以在客户端上测试啦。
升级客户端:
yum update subversion -y
编译的重新编译,覆盖可执行文件即可
验证版本号完整:svnadmin verify /path/repo
错误处理:
svn: E000022: Can't convert string from 'UTF-8' to native encoding:
env查看一下环境
LANG=en_US.UTF-8
再重新检出,最好放到/etc/profile下
更换SVN服务器(SVN 1.7以上才有这个命令)
svn relocate svn://ip/cangku
备份还原:
1. svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH
这个子命令会制作一个版本库的完全“热”拷贝,包括所有的钩子,配置文件,当然还有数据库文件。如果你传递--clean-logs选项,svnadmin会执行热拷贝操作,然后删除不用的Berkeley DB日志文件。你可以在任何时候运行这个命令得到一个版本库的安全拷贝,不管其它进程是否使用这个版本库。
2. svnadmin dump、svnadmin load
3.svnsync
先同步一份完整的,再配置实时同步
4. rsync
注意,svn备份不宜采用普通的文件拷贝方式(除非你备份的时候将库暂停,并且svn是相同版本,否则不建议rsync)