SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2106|回复: 3

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

[复制链接]
发表于 2018-5-18 16:54:29 | 显示全部楼层 |阅读模式
  1. REM 随便写的脚本,有可能不严谨,生产环境要谨慎使用,需要把svnlook所在目录纳入到环境变量才可以
    6 g2 M" C9 r2 G. y* f$ m
  2. REM MAX_SIZE是用来设置大小上限的,单位Byte
    * Z+ p/ @( D. ^: o4 ]& s( p$ Q
  3. REM Bug:如果直接从客户端改名的话也会报超大小限制,没再多想,大家可以自己研究下。
    % [' o: p5 d: H0 H2 Z* b
  4. @echo off
    2 t1 E$ `+ H6 |& ?
  5. setlocal enabledelayedexpansion+ T6 g% G7 W( e/ X% D8 x
  6. set REPO=%1
    , X. G5 I3 `6 y5 |
  7. set TXN=%29 C! q% a* p* c2 {: h
  8. set MAX_SIZE=5242880
    , |0 |( p5 v1 |* {# \
  9. for /f "delims=" %%a in ('svnlook changed -t %TXN% %REPO%') do (. h/ f) o, }& s/ S  ?8 ^" A7 Y
  10.     set var=%%a" j/ s! U; d; q7 X
  11.         for /f %%i in ('svnlook filesize -t %TXN% %REPO% !var:~4!') do (
    : [0 v6 I  ^% ?' Z0 o* h& ^
  12.                 if %%i gtr %MAX_SIZE% (
    0 P) o2 r  m9 T' W) }( m' P, q
  13.                         set /a size=%%i/1024& N3 O( @" r( k$ t
  14.                         echo ### Uploading file oversize. File: !var:~4! Size: !size!KB ### 1>&2( z0 S: @& i! q, Z8 G
  15.                         exit 1
    0 L) {* q! r; Z; I/ G! R; N
  16.                 )
    : x$ }* [/ i  C' U6 V9 s" g& o. a
  17.         )0 a, s; U+ X/ i, W' V0 S  i8 r1 y$ l
  18. )
    " ]  o/ H5 s2 S+ N
  19. exit 0
    + O/ {+ f8 U. x- _8 O8 x
复制代码
, {1 ^( i8 z. p* f7 S; k0 b
发表于 2018-5-25 16:21:41 | 显示全部楼层
很多脚本上的MAX_SIZE=10240000
, F1 w% m6 r) N& _- h- k1 R我试了,超过10MB照样可以上传
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 16:51:37 | 显示全部楼层
本帖最后由 yxhink 于 2018-5-25 16:53 编辑
1 N7 `* W. V3 L$ C% }! |* v
fish86 发表于 2018-5-25 16:21
. w  ?" m) Q  [很多脚本上的MAX_SIZE=10240000
, t* H& [# N, I9 z我试了,超过10MB照样可以上传
我直接在环境变量里面设置了svn的bin目录,没有设置的话可能需要修改,我在我的机器上试了一下客户端和命令行可以add 但是不可以commit,你的脚本是如何设置的?发来看下如何! R! \3 L( A' E
回复 支持 反对

使用道具 举报

发表于 2018-5-30 11:12:46 | 显示全部楼层
本帖最后由 fish86 于 2018-6-6 12:44 编辑 0 G3 F) P; t6 Y: A* Z* e
3 Z0 n3 F9 [8 W; B2 q- T; I" n
我是在linux下* x0 C3 ?$ R) M6 N# t: I2 x- S
#!/bin/sh8 n1 A& y1 v5 N* B2 `$ A
REPOS="$1"7 d0 S0 b3 ]. c6 R& v
TXN="$2"
) w* ?7 P0 |2 ~MAX_SIZE=10240000
% |2 X& u4 o$ c+ @SVNLOOK=/usr/bin/svnlook
5 n/ P9 H( Q5 G& x0 |filesize=$($SVNLOOK cat -t $TXN $REPOS $f|wc -c)' H) @' T# e7 K' L8 H
if [ "$filesize" -gt "$MAX_SIZE" ]
& m/ |. P% f) v! @then! |6 h9 h; x: ^- J0 J& j  ^: M+ I: n
echo "上传的文件请不要超过13M)" >&2
. q/ W3 d8 \* O' Y2 Xexit 1
7 e& w% C9 o  Pfi7 c/ ]/ ?" L4 @. D" Q
done. Q, L; V9 L2 i8 T: y" ~

: ~! x  \0 c) ^3 M5 ^1 Yexit 0
这个脚本有bug。请勿使用
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2019-7-17 07:34 , Processed in 0.054187 second(s), 7 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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