您的位置:首页 > 其它

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

2015-09-24 16:04 429 查看
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" 提交成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: