【问题标题】:Tortoise SVN pre-commit script allow commit that contains defined stringTortoise SVN 预提交脚本允许提交包含定义的字符串
【发布时间】:2019-04-26 08:42:26
【问题描述】:

创建一个仅允许在文件 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】:

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

    你的测试的完整业务逻辑可以|必须是这样的(我懒得在这里写完整的bashism,这将是你的职责)

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

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

    • $FILENAME 在事务中不存在,但在 WC 中以正确的 $STRING 显示,但文件 未根据 svn 状态修改
    • 同上,但修改
    • pp 1-2,但不允许使用 $STRING

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-03
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 2015-06-29
      • 2023-03-20
      • 2015-05-19
      相关资源
      最近更新 更多