自从进入编程的大门,svn就一直陪伴在我左右,每次提交,每次更新,每次清理,你总是义无反顾,有时也会闹点小情绪,提交失败,好吧,步入正题!
即使使用了svn很多次,如果自己不亲自部署一下,永远不知道他的工作原理,和他的神奇,虽然,现在用git的人要多于svn了,但是,git目前我还是征服不了他,先搞清svn在说吧!
svn的安装,应该不是难事,yum即可,这里略过,注意介绍,svn创建版本库,钩子的使用!
1、安装svn服务
# yuminstall subversion
2、新建一个目录用于存储SVN所有文件
# mkdir /home/svn
3、在上面创建的文件夹中为项目 xcf,创建一个版本仓库
# svnadmin create /home/svn/xcf
执行完这一步,/home/svn中将存在xcf文件夹,这个项目的配置都在 /home/svn/xcf/conf 中
4、为项目配置权限
(1)svnserve.conf 是主配置文件
# vi/home/svn/xcf/conf/svnserve.conf anon-access=none #匿名可读 auth-access=write #验证用户可读写 password-db=passwd #指向验证用户名密码的数据文件 passwd ,请看下文配置 auth-db=authz #指向验证用户的权限配置文件 authz ,请看下文配置
注意:每一行前方不能有空格,否则会出现 Option expected错误!
(2)passwd用户名密码配置文件
# vi/home/svn/xcf/conf/passwd [users] manager1=123456 #每一行都要是“用户名=密码”的格式 houpeng = 123456
(3)authz用户权限配置文件 ,这里只添加【/】即可
# vi/home/svn/xcf/conf/authz [groups] managers=manager1,manager2 #定义群组 managers包含manager1和manager2两个用户 group = houpeng,xcf #如果用组的话 [xcf:/] @group = rw houpeng = rw @managers=rw #定义群组 managers 有读写权限 manager3=r #定义 manager3 有读权限 *= #以上没有定义的用户都没有任何权限
5、启动服务器
#svnserve -d -r /home/svn
开启多个版本库的时候要启动不同的端口 svnserve -d --listen-port 3688 -r /static/
-------------------------------------这是漂亮的分割线----------------------------------------
到这里svn版本库算是建好了,下面介绍,导入好检出
将文件导入版本库:
终端输入:svn import [源路径] [目标版本库路径] -m [日志信息]
源路径可以是相对路径,导入时会递归导入源路径下的所有文件和文件夹,目标版本库路径需要绝对目录(反正我试验是这样的),例如版本库的目录
是:home/user/svn/xcf/。则应该这样写:file:///home/user/svn/xcf/
例如我把/home/wwwroot/xcf/index.html,作为网站的根目录,将当前目录导入版本库xcf:
svn import . file:///home/svn/xcf -m "导入文件"
从版本库导出:
导入后原文件并未被纳入版本管理,若想获得受版本控制的文件,就需要从版本库导出
终端输入:svn co [版本库路径] [导出目标路径]
例如将xcf库中的文件导出到当前目录/home/wwwroot/xcf中:
svn co file:///home/svn/xcf .
--------------------------------------这是漂亮的分割线----------------------------------
下面介绍钩子的使用,钩子可以让客户端提交的代码,直接放到根目录下,不用每次将文件手动纳入版本库
1、设置钩子,在/home/svn/xcf/hooks/目录下面,新建一个钩子文件为post-commit,并修改文件的权限#chmod 755 post-commit
vi post-commit chmod 755 -R post-commit
2、编辑post-commit,把以下代码写入export.UTF-8
#!/bin/sh export LANG=zh_CN.UTF-8 /usr/bin/svn update --username userxcf --password 123456 /home/wwwroot/xcf
3.对于trunk、branches、tags这三个文件的使用,可以在客户端checkout代码后,新建这三个目录后提交即可!
注意:checkout路径的介绍
svn://123.43.124.241/home/svn/xcf //ip后面要跟svn版本库的目录
大功告成,可以使用了!