SVN配置手札
1.安装svn
linux下通过yum安装svn
yum -y install subversion
本地Windows系统安装TortoiseSVN
2.配置
建立版本库目录
mkdir /home/svnlib
启动SVN服务进程,以/home/svnlib为根目录
svnserve -d -r /home/svnlib
3.建立项目版本库
创建一个新的Subversion项目
svnadmin create /home/svnlib/myprj
4.配置允许用户访问
cd /home/svnlib/myprj/conf vi svnserve.conf
anon-access=none auth-access=write password-db=passwd
注:修改的文件前面不能有空格,否则启动svn server出错
vi passwd
[users] #<用户1> = <密码1> #<用户2> = <密码2> batsing=batsingPW
5.在本地电脑使用TortoiseSVN检出代码库
可能出现的问题1:
“由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败”
原因:Centos7防火墙拦截了外网访问3690端口
#查看开放的端口 firewall-cmd --list-port #添加端口(永久) firewall-cmd --zone=public --add-port=3690/tcp --permanent #重载防火墙 firewall-cmd --reload
如果提示 FirewallD is not running ,则需要开启防火墙再添加端口,重载后再关闭防火墙
#防火墙的一些基本命令 systemctl start firewalld #开防火墙 systemctl stop firewalld #关防火墙 systemctl enable firewalld #自启动 systemctl disable firewalld #禁自启动
(如果是用的阿里云,还有可能“安全组”策略限制了端口访问,需要在阿里云后台操作添加端口)
可能出现的问题2:
Error: Can't connect to host '': 由于目标机器积极拒绝,无法连接。
解决:首先测试svn的3690端口是否打开:
netstat -nlpt|grep 3690
如果不成功说明服务没有被正常启动,启动SVN服务,输入命令
svnserve -d -r /home/svnlib
可能出现的问题3:
Error: No repository found in 'svn://localhost/myprj'
解决:先关闭SVN服务
killall svnserve
开启SVN服务,注意设置的目录
svnserve -d -r /home/svnlib
再试试本机使用TortoiseSVN->Repo-browser查看版本库
6.检出版本库到指定目录
svn co svn://localhost/myprj /home/wwwroot/htdocs/myprj
7.一次性添加所有文件
svn st | grep '^\?' | tr '^\?' ' ' | sed 's/[ ]*//' | sed 's/[ ]/\\ /g' | xargs svn add
!注意网站的目录名不能含点号.否则会无法添加
8.提交上传(这里的提交备注不要省略)
svn commit -m "this is remarks"
9.SVN 更新
svn up
10.查看文件状态
svn st
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
11.实时更新到测试目录 post-commit勾子
进入项目库目录下的 ./hooks目录,新建 post-commit文件
#!/bin/sh export LANG="en_US.UTF-8" SVN=/usr/bin/svn #这里配置的是svn安装bin目录下的svn文件 WEB=/home/wwwroot/project/ #要更新的目录 SVNUSER=batsing #SVN登录用户名 SVNPWD=mypassword #SVN密码 $SVN update $WEB --username $SVNUSER --password $SVNPWD
设置权限为可执行 chmod +x post-commit
可能出现的问题1:
Error: Error output could not be translated from the native locale to UTF-8
解决:文件的语言编码跟系统的语言编码不同,修改文件中指定的语言编码。
可能出现的问题2:
Error: post-commit hook failed (exit code 255) with no output
解决:没有执行权限,按上面说的方法对文件添加执行权限。
12.设置服务器svn开机自动启动
打开 /etc/rc.d/rc.local 文件,在末尾添加一句。保存即可
svnserve -d -r /home/svnlib
13.SVN库导出导入
备份svn存储库
#压缩备份 svnadmin dump /home/svnlib/repository | gzip > ~/repository-backup.zip #不压缩备份 svnadmin dump /home/svnlib/repository > ~/repository-backup.svn
恢复svn存储库
#建立新的svn存储库 svnadmin create /home/svnlib/newrepository
#解压缩
gzip -d ./repository-bk.gz #导入存储库数据 svnadmin load /home/svnlib/newrepository < ~/repository-backup.svn
14.删除SVN库(慎)
直接删除库项目的目录
rm -rf /home/svnlib/repository
15.更新SVN版本从1.6升到1.7
删除旧的svn,安装新的svn,查看svn版本
yum remove subversion
yum install subversion
svn --version
16、迁移svn库
把svn库从旧服务器迁移到新服务器
一、参考1~4步在新服务器开启svnadmin并建立版本库,如 /home/svnlib/myprj
二、建立新仓库中hooks下名为 pre-revprop-change 的文件,并添加执行权限
cd /home/svnlib/myprj/hooks cp pre-revprop-change.tmpl pre-revprop-change chmod a+x pre-revprop-change
三、修改pre-revprop-change文件最后一行为
exit 0
四、同步初始化
svnsync init file:///home/svnlib/myprj http://svn.mysvn.com/oldprj --username myuser --password mypwd
五、同步文件
svnsync synchronize file:///home/svnlib/myprj --username myuser --password mypwd