【问题标题】:Pre-Commit Windows Hook to Require Issue Number in Comment预提交 Windows 挂钩以在注释中要求问题编号
【发布时间】:2015-07-28 17:48:51
【问题描述】:

我正在寻找一种方法来拒绝在其 cmets 中缺少错误问题编号的提交。我正在设置的系统使用 Windows Server 2012 上的 VisualSVN 服务器和 LAMP 服务器上的 MantisBT 进行错误跟踪。这个问题一直是asked before,但在这种情况下,存储库位于 LAMP 服务器上。我正在寻找不依赖于 PHP 或编译代码的批处理或 PowerShell 脚本。理想情况下,钩子需要在提交消息中的某处出现“问题 #1234”或“问题 #12 和 #34”。

【问题讨论】:

  • 尝试改写this batch file并在出现问题时回复。
  • 我已经有一个批处理脚本来检查消息长度。当然,我要问的关键是如何对提交文本执行正则表达式搜索。

标签: powershell batch-file svn visualsvn-server pre-commit-hook


【解决方案1】:

基于this batch file

在这个块之后:

setlocal enabledelayedexpansion

set REPOS=%1
set TXN=%2

set SVNLOOK="%VISUALSVN_SERVER%\bin\svnlook.exe"

REM Concatenate all the lines in the commit message
FOR /F "usebackq delims==" %%g IN (`%SVNLOOK% log -t %TXN% %REPOS%`) DO SET M=!M!%%g

添加支票:

echo !M! | findstr /i /r /c:"issues* *#[0-9][0-9]*" >nul
if errorlevel 1 (
    echo "Sorry, commit message should reference an issue" >&2
    exit /b 1
)

【讨论】:

  • 看起来这需要稍作调整。您的正则表达式搜索“问题”而不是“问题”,并使用单个问题引用拒绝我的提交。
  • 不,它也确实搜索issue,因为正则表达式中的星号表示前一个符号出现0次或多次。
  • 你是对的。问题似乎是在我的评论中我使用了一个数字的问题编号:“这是指问题 #1。”而你的正则表达式需要两位数。
  • 最好将 /I 添加到 findstr 命令以使搜索不区分大小写。否则“问题 #1”会失败。
  • 再次感谢。从我所有的阅读来看,像 /i 和 /I(大写 i)做同样的事情。
猜你喜欢
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 2019-06-02
  • 2013-02-07
相关资源
最近更新 更多