【问题标题】:subversion restrict access growing versions of the one file颠覆限制访问一个文件的增长版本
【发布时间】:2012-09-12 21:27:42
【问题描述】:

我正在尝试发现在 subversion 中对文件实施写入限制的最佳方法。

随着时间的推移,这个文件会有很多标签和分支。 一个特定的用户,用户构建,必须有权访问此文件(在所有可能的分支或标签中),而没有其他权限。

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”的文件实施此限制, 我曾想过实现一个预提交脚本。

这是最好的方法吗?

谢谢!

【问题讨论】:

    标签: svn permissions hook restriction pre-commit


    【解决方案1】:

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

    Subversion 将始终将存储库目录和修订号传递给您的挂钩。

    伪bash示例:

    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文章点击我实际上需要传递这个脚本参数(而我假设颠覆本身将参数'repo,txn'传递给这个脚本......红皮书似乎没有太多信息...... (还是我看错了部分?)
    • tim - 这正是我所追求的
    • 您能在脚本顶部添加“set -x”并显示输出吗?
    • 兰巴莱sean@svUbuntuA:~/test/working/project$ svn commit --username sean --password astraia -m "a note" Sending test.txt Transmitting file data .svn: Commit failed (details follow): svn: Commit blocked by pre-commit hook (exit code 1) with output: + SVNLOOK=/usr/bin/svnlook + /usr/bin/svnlook log -t 10-o /home/sean/test/subversion/repo + grep [a-zA-Z0-9] + set -e + /usr/bin/svnlook author -t 10-o Repository argument required Type 'svnlook help' for usage. + AUTHOR= p.s.很抱歉弄得一团糟...... .仍在试图弄清楚如何将此评论设置为“代码”
    猜你喜欢
    • 2010-12-19
    • 1970-01-01
    • 2010-12-24
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多