`
亚当爱上java
  • 浏览: 707130 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Windows下SVN hooks实例之强制写日志和修改日志

    博客分类:
  • SVN
阅读更多
在每次提交的时候写明提交的目的是一个很好的习惯,Subversion默认没有提供,但是可以通过钩子实现:

将下面的代码存为pre-commit.bat或pre-commit.cmd放到版本库的hooks目录下即可,当你不写日志提交的话就会报告错误。(如果你要使用,需要修改下面代码中的SVN_BINDIR为你的Subversion安装的程序目录,要注意SVN的安装路径中不能有空格!)

@echo off
set SVN_BINDIR=c:\svn_setup\bin
setlocal
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
exit 0
:err
echo Empty log message not allowed!logmessage contains at least 10 characters! Commit aborted! 1>&2
exit 1


如果你配置了Subversion安装程序bin目录的环境变量名为SVN_BIN,则上面的“set SVN_BINDIR=c:\svn_setup\bin”可修改为“set SVN_BINDIR=%SVN_BIN%”。要注意的是,路径中的盘符必须为小写,大写会报错。
注:修改自Subversion官方网站。

2,可以修改历史日志

历史上的日志写的不好,我们希望修改,默认对Subversion是不允许的,并且会提示需要创建pre-revprop-change钩子。最简单的方式是创建一个空白的post-revprop-change.bat文件放到版本库的hooks目录下,但是这种方式不够严格,用户具备了修改所有属性的权利,例如修改作者的权利(可以提交垃圾然后栽赃嫁祸了)。所以要限制用户只能修改日志,所以有了下面的代码,将其存为pre-revprop- change.bat放到版本库的hooks目录下即可。

@ECHO OFF

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 revision
:: properties cannot be changed
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%propname%'=='svn:log' goto ERROR_PROPNAME
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow modifications to svn:log (no addition/overwrite or deletion)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
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
goto :eof
:ERROR_EMPTY
echo Empty svn:log properties are not allowed. >&2
goto ERROR_EXIT
:ERROR_PROPNAME
echo Only changes to svn:log revision properties are allowed. >&2
goto ERROR_EXIT
:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT
:ERROR_EXIT
exit 1 


分享到:
评论

相关推荐

    svn强制写日志hooks

    总结来说,“svn强制写日志hooks”是为了确保每次提交都有清晰、有意义的日志信息,这有助于团队协作和项目管理。通过编写和实施预提交钩子脚本,可以有效地强制执行这一规定,提高代码库的整洁度和可追溯性。在实际...

    svn强制写日志和可修改log功能

    在版本控制系统Subversion(简称...总的来说,通过编写和配置svn钩子脚本,可以实现svn强制写日志的需求,而修改日志功能则需要借助额外的工具或服务。确保团队遵循良好的日志习惯,可以显著提高代码管理的质量和效率。

    windows下svn限制强制写日志及只能修改自己日志脚本.doc

    在Windows环境下,Subversion(简称svn)是一种广泛使用的版本控制系统,用于管理软件开发中的源代码和其他文件。为了提高团队协作效率和代码管理质量,开发者往往需要执行一些自定义操作,如强制用户在提交更改时...

    svn hooks 全集,包含常用示例代码

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件。它允许团队成员协同工作,跟踪每个更改,并确保数据...理解和掌握 SVN hooks 的使用,是每个 SVN 用户和管理员必备的技能之一。

    svn限制强制写日志及只能修改自己日志脚本

    ### SVN限制强制写日志及只能修改自己日志脚本 #### 1. SVN客户端修改日志功能(且只能修改自己日志) 在Windows环境下,为了实现SVN客户端的修改日志功能,并确保用户只能修改自己的日志记录,可以通过自定义...

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

    - 钩子脚本必须放置在SVN服务器的仓库目录下的`hooks`子目录内,命名为`pre-commit.bat`,因为SVN服务器在用户尝试提交时会自动执行该脚本。 - 脚本需要有执行权限,通常在Unix/Linux系统上是可执行权限,在Windows...

    svn提交设置--日志

    1,svn提交时强制填写日志。 2,修改日志只能修改自己的。 压缩包包含两个文件:pre-commit,pre-revprop-change。 更新:解决提示显示的乱码问题。 使用方法:...

    SVN服务端钩子文件-强制写日志并过滤文件类型

    1、强制写日志,并且字符不少于十个字。 2、过滤bin目录、obj目录、suo文件、user文件的提交。 以上过滤文件对VS开发Web项目时过滤的文件进行的设置,你可以根据自己需要过滤自己的文件和目录。

    Windows下安装SVN服务器

    Windows环境下安装SVN服务器的知识点主要包括以下几个方面: ...根据本文档提供的信息,操作人员可以完成Windows环境下SVN服务器的安装和配置,进一步学习和掌握SVN的基本使用技巧,从而有效地进行版本控制管理。

    windows下svn的pre-commit钩子

    用法:将本bat文件(不可改名)存在svn服务器端安装目录\仓库名\hooks下(该目录下有多个*.tmpl文件,包括pre-commit.tmpl即linux下的提交钩子,而pre-commit.bat为windows下的提交钩子),并修改文件中相应目录(共...

    Windows下svn客户端TortoiseSVN的安装和操作

    TortoiseSVN 是 Windows 下最常用的 svn 客户端,以下是 TortoiseSVN 的安装和操作流程: 一、安装 TortoiseSVN 可以从 http://tortoisesvn.tigris.org/ 下载最新版的 TortoiseSVN,目前最新版是 TortoiseSVN-1.5....

    SVN里通过hook钩子填写日志信息

    要设置这个钩子,首先你需要在SVN服务器上的仓库`hooks`目录下创建一个`pre-commit`脚本。这个脚本通常是用shell、Perl、Python等语言编写,根据服务器的操作系统和管理员的偏好选择合适的脚本语言。以下是一个简单...

    Windows下SVN使用指南.ppt

    Windows下SVN使用指南.ppt

    Windows 下 SVN 修改 信息 hook

    在Windows环境下,Subversion(简称SVN)是一个广泛使用的版本控制系统,用于管理代码和其他文本文件的版本变更。在日常开发中,为了维护代码仓库的整洁和一致性,有时我们需要对用户的提交行为进行一定的限制,比如...

    SVN属性配置:必须输入日志/日志模版

    不过,通常这样的博客文章会详细介绍如何设置和使用SVN属性,包括如何配置`svn:log`模板,以强制用户遵循一定的日志格式。 在SVN中,除了`svn:log`之外,还有一些其他有用的属性,例如: - `svn:eol-style`:控制...

    Windows下SVN备份脚本

    因为会用到%DATE:~0,10%命令,所以桌面右下角把时间改成yyyy-M-d格式(右下角时间-单击左键-选择更改时间和日期显示-更改日期和时间-更改日历设置-短日期下拉-选择yyyy-M-d) 如果下载了有问题或者运行不成功,请...

    python获取SVN日志

    指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间...

    详细介绍Windows下SVN服务器的配置

    【Windows下SVN服务器配置详解】 Subversion (简称SVN) 是一款强大的版本控制系统,它在Windows环境下同样可以被高效地配置和使用。本指南将详细介绍如何在Windows上搭建SVN服务器,包括Apache HTTP Server的安装、...

    windows下svn异地备份与还原

    总的来说,Windows下的svn异地备份与还原涉及到多个层面的操作,包括本地备份、热备份和svnsync镜像备份。正确实施这些策略,可以有效地保护你的svn仓库免受意外数据损失的影响。文件"svn备份与还原.txt"很可能是...

Global site tag (gtag.js) - Google Analytics