自从进入编程的大门,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版本库的目录

大功告成,可以使用了!