簡體   English   中英

SVN預提交掛鈎中的用戶驗證

[英]Users validation in SVN pre-commit hook

在SVN預提交鈎子中找到了一個有用的SVN預提交鈎子, 以避免 mcdon 更改標簽子目錄

我想在提交之前在用戶上添加驗證檢查。 我可以做下面的事情嗎?

@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語句。 有人可以幫忙嗎?

我不明白為什么要為此使用一個預先提交的鈎子,所以我給您一個草圖,供我們在處理標簽時使用。

  1. 我們使用基於Subversion 路徑的授權 ,並且具有如下規則:

     [/tags] * = r @R_SVN_ADMINS = rw 

    因此,僅允許管理員創建和修改標簽。

  2. 如有必要,我們為每個標簽添加一條規則以避免修改:

     [/tags/r1.0] @R_SVN_ADMINS = r 
  3. 一種替代解決方案是在創建后的第一點修改規則,以使標記僅是只讀的。

這對我們有用,因為很少創建標簽,而且我們沒有太多標簽。 我們不需要任何鈎子來禁止某物...

發現以下解決方案有效:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM