有没有办法批量获取 SVN 每次form提交后获取返回值的 LogMessage

博客分类:
最近闲着没事,真的是很闲,居然要我去看看oracle数据库performance tuning,而且应为太闲,发现了effective oracle by design 的第八章了,是itpub 上的一位会员找tom ,要的,这个帖子在 http://www.itpub.net/.html , 超爆笑,具体请看我的另一篇文章
http://jjjava.iteye.com/admin/show/101065
因为公司的QA抱怨说速度很慢,我们只有Stage环境,生产环境不在我们这边,公司唯一的一个DBA 被派去做enhancement 了(汗) ,于是被指派研究如何在ant 脚本中显示svn 中的commit 消息.需求大概是这样的:
每次commit 的时候我们都会填写commit 的message , 比如 bug fix #98435 : &&bug description=""&& 或者类是 EN #19841 : &&xxxx enhancement=""&& , 然后我们的Stage 环境,就是大家可以公共访问的环境也同时提供给QA 做test 的环境,每天会更新两次早上8:30一次(这个时候大家还没有上班),然后下午5:00一次(我们6:00下班),8:30更新的时候公司没人,主要是针对昨天新做完的EN 和 5点过后check in
的bug , 5:00 的更新最要是让QA 做Bug verify (因为每天结束了,Team Leader 要把bug 发到美国那边去,美国那边就不用做重复的工作了) .我们以前有什么check in 都是Team Leader 发邮件给QA , 告诉他们那些bug check in 了,那些enhancement check in 了,然后全部都是靠搜集我们每天提交给他的work list , 然后他就凭脑袋记住然后发邮件给QA , 这样一个是容易出错,有可能是我们自己写的work list 出错了,比如写错了bug number ,另一个是Team Leader 忘记搜集某个人work list 了( 我们不用issue tracking 工具,因为美国那边认为不值得花钱买一个JIRA , 而且他们相信他们用手工的方式工作了多年也没有什么很大的问题,即使我们自己用开源的issue tracking 工具,他们也拒绝合作,强吧),所以就要我写个ant script 来自动在邮件里面列出更新了bug 或者enhancement.&/xxxx&&/bug&
现在的情况:
我们已经有ant script 可以执行 更新code
最后发邮件给所有人 , 我们更新的时候是用的windows 系统的task scheduler.
改变之后的状态:
update 的时候要有update log 和 更新的文件列表 , 邮件里面要有update.log 的消息
快速知道开发的状态.
用ant 脚本来更新code 都是用的svnkit 包,首先下载svnkit 包, 大概是以下几个文件,svnkit.jar
svnant.jar
SvnClientAdapter.jar
,svnjavahl.jar(文件名记得不是很清楚了),放到ant 的lib 目录下面, 具体参考http://subclipse.tigris.org/svnant.html
上面的文档.
我查了一下如何显示svn 的update log 方法 :
http://svnbook.red-bean.com/en/1.0/re15.html
你要先装svn 的客户端(运行这个例子的时候需要,不是你用svnkit 的时候需要)
svn log [PATH]
svn log URL [PATH...]
它有几个参数:
--revision (-r) REV
--quiet (-q)
--verbose (-v)
--targets FILENAME
--stop-on-copy
--incremental
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
svn log http://svn.red-bean.com/repos/test/foo.c
它会列出所有的foo.c 这个文件的所有修改历史
svn log http://svn.red-bean.com/repos
它会列出你整个项目的修改历史
svn log http://svn.red-bean.com/repos -r 14 &mylog.txt
svn log http://svn.red-bean.com/repos -r 19&&mylog.txt
svn log http://svn.red-bean.com/repos -r 20&&mylog.txt
它会先创建一个revision 14 的mylog.txt 文件,后面两个命令会把revision 19 个和revision 20 的log 加入到mylog.txt 文件中.
关于svn log 命令行的详细用法请参考
http://svnbook.red-bean.com/en/1.0/re15.html
接着我就研究怎么样在ant script 里面加入svn 的log 信息.
我发现打开svnant.jar 包的时候里面有个 svn.xml 文件,里面记录的就是所有svnkit 支持的svn ant task . 其中只需要一个就够了,
&taskdef classname="org.tigris.subversion.svnant.SvnTask" name="svn"&&/taskdef&
接着我就写script ,
&taskdef classname="org.tigris.subversion.svnant.SvnTask" name="svn"&&/taskdef&
&!---->&target name="updateSVN"&&svn javahl="true" password="xxxPassword" username="xxxUser"&&svn javahl="true"&&log destfile="revision.log"&&/log&&/svn&&/svn&&/target&
name="updateSVN"
username="XXX" password="XXX" javahl="true"
dir="${XXX}"
javahl="true"
destfile="revision.log"
path="${XXX}"
asXml="false"
startRevision="HEAD"
stopRevision="PREV"
message="Update finished successfully, please see attached for version information!"
&target name="updateSVN"&&svn javahl="true" password="xxxPassword" username="xxxUser"&&svn javahl="true"&&echo message="Update finished successfully, please see revision.log for version information!"&&/echo&&/svn&&/svn&&/target&
&target name="updateSVN"&&svn javahl="true" password="xxxPassword" username="xxxUser"&&svn javahl="true"&&echo message="Update finished successfully, please see revision.log for version information!"&
&/echo&&/svn&&/svn&&/target&
其中startRevision 和 stopRevision 的值可以是
版本库中最新的(或者是“最年轻的”)版本。BASE
工作拷贝中一个条目的修订版本号,如果这个版本在本地修改了,则“BASE版本”就是这个条目在本地未修改的版本。COMMITTED :
在BASE版本之前(或在Base)一个项目最后修改的版本。PREV
一个项目最后修改版本之前的那个版本(技术上为COMMITTED -1)。
这段代码就是在你的script 目录下面会产生一个revision.log 文件,大概这样的格式
------------------------------------------------------------------------
r14 | ... xxx bug fix #123456 :xxx
------------------------------------------------------------------------
r15 | ... xxx en #123456 : xxx
------------------------------------------------------------------------
然后发邮件:
&target depends="obfuscate" name="email"& &mail mailhost="xxx.xxx.xxx"&&from address="" name="xxx"&&/from&&/mail&&/target&
&target depends="obfuscate" name="email"&&mail mailhost="xxx.xxx.xxx"&&from address="" name="xxx"& &/from&&/mail&&/target&
name="sendmail" depends="obfuscate"
mailhost="XXX.XXX.XXX"
subject="Stage Updated at ${updatetime}"
messagefile="revision.log"
files="result.log"
name="Stage Update Agent" address="developers@XXX.con"
name="Developers" address="developers@XXX.con"
最后这样就算是完成了.
关于svnant 的详细task 请参考
http://subclipse.tigris.org/svnant/svn.html
关于svn 版本号之间的区别 http://svnbook.subversion.org.cn/1.2/svn.tour.revs.html
论坛回复 /
(6 / 7333)
浏览: 166653 次
来自: wuhan
现在才开始研究,继续往下看楼主的bi系列
你好 最近我在做mondrian的一个性能测试 有几个问题想和 ...
....估计kettle的意思是希望用户多提意见多报BUG,多 ...
BIRT官方中文论坛:http://www.actuatech ...
请问,能否有时间具体讲解一下pentaho的使用方法呢?非常感 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客分类:
在使用svn提交时,大家总是忘记写日志,在查询log时,经常一头雾水无法定位。所以想强制大家写日志。
在网上查了一些,看到一篇
介绍相当明确。
Windows下subversion强制写日志强制写日志钩子脚本
在每次提交的时候写明提交的目的是一个很好的习惯,Subversion默认没有提供,但是可以通过钩子实现:
将下面的代码存为pre-commit.bat放到版本库的hooks目录下即可,当你不写日志提交的话就会报告错误。(如果你下载使用,需要修改SVN_BINDIR为你的Subversion安装的程序目录)
set SVN_BINDIR=d:\Subversion\bin
(此处需要修改为你的svn安装目录)
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 10 characters
%SVN_BINDIR%\svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." & nul
if %errorlevel% gtr 0 goto err
echo Empty log message not allowed. Commit aborted! 1&&2
但是自己测试了很久还总是报错。最后检查一下发现,原来是因为拷贝的内容每行后边都多了一个空格,删除掉空格后,一切ok。
浏览: 196346 次
来自: 上海
解释的很详细,学习了!很适合初学者学习。
步骤很详细很用心!
不知道结果是怎么样的。
回1楼:将&张三&单独做encode,试试 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'SVN中怎样设置 commit时才能必须加上信息 - ITeye问答
最近在研究JIRE+fisheye+svn& SVN以前用得不多。不知道怎样设置 commit时才能必须加上信息提交。问题补充:我知道需要提交JIRA的KEY才可以关联的。。
我是想问怎样才能设置成必须填。。不然有的开发人员忘填了。问题补充:听说是JIRA的啥插件。。不知道具体是哪个
采纳的答案
在windows中禁止svn提交空log message
E:\svn\data\myapp\hooks\pre-commit.bat
@echo off
rem add by RainChen @
17:56
rem link:http://www.iusesvn.com/index.php?action/viewthread/tid/648/php/1
rem link:http://svn.haxx.se/users/archive-1.shtml
rem link:http://svn.haxx.se/users/archive-1.shtml
rem Add path to Subversion executable
set path=%path%;E:\svn\Subversion\E:\cygwin\
svnlook.exe log -t "%2" "%1" | grep.exe "[a-zA-Z0-9]" & nul || goto empty
:ok
exit 0
:error
exit 1
:empty
echo Empty log message not allowed. Commit aborted! 1&&2
goto error
commit时message里填上JIRA的任务编号
如JIRA任务
&&& KEY&&&&&&&&&&&&&& 概要
&& PROJECT-110&&&&& 修改函数BUG
message里填上这个"PROJECT-110"
已解决问题
未解决问题他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)[转载]svn&log处理
在使用svn提交时,大家总是忘记写日志,在查询log时,经常一头雾水无法定位。所以想强制大家写日志。
在网上查了一些,看到一篇
介绍相当明确。
Windows下subversion强制写日志强制写日志钩子脚本
在每次提交的时候写明提交的目的是一个很好的习惯,Subversion默认没有提供,但是可以通过钩子实现:
将下面的代码存为pre-commit.bat放到版本库的hooks目录下即可,当你不写日志提交的话就会报告错误。(如果你下载使用,需要修改SVN_BINDIR为你的Subversion安装的程序目录)
set SVN_BINDIR=d:Subversionbin (此处需要修改为你的svn安装目录)
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 10 characters
%SVN_BINDIR%svnlook log "%REPOS%" -t "%TXN%" | findstr
".........." & nul
if %errorlevel% gtr 0 goto err
echo Empty log message not allowed. Commit aborted!
但是自己测试了很久还总是报错。最后检查一下发现,原来是因为拷贝的内容每行后边都多了一个空格,删除掉空格后,一切ok。
------------------------------------------------------------------------------------
tortoiseSVN允许修改历史日志的方法
强制设定commit时写一定长度的日志的两种方法:
1.在客户端配置
使用客户端工具:TortoiseSVN
在工作副本目录上,鼠标右键,TSVN,选属性,点增加
再出现的下拉条中选tsvn:logminsize
然后设定必须输入的字节数就可以
2.在服务器端配置
在库的hooks目录下编写脚本(其实就是批处理文件)文件:pre-commit.bat
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 30 characters
c:svnlook log "%REPOS%" -t "%TXN%" | findstr
".............................." & nul
if %errorlevel% gtr 0 goto err
echo that logmessage contains at least 30 alphanumeric characters.
Commit aborted! 1&&2
想修改限制长度只需要增加或减少".............................."中点的数量。
总结:两种方法都可以,推荐用第二种方法,这才能起到强制的作用。第一种办法谁都可以改,强制不了,只能靠自觉。
------------------------------------------------------------------------------------
修正 SVN 無法修改版本的日誌信息edit log message [1P]
用SVN進行版本控制的時候,在創建對應的版本後想要再次對其日誌信息進行修改(edit log message),
版本和源代碼控制已經是項目管理中比不可少的一部分了。由於SVN的較為頻繁,所以難免會出現提交時Log信息不準確的問題,這時就需要修改以後的Log信息。
但是每次修改都給如下提示:
Repository has not been enabled to accept revision
ask the administrator to create a pre-revprop-change hook
允许修改历史日志的方法
默认是不允许修改的。
在版本库的hooks目录下加入一个批处理文件:pre-revprop-change.bat
:: Set all parameters. Even though most are not used, in case you
want to add
:: changes that allow, for example, editing of the author or
addition of log messages.
set repository=%1
set revision=%2
set userName=%3
set propertyName=%4
set action=%5
:: Only allow the log message to be changed, but not author,
if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME
:: Only allow modification of a log message, not addition or
if /I not "action%" == "M" goto ERROR_ACTION
:: Make sure that the new svn:log message is not empty.
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
set bIsEmpty=false
if "%bIsEmpty%" == "true" goto ERROR_EMPTY
:ERROR_EMPTY
echo Empty svn:log messages are not allowed.
goto ERROR_EXIT
:ERROR_PROPNAME
echo Only changes to svn:log messages are allowed.
goto ERROR_EXIT
:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed.
goto ERROR_EXIT
:ERROR_EXIT
如此一來就可以更改日誌了
经beter验证OK
------------------------------------------------------------------------------------
允许修改历史日志的方法
默认是不允许修改的。
在版本库的hooks目录下加入一个批处理文件:pre-revprop-change.bat
set repos=%1
set rev=%2
set user=%3
set propname=%4
set action=%5
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow changes to svn:log. The author, date and other
:: properties cannot be changed
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%propname%'=='svn:log' goto ERROR_PROPNAME
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow modifications to svn:log (no addition/overwrite or
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not 'action%'=='M' goto ERROR_ACTION
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the new svn:log message contains some text.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
&set bIsEmpty=false
if '%bIsEmpty%'=='true' goto ERROR_EMPTY
:ERROR_EMPTY
echo Empty svn:log properties are not allowed.
goto ERROR_EXIT
:ERROR_PROPNAME
echo Only changes to svn:log revision properties are allowed.
goto ERROR_EXIT
:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed.
goto ERROR_EXIT
:ERROR_EXIT
然后用TortoiseSVN-&显示日志-&选择待修改日志-&右键:编辑日志信息。
但存在一个问题:强制设定commit时写一定长度的日志功能失去。
------------------------------------------------------------------------------------
svn的钩子(hook)
1,强制写日志
&在每次提交的时候写明提交的目的是一个很好的习惯,Subversion默认没有提供,但是可以通过钩子实现:
&将下面的代码存为放到版本库的hooks目录下即可,当你不写日志提交的话就会报告错误。
文件名:pre-commit-log.bat
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 5 characters
svnlook log "%REPOS%" -t "%TXN%" | findstr ".........."
if %errorlevel% gtr 0 goto err
echo Empty log message not allowed. Commit aborted!
2,可以修改历史日志
历史上的日志写的不好,我们希望修改,默认对Subversion是不允许的,并且会提示需要创建pre-revprop-change钩子。最简单的方式是创建一个空白的pre-revprop-change.bat文件放到版本库的hooks目录下,但是这种方式不够严格,用户具备了修改所有属性的权利,例如修改作者的权利(可以提交垃圾然后栽赃嫁祸了)。所以要限制用户只能修改日志,所以有了下面的代码,将其存为pre-revprop-change.bat放到版本库的hooks目录下即可。
文件名:pre-revprop-change.bat
REM SVN pre-revprop-change hook allows edit of logmessages from
set REPOS=%1
set REV=%2
set USER=%3
set PROPNAME=%4
set ACTION=%5
if& not "ACTION%"=="M" goto refuse
if& not "%PROPNAME%"=="svn:log" goto refuse
echo Cann't set %PROPNAME%/ACTION%, only svn:log is allowed
--------------------------------------------------------------------------------
windows下svn提交版本时强制写日志
到版本库中hooks目录下,将pre-commit.tmpl文件复制为pre-commit.bat文件,然后将pre-commit.bat
文件内容改为:
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 5 characters
svnlook log "%REPOS%" -t "%TXN%" | findstr ".........."
if %errorlevel% gtr 0 goto err
echo 提交必须写日志!&&2
windows下svn只能修改自己日志脚本
svn客户端修改日志功能(且只能修改自己日志)
找到版本库中hooks目录下,将pre-revprop-change.tmpl文件复制为pre-revprop-change.bat文件,然后将pre-revprop-change.bat文件内容
set repos=%1
set rev=%2
set user=%3
set propname=%4
set action=%5
"usebackq"&& %%k
in&& (`svnlook author %repos% -r
do&& @set&
set rightUser=0
if "%3" == "%superUser%"& set rightUser=1
if "%3" == "%var%" set rightUser=1
if %rightUser% == 0 goto ERROR_USER
goto :SUCCESS_EXIT
:ERROR_USER
echo 只允许用户修改自己的日志 &&2
goto ERROR_EXIT
:ERROR_EXIT
:SUCCESS_EXIT
--------------------------------------------------------------------------------
允许用户修改svn日志的钩子脚本
我想用过Subversion的人一定有过这样的问题:“为什么不允许用户修改日志?”,因为这种改变不可还原(目前这个操作还没有受到版本控制的管理),所以这项功能默认是被禁止的。如果要开启它,必须设置一个pre-revprop-change钩子。
版本库生成后,hooks目录下就存在一些钩子脚本的模板,用户可以作为参考。这里我们可以把已经存在的pre-revprop-change.tmpl复制一份,将复制后的文件名改为pre-revprop-change.bat,钩子就设置好了。注意Windows下钩子脚本必须以.bat或者.exe的扩展名形式存在。
默认的钩子模板使用的是linux下的脚本语言,不能在Windows下运行。所以我们必须重写,这里介绍用批处理文件来写钩子脚本的方法。最简单的允许修改日志的pre-revprop-change.bat连一行都不需要,直接把pre-revprop-change.bat的内容清空就行了,因为按照Subversion的约定,钩子脚本返回0就是允许修改任何属性。(关于钩子脚本的约定可参考这篇文章)
但是假如我们希望作些判断,比如只允许修改日志,而不允许修改用户名或者其他属性,那么下面是一个范例:
SET REPOS="%1"
SET REV="%2"
SET USER="%3"
SET PROPNAME="%4"
SET ACTION="%5"
IF ACTION% == "M" (IF %PROPNAME% == "svn:log" (EXIT 0))
ECHO "Changing revision properties %PROPNAME% is prohibited"
利用Subversion的一个程序svnlook,脚本中可以访问的信息就不仅仅只有传递进来的5个参数了,从而可以实现更多的功能。比如判断修改日志的用户是不是以前进行提交的那个作者,如果不是就不允许修改。
只允许用户修改自己的svn日志的钩子脚本:
for /f "usebackq" %%k in (`svnlook author %1 -r%2`) do @set
if "%3" == "%var%" goto test
if "%3" ==
"li"&&& goto
if "%4" == "svn:log" exit 0
echo Property '%4' cannot be changed
实现每人可以修改自己的log日志,而管理员li可以任意修改。这个例子是从网上摘抄来的,因为手头上缺少svnlook,所以没有进行测试。
--------------------------------------------------------------------------------
svn同步备份
文章分类:软件开发管理
svn服务器ip地址10.200.144.250 svn备份服务器ip地址10.200.144.251
1. 在备份服务器上创建svn仓库
svnadmin create D:ur_backupur
在svn备份服务器hooks目录下新建文件pre-revprop-change.bat,打开pre-revprop-change.bat写入
3. 在svn服务器hooks目录下新建文件post-commit.bat,打开post-commit.bat写入
svnsync sync --non-interactive svn://10.200.144.251/ --username
admin --password admin
&4.同步初期化,在备份服务器运行下面的命令
svnsync init svn://10.200.144.251 svn://10.200.144.250
& 会要求输入用户名密码,填入备份svn的用户名和密码。
5.同步版本库,在备份服务器运行下面的命令
svnsync sync svn://10.200.144.251/ --username admin --password
注意事项:不能在备份服务器进行提交操作。
dumpall.bat备份,打包用到了window自带的zip命令,找不到zip命令的话,到下载解压到c:/windows/system32目录下
SET DUMPTO_DIR="."
if not "%1" == "" (
echo Back up all to %1
SET DUMPTO_DIR=%1
SET VAR_DATE=�TE:~0,4%�TE:~5,2%�TE:~8,2%
dir /B /AD & DIRS
IF EXIST DUMP_FILES (
DEL /Q DUMP_FILES
FOR /F %%i IN (DIRS) DO (
SET REPOS_NAME=%%i
CALL :DUMP_REPOS
SET REPOS_NAME=
IF EXIST %DUMPTO_DIR%Repos_%VAR_DATE%.zip (
echo Delete existing compressed dump file
del %DUMPTO_DIR%Repos_%VAR_DATE%.zip
ECHO Compressing dump files...
zip -j %DUMPTO_DIR%Repos_%VAR_DATE%.zip %DUMPTO_DIR%*.bin
ECHO Delete dump files...
FOR /F %%i IN (DUMP_FILES) DO (
DEL /Q %DUMPTO_DIR%%%i
DEL /Q DIRS
DEL /Q DUMP_FILES
SET DUMPTO_DIR=
ECHO Successed.
::==== Functions ====
:DUMP_REPOS
SET DUMP_FILE=%REPOS_NAME%.bin
ECHO Dumping repository ^"%REPOS_NAME%^" ...
svnadmin dump ^"%REPOS_NAME%^" -q &
%DUMPTO_DIR%/%DUMP_FILE%
IF %errorlevel%==0 (
ECHO %DUMP_FILE% && DUMP_FILES
DEL /Q %DUMP_FILE%
ECHO Dump ^"%REPOS_NAME%^" failed.
SET DUMP_FILE=
loadall.bat,解压zip文件后才能还原
SET VAR_IS_EMPTY_DIR=TRUE
SET LOAD_DIR=".";
IF NOT "%1"=="" (
SET LOAD_DIR=%1
echo %LOAD_DIR%
SET VAR_IS_EMPTY_DIR=
dir /B /A-D %LOAD_DIR%*.bin & DUMP_FILES
IF "%errorlevel%"=="0" (
ECHO Finded dump file.
ECHO Error : Can not find dump file.
DEL DUMP_FILES
FOR /F %%i IN (DUMP_FILES) DO (
SET REPOS_FILE=%%i
CALL :LOAD_REPOS
SET REPOS_FILE=
DEL /Q DUMP_FILES
ECHO Successed.
::==== Functions ====
:LOAD_REPOS
SET REPOS_NAME=%REPOS_FILE:~0,-4%
mkdir %REPOS_NAME%
ECHO %REPOS_NAME%
ECHO Loading repository ^"%REPOS_NAME%^" ...
svnadmin create %REPOS_NAME%
svnadmin load -q �%%REPOS_NAME% &
%LOAD_DIR%/%REPOS_FILE%
IF %errorlevel%==0 (
ECHO %DUMP_FILE% && DUMP_FILES
RMDIR /Q %REPOS_NAME%
ECHO Load ^"%REPOS_NAME%^" failed.
SET REPOS_NAME=
--------------------------------------------------------------------------------
svn 邮件通知及LOG处理
标签:linux svn
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
*自动发邮件脚本
配置post-commit文件&&
//此文件在commit时会运用到这个脚本
# cd /svndata/test/hooks
# cp post-commit.tmpl post-commit
# vi post-commit
在末尾删除原来的,添加上以下参数
REPOS="$1"
/usr/bin/svnnotify --repos-path "$1" --revision "$2" --to
"HTML::ColorDiff" --with-diff --smtp mail.xxx.com --subject-prefix
'[Windy SVN]'
//--to 为要通知的邮件地址,我们一般会做个邮件组,这个组内包含了这个项目的所有人,--smtp
mail.xxx.com为你的内部邮件服务器地址,必须使用域名,要内部DNS能够解析到,可能需要在内部DNS服务器上手动添加主机记录,[Windy
SVN]必须有SVN字段,否则将收不到邮件,注重格式,此脚本有bugzilla和JIRA系统进行整合的参数。
# chmod a+x post-commit&&
//添加可执行权限给post-commit
*可修改log脚本
配置pre-revprop-change文件&&
//此文件在show log中修改log时会运用到这个脚本,得到修改的权限,否则会报错DAV it's
possible that the repository's pre-revprop-change hook either
failed or is non-existent. At least one pr
repository is unchanged
# cd /svnroot/test/hooks
# cp pre-revprop-change.tmpl pre-revprop-change
# vi pre-revprop-change
在末尾删除原来的,添加上以下参数
PROPNAME="$4"
if [ "$PROPNAME" = "svn:log" ]; then exit 0; fi
# chmod a+x pre-revprop-change&&
//添加可执行权限给pre-revprop-change
*强制写log脚本
配置pre-commit文件&&
//此文件在用户每次更新库中都必须要求写log,此文以log最低5个字符为例
# cd /svnroot/test/hooks
# cp pre-commit.tmpl pre-commit
# vi pre-commit
在末尾删除原来的,添加上以下参数
REPOS="$1"
SVNLOOK=/usr/bin/svnlook
# check that logmessage contains at least 5 alphanumeric
characters
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc
if [ "$LOGMSG" -lt 5 ];
& echo -e "nEmpty log message not allowed. Commit
aborted!" 1&&2
//[ "$LOGMSG" -lt 5 ] -lt 5这个5是至少为5个字符,请注意。
# chmod a+x pre-commit&&
//添加可执行权限给pre-commit
本文出自 “seven” 博客,请务必保留此出处
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 form提交获取返回值 的文章

 

随机推荐