创建一个预提交脚本,该脚本仅允许在文件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个文件
答案 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
包含$STRING
(svnlook cat "$FILENAME" | grep "STRING" ...
)要做些什么
别忘了还要处理可能的边缘情况:
由于上述说明,我建议通过测试挂钩中的自定义修订版属性(更短,更容易,更易于管理)来探索|检查替换文件和字符串的可能性