Tortoise SVN预提交脚本允许包含已定义字符串的提交

问题描述 投票:0回答:1

创建一个预提交脚本,该脚本只允许在Test.cfg文件中包含特定字符串的提交

目前我的工作是它将查看提交的每个文件并阻止包含指定字符串的提交

REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook


$SVNLOOK diff -t "$TXN" "$REPOS" | \
   grep -i "Sting to search here" > /dev/null && { echo "String exists so block commit" 1>&2; exit 1; }

我所追求的是上面的代码完全相反,所以如果字符串存在允许提交,如果没有,则阻止提交。如果我可以指定应该搜索哪个文件也是很好的,因为它当前搜索每个文件并且一些提交可以包含1000个文件

linux svn tortoisesvn
1个回答
2
投票

请原谅,但svnlook diff在你的情况下是丑陋的方式。重新阅读svnlook子命令topic in SVNBook,注意svnlook tree / svnlook changed + svnlook cat

你的测试的完整商业逻辑可能必须是这样的(我懒得在这里写完全的基础,这将是你的职责)

如果$FILENAME存在于交易中(我更喜欢svnlook tree --full-paths ...因为svnlook changed ...将需要额外的| gawk {print $2}用于干净的文件名)和$FILENAME包含$STRINGsvnlook cat "$FILENAME" | grep "STRING" ...)DO SOMETHING

不要忘记处理可能的边缘情况:

  • $ FILENAME在事务中不存在,但在WC中显示正确的$ STRING,但文件未根据svn状态进行修改
  • 与上述相同,但经过修改
  • 第1-2页,但不允许$ STRING

由于以上注释,我建议通过在钩子中测试自定义修订版的属性来探索|检查替换文件+字符串的可能性(更短,更容易,更易于管理)

© www.soinside.com 2019 - 2024. All rights reserved.