`
sambafeng
  • 浏览: 62728 次
  • 性别: 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主从同步备份.pdf

    8. 在主服务器上设置提交自动同步到从服务器的hook钩子脚本,命令为svnsync synchronize ***。 知识点三:解决VisualSVN Server主从同步备份中的权限问题 如果在VisualSVN Server主从同步备份过程中,主服务器一直...

    VisualSVN Server 及其配置和使用方法

    总结来说,VisualSVN Server是Windows环境下便捷的Subversion服务器解决方案,通过配置用户权限、启用SSL、定制钩子脚本等方式,可以满足团队协作开发的需求。熟悉这些配置和使用方法,将有助于提升开发效率和代码...

    VisualSVN-Server-4.3.4-x64.rar

    例如,当项目达到一定的稳定阶段,可以通过SVN的钩子脚本自动将代码推送到FTP服务器,实现快速部署。 此外,尽管VisualSVN Server主要运行在Windows环境下,但其与Linux服务器的集成也是可行的。通过安装SVN客户端...

    VisualSVN Server提交前必须写日志和修改以往日志出错解决办法

    也可以使用其他语言如Python、Perl或bash编写钩子脚本,根据团队的需求和偏好选择合适的实现方式。 5. **最佳实践** 保持良好的日志习惯对任何SVN用户来说都是重要的。日志应清晰、简洁,能够反映代码更改的主要...

    VisualSVN Server(SVN服务器)

    8. **插件扩展**: 支持各种Subversion插件,如钩子脚本,可进一步自定义和增强服务器功能。 **VisualSVN Server的配置与使用** 配置VisualSVN Server主要包括以下步骤: 1. 安装VisualSVN Server,选择安装路径和...

    VisualSVN Server

    2. 邮件通知:通过配置post-commit钩子脚本,可以在每次提交时自动发送邮件通知相关人员。 3. 备份与恢复:定期备份SVN仓库,防止数据丢失。VisualSVN Server提供了备份工具,也可以结合其他备份方案。 4. 性能...

    实现VisualSVNServer日志备注强制

    2. 创建钩子脚本:在VisualSVN Server的仓库目录下的hooks子目录下,创建一个名为`pre-commit.bat`的批处理文件。该文件应包含以下内容(示例使用Python编写): ```python @echo off setlocal set SVNLOOK="%...

    VisualSVN Server的配置和使用方法 图文

    仓库创建后,可以右键点击仓库,选择"Properties"进行高级配置,如设置权限、钩子脚本等。 - **设置用户和组**:在"Users"和"Groups"选项卡中,你可以添加、删除和管理用户及用户组。为用户分配权限,可以更好地...

    VisualSVN-Server-3.9.4-x64

    除此之外,VisualSVN Server还具有良好的扩展性,可以通过钩子脚本实现自定义操作,例如自动构建、代码质量检查等。这些功能让VisualSVN Server不仅是一个版本控制系统,还能成为整个开发流程中的重要组成部分。 ...

    SVN禁止删除和强制注释操作的钩子脚本

    在版本控制系统Subversion (SVN) 中,钩子脚本是一种强大的工具,允许管理员执行自定义操作或实施特定策略,如防止错误的提交操作。在本案例中,我们需要创建一个预提交(pre-commit)钩子脚本来实现两个功能:禁止...

    VisualSVN-Server-3.8.0-x64

    4. **钩子脚本**:服务器支持自定义钩子脚本,用于自动化处理如代码审核、自动构建等任务。 五、最佳实践 1. **定期备份**:为了防止数据丢失,应定期备份存储库,并测试恢复流程。 2. **权限规划**:根据团队结构...

    VisualSVN-Server-4.2.2-x64.zip

    7. 扩展性与维护:VisualSVN Server支持多种扩展,如通过钩子脚本实现自定义操作,或者与其他系统集成。定期更新确保了软件的安全性和新功能的引入,如4.2.2版本可能包含了性能提升、bug修复和新特性。 总之,...

    jira和visualsvn的安装及其集成说明

    这通常需要在Jira中配置SVN钩子脚本。 4. **访问与浏览** - 通过浏览器访问VisualSVN Server,可以查看版本库中的项目,与客户端的操作保持一致。 - Jira服务器配置完成后,可以在Web界面中管理项目,跟踪问题,...

    VisualSVN.v1.7keygen_setup.rar

    5. 配置SVN仓库,创建项目仓库,设置钩子脚本等自动化任务。 6. 部署客户端,如TortoiseSVN,以便开发人员可以进行版本控制操作。 在实际的软件开发环境中,VisualSVN Server与其他开发工具(如IDEs、构建系统等)...

    svn Server及配置方法

    通过钩子脚本,可以在代码提交时触发自动化测试和构建任务。 总结,VisualSVN Server是Windows环境下搭建SVN服务器的理想选择,其易于安装和配置的特点使得版本控制变得更加高效。通过合理的用户管理和权限设置,...

    svn服务器及其安装指南

    - 可以选择启用钩子脚本(Hooks),以便在提交时执行自动化任务。 4. **创建用户和权限**: - 在“Users”或“Groups”选项卡下,添加用户或用户组,分配相应的访问权限。 - 权限包括读取(Read)、写入(Write...

    svn工具合集

    “utils”文件可能包含一些辅助工具或脚本,这些工具通常用于帮助配置和管理SVN环境,例如设置钩子脚本(hook scripts),它们可以在执行特定操作(如提交)前后自动运行,以实现诸如代码格式检查、自动构建等任务。...

    visualSVN配置限制客户端提交时输入message最少字符数

    1. **创建或编辑钩子脚本**: - 在VisualSVN服务器管理界面中选择目标仓库。 - 进入“设置”>“钩子”,找到预提交(pre-commit)钩子并编辑。 - 将上述脚本复制粘贴到编辑器中,保存更改。 2. **测试与验证**:...

    SVN服务器搭建和配置.pdf

    Subversion(简称SVN)是一种广泛使用的版本控制系统,它允许团队成员协作开发项目,同时跟踪每个修改的历史记录。...随着对SVN的深入使用,你还可以探索更多高级功能,如钩子脚本、自动构建等,进一步提升工作效率。

    svn 服务器

    11. **钩子脚本**:SVN服务器可以配置钩子脚本,这些脚本在特定事件(如提交)发生时自动执行,可以用来执行自动化测试、代码质量检查等任务。 12. **跨平台**:尽管VisualSVN Server是Windows平台的,但SVN本身是...

Global site tag (gtag.js) - Google Analytics