相关文章推荐
从容的圣诞树  ·  java 把Set<Object>转成 ...·  3 周前    · 
着急的黄瓜  ·  Set<Object>强转为Set<Stri ...·  3 周前    · 
好帅的西装  ·  Vue3.0 ...·  8 月前    · 
体贴的小刀  ·  Oracle ...·  1 年前    · 

我们的svn服务器是使用windows平台的VisualSVN Server,有时SVN提交之后,发现忘记写提交说明了,这时需要修改日志信息,然后就报错了:

错误提示的意思说Repositories不接受修改日志,需要要创建一个 pre-revpro-change hook 才行,问了度娘,搞清楚了。
hook,顾名思义,就是svn在执行一个动作之前调用的用户自己定义代码(用户没有自定义的情况下就使用默认设置)。这个代码在windows下是bat脚本或exe程序,在linux下是shell或python脚本。

visualSVN Server每个Repositories下都有一个hooks文件夹,如下图,已经有一堆tmpl文件,这些文件其实就是linux 的shell脚本模板,pre-revpro-change.tmpl就是linux版的 pre-revprop-change hook 的模板,在linux下赋予执行权限就可以使用。
这里写图片描述

但是VisualSVN server运行在Windows平台,所以这些hook脚本是不可能能执行的。但只要照着这些hook模板代码的逻辑用bat脚本重写这些脚本,就可以实现windows下的hook.
pre-revprop-change.tmpl模板的代码是这样的:

REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1

重写太麻烦了,在网找到了对应的bat脚本pre-revprop-change.bat,将这个脚本放到hooks文件夹下,就可以了。

setlocal
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
goto OK
:refuse
echo Cann't set %PROPNAME%/%ACTION%, only svn:log is allowed 1>&2
endlocal
exit 1
endlocal
exit 0

关于设置hook脚本,如果你觉得复制脚本到hooks文件夹挺麻烦,在VisualSVN server上还有更简单的办法,打开VisualSVN Server控制台界面,如下图点开一个Repositories的Properties\Hooks界面
这里写图片描述
选中下图红框的Pre-revision property change hook,点击Edit编辑
这里写图片描述
将前面的脚本如下图复制进来点OK就可以了。
这里写图片描述

参考:
《SVN设置pre-commit和pre-revprop-change钩子》
http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/
http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/

我们的svn服务器是使用windows平台的VisualSVN Server,有时SVN提交之后,发现忘记写提交说明了,这时需要修改日志信息,然后就报错了:错误提示的意思说Repositories不接受修改日志,需要要创建一个 pre-revpro-change hook才行,问了度娘,搞清楚了。 hook,顾名思义,就是svn在执行一个动作之前调用的用户自己定义代码(用户没有自定义的情况下就使用
[size=large][/size][color=blue][/color] Pro perty: 是Objective-C 2.0中新增加的語法。利用這個語法,在precompiler時會幫我們產生getter及setter。@ pro perty放在物件宣告的地方。基本語法如下: @ pro perty(attributes, …) type pro pertyName; Attributes間...
服务端的操作是相当简单了,登录上服务器进入到 SVN 项目目录下,找到需要 修改 的仓库,例如my,使用如下命令操作: cd my/ hook s cp pre-rev pro p- change .tmpl pre-rev pro p- change chmod a+x pre-rev pro p- change 这样服务端就配置完成了。 客户端操作: 进入项目目录,点击鼠 a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本触发无效) b)当前对象失去焦点(onblur)  (2)keypress  恩,还好。。。。。就是能监听键盘事件,鼠标复制黏贴操作他就无能为力的赶脚了。。。。。
0x00 缘起 在 svn add或 svn diff操作之后经常会出现被误认为是二进制文件的情况,日后不方便查看差异。下文以xml文件性质为例进行实践,如果为其他类型,查看对应的mime-type 修改 即可。 确认文件属性方法 可以通过 svn 命令来获取文件属性,完整的命令为 svn pro pget svn :mime-type 'path-to-file' svn plist -v 'path-t...
将repository内 hook 子文件夹中的pre-rev pro p- change .tmpl复制改成pre-rev pro p- change .bat,内容改为:exit 0 或者直接新建一个名字为 pre-rev pro p- change .bat 内容为 exit 0
感谢您对本文的关注, 您这个方案在实验条件下肯定是可以的, 但以我做工程的关观点来看,这个方案仅仅为了向控制台输出一条信息,还要临时申请一块100字节的内存是不可靠而且麻烦的,(而且100字节真的够么,在实际运行中,到底要多少内字节是不一定的) 我有意写一个print_str函数,就是为了避免您这种方案,因为它需要额外内存保存要输出的字符。 数据本身就在那里了,何苦要复制一份呢,不论匹配的内容有多长它都能正常输出。 有了这个函数我还可以多次使用,而不必每次为了向控制台输出一段内存的值都重复写那些代码,不是吗? C: GNU regex library (regex.h)正则表达式调用示例 偶特TV: 很不错的学习案例, 表情包 对于print_str 输出结果(93,94,95行)我尝试了不算优化的输出,希望博主可以看到,给予鼓励 [code=csharp] // 63h 添加 char res_tmp[100] = {0}; //93, 94, 95h 替换 memcpy(res_tmp, p+pmatch[i].rm_so, pmatch[i].rm_eo-pmatch[i].rm_so); printf("<<%s>>\n", res_tmp); memset(res_tmp, 0, sizeof(res_tmp)); [/code] MSVC下使用gnu regex(正则表达式C语言接口regex.h) cretsr: 求问大佬 vs说regcomp regfree啥的是无法解析的外部符号是怎么回事啊。。 C++11:string和wstring之间互转换 迪卡路恰: c++17 已弃用