Dav*_* W. 14
钩子脚本应该使用svnlook命令而不是svn.该svnlook命令可以获取提交的事务编号(如果这是一个预提交钩子,则需要使用事务编号.如果这是一个提交后挂钩,则需要修订版本号).
执行a svnlook -h查看所有子命令.这是他们的清单:
author - 检索提交者的用户IDcat - 打印出指定的文件changed - 打印出更改的文件和目录date - 打印出提交的时间戳diff - 打印出所有文件的差异dirs-changed - 打印出更改的目录(filesize - 以字节为单位打印文件大小history- 打印出历史(更像svn log)info - 打印出文件的信息lock - 打印出锁定信息propget - 获取特定属性.proplist - 列出所有属性.tree - 打印出目录结构uuid - 打印出存储库的UUIDyoungest - 打印出最后一个修订号.看起来就像svnlook changed你想要的.
两个非常重要的事情svnlook:
svnlook命令无法更改任何数据,只需显示即可.有些人希望了解如何更改属性值svnlook.答案,你不能.svnlook取库目录位置作为参数,而不是库的URL.这意味着svnlook只能在服务器本身上运行.swo*_*swo 13
用于svnlook预先提交.
svnlook changed给出更改的提交路径.将此与您的列表进行比较.如果发现/找不到路径,则拒绝它.预先提交的一个简单示例可能是.
#!/bin/sh
REPOS="$1"
TXN="$2"
SPATH="specific/path"
FOUND=$(svnlook changed -t "$TXN" "$REPOS" | tr -d '\n' | grep -E ".*$SPATH.*")
if [ "$FOUND" != "" ]
then
echo "Reject commit!" 1>&2 && exit 1
else
exit 0
fi
Run Code Online (Sandbox Code Playgroud)
在这里,我为感兴趣的路径删除了换行符和grep.如果找不到路径,则重新提交提交exit 1.用户将看到你回应的内容.
| 归档时间: |
|
| 查看次数: |
13367 次 |
| 最近记录: |