Проверка пользователей в хуке SVN pre-commit - PullRequest
0 голосов
/ 10 ноября 2011

Найден один из полезных хуков предварительной фиксации 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.Кто-нибудь может помочь?

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

Я не понимаю, почему для этого вам нужен хук перед фиксацией, поэтому я даю вам набросок того, что мы используем при работе с тегами.

  1. Мы используемSubversion авторизация на основе пути и имеет такие правила:

    [/tags]
    * = r
    @R_SVN_ADMINS = rw
    

    , поэтому только администраторы могут создавать и изменять теги.

  2. При необходимости мы добавляем для каждого тега правило, чтобы избежать изменения:

    [/tags/r1.0]
    @R_SVN_ADMINS = r
    
  3. Альтернативное решение - изменить правила в первой точке после создания, чтобы теги были доступны только для чтения.

Это работает для нас, потому что теги создаются редко, а у нас их немного.Нам не нужны крючки, чтобы что-то запрещать ...

0 голосов
/ 11 ноября 2011

Нашел следующее работающее решение:

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
...