灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3988回复:0

LINUX安装SVN+添加自动同步

楼主#
更多 发布于:2013-07-01 15:56
作者:风吹白杨树
LINUX安装SVN+添加自动同步
 
 
 
1. 新建一个用户:svnroot ,以下操作非特别说明皆为root用户操作
 
---------------------
 
#这个用户可以用来后面专门FTP远程下载该服务器上的代码的账号
 
groupadd svn
 
useradd svnroot -g svn
 
passwd svnroot
 
xxx
 
---------------------
 
2.进入/home/svnroot 目录,然后下载SVN,并解压
 
---------------------
 
cd /home/svnroot
 
wget http://subversion.tigris.org/downloads/subversion-1.6.17.tar.gz
 
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.17.tar.gz
 
tar -xzvf subversion-1.6.17.tar.gz
 
tar -xzvf subversion-deps-1.6.17.tar.gz
 
---------------------
 
3.编译安装
 
---------------------
 
cd subversion-1.6.17
 
./configure --prefix=/usr/local/svn
 
Make
 
Make install
 
(/usr/local/svn/bin/svnserve --version 查看有没有安装成功)
 
---------------------
 
4.建立版本库
 
---------------------
 
mkdir -p /home/svnroot/svndata/repos1
 
//创建目录,home/svnroot/svndata 是所有仓库的根目录 repos1是其中的一个仓库
 
svnadmin create /home/svnroot/svndata/repos1
 
//困惑的地方我在虚拟机里面能直接使用svnadmin 但是到了阿里云的机器上则不能直接使用了,提示命令找不到 那我就采用了usr/local/svn/bin/svnadmin create /home/svnroot/svndata/repos1
 
//添加svnadmin 到环境变量 我不知道对不对 exprot PATH=$PATH:/usr/local/svn/bin
 
随着项目越来越多,容纳到SVN进行管理的东西也越来越多,包括公司资料,网站原始日志,产品图片,项目源码。
 
如果按照这种方式来处理的话,一个仓库是肯定不够的,因此打算创建多个仓库
 
在server端,新建一个目录用来存放所有的仓库。比如/usr/local/svnrepos. 然后在这个目录下建立每个项目独立
 
 
 
svnadmin create /usr/local/svnrepos/code
 
svnadmin create /usr/local/svnrepos/information
 
 
 
使用 svnserve -d -r /usr/local/svnrepos 启动。这样你的项目的url是:
 
svn://IP/code
 
svn://IP/information
 
---------------------
 
5.配置仓库
 
---------------------
 
cd /home/svnroot/svndata/repos1/conf
 
vi svnserve.conf
 
打开这个配置文件,可以看到很多配置项已经注释掉了,只需要按下面这几项前面的注释去掉(前面不能有空格)
 
[general]
 
anon-access = none(这里默认是read 改成none,即为匿名用户可以访问)
 
auth-access = write
 
password-db = passwd
 
authz-db=authz
 
vi passwd
 
添加用户和密码
 
[users]
 
User=passwd
 
格式为,用户=密码
 
vi authz
 
[repos1:/]
 
username = rw
 
---------------------
 
6.启动SNV
 
---------------------
 
svnserve -d -r /home/svnroot/svndata
 
netstat -anp|grep svnserve //查看SVN 端口号 默认是3690
 
---------------------
 
7.把svn的bin目录加入到环境变量之中
 
---------------------
 
vi /etc/profile
 
添加export PATH="$PATH:/usr/local/svn/bin"
 
保存退出之后运行source /etc/profile
 
然后执行svnserve --version 查看是否生效
 
---------------------
 
8.设置SVN自启动
 
---------------------
 
在/etc/rc.d/rc.local文件中增加这么一行
 
svnserve -d -r /home/svnroot/svndata &
 
----------------------
 
9.把SVN的代码检出一份
 
----------------------
 
#因为前面建立一个svnroot的身份,这里继续在svnroot的家目录进行操作
 
svn co svn://xx.xx.xxx.xxx/repos1 /home/svnroot/checkout/ --username zmk
 
#下面所有的xx.xx.xxx.xxx均表示服务器IP
 
#第10步之前必须进行第9步,因为更新是建立在检出之上的
 
----------------------
 
10.实现SVN提交完毕后自动同步
 
----------------------
 
post-commit
 
#!/bin/bash
 
export LANG="zh_CN.UTF-8"
 
svn update /home/svnroot/checkout/ --username zmk --password xxx
 
chmod 777 post-commit #别忘记了修改这个脚本的执行权限
 
----------------------
 
11.安装ftp
 
----------------------
 
#
 
yum install vsftp
 
chkconfig vsftpd on
 
service vsftpd restart
 
#别忘记了touch chroot_list
 
----------------------
 
12.写在服务器B上的脚本
 
----------------------
 
#!/bin/sh
 
cd /mnt/hgfs/code/svntest/xx.xx.xxx.xxx/
 
rm -rf *.*
 
wget -m -np ftp://svnroot:@xx.xx.xxx.xxx/checkout/
 
cd xx.xx.xxx.xxx/checkout
 
find . -name ".svn" -type d | xargs rm -rf

喜欢0 评分0
游客

返回顶部