zoukankan      html  css  js  c++  java
  • SVN与TortoiseSVN修改日志和强制写日志实现详解 .

    注意bat换行时出现的空格 会导致出错

     

    1,强制写日志

    强制设定commit时写一定长度的日志的两种方法:

    1.在客户端配置

    使用客户端工具:TortoiseSVN
    在工作副本目录上,鼠标右键,TSVN,选属性,点增加
    再出现的下拉条中选tsvn:logminsize
    然后设定必须输入的字节数就可以

    2.在服务器端配置

    在库的hooks目录下编写脚本(其实就是批处理文件)文件:pre-commit.bat
    内容为:

    @echo off
    setlocal
    set REPOS=%1
    set TXN=%2
    rem check that logmessage contains at least 30 characters
    "D:/Program Files/Apache Software Foundation/Apache2.2/bin/svnlook" log "%REPOS%" -t "%TXN%" | findstr ".............................." > nul
    if %errorlevel% gtr 0 goto err
    exit 0
    :err
    echo that logmessage contains at least 30 alphanumeric characters. Commit aborted! 1>&2
    exit 1

    想修改限制长度只需要增加或减少".............................."中点的数量。

    总结:两种方法都可以,推荐用第二种方法,这才能起到强制的作用。第一种办法谁都可以改,强制不了,只能靠自觉。
    注意:"D:/Program Files/Apache Software Foundation/Apache2.2/bin/svnlook"根据自己实际的安装路径,找svn的svnlook.exe文件的位置,使用绝对路径。

    2、允许修改历史日志的方法

    默认是不允许修改的。

    在版本库的hooks目录下加入一个批处理文件:pre-revprop-change.bat

    @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

    然后用TortoiseSVN->显示日志->选择待修改日志->右键:编辑日志信息。

    但存在一个问题:强制设定commit时写一定长度的日志功能失去。

  • 相关阅读:
    ArcGIS JS API多线程克里金插值
    PostGIS计算矢量切片(一)--渲染数据
    Arcpy多线程热力图
    Puppeteer之大屏批量截图
    Echarts 南海诸岛简图显示位置调整
    Echarts地图使用经验-地图变形和添加数据
    springboot的拦截器Interceptor的性质
    Centos7 网络报错Job for iptables.service failed because the control process exited with error code.
    记录一次Service被注入mapper实例的错误
    java中通过Adb判断PC是否连接了移动设备
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/2612973.html
Copyright © 2011-2022 走看看