`
sambafeng
  • 浏览: 61544 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

VisualSvn Server的钩子脚本

 
阅读更多
VisualSvn Server是windows下免费的源代码控制管理工具,最近闲得蛋疼,特地写了如下钩子脚本,供大家使用.
#=================precommit===========================================
@echo off
setlocal
set REPOS=%1
set REV=%2
set svnlook="D:\Program Files\VisualSVN Server\bin\svnlook.exe"
rem check that logmessage contains at least 10 characters
%svnlook% log "%REPOS%" -t "%REV%" | findstr ".........." > nul
if %errorlevel% gtr 0 goto err
echo 提交的log信息要大于10个字符,请重新提交! 1>&2
exit 0
:err
echo 提交被阻止,请填写关于此次修改的log信息(需大于10个字符),然后再重新提交! 1>&2
exit 1
#=================post commit==============================================
@echo off
setlocal
set REPOS=%1
set REV=%2
set poster=yfzheng@ctrip.com
set accepter=yfzheng@ctrip.com
set mailServer=smtp-server svr557hp380.cn1.global.ctrip.com
"%VISUALSVN_SERVER%\bin\VisualSVNServerHooks.exe" ^
commit-notification "%REPOS%" -r "%REV%" ^
--from %poster% --to %accepter% ^
--%mailServer% ^
--encoding utf-8

#=================pre-revision property-change==============================================
@ECHO OFF
REM 限制日志文件的个数采用修改项目属性的tsvn:logminsize,不在脚本中限制
REM 参数
set REPOS=%1
set REV=%2
set USER=%3
set PROPNAME=%4
set ACTION=%5
set svnlook="D:\Program Files\VisualSVN Server\bin\svnlook.exe"
REM 设置超级用户,超级用户可以修改其他人的日志,其他人只能修改自己的日志
set superUser=yfzheng
REM 只允许日志svn:log的修改
if /I not '%PROPNAME%'=='svn:log' goto ERROR_PROPNAME
REM 只允许修改日志,增加、删除等操作不允许
if /I not '%ACTION%'=='M' goto ERROR_ACTION
REM 只允许用户修改自己的日志
for /f  "usebackq" %%k in   (`%svnlook% author %REPOS% -r %REV%`) do @set var=%%k
set rightUser=0
if "%USER%" == "%superUser%"  set rightUser=1
if "%USER%" == "%var%" set rightUser=1
if %rightUser% == 0 goto ERROR_USER
goto :SUCCESS_EXIT
:ERROR_USER
echo 只允许用户修改自己的日志 >&2
goto ERROR_EXIT
:ERROR_PROPNAME
echo 只有日志信息能被修改 >&2
goto ERROR_EXIT
:ERROR_ACTION
echo 只允许修改日志,不允许增加、删除等操作 >&2
goto ERROR_EXIT
:ERROR_EXIT
exit 1
:SUCCESS_EXIT
exit 0
#=================post-revision property-change==============================================
@echo off
setlocal
set REPOS=%1
set REV=%2
set USER=%3
set PROPNAME=%4
set ACTION=%5
set poster=%USER%
set accepter=sambafeng@hotmail.com
set mailServer=smtp-server svr557hp380.cn1.global.ctrip.com
"%VISUALSVN_SERVER%\bin\VisualSVNServerHooks.exe" ^
commit-notification "%REPOS%" -r "%REV%" -m %PROPNAME% ^
--from %poster% --to %accepter% ^
--%mailServer% ^
--encoding utf-8

linux下的SVN钩子
#========pre-commit==用纯shell方法================


#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[^[:space:]]" | wc -c`
if [ "$LOGMSG" -lt 5 ];
then
  echo "Log message cann't be empty! you must input more than 5 chars as comment!." 1>&2
  exit 1
fi
exit 0
#=======post-commit====================


#!/bin/bash
REPOS=$1
REV=$2
SENDTO=sambafeng@163.com
SENDFROM=sambafeng@163.com
LIMITDIFF=200
CHANGELOG=`svnlook log -r $REV $REPOS`
AUTHOR=`svnlook author -r $REV $REPOS`
CHANGED=`svnlook changed -r $REV $REPOS`
DIFF=`svnlook diff -r $REV $REPOS | head --lines=$LIMITDIFF`
DATE=`date`
TMPFILE=/tmp/svn$REV-$RANDOM.message
SUBJECT="SVNCommit ($AUTHOR) $REPOS [$REV]"
echo "-------------------- SVN Commit Notification --------------------
Repository: $REPOS
Revision:   $REV
Author:     $AUTHOR
Date:       $DATE
Log Message:
$CHANGELOG
Changes:
-----------------------------------------------------------------
$CHANGED
-----------------------------------------------------------------
Diff: (only first $LIMITDIFF lines shown)
-----------------------------------------------------------------
$DIFF
" > $TMPFILE
# Send email
cat $TMPFILE | mail -a "From: $SENDFROM" -s "$SUBJECT" "$SENDTO"
# Cleanup
rm $TMPFILE

#=======post-commit======用svnnotify方法===============


REPOS="$1"
REV="$2"

/usr/bin/svnnotify --repos-path "$REPOS" \
        --revision $REV \
        -f "sambafeng@163.com" \
        -t "sambafeng@163.com" \
        --smtp "smtp.163.com" \
        --smtp-user "sambafeng@163.com" \
        --smtp-pass "" \
        --smtp-authtype "LOGIN PLAIN"
分享到:
评论

相关推荐

    VisualSVN Server仓库镜像同步脚本

    本脚本可在一台Windows备份服务器上创建某个VisualSVN Server的镜像仓库,实现如下功能: 1. 导入源SVN服务器上的已有仓库和数据到备份服务器 2. 通过定时执行脚本,把源SVN服务器的新增提交同步到备份服务器 备份...

    VisualSVN Server 3.5.4 破解补丁

    VisualSVN Server allows you to easily install and manage a fully-functional Subversion server on the Windows platform. Thanks to its robustness, unbeatable usability and unique enterprise-grade ...

    VisualSvn Server安装及配置

    1 、VisualSvn Server VisualSvn Server是免费的,而VisualSvn是收费的。VisualSvn是Svn的客户端,和Visual Studio集成在一起,但是不免费,使用AnkhSvn(VS2008插件)来代替VisualSvn。使用 VisualSvn Server是...

    VisualSVN Server 4.0.0 企业破解版

    VisualSVN Server可搭建64位Windows环境SVN服务器端,4.0.0版本自带用户通过网页自行更改密码的功能。免费版限15个用户,企业版无限用户。

    VisualSVN Server增加在线修改用户密码的功能

    2、修改conf目录下的httpd-custom.conf文件, 把“ScriptAlias”一行后面的路径修改为你的机器上的VisualSVN Server的实际路径; ------------------------- LoadModule alias_module bin/mod_alias.so LoadModule ...

    visualsvn server3.5.3安装包+破解+web密码修改

    visualsvn server3.5.3安装包 visualsvn server3.5.3破解 用户在web上修改自己密码 在win7 及 winserver2008上可运行

    VisualSVN Server全备份脚本

    VisualSVN Server全备份脚本,只需更改备份路径,即可使用;主、备服务器切换很方便。

    VisualSVN Server+注册机

    VisualSVN.Server.Enterprise.Edition.v2.7.2.Incl.Keymaker.and.Patch

    VisualSVN Server 2.0.8 汉化包

    VisualSVN Server是个极方便安装、配置的SVN集成服务器软件。用来与开发端的TortoiseSVN配合使用组成版控开发体系是最好的选择。 2.0.8版本内包含了Subversion 1.6.6(即SVN),Apache 2.2.13 VisualSVN Server目前...

    VisualSVN Server 3.9.2 增加在线修改用户密码的功能.zip

    把上面几个文件夹复制到 VisualSVN Server的安装路径,默认C盘的话为"C:\Program Files\VisualSVN Server" 备注:如果在SVN网页版的,修改密码出现 "用户[xxxxxxx]密码修改失败,返回值为-1073741515,请和管理员...

    VisualSVN-4.0.5 VisualSVN Server 4.10

    VisualSVN-4.0.5 VisualSVN Server 4.10

    VisualSVN Server Web管理工具

    VisualSVN Server只提供控制台的管理,建库,建用户,权限什么的都得在服务器上操作,写了个web管理,用了ext界面,有部分功能还在完善当中

    VisualSVN Server 4.0以上.rar

    VisualSVN Server集成了Subversion和Apache,安装的时候Svn Server已经封装为windows service(如果改变VisualSVN Server的URL的时候,VisualSVN Server会自动重启服务,非常方便),Apache服务器的配置也只是在图像...

    VisualSVN + VisualSVN Server2.5.5破解版(兼容32位、64位)

    VisualSVN + VisualSVN Server2.5.5破解版(兼容32位、64位) 一、VisualSVN Server (服务器端) http://www.visualsvn.com/files/VisualSVN-Server-2.5.5.msi 注册机的使用方法:把keygen.exe拷贝到安装文件夹下...

    免配置 VisualSVN Server 2.1.10

    VisualSVN Server是一个集成的svn服务端工具,并且包含mmc管理工具。是一款svn服务端不可多得的好工具。你可以先安装好VisualSVN Server后,运行VisualSVN Server Manger,然后创建新的代码库,并设置一下安全性能,...

    VisualSVN Server的配置和使用方法

    VisualSVN Server的配置和使用方法

    【精华】 VisualSVN-Server

    为什么要用VisualSVN Server,而不用Subversion? SVN 分为服务端和客户端,就服务端而言分为 Subversion和VisualSVN Server 因为如果直接使用Subversion,那么在Windows 系统上,要想让它随系统启动,就要封装SVN...

    VisualSVN Server v2.5.2 patch

    CSDN上太多VisualSVN Server v2.5.2 crack,一个个都是些大一转的玩意,上传个正经可用的。 解压使用前需关闭杀毒软件及木马查杀软件, Mcafee8.7实测确保无毒。 所有资源来自网络,仅供个人测试使用,请支持正版 ...

    [保真]visualsvn server 2.5.1 企业版汉化注册

    visualsvn server 2.5.1... ScriptAlias /cgi-bin/ "C:/Program Files/VisualSVN Server/cgi-bin/" C:/Program Files/VisualSVN Server/cgi-bin/ 为你实际安装路径. 6 重启visualsvn server,填入注册码,升级成企业版,

    VisualSVN Server

    VisualSVN Server 方便快捷的建立SVN版本控制 SVN 1.5.2 服务器版,可以结合TortoiseSVN 客户端使用 方便的管理SVN目录、权限 不需要像以前版本一样手工配置文本文件了,方便了很多

Global site tag (gtag.js) - Google Analytics