【问题标题】:SVN pre-revprop-change hook script, working with active directory groupsSVN pre-revprop-change 挂钩脚本,与活动目录组一起使用
【发布时间】:2020-07-30 13:15:43
【问题描述】:

我一直在寻找类似的东西,但运气不好。

我正在使用 VisualSVN Server 并希望有一个 pre-revprop-change 挂钩,它只允许特定活动目录组的用户编辑日志消息。

我有一个本地组成员的工作脚本:

#pre-revprop-change.ps1 



# Function check if $user is a member of $group
function Check-GroupMembership
{
  param([string]$group, [string]$user)

  $server = get-content env:COMPUTERNAME
  $query = [ADSI]("WinNT://$server/$group,group")

  $ulist = $query.psbase.invoke("Members") |`
           %{$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}

  $ulist -contains $user
}

# Store hook arguments into variables with mnemonic names
$repos    = $args[0]
$rev      = $args[1]
$user     = $args[2]
$propname = $args[3]
$action   = $args[4]

# Check user's group membership and deny revprop changes if a user does not belong to the svn_test group
      if (-not (Check-GroupMembership "svn_test" $user))
       {
        [Console]::Error.WriteLine("You are not allowed to change revision properties.")
        exit 1
       }

exit 0


#pre-revprop-change.bat 

[[[
@echo off

set PWSH=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe

%PWSH% -command $input ^| %1\hooks\pre-revprop-change.ps1 %1 %2 %3 %4 %5

if errorlevel 1 exit %errorlevel%
]]]

我很确定 powershell 可以做到这一点,但不幸的是我不是 PS 专家。 :)

谢谢!

【问题讨论】:

    标签: powershell svn repository visualsvn


    【解决方案1】:

    您可以创建一个本地 Windows 组并将那些应该有权更改修订属性的域用户添加到该组。例如,创建一个名为“vsvn-revprop-reponame-group”的本地组。然后将域用户添加到此本地组。

    【讨论】:

    • 是的,这就是我尝试过的方法,它奏效了。但是,当您必须在服务器上手动添加和删除用户时,拥有一个活动目录并不是真正的意义
    猜你喜欢
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2013-07-18
    • 1970-01-01
    • 2017-12-15
    相关资源
    最近更新 更多