CentOs下搭建svn

一.安装SVN

//检查是否安装
rpm -qa subversion

//卸载旧版本
yum remove subversion

//安装最新版本
yum install subversion

//检查是否安装成功
svnserve --version--之后一般跟选项的完整名称,-之后一般跟选项的单个字母缩写)

二.创建项目仓库

//创建目录
mkdir -p /var/svn/svnrepos

//创建项目仓库
svnadmin create /var/svn/svnrepos

//检查是否创建成功
cd /var/svn/svnrepos

(若成功里面会多一些文件夹)

三.配置项目库

//采用默认配置. 以下语句都必须顶格写, 左侧不能留空格, 否则会出错.

//进入conf目录,下面有三个配置文件authz passwd svnserve.conf
cd conf


//配置passwd,等号左边是用户名,右边是密码,例如
wangyang=wangyang

//配置authz,在文末加入用户名和读写权限
wangyang=rw

//配置svnserve.conf
anon-access = none # 使非授权用户无法访问
auth-access = write # 使授权用户有写权限
password-db = password
authz-db = authz # 访问控制文件
realm = imagine's svn server # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。

四.开放SVN端口

//修改防火墙
iptables -I INPUT -p tcp --dport 3690 -j ACCEPT

//保存设置
/etc/rc.d/init.d/iptables save

//重启iptables
service iptables restart

//启动svn服务
svnserve -d -r /var/svn/svnrepos

五.连接SVN

使用 TortioseSVN 连接到 svn://我的 ip 地址/

输入前面设置的用户名密码即可访问

六.配置开机启动

编写脚本 svn_startup.sh,放在/root/svn_startup.sh,代码如下

#!/bin/bash
export LC_CTYPE="zh_CN.UTF-8"
/usr/bin/svnserve -d -r /var/svn/svnrepos

然后

//修改脚本权限
chmod ug+x svn_startup.sh

//添加自启动
vim /etc/rc.d/rc.local

//在文件末尾添加命令行脚本
/root/svn_startup.sh

六.通过hooks使得SVN可以自动同步网站代码

//checkout网站工作目录
svn co svn://localhost /var/www/html/ --username user --password passwd

//将工作目录转移到钩子文件夹
cd /var/svn/svnrepos/hooks

//添加配置文件    
cp post-commit.tmpl post-commit

//修改 post-commit 文件,加入以下代码
#!bin/sh
export LANG=zh.CN.UTF-8
/usr/bin/svn update /var/www/html/ --username wangyang --password wangyang --no-auth-cache
echo `date`,`whoami`,$REPOS,$REV >>/var/svn/svnrepos/hooks/svn_hook.log

//给予 post-commit 文件以可执行权限
chmod +x post-commit

七.个人配置中出现的一些常见错误

#1. Repository UUID 'xxxxxxxx' doesn't match expected 
UUID 'xxxxxxxx' 
     Finished! 

#解决办法如下
1、首先查看项目的所有者的UUID
      # svnlook uuid /var/svn/svnrepos
     62b86956-73d9-2945-ba87-0546d71898f9

2、更新项目的UUID
      # svnadmin setuuid /var/svnrepos 6aed1349-fe9f-9245-a4a0-02dba53eb2d0

3、查看一下更新后的UUID
      # svnlook uuid E:/SVN_ROOT/mydoc

附:
      UUID是repository创建时自动生成的一个随机数, SVN Client利用UUID判断是否为同一个resp。一般遇到UUID不同时,需要重新checkout。
#2. Warning: post-commit hook failed (exit code 255) with no output.

#解决办法如下
chown root post-commit
chmod +x post-commit
如果执行提交时SVN提示255错误,则是 post-commit 脚本文件的权限不对,post-commit 脚本必须有 +x 权限。
#3.使用tortoisesvn提交更新老是出现问题

#解决办法如下
./post-commit
直接在服务器上运行post-commit,观察错误信息
#4.svn "cannot set LC_CTYPE locale" 问题以及LANG, LC_CTYPE, LC_ALL值的设置
svn: warning: cannot set LC_CTYPE locale  
svn: warning: environment variable LANG is en_US.UTF-8  
svn: warning: please check that your locale name is correct  
Type 'svn help' for usage.  

#解决办法如下
export LC_ALL=C  
source /etc/profile

可以在/etc/profile中查看以上命令是否生效,生效后会在该文件中看到export LC_ALL=C 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值