Tortoise SVN 预提交脚本允许提交包含定义的字符串
Tortoise SVN pre-commit script allow commit that contains defined string
创建一个预提交脚本,只允许在文件某处包含特定字符串的提交 Test.cfg
目前我正在使用它,因为它将查看每个提交的文件并阻止包含指定字符串的提交
REPOS=""
TXN=""
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 个文件
请原谅,但 svnlook diff
在您的情况下是丑陋愚蠢的方式。重新阅读svnlook子命令topic in SVNBook,注意svnlook tree
/svnlook changed
+ svnlook cat
你的测试的完整业务逻辑可以|必须是这样的(我懒得在这里写完整的 bashism,这将是你的职责)
IF $FILENAME
存在于事务中(我更喜欢 svnlook tree --full-paths ...
只是因为 svnlook changed ...
需要额外的 | gawk {print }
干净的文件名) AND $FILENAME
包含 $STRING
(svnlook cat "$FILENAME" | grep "STRING" ...
) 做点什么
别忘了处理可能的边缘情况:
- $FILENAME 在事务中不存在,但在 WC 中显示为正确的 $STRING,但文件 未修改 根据 svn 状态
- 同上,但修改
- pp 1-2,但不允许 $STRING
由于上述注意事项,我建议通过测试 自定义修订版的 属性 来探索|检查替换文件+字符串的可能性(更短,更容易,更易于管理)
创建一个预提交脚本,只允许在文件某处包含特定字符串的提交 Test.cfg
目前我正在使用它,因为它将查看每个提交的文件并阻止包含指定字符串的提交
REPOS=""
TXN=""
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 个文件
请原谅,但 svnlook diff
在您的情况下是丑陋愚蠢的方式。重新阅读svnlook子命令topic in SVNBook,注意svnlook tree
/svnlook changed
+ svnlook cat
你的测试的完整业务逻辑可以|必须是这样的(我懒得在这里写完整的 bashism,这将是你的职责)
IF $FILENAME
存在于事务中(我更喜欢 svnlook tree --full-paths ...
只是因为 svnlook changed ...
需要额外的 | gawk {print }
干净的文件名) AND $FILENAME
包含 $STRING
(svnlook cat "$FILENAME" | grep "STRING" ...
) 做点什么
别忘了处理可能的边缘情况:
- $FILENAME 在事务中不存在,但在 WC 中显示为正确的 $STRING,但文件 未修改 根据 svn 状态
- 同上,但修改
- pp 1-2,但不允许 $STRING
由于上述注意事项,我建议通过测试 自定义修订版的 属性 来探索|检查替换文件+字符串的可能性(更短,更容易,更易于管理)