我自己在二次开发这个博客的时候,直接在服务器上开发的,为了开发上传代码的方便使用了svn作为代码控制和代码上传的工具。我还在服务器上配好了钩子,上传代码的同时还会同步目录下的代码。
什么是SVN
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
Linux下搭建svn服务器
我这只简单列出Linux下搭建svn服务器的步骤和操作
下文中出现的*
号替换成其他自定义名称
通过yum命令安装
>yum -y install subversion
创建版本库目录
选择在var路径下创建版本库 这个目录的作用就是存放每次提交的代码
>mkdir /var/svn/*
创建svn版本
>svnadmin create /var/svn/*
创建成功后,进入*目录下
>cd /var/svn/*
输入ls
命令,可以看到你创建的版本库的文件和文件夹
conf
db
format
hooks
locks
README.txt
配置修改
进入conf
>cd /var/svn/*/conf
authz
负责账号权限的管理
passwd
负责账号和密码的用户名单管理
svnserve.conf
svn服务器配置文件
配置authz
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[\]
username= rw
上面的代码的username=rw
分别是用户名和读写权限需要多个用户就添加多条 r
为读权限w
为写权限
[\]
代表的是根目录 意思是下面的帐号可以操作版本库根目录下的所有代码
如果需要单独的操作某个目录,需要换一行 在[]
里填上对应的路径并且换行写上对应的帐号就行
配置passwd
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
[users]
# harry = harryssecret
# sally = sallyssecret
#
username = password
上面的代码的username = password
分别是用户名和密码需要多个用户就添加多条
配置svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
# authz-db = authz
realm = /var/svn/*
# force-username-case = none
[sasl]
# use-sasl = true
# min-encryption = 0
# max-encryption = 256
这个文件里面有许多###
开头的注释文本所以我就略去这一部分
默认都是注释的 按照我上面给出的部分修改对应参数和删除对应的注释即可
防火墙开启
如果配置好以后不能访问,一般情况下都是服务器的防火墙问题,按照如下3条命令逐一执行即可
>/sbin/iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
>/etc/init.d/iptables save
>service iptables restart
启动svn服务器
>svnserve -d -r /var/svn
启动成功后,可用ps -aux
查看服务启动是否成功
客户端访问
TortoiseSVN_v1.10.0.28176 带中文包.zip
在windows客户端,安装好svn以后,SVN检出,输入地址:svn://ip地址:3690/ (iP地址为你linux的ip,为前文创建的版本库名称,3690为svn默认端口)
弹出输入用户名和密码,输入即可访问
配置钩子函数
完成上面的操作已经可以使用svn服务
如果要做到提交代码并且同步到服务器目录下,那么需要钩子函数
进入hooks
>cd /var/svn/*/hooks
创建一个文件post-commit
内容如下
#!/bin/sh
export LANG=en_US.utf8
SVN_PATH=/usr/bin/svn
WEB_PATH=填你的服务器目录
$SVN_PATH update $WEB_PATH --username '帐号' --password '密码' --no-auth-cache
填入对应的参数即可
让post-commit有执行的权限,执行如下命令
chmod 777 post-commit
在服务器上需要检出的目录下检出一次项目
svn co svn://127.0.0.1/www ./
到这里算设置完成了
之后可以尝试从本地提交代码到服务器,验证钩子是否设置成功
如果重启服务器,或者修改了配置或其他操作,记得重新执行启动svn的代码
svnserve -d -r /var/svn
service svnserve start 启动服务
service svnserve stop 停止服务
service svnserve restart 重启服务
0 条评论