svn
vn配置详解
适用于开发人员比较少的情况,
由于每次提交都留一个副本,所以svn的数据库的容量会暴增。
不能连接到svn服务器上就不能工作。
开发人员在svn服务器上下载代码。
subversion 官网
subversion.tigris.org
subversion.apache.org
svn客户端:tortoisesvn.net
svn中文网站:www.iusesvn.com
常见问题解答:http://subversion.apache.org/faq.zh.html
官方手册:svnbook.red-bean.com 中英文都要
现在有个问题,svn在windows服务器上,希望开发人员上传后,能同步到Linux的web目录下
所以
方法一:
svn updata /路径 路径是看你放代码的位置
然后保存为.sh文件,放在/root/update.sh,然后cron
* * * * * bash /root/update.sh 每分钟更新次代码
方法二:
post-commit,????
服务端运行方式:
1 独立服务器:svn://ip/test
2 借助apache等http服务 90%的人使用
http://
csvn单独整合软件,带web的svn软件
3本地直接访问
file://
客户端访问:
主要两种
http://
svn://
在服务端配置svn
一般性的功能要求,没有特殊要求,用yum安装方便快捷
rpm -qa subversion 检查有没有安装
yum install -y subversion
yum后的软件保留,可在无网情况下安装。
sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
grep keepcache /etc/yum.conf
keepcache=1 rpm下载后不清除
****************************************
svnserver --help
-d 守护进程模式
-r 指定根目录
--pid-file 存放进程号,方便管理
--listen-port 监听端口
配置并启动svn
建立两个目录,数据存储根目录,和用户密码权限目录。
mkdir -p /svndata 数据存储根目录
mkdir -p /svnpasswd 用户和密码权限目录
启动svn
svnserver -d -r /svndata/ 指定根目录为/svndata/
ps -ef | grep svn 查看进程
netstat -lntpu| grep 3690 查看端口
lsof -i :3690 查看端口
建立项目的版本库,sadoc,用svnadmin命令。
svnadmin create /svndata/sadoc 不能用mkdir,相当于初始化
cd /svndata/sadoc/conf
vi svnserver.conf
anon-access = none 匿名访问,第十二行。
auth-access = write 权限控制
password-db = /svnpasswd/passwd 用户和密码的数据库20
authz-db = /svnpasswd/auth 加密,权限 25
更改svn配置文件需要重启,编辑passwd和auth时不用重启。
查看更改后内容
egrep "\-access|\-db =" svnserver.conf
cd /svndata/sadoc/conf
cp passwd authz /svnpasswd
修改svnpasswd下的auth passwd权限是700
cd /svnpasswd/
chmod 700 *
vi passwd
[users]
stone = stonesecret 用户名和密码
test = testsecret
vi auth
sagroup = stone, test 分组,管理
[sadoc:/] 项目名和目录
stone = rw
test = r
@sagroup = r
重启svn
svnserve -d -r /svndata/
在windows上的客户端下载TortoiseSVN
svn客户端连接服务器的方式,账号,密码
svn://10.1.1.1/sadoc ip为服务器ip
用户名:stone
密码: stonesecret
windows中的svn的checkout
其中checkout directory是下载地址
linux客户端管理
svn --help
将服务器端(svn服务器安装配置的位置)的文件下载到本地服务器上
svn co svn://10.1.1.1/sadoc /svndata/ --username=stone --password=stonesecret
co 是checkout的简写,提取数据。
svn://10.1.1.1/sadoc是sadoc版本库
svndata 是开发让运维放到目标服务器的目录
查看远程服务器的数据,在Linux客户端查看。
svn ls svn://10.2.2.1/sadoc/ --username=stone --password=stonesecret
钩子,利用pre-commit限制文件的扩展名和大小,提出输入的信息。
然后利用脚本中的rsync执行同步命令,实现其自动更新到文档目录中。
假设有一台站点服务器,站点目录是/data/wwwroot/
先checkout下载来了
svn co svn://10.1.1.1/sadoc /data/wwwroot/ --username= --password=
cd /svndata/sadoc/hooks
将模板中的.tmp去掉就可以使用
cp post-commit.tmpl post-commit
vi post-commit
#!/bin/bash
PEPOS="$1"
PEV="$2"
export LANG=en_US.UTF-8
LOGPATH="/app/log"
[ ! -d ${LOGPATH} ] && mkdir ${LOGPATH} -p
SVN=/usr/local/svn
$SVN update --username=stone --password= /data/wwwroot/
if [ $? -eq 0 ]
then
/usr/bin/rsync -az --delete /data/wwwroot/ /tmp
fi
chmod 700 post-commit
此外还有个提前检测的标准
pre-commit
——————————————————————————————————————————
——————————————————————————————————————————
特例:
svn在windows服务器上,开发人员要求把windows客户端修改好的的php文档放到web目录上,
web是一个Linux服务器,
用户名:stone
密码:EGlKQodX
windows服务器svn: svn://201.16.180.44/panter
开发人员给的目录: /api/ying/pay.php
svn --username=stone --password=EGlKQodX co svn://210.16.180.24/panter/api/ying/ test
test 是一个目录,下载的pay.php会放到test下,然后在拷贝到其目录下,如果再次下载要更换目录