centos上svn的搭建以及遇过的问题
关于svn安装的文章其实已经可以找到很多,此文只是记录自己搭建过程以及当中遇到的一些问题
首先,需要安装svn,使用命令
yum install -y subversion
如果要看是否安装成功,可以使用
svnserve --version
如果显示出版本号,代表安装成功
接下来新建一个svn库,我这边是放在home目录下面,
mkdir /home/svn //如果之前已经有安装过,可跳过这个步骤,之前在之前的目录下执行即可
svnadmin create /home/svn/project //project为创建的代码库的名称,可自己定义,一般是和项目名称一样,方便查找
执行完命令之后进入project 文件中会生成以下文件
接下来是文件的配置
vi /home/svn/conf/svnserve.conf,将以下命令的注释去掉
注:去掉注释之后命令要顶格
[general]
anon-access = none // 这个如果没加的话,客户端中的日志会显示不了
auth-access = write
password-db = passwd
auth-db = authz
realm = /home/svn/jz //svn项目的目录,这个
vi /home/svn/conf/passwd文件
[users]
harry = harry //用户名等于密码的格式
vi /home/svn/conf/authz文件
[groups]
[/] //记住不要漏掉
harry = rw //读写的权限
配置完之后启动svn
svnserve -d -r /home/svn/project //如果有多个项目,建议启动目录放在上一级,也就是svnserve -d -r /home/svn
#如果已经启动svn服务,可以先关掉svn服务再重新启动
killall svnserve
启动之后找到web项目中执行下面命令
svn checkout svn://IP(这边是写服务器的ip地址):3690 . --username=harry //记住中间有个点 如果没有点的话,文件夹的结构会不一样 --username 为执行的参数 harry是创建的账户
检出之后需要先添加文件才能commit成功,具体步骤:
svn add . --no-ignore --force //这个是递归添加当前文件夹的所有内容,如果只添加一个文件就直接svn add + 文件名称
添加完之后可以用
svn ci -m '备注' 进行提交,需要注意的是 **-m 参数一定要有,不管有没有填备注**
接下来说一下钩子的用法
cd /home/svn/project/hooks
#复制一份post-commit
cp post-commit.tmpl post-commit
#记得一定要设置一下权限,如果权限没有设置,会更新不到
chmod -R 777 post-commit
#打开post-commit,进行如下设置,这个是我自己的设置,可以根据自己的需要进行配置
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
SVN_PATH=/usr/bin
WEB_PATH=/data/www/project //web项目目录
SVN_USER=harry //用户名
SVN_PASS=harry //密码
LOG_PATH=/tmp/svn.log // 日志路径
echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
$SVN_PATH/svn update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH
exit 0
钩子文件设置好之后需要重启一下svn服务,这样执行会有个问题是svn提交的文件都会是root权限,如果需要改变这种情况,可以在post-commit 文件exit 0上一行 后加上修改项目权限的命令,如下:
chown -R www.www $WEB_PATH &
这样由svn提交的文件就是变成是www用户的了