码迷,mamicode.com
首页 > 其他好文 > 详细

svn学习之一(svn独立服务器搭建)svn钩子了解

时间:2015-09-24 19:31:37      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:

SVN实战笔记
#####################################################
xingxing
qq:1218761836
qq群:150181442
#####################################################

SVN实战  
目录
SVN实战    1
一、SVN简介    1
二、SVN运行方式    1
2.1 svn的访问模式3种    1
三、SVN数据格式    2
3.1 svn 档案库数据格式    2
四、SVN优缺点    2
五、SVN安装及配置    2
5.1 配置并启动svn    2
5.2查看svn进程    3
5.3 查看端口:    3
5.4 建立项目的版本库    3
5.5 调整svn配置文件及权限文件    5
5.6 重启svn    6
5.7  windows客户端软件测试    6
5.8  Linux客户端测试    9
5.9  svn服务器下载    9
5.10    svn客户端查看服务器数据:    10
5.11从本地提交数据到svn    11
5.12 导入svn原始目录树    12
5.13 导入到svn库里面去    12
5.14  svn copy命令使用    12
六、svn的钩子    13
6.1 钩子模板    13
6.2 常用钩子脚本    14
6.3 svn 钩子生产应用    14
6.4    svn 钩子同步应用实战    14
6.5 钩子限制上传文件大小    17
七、企业案例    18
7.1  svn 目录组织结构说明    18
7.2  小型企业代码上线案列    19
7.3  中型企业上线解决方案    20
7.4  大型企业上线解决方案    21
八、关于程序上线方案    22
8.1  PHP程序代码上线的具体方案    22
8.2  JAVA 程序代码上线的具体方案    22
8.3  自动化部署和上线管理平台    22



一、SVN简介
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。
二、SVN运行方式
2.1 svn的访问模式3种  
    1. 独立服务器访问
        svn://  
    2. svn+http(nginx) 访问  
        http://  
            a  单独安装apache+svn
            b  csvn(apache+svn)单独的整合软件,带web管理的svn软件
    3. 本地直接访问(例如:file://     svn 本地用的一个访问方式)
svn客户端访问方式
      访问方式            说明
          file:///    直接通过本地磁盘或者网络磁盘访问版本库
                           http://        通过webDAV协议访问支持subversion的apache服务器
https://        与http:// 相似,但是用ssl加密访问
               svn://         通过tcp/IP 自定义协议访问svnserver服务器
           svn+ssh://         通过认证并加密的tcp/ip 自定义访问svnserver服务器
三、SVN数据格式
3.1 svn 档案库数据格式
    svn 存储版本的数据有2中方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据的存储系统),因为BDB方式在服务器中断时,
有可能锁住数据,所以还是FSFS方式更安全一点。
    DBD   安装的时候需要DBD类型的存储,编译的时候需要加参数开启
    FSFS   高版本默认的都是FSFS类型的存储,不需要编译的时候指定

    svn是基于关系数据库的(berkleyDB)或一系列二进制的文件(FS_FS),一方面解决许多问题(例如,并行读写共享文件)以及添加许多新功能(例如运行时的事务特性。)然而另一方面,数据库由此变得不透明,不能像ftp,nfs等看到实体文件了
四、SVN优缺点
svn缺点:
    1. 由于每一次提交都保留一个原始副本,因此svn数据库容量会暴增
    2. 如果不能连接到svn服务器上,基本上不可以工作,例如上面第二步,如果服务器不能连接上,就不能提交,还原,对比等等
        3. 不适合开源系统开发(开发人数非常多,)但是一般 集中式管理有非常明确的权限管理机制(例如分支访问权限),可以实现分层管理,从而很好的解决开发人数众多的问题

svn优点
    1. 管理方便,逻辑清晰明确,符合一般人思维习惯
    2. 易于管理,集中式svn服务器更能保证数据库安全性
    3. 代码一致性非常高
    4. 适合开发人数不多的项目开发
    5. 普及度高,大部分软件配置管理的大学教材都是使用svn和vss
五、SVN安装及配置
 SVN安装:yum install subversion   -y
5.1 配置并启动svn  
 第一步建立存储目录
建立svn版本库数据存储根目录(svndata)及用户、密码权限目录(svnpasswd)
        mkdir  -p /application/svndata    数据存储的根目录
        mkdir  -p  /application/svnpasswd   用户、密码 权限目录
     第二步启动SVN
        启动svn服务指定服务的svn根目录
        svnserve  -d  -r  /application/svndata   --pid-file=/application/svndata/svn.pid
        提示:pid 的参数可加可不加
        可以查看svnserver 命令帮助,了解相关启动参数
    [root@localhost /]# svnserve --help  
       usage: svnserve [-d | -i | -t | -X] [options]

            Valid options:
            -d [--daemon]            : daemon mode
            -i [--inetd]             : inetd mode
           -t [--tunnel]            : tunnel mode
           -X [--listen-once]       : listen-once mode (useful for debugging)
           -r [--root] ARG          : root of directory to serve
           -R [--read-only]         : force read only, overriding repository config file
           --config-file ARG        : read configuration from file ARG
           --listen-port ARG        : listen port
                                      [mode: daemon, listen-once]
           --listen-host ARG        : listen hostname or IP address
                                      [mode: daemon, listen-once]
           -T [--threads]           : use threads instead of fork [mode: daemon]
           --foreground             : run in foreground (useful for debugging)
                                      [mode: daemon]
          --log-file ARG           : svnserve log file
          --pid-file ARG           : write server process ID to file ARG
          .................................................................
5.2查看svn进程
           [root@localhost /]# ps -ef|grep svn
               root      4272     1  0 17:32 ?        00:00:00 svnserve -d -r /application/svndata
               root      4301  4119  0 17:33 pts/0    00:00:00 grep svn
5.3 查看端口:
          [root@localhost /]# netstat -lntup|grep svn
  tcp        0      0 :::3690                     :::*                        LISTEN      4272/svnserve   
          [root@localhost /]# lsof -i:3690
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
                svnserve 4272 root    3u  IPv6  12165      0t0  TCP *:svn (LISTEN)    
5.4 建立项目的版本库
      创建一个新的subversion 项目sadoc
        [root@localhost /]# svnadmin --help   命令使用
        [root@localhost /]# svnadmin help create  命令帮助
        
      创建sadoc 版本库执行命令:  svnadmin create /application/svndata/sadoc
         [root@localhost /]# tree  /application/svndata/sadoc   查看生成的文件
            /application/svndata/sadoc
            |-- README.txt
            |-- conf
            |   |-- authz
            |   |-- passwd
            |   `-- svnserve.conf
            |-- db
            |   |-- current
            |   |-- format
            |   |-- fs-type
            |   |-- fsfs.conf
            |   |-- min-unpacked-rev
            |   |-- rep-cache.db
            |   |-- revprops
            |   |   `-- 0
            |   |       `-- 0
            |   |-- revs
            |   |   `-- 0
            |   |       `-- 0
            |   |-- transactions
            |   |-- txn-current
            |   |-- txn-current-lock
            |   |-- txn-protorevs
            |   |-- uuid
            |   `-- write-lock
            |-- format
            |-- hooks
            |   |-- post-commit.tmpl
            |   |-- post-lock.tmpl
            |   |-- post-revprop-change.tmpl
            |   |-- post-unlock.tmpl
            |   |-- pre-commit.tmpl
            |   |-- pre-lock.tmpl
            |   |-- pre-revprop-change.tmpl
            |   |-- pre-unlock.tmpl
            |   `-- start-commit.tmpl
            `-- locks
                |-- db-logs.lock
                `-- db.lock
5.5 调整svn配置文件及权限文件
5.5.1  配置允许用户oldboy读写访问
           [root@localhost /]# cd /application/svndata/sadoc/conf/
       [root@localhost conf]# ll
               total 12
               -rw-r--r-- 1 root root 1080 Aug 31 17:40 authz 权限管理文件
               -rw-r--r-- 1 root root  309 Aug 31 17:40 passwd  用户密码 文件
               -rw-r--r-- 1 root root 2279 Aug 31 17:40 svnserve.conf  主配置文件
           [root@localhost conf]# cp svnserve.conf svnserve.conf.ori 备份主配置文件  
           修改主配置文件
           [root@localhost conf]# diff svnserve.conf.ori svnserve.conf
               12,13c12,13
               < # anon-access = read
               < # auth-access = write
               ---
               > anon-access = none
               > auth-access = write
               20c20
               < # password-db = passwd
               ---
               > password-db =  /application/svnpasswd/passwd
               27c27
               < # authz-db = authz
                ---
               > authz-db = /application/svnpasswd/authz
   #可以使用sed 批量修改
  [root@localhost conf]# cp authz passwd /application/svnpasswd/   将模板文件拷贝过去
          [root@localhost conf]# cd /application/svnpasswd/
          [root@localhost conf]# cd /application/svnpasswd/
[root@localhost svnpasswd]# chmod 700 *
          [root@localhost svnpasswd]# ll
          total 8
          -rwx------ 1 root root 1080 Aug 31 17:54 authz
          -rwx------ 1 root root  309 Aug 31 17:54 passwd  
  配置文件
          [root@localhost svnpasswd]# egrep -v  "#" passwd   添加一个oldboy用户密码为oldboy123
 
          [users]
          oldboy = oldboy123
          [root@localhost svnpasswd]# egrep -v "#" authz

          [aliases]

          [groups]


          sagroup = oldboy,oldboy01
          [sadoc:/]
      @sagroup = r
          oldboy = rw
5.5.2 auth 文件详解
          [<版本库>:/项目/目录]
          @<用户组名> = <权限>
    <用户> = <权限>
          提示:
           1. 等号前为svn账号,等号后为svn密码,密码是明文密码,注意密码权限
           2. 更改svnserver.conf 时,需要重启svn,更改authz,passwd文件时不需要重启svn服务
5.6 重启svn  
           [root@localhost svnpasswd]# ps -ef|grep svn
root      4272     1  0 17:32 ?        00:00:00 svnserve -d -r /application/svndata
           root     14100  4119  0 18:20 pts/0    00:00:00 grep svn
           [root@localhost svnpasswd]# kill 4272
           [root@localhost svnpasswd]# ps -ef|grep svn
           root     14104  4119  0 18:20 pts/0    00:00:00 grep svn
[root@localhost svnpasswd]# svnserve -d -r /application/svndata
5.7  windows客户端软件测试
http://tortoisesvn.net/downloads.html 下载svn客户端软件
安装好客户端之后,在桌面建立一个svndata的文件夹选择svndata文件夹,选择checkout
   
 
点击ok,输入用户名和密码就 可以提交和下载文件
             
这里的at revision 2 指的是版本2
设置成功之后文件夹的变化
 
         
其他常用客户端命令查看
    

Setings设置一些客户端选项或者清除客户端保留的用户名以及密码

5.8  Linux客户端测试                 
    linux客户端命令测试
        [root@wx svndata]# svn --help
        Available subcommands:
           add
           blame (praise, annotate, ann)
           cat
           changelist (cl)
           checkout (co)
           cleanup
           commit (ci)
           copy (cp)
           delete (del, remove, rm)
           diff (di)
           export
           help (?, h)
           import
           info
           list (ls)
           lock
           log
           merge
           mergeinfo
           mkdir
           move (mv, rename, ren)
           propdel (pdel, pd)
           propedit (pedit, pe)
           propget (pget, pg)
           proplist (plist, pl)
           propset (pset, ps)
           resolve
           resolved
           revert
           status (stat, st)
           switch (sw)
           unlock
           update (up)

5.9  svn服务器下载
 [root@wx svndata]# svn co svn://20.0.0.89/sadoc  /data/  --username=oldboy --password=oldboy123

        -----------------------------------------------------------------------
        ATTENTION!  Your password for authentication realm:

        <svn://20.0.0.89:3690> 11ecfd06-8f00-4d65-b750-b2fdaec4d91c

        can only be stored to disk unencrypted!  You are advised to configure
        your system so that Subversion can store passwords encrypted, if
        possible.  See the documentation for details.

        You can avoid future appearances of this warning by setting the value
        of the ‘store-plaintext-passwords‘ option to either ‘yes‘ or ‘no‘ in
        ‘/root/.subversion/servers‘.
        -----------------------------------------------------------------------
        Store password unencrypted (yes/no)? yes  #如果第一次选择保存密码之后,往后下载的时候不需要再输入用户名和密码
        Checked out revision 2.
        [root@wx svndata]# svn co svn://20.0.0.89/sadoc  /data/  --username=oldboy --password=oldboy123
            A    /data/test
            Checked out revision 3.
            [root@wx svndata]# ll /data/
            total 4
            drwxr-xr-x. 3 root root 4096 Sep  1 04:30 test
        
        [root@wx svndata]# svn co svn://20.0.0.89/sadoc  /data/
            D    /data/test
            Checked out revision 4.
            [root@wx svndata]# ll /data/
            total 0
            

5.10    svn客户端查看服务器数据:
         [root@wx svndata]# svn co svn://20.0.0.89/sadoc  /data/
        A    /data/新建文本文档.txt
        Checked out revision 5.
        [root@wx svndata]# echo $LANG
        en_US.UTF-8
        [root@wx svndata]# ll /data/
        total 0
        -rw-r--r--. 1 root root 0 Sep  1 04:38 新建文本文档.txt
        [root@wx svndata]# svn ls svn://20.0.0.89/sadoc     查看远端svn的数据
        新建文本文档.txt
        
5.11从本地提交数据到svn  
 在/data 下创建多个文件然后上传到svn服务器
        [root@wx data]# touch {a..g}
        [root@wx data]# ls
        a  b  c  d  e  f  g
        [root@wx data]# ll
        total 0
        -rw-r--r--. 1 root root 0 Sep  1 04:41 a
        -rw-r--r--. 1 root root 0 Sep  1 04:41 b
        -rw-r--r--. 1 root root 0 Sep  1 04:41 c
        -rw-r--r--. 1 root root 0 Sep  1 04:41 d
        -rw-r--r--. 1 root root 0 Sep  1 04:41 e
        -rw-r--r--. 1 root root 0 Sep  1 04:41 f
        -rw-r--r--. 1 root root 0 Sep  1 04:41 g
        [root@wx data]#
 [root@wx data]# pwd
         /data
        [root@wx data]# svn add a b c d e f g
            A         a
            A         b
            A         c
            A         d
            A         e
            A         f
            A         g
        [root@wx data]# svn ci -m "svn ci data"  提交数据需要一下说明“ 说明信息”
        Adding         a
        Adding         b
        Adding         c
        Adding         d
        Adding         e
        Adding         f
        Adding         g
        Transmitting file data .......

        
        
        
5.12 导入svn原始目录树
        svn一般有三个目录 (开发人员的习惯)
        trunk   主干
        branch  分支
        tag     标记
         mkdir -p /svn/trunk  /svn/branch  /svn/tag
        [root@wx data]# ll /svn/
        total 12
        drwxr-xr-x. 2 root root 4096 Sep  1 04:49 branch
        drwxr-xr-x. 2 root root 4096 Sep  1 04:49 tag
        drwxr-xr-x. 2 root root 4096 Sep  1 04:49 trunk
        
5.13 导入到svn库里面去
         可以使用svn也可以使用svn import /svn file:///application/svndata/sadoc -m "import" (file本地svn服务器使用)
         [root@wx data]# svn import /svn svn://20.0.0.89/sadoc -m "import"
        Adding         /svn/trunk
        Adding         /svn/tag
        Adding         /svn/branch

        Committed revision 7.
5.14  svn copy命令使用
        将 /svn 下的目录导入到 sadoc 项目工程中    
        开发需要开发的时候将分支拷贝为多个分支然后进行开发,最后再进行提交
        [root@wx data]# svn copy svn://20.0.0.89/sadoc/trunk svn://20.0.0.89/sadoc/branch/branch_cms_0831 -m "create a branch oldboy modifiy "   --username=oldboy --password=oldboy123

     Committed revision 8.
        
         [root@wx data]# svn ls svn://20.0.0.89/sadoc/
            a
            b
            branch/
            c
            d
            e
            f
            g
            tag/
            trunk/
            新建文本文档.txt
            [root@wx data]# svn ls svn://20.0.0.89/sadoc/branch
            branch_cms_0831/    #copy的分支,开发人员开始下载进行开发工作   
            
            然后我们可以在
            [root@wx data]# cat /application/svnpasswd/authz |grep -v "#"

            [aliases]

            [groups]
            sa_group= oldboy,haha

            [sadoc:/]
            @sa_group = rw
            [sadoc:/] 版本库的的目录可以详细到具体目录。
            开发的时候开发只需要下载分支然后进行修改,修改之后再提交
            
六、svn的钩子  
            
        钩子脚本的具体写法就是操作系统中shell 脚本程序的写法,可根据自己所在的操作系统和shell程序进行相应的开发钩子脚本就是被某些版本库事件触发的程序,例如:创建新版本或修改未被版本控制的属性,每个钩子都能掌管足够的信息 来了解发生什么事件,操作对象是什么以及触发事件用户的账号
            根据钩子的输出或者返回状态,钩子程序能够以某种方式控制该动作继续执行,停止或者挂起。
6.1 钩子模板
            默认情况下,钩子的子目录包含各种版本库钩子模板
            [root@wx data]# ls -l /application/svndata/sadoc/hooks/
                total 36
                -rw-r--r--. 1 root root 1977 Sep  1 04:11 post-commit.tmpl  提交模板
                -rw-r--r--. 1 root root 1638 Sep  1 04:11 post-lock.tmpl   锁模板
                -rw-r--r--. 1 root root 2289 Sep  1 04:11 post-revprop-change.tmpl
                -rw-r--r--. 1 root root 1567 Sep  1 04:11 post-unlock.tmpl
                -rw-r--r--. 1 root root 3426 Sep  1 04:11 pre-commit.tmpl
                -rw-r--r--. 1 root root 2410 Sep  1 04:11 pre-lock.tmpl
                -rw-r--r--. 1 root root 2786 Sep  1 04:11 pre-revprop-change.tmpl
                -rw-r--r--. 1 root root 2100 Sep  1 04:11 pre-unlock.tmpl
                -rw-r--r--. 1 root root 2780 Sep  1 04:11 start-commit.tmpl
             一个版本一个模板
            
            需要使用钩子需要将扩展名.tmpl去掉就可以使用
            
6.2 常用钩子脚本  
            钩子脚本                                      说明=
            post-commit             在提交完成成功创建版本之后执行该钩子, 提交已经完成,不可更改,因此,本脚本
                                    的返回值被忽略,提交完成时触发事务
            
            pre-commit               提交完成前触发执行该脚本
            
            start-commit              在客户端还没有向服务器提交数据之前,即没有建立subversion  transaction(缩写为txn)之前
                                       执行该脚本(提交前触发事务)
                                       

6.3 svn 钩子生产应用
            pre-commit
             1. 限制上传文件扩展名及大小,控制提交要输入的信息等。
            post-commit
              svn更新自动周知,msn,邮件或短信周知。
              svn 更新触发checkout 程序,然后实时rsync 推送到服务器等
              
            
6.4    svn 钩子同步应用实战
            rsync与svn 钩子结合实现数据实时同步某企业小案例
            1. 建立同步WEB目录
            [root@wx data]# mkdir /www
            [root@wx data]# ll /www/
            total 0
            [root@wx data]#
                        
            [root@wx /]# svn co svn://20.0.0.89/sadoc /www/ --username=oldboy --password=oldboy123
            A    /www/test
            A    /www/a
            A    /www/b
            A    /www/新建文本文档.txt
            A    /www/c
            A    /www/d
            A    /www/trunk
            A    /www/e
            A    /www/www
            A    /www/abc
            A    /www/f
            A    /www/g
            A    /www/abcd
            A    /www/tag
            A    /www/branch
            A    /www/branch/branch_cms_0831
            Checked out revision 12.
            [root@wx /]# ll www/
            total 12
            -rw-r--r--. 1 root root    0 Sep  1 06:58 a
            -rw-r--r--. 1 root root    0 Sep  1 06:58 abc
            -rw-r--r--. 1 root root    0 Sep  1 06:58 abcd
            -rw-r--r--. 1 root root    0 Sep  1 06:58 b
            drwxr-xr-x. 4 root root 4096 Sep  1 06:58 branch
            -rw-r--r--. 1 root root    0 Sep  1 06:58 c
            -rw-r--r--. 1 root root    0 Sep  1 06:58 d
            -rw-r--r--. 1 root root    0 Sep  1 06:58 e
            -rw-r--r--. 1 root root    0 Sep  1 06:58 f
            -rw-r--r--. 1 root root    0 Sep  1 06:58 g
            drwxr-xr-x. 3 root root 4096 Sep  1 06:58 tag
            -rw-r--r--. 1 root root    0 Sep  1 06:58 test
            drwxr-xr-x. 3 root root 4096 Sep  1 06:58 trunk
            -rw-r--r--. 1 root root    0 Sep  1 06:58 www
            -rw-r--r--. 1 root root    0 Sep  1 06:58 新建文本文档.txt
            [root@wx data]# cd /application/svndata/sadoc/hooks/
            [root@wx hooks]# ll
            total 36
            -rw-r--r--. 1 root root 1977 Sep  1 04:11 post-commit.tmpl
            -rw-r--r--. 1 root root 1638 Sep  1 04:11 post-lock.tmpl
            -rw-r--r--. 1 root root 2289 Sep  1 04:11 post-revprop-change.tmpl
            -rw-r--r--. 1 root root 1567 Sep  1 04:11 post-unlock.tmpl
            -rw-r--r--. 1 root root 3426 Sep  1 04:11 pre-commit.tmpl
            -rw-r--r--. 1 root root 2410 Sep  1 04:11 pre-lock.tmpl
            -rw-r--r--. 1 root root 2786 Sep  1 04:11 pre-revprop-change.tmpl
            -rw-r--r--. 1 root root 2100 Sep  1 04:11 pre-unlock.tmpl
            -rw-r--r--. 1 root root 2780 Sep  1 04:11 start-commit.tmpl
            [root@wx hooks]#
            
            [root@wx hooks]# cp post-commit.tmpl post-commit
            [root@wx hooks]# grep -v "#"  post-commit
            REPOS="$1"
            REV="$2"

            LOGPATH="/app/log"
            [ ! -d ${LOGPATH} ]  && mkdir ${LOGPATH}  -p
            #update content from svn
            SVN=/usr/bin/svn
            $SVN  update --username oldboy --password oldboy123  /www
            if [ $? -eq 0  ];then
              /usr/bin/rsync -az  --delete  /www   /tmp
            fi

            [root@wx hooks]# chmod 755 post-commit
            
            提交几个文件测试一下
            [root@wx data]# touch abc
            [root@wx data]# svn add abc
            A         abc
            [root@wx data]# svn ci -m "add is abc "
            Adding         abc
            Transmitting file data .
            Committed revision 10.
            [root@wx data]# touch oldboyabc
            [root@wx data]# svn add oldboyabc
            A         oldboyabc
            [root@wx data]# svn ci -m "add is oldboyabc"
            Adding         oldboyabc
            Transmitting file data .
            Committed revision 18.
            [root@wx data]# ll /www/
            total 12
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 a
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 abc
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 abcd
            -rw-r--r--. 1 root root    0 Sep  1 07:29 abcdgs.txt
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 b
            drwxr-xr-x. 4 root root 4096 Sep  1 06:58 branch
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 c
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 d
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 e
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 f
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 g
            -rw-r--r--. 1 root root    0 Sep  1 07:29 oldboy
            -rw-r--r--. 1 root root    0 Sep  1 07:29 oldboy123
            -rw-r--r--. 1 root root    0 Sep  1 07:35 oldboyabc
            drwxr-xr-x. 3 root root 4096 Sep  1 06:58 tag
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 test
            drwxr-xr-x. 3 root root 4096 Sep  1 06:58 trunk
            -rw-r--r--. 1 root root    0 Sep  1 07:29 web
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 www
            [root@wx data]# ll /tmp/
            total 4
            drwxr-xr-x. 6 root root 4096 Sep  1 07:35 www
            [root@wx data]# ll /tmp/www/
            total 12
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 a
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 abc
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 abcd
            -rw-r--r--. 1 root root    0 Sep  1 07:29 abcdgs.txt
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 b
            drwxr-xr-x. 4 root root 4096 Sep  1 06:58 branch
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 c
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 d
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 e
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 f
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 g
            -rw-r--r--. 1 root root    0 Sep  1 07:29 oldboy
            -rw-r--r--. 1 root root    0 Sep  1 07:29 oldboy123
            -rw-r--r--. 1 root root    0 Sep  1 07:35 oldboyabc
            drwxr-xr-x. 3 root root 4096 Sep  1 06:58 tag
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 test
            drwxr-xr-x. 3 root root 4096 Sep  1 06:58 trunk
            -rw-r--r--. 1 root root    0 Sep  1 07:29 web
            -rwxr-xr-x. 1 root root    0 Sep  1 06:58 www
            
6.5 钩子限制上传文件大小
            [root@wx hooks]# cat post-commit|grep -v "#"
            REPOS="$1"
            REV="$2"

            MAX_SIZE=5242880

            FILEER=‘\.(zip|rar|o|obj|tar|gz)$‘
            SVNLOOK=/usr/bin/svnlook
            LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" |wc -c`
            if [ "$LOGMSG"  -lt 9 ];
            then
              echo -e "nlog message cann‘t be empty! you must input more than 8 chars as comment!." !>&2
            exit 1
            fi
        [root@wx data]# svn ci -m "add is oldboytar"
        Adding         oldboytar
        Transmitting file data .
        Committed revision 19.

        Warning: post-commit hook failed (exit code 1) with output:
        svnlook: No such transaction
        nlog message cann‘t be empty! you must input more than 8 chars as comment!. !
        提交失败,需要添加超过8个字符串提交
        [root@wx data]# svn ci -m "add is oldboytar is pm bj"   提交成功



本文出自 “小菜鸟” 博客,请务必保留此出处http://xiaocainiaox.blog.51cto.com/4484443/1697877

svn学习之一(svn独立服务器搭建)svn钩子了解

标签:

原文地址:http://xiaocainiaox.blog.51cto.com/4484443/1697877

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!