0

mcdon によるタグのサブディレクトリへの変更を回避するために、SVN pre- commit フックで便利な SVN pre-commit フックの 1 つを見つけました。

コミットする前に、ユーザーに検証チェックを追加したいと思います。以下のようなことはできますか?

@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
)

すべてのユーザーがファイルをコミットできるため、上記の pre-commit スクリプトは失敗しました。また、上記の echo ステートメントが表示されないため、「echo」コマンドが機能しません。誰でも助けることができますか?

4

2 に答える 2

1

そのために pre-commit フックが必要な理由がわからないので、タグの作業時に使用しているもののスケッチを示します。

  1. Subversionパスベースの認証を使用し、次のようなルールがあります。

    [/tags]
    * = r
    @R_SVN_ADMINS = rw
    

    そのため、管理者のみがタグを作成および変更できます。

  2. 必要に応じて、タグごとにルールを追加して、変更を回避します。

    [/tags/r1.0]
    @R_SVN_ADMINS = r
    
  3. 別の解決策は、タグが読み取り専用になるように、作成後の最初のポイントでルールを変更することです。

タグはめったに作成されず、あまり多くないため、これはうまくいきます。何かを禁止するためのフックは必要ありません...

于 2011-11-10T07:37:44.150 に答える
0

次のソリューションが機能していることがわかりました。

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
于 2011-11-11T05:00:04.473 に答える