SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1353|回复: 3

[原创] Hook确保上传文件大小不超过限制,

[复制链接]
发表于 2018-5-18 16:54:29 | 显示全部楼层 |阅读模式
  1. REM 随便写的脚本,有可能不严谨,生产环境要谨慎使用,需要把svnlook所在目录纳入到环境变量才可以% @7 g7 w& {' ~0 k) v8 Z5 e
  2. REM MAX_SIZE是用来设置大小上限的,单位Byte: |% m' {* F- @7 h$ y' ~
  3. REM Bug:如果直接从客户端改名的话也会报超大小限制,没再多想,大家可以自己研究下。
    2 F4 r, ~' b7 \  e& W7 A
  4. @echo off
    1 N; b8 i6 @6 _! A. |
  5. setlocal enabledelayedexpansion
    : M( @) f- r6 f! m
  6. set REPO=%1
    * S+ P8 N7 W! a
  7. set TXN=%2
    ) t% k( ^6 C$ f" V, K" o
  8. set MAX_SIZE=52428803 }7 i8 Y- z, N3 s$ ~( ?& z) g) e
  9. for /f "delims=" %%a in ('svnlook changed -t %TXN% %REPO%') do (
    7 E- j# f( f- K( ?. S
  10.     set var=%%a
    ' W' U' K" x$ }
  11.         for /f %%i in ('svnlook filesize -t %TXN% %REPO% !var:~4!') do (  x) W: _1 F! E6 v
  12.                 if %%i gtr %MAX_SIZE% (4 c& ]% P" S# m; h- A
  13.                         set /a size=%%i/1024  q5 R! Q: K& C$ \% z' a
  14.                         echo ### Uploading file oversize. File: !var:~4! Size: !size!KB ### 1>&2* d" E- X( z8 G/ N
  15.                         exit 1* W: }& @4 _! e* |. W; O' [
  16.                 )
    " S; T( u" _! \* ]
  17.         ), |  t; @8 K$ `7 w0 E
  18. )) e$ Y7 l& Z6 J/ ~9 P2 {
  19. exit 0  u1 V, U, h! b8 p+ l  f
复制代码
' l1 l- u4 \3 s6 p* B3 _' c7 N. f
发表于 2018-5-25 16:21:41 | 显示全部楼层
很多脚本上的MAX_SIZE=10240000
0 t7 z) v2 ?  ?$ c% O我试了,超过10MB照样可以上传
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 16:51:37 | 显示全部楼层
本帖最后由 yxhink 于 2018-5-25 16:53 编辑 1 R2 [! g  Z6 |# ~- j, |
fish86 发表于 2018-5-25 16:21
* T7 l* K$ a5 L  H很多脚本上的MAX_SIZE=10240000( F" V- d* Q: _) R0 @; I+ g+ k+ o
我试了,超过10MB照样可以上传
我直接在环境变量里面设置了svn的bin目录,没有设置的话可能需要修改,我在我的机器上试了一下客户端和命令行可以add 但是不可以commit,你的脚本是如何设置的?发来看下如何
! k0 P0 l7 A% L. w
回复 支持 反对

使用道具 举报

发表于 2018-5-30 11:12:46 | 显示全部楼层
本帖最后由 fish86 于 2018-6-6 12:44 编辑 ; @3 o5 V$ [% I2 T; C) @$ [

( n9 @  H7 S1 }+ V我是在linux下8 {. o7 J, U' Q! S: F
#!/bin/sh* O4 R3 x" g8 w# C8 u8 P# x
REPOS="$1"% z* O$ o& ]: |7 p* z
TXN="$2"$ b# Z: ]3 ^1 Z% L
MAX_SIZE=10240000
" \( h$ w9 G: C* K2 |SVNLOOK=/usr/bin/svnlook
  B. u, ]8 s3 k6 b  I9 sfilesize=$($SVNLOOK cat -t $TXN $REPOS $f|wc -c)4 U. Y9 |* W% b0 A, [
if [ "$filesize" -gt "$MAX_SIZE" ]; y+ g# a+ J9 ?
then2 v) c( M4 w8 M- w% p8 m
echo "上传的文件请不要超过13M)" >&2% ^) g+ n3 G( b9 e& Y: y
exit 14 ?- z1 M0 X9 `+ ^7 _5 E
fi
% v; ?4 m! z) O1 x( c, Pdone9 u% G. [2 q8 ~) a) E
) ^  s+ A3 r' P$ Z; g2 H: d
exit 0
这个脚本有bug。请勿使用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

QQ|小黑屋|手机版|无图版|SCMLife.com ( 京ICP备06056490号-1 )

GMT+8, 2019-1-16 17:13 , Processed in 0.062969 second(s), 6 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

快速回复 返回顶部 返回列表