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

时间:2019-04-26 08:42:27

标签: linux svn tortoisesvn

创建一个预提交脚本,该脚本仅允许在文件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个文件

1 个答案:

答案 0 :(得分:2)

对不起,对您而言,svnlook diff很丑陋。重新读取svnlook子命令t opic in SVNBook,注意svnlook tree / svnlook changed + svnlook cat

测试的全部业务逻辑都必须是这样的(我很懒于在此处编写完整的bashism,这是你的职责)

IF $FILENAME存在于事务中(我更喜欢svnlook tree --full-paths ...只是因为svnlook changed ...将需要额外的| gawk {print $2}才能使用干净的文件名) AND $FILENAME包含$STRINGsvnlook cat "$FILENAME" | grep "STRING" ...要做些什么

别忘了还要处理可能的边缘情况:

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

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