LINUX安装SVN+添加自动同步+远程下载最新代码
--------------------- 1. 新建一个用户:svnroot ,以下操作非特别说明皆为root用户操作 --------------------- #这个用户可以用来后面专门FTP远程下载该服务器上的代码的账号 groupadd svn useradd svnroot -g svn passwd svnroot xxx --------------------- 2.进入/home/svnroot 目录,然后下载SVN,并解压 --------------------- cd /home/svnroot wget wget 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 cd xx.xx.xxx.xxx/checkout find . -name ".svn" -type d | xargs rm -rf