【问题标题】:Users validation in SVN pre-commit hookSVN 预提交挂钩中的用户验证
【发布时间】:2011-11-10 01:58:23
【问题描述】:

在 mcdon 的 SVN pre-commit hook for avoiding changes to tags subdirectories 中找到了一个有用的 SVN 预提交钩子。

我想在提交之前对用户添加验证检查。我可以执行以下操作吗?

@echo off
REM  user1, user2, user3 are example
set VALID_USERS=user1,user2,user3

set SVNROOT="C:\Program Files\CollabNet Subversion Server\svnlook.exe"
set REPOS=%1%
set TXN=%2%

%SVNROOT% author %REPOS% -t %TXN% | findstr /r "^%VALID_USERS%$" >nul
if %errorlevel% EQU 0 (
   echo This is an invalid user 1>&2
   exit 1
) else (
   echo This is valid user 1>&2
   exit 0
)

上述预提交脚本失败,因为所有用户都可以提交他们的文件。此外,'echo' 命令不起作用,因为我在上面没有看到任何 echo 语句。有人可以帮忙吗?

【问题讨论】:

    标签: svn pre-commit-hook pre-commit


    【解决方案1】:

    我不明白你为什么需要一个预提交钩子,所以我给你一个草图,我们在处理标签时使用什么。

    1. 我们使用 Subversion path-based authorization,并且有这样的规则:

      [/tags]
      * = r
      @R_SVN_ADMINS = rw
      

      所以只有管理员可以创建和修改标签。

    2. 如有必要,我们为每个标签添加一条规则以避免修改:

      [/tags/r1.0]
      @R_SVN_ADMINS = r
      
    3. 另一种解决方案是在创建后的第一点修改规则,使标签只读。

    这对我们有用,因为标签很少被创建,而且我们没有太多标签。我们不需要任何钩子来禁止某些东西...

    【讨论】:

    • 感谢 mliebelt 的回复。我想过使用 pre-commit 挂钩来限制用户删除 /trunk 目录中的文件/文件夹。
    • 那么你应该改写你的问题(也许还有标题),告诉人们你的问题......
    • @mliebelt,上述授权是否也适用于基于 LDAP 的身份验证?我的意思是,LDAP 中的用户可以访问存储库,但不能为所有人设置读写权限。我无法使用“限制”,因为 LDAP 中没有创建组。请提出建议。
    【解决方案2】:

    发现以下解决方案有效:

    REM     Block deletion of folder/file in trunk
    %SVNLOOK% changed %REPOS% -t %TXN% | findstr /r "^D.*trunk/.*$" >nul
    if %errorlevel%==0 (goto DeleteInTrunkError)
    
    REM     DeleteInTrunkError
    REM ------------------------
    :DeleteTrunkTagsError
    echo. 1>&2
    echo Trunk Delete Error: 1>&2
    echo     Only Administrator can delete in the trunk folder. 1>&2
    echo Commit details: 1>&2
    %SVNROOT% changed %REPOS% -t %TXN% 1>&2
    exit 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多