SVN使用钩子强制提交日志和限制提交类型.docx_第1页
SVN使用钩子强制提交日志和限制提交类型.docx_第2页
SVN使用钩子强制提交日志和限制提交类型.docx_第3页
SVN使用钩子强制提交日志和限制提交类型.docx_第4页
SVN使用钩子强制提交日志和限制提交类型.docx_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SVN使用钩子强制提交日志和限制提交文件类型 Subversion本身有很好的扩展性,用户可以通过钩子实现一些自定义的功能。所谓钩子实际上是一种事件机制,当系统执行到某个特殊事件时,会触发我们预定义的动作,这样的特殊事件在Subversion里有很多。那么SVN的钩子有哪些呢?下面简单介绍下:【服务器钩子】1)锁定的2种pre-lock钩子在每次有人尝试锁定文件时执行。可以防止完全锁定,或者用来创建控制哪些用户可以锁定哪些路径的复杂策略。如果钩子发现已存在锁,也可以决定是否允许用户“窃取”这个锁。post-lock在路径锁定后执行。通常用来发送锁定事件邮件通知。2)解锁的2种pre-unlock钩子在某人企图删除一个文件上的钩子时发生。可以用来创建哪些用户可以解锁哪些文件的策略。制定解锁策略非常重要。如果用户 A 锁定了一个文件,允许用户B 打开这个锁?如果这个锁已经一周了呢?这种事情可以通过钩子决定并强制执行。post-unlock在一个或多个路径已经被解锁后执行。通常用来发送解锁事件通知邮件。3)提交的3种start-commit它在提交事务产生前已运行,通常用来判定一个用户是否有权提交。版本库传给该程序两个参数:到版本库的路径,和要进行提交的用户名。如果程序返回一个非零值,会在事务产生前停止该提交操作。如果钩子程序要在stderr中写入数据,它将排队送至客户端。pre-commit在事务完成提交之前运行,通常这个钩子是用来保护因为内容或位置(例如,你要求所有到一个特定分支的提交必须包括一个bug追踪的ticket号,或者是要求日志信息不为空)而不允许的提交。版本库传递两个参数到程序:版本库的路径和正在提交的事务名称,如果程序返回非零值,提交会失败,事务也会删除。如 果钩子程序在stderr中写入了数据,也会传递到客户端。post-commit它在事务完成后运行,创建一个新的修订版本。大多数人用这个钩子来发送关于提交的描述性电子邮件,或者作为版本库的备份。版本库传给程序两个参数:到版本库的路径和被创建的新的修订版本号。退出程序会被忽略。4)属性的2种pre-revprop-change因为Subversion的修订版本属性不是版本化的,对这类属性的修改(例如提交日志属性svn:log)将会永久覆盖以前的属性值。因为数据在此可能 丢失,所以Subversion提供了这种钩子(及与之对应的post-revprop-change),因此版本库管理员可用一些外部方法记录变化。作 为对丢失未版本化属性数据的防范,Subversion客户端不能远程修改修订版本属性,除非为你的版本库实现这个钩子。post-revprop-change这个钩子与pre-revprop-change对应。事实上,因为多疑的原因,只有存在pre-revprop-change时这个脚本才会执行。当这 两个钩子都存在时,post-revprop-change在修订版本属性被改变之后运行,通常用来发送包含新属性的email。版本库传递四个参数给该 钩子:到版本库的路径,属性存在的修订版本,经过校验的产生变化的用户名,和属性自身的名字。【客户端钩子】1)提交的start commit hookpre-commit hookpost-commit hook2)更新的start update hookpre-update hookpost-update hook如何使用SVN钩子强制提交日志和限制提交文件类型,需用到的是服务端钩子pre-commit,编写pre-commit.bat脚本如下:echo onrem SVN强制写注释的hooks脚本(Windows) rem 文件名是: pre-commit.bat,放到repository/hooks目录下 setlocal set SVN_BINDIR=C:Program Files (x86)VisualSVN Serverbin set REPOS=%1set TXN=%2cd %SVN_BINDIR%rem 检查是否提交日志 svnlook.exe log -t %TXN% %REPOS% | findstr . nul if %errorlevel% gtr 0 goto nolog rem 过滤文件类型 svnlook changed -t %TXN% %REPOS% | findstr class$ if %errorlevel% EQU 0 (goto SuffixError) svnlook changed -t %TXN% %REPOS% | findstr obj$ if %errorlevel% EQU 0 (goto SuffixError) svnlook changed -t %TXN% %REPOS% | findstr pdb$ if %errorlevel% EQU 0 (goto SuffixError) svnlook changed -t %TXN% %REPOS% | findstr idb$ if %errorlevel% EQU 0 (goto SuffixError) svnlook changed -t %TXN% %REPOS% | findstr manifest$ if %errorlevel% EQU 0 (goto SuffixError) svnlook changed -t %TXN% %REPOS% | findstr pch$ if %errorlevel% EQU 0 (goto SuffixError) svnlook changed -t %TXN% %REPOS% | findstr res$ if %errorlevel% EQU 0 (goto SuffixError) svnlook changed -t %TXN% %REPOS% | findstr exp$ if %errorlevel% EQU 0 (goto SuffixError) svnlook changed -t %TXN% %REPOS% | findstr ilk$ if %errorlevel% EQU 0 (goto SuffixError) svnlook changed -t %TXN% %REPOS% | findstr dep$ if %errorlevel% EQU 0 (goto SuffixError) svnlook changed -t %TXN% %REPOS% | findstr user$ if %errorlevel% EQU 0 (goto SuffixError) svnlook changed -t %TXN% %REPOS% | findstr suo$ if %errorlevel% EQU 0 (goto SuffixError) svnlook changed -t %TXN% %REPOS% | findstr ncb$ if %errorlevel% EQU 0 (goto SuffixError) svnlook changed -t %TXN% %REPOS% | findstr aps$ if %errorlevel% EQU 0 (goto SuffixError) exit 0 :SuffixError echo 请不要提交受限制的文件类型,如:class、obj、pdb、exp、ilk等等,谢谢! 1&2 exit 1 :nolog echo 日志(Message)是跟踪文档的重要信息,必须输入,不得输入无意义字符,长度不得小于10个字符。 1&2 exit 1 代码文件:简单说明下:SVN_BINDIR路径为你的SVN服务端程序所在的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论