Svn subversion限制访问一个文件的不断增长的版本

Svn subversion限制访问一个文件的不断增长的版本,svn,permissions,hook,restriction,pre-commit,Svn,Permissions,Hook,Restriction,Pre Commit,我试图找到在subversion中实现文件写限制的最佳方法 随着时间的推移,该文件将有许多标记和分支。 一个特定的用户,user build,必须在所有可能的分支或标记中访问此文件,而不能访问其他任何内容 i.e., svn://app/trunk/changelog.txt svn://app/branches/1.1/changelog.txt svn://app/tags/1.2/changelog.txt etc.. 如您所见,这不是一组有限的文件,而是一个文件,随着时间的推移,它将

我试图找到在subversion中实现文件写限制的最佳方法

随着时间的推移,该文件将有许多标记和分支。 一个特定的用户,user build,必须在所有可能的分支或标记中访问此文件,而不能访问其他任何内容

i.e., 
svn://app/trunk/changelog.txt
svn://app/branches/1.1/changelog.txt
svn://app/tags/1.2/changelog.txt
etc..
如您所见,这不是一组有限的文件,而是一个文件,随着时间的推移,它将被复制到各个分支和标记。但是,我们可以确保文件名在文件树中是唯一的

要实现此限制,请在用户“build”上,针对所有名为“changelog.txt”的文件, 我想实现一个预提交脚本

这是最好的方式吗


谢谢

最简单的方法是编写一个预提交钩子并将其放入存储库中的/hooks中

Subversion将始终将存储库目录和修订号传递给钩子

Pseudobash示例:

REPO="$1"
NO="$2"
AUTHOR=`svnlook author $REPO -t "$NO"`
FILES=`svnlook changed -t "$NO" "$REPO" | cut -b2-`


if echo $AUTHOR | grep -q builduser; then
    for FILE in $FILES; do
        if ! echo $FILE | grep -q changelog.txt$; then
            exit 1
        fi
    done
fi

我希望您能理解它的要点。

注意:这不允许builduser对任何不以changelog.txt结尾的内容进行任何提交。谢谢您的回答。。。。我开始做这样的事情,但我很气馁,因为我得到了一个错误。。。尝试调用“svnlook”时需要存储库参数。另一篇stackoverflow文章指出,我实际上需要传递这个脚本参数,而我假设subversion本身将参数“repo,txn”传递给这个脚本。。。。红皮书似乎没有多少信息。。或者我看错了部分了吗?蒂姆-那正是我想要的。你能把集合-x添加到你的脚本顶部,然后给我看输出吗?兰巴莱sean@svUbuntuA:~/test/working/project$svn commit-username sean-password astaria-m a note Sending test.txt传输文件数据。svn:commit失败详细信息如下:svn:commit blocked通过预提交挂钩退出代码1,输出:+SVNLOOK=/usr/bin/SVNLOOK+/usr/bin/SVNLOOK log-t10-o/home/sean/test/subversion/repo+grep[a-zA-Z0-9]+set-e+/usr/bin/SVNLOOK author-t10-o存储库参数需要输入“SVNLOOK help”才能使用作者=p.s.抱歉搞砸了。仍在试图找出如何将此注释设置为“代码”