1.环境
centos6.4
2.安装svn
yum -y install subversion
3.配置
建立版本库目录
mkdir /www/svndata
svnserve -d -r /www/svndata
4.建立版本库
创建一个新的Subversion项目
svnadmin create /var/www/svndata/njlrxx
配置允许用户jiqing访问
cd /var/www/svndata/njlrxx/conf
vi svnserve.conf
anon-access=none
auth-access=write
password-db=passwd
注:修改的文件前面不能有空格,否则启动svn server出错
vi passwd
[users]
#<用户1> = <密码1>
#<用户2> = <密码2>
jiqing=123456
5.客户端连接
svn co svn://ip/njlrxx
用户名:jiqing
密码:123456
===============================================================
6.实现SVN与WEB同步,可以CO一个出来,也可以直接配在仓库中
1)设置WEB服务器根目录为/var/www/webroot
2)checkout一份SVN
svn co svn://localhost/njlrxx /var/www/webroot/njlrxx
修改权限为WEB用户
chown -R apache:apache /var/www/webroot/njlrxx
3)建立同步脚本
cd /var/www/svndata/njlrxx/hooks/
cp post-commit.tmpl post-commit
编辑post-commit,在文件最后添加以下内容
REPOS="$1" REV="$2" BASEPATH=/var/www/webroot/njlrxx WEBPATH="$BASEPATH/" export LANG=zh_CN.UTF-8 svn update $WEBPATH --username jiqing --password 123456 --no-auth-cache
增加脚本执行权限
chmod +x post-commit
最后操作是关闭服务然再打开服务:
svn服务的关闭:
killall svnserve
svn开启:
svnserve -d -r /var/www/svndata
===============================================================
SVN自动同步程序执行流程:
1、用户提交文件到SVN服务器,提交操作成功后触发post-commit脚本
2、在post-commit版本文件中使用php_script.php执行PHP脚本
3、在PHP脚本中通过exec系统调用更新服务器上的版本库工作副本
4、根据更新操作结果日志,对另一个SVN版本库进行对应的操作处理
SVN使用import导入数据到版本库
有两种方法可以将新文件引入Subversion版本库:svn import和svn add,现在讨论svn import
svn import是将未版本化文件导入版本库的最快方法,会根据需要创建中介目录。svn import不需要一个工作拷贝,你的文件会直接提交到版本库,这通常用在你希望将一组文件加入到Subversion版本库时,例如:
1)首先,服务器管理员在SVN服务器上创建项目版本库newrepos
$ svnadmin create /usr/local/svn/newrepos
2)然后,在客户端使用svn命令把本地文件导入到服务器上的项目版本库
$ svn import mytree file:///usr/local/svn/newrepos/some/project
Adding
Adding
Adding
Adding
Committed revision 1.
在上一个例子里,将会拷贝目录mytree到版本库的some/project下:
$ svn list file:///usr/local/svn/newrepos/some/project
bar.c
foo.c
subdir/
注意,在导入之后,原来的目录树并没有转化成工作拷贝,为了开始工作,你还是需要运行svn checkout导出一个工作拷贝。
推荐的版本库布局
尽管Subversion的灵活性允许你自由布局版本库,但我们有一套推荐的方式,创建一个trunk目录来保存开发的“主线”,一个branches目录存放分支拷贝,tags目录保存标签拷贝,例如:
$ svn list file:///usr/local/svn/repos
/trunk
/branches
/tags