177

リポジトリブラウザでログコメントを編集したいのですが、リポジトリにpre-revprop-changeフックが存在しないというエラーメッセージが表示されました。怖い名前を持っていることに加えて、pre-revprop-changeフックとは何ですか、そしてそれをどのように作成しますか?

4

11 に答える 11

213

Windows の場合、ログ メッセージの変更のみを許可する (他のプロパティは許可しない) バッチ ファイルの例へのリンクを次に示します。

http://ayria.livejournal.com/33438.html

基本的に、以下のコードをテキスト ファイルにコピーして名前を付け、リポジトリpre-revprop-change.batのサブディレクトリに保存します。\hooks

@ECHO OFF
:: Set all parameters. Even though most are not used, in case you want to add
:: changes that allow, for example, editing of the author or addition of log messages.
set repository=%1
set revision=%2
set userName=%3
set propertyName=%4
set action=%5

:: Only allow the log message to be changed, but not author, etc.
if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME

:: Only allow modification of a log message, not addition or deletion.
if /I not "%action%" == "M" goto ERROR_ACTION

:: Make sure that the new svn:log message is not empty.
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
set bIsEmpty=false
)
if "%bIsEmpty%" == "true" goto ERROR_EMPTY

goto :eof

:ERROR_EMPTY
echo Empty svn:log messages are not allowed. >&2
goto ERROR_EXIT

:ERROR_PROPNAME
echo Only changes to svn:log messages are allowed. >&2
goto ERROR_EXIT

:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT

:ERROR_EXIT
exit /b 1
于 2009-01-22T08:59:56.610 に答える
53

基本的には、バージョン管理されていないプロパティがリポジトリで変更される前に起動されるスクリプトであるため、リポジトリで何が起こっているかをより正確に管理できます。

SVNディストリビューションには、さまざまなフック用のテンプレートがあり、/ hooksサブディレクトリにあります(* .tmplは、アクティブ化するために、OSに応じて編集および名前変更する必要があります)。

于 2008-10-13T10:54:16.227 に答える
21

Linux でログ コメントの編集を許可するには、

  • リポジトリpre-revprop-change.tmplのディレクトリでファイルを見つけますhooks
  • ファイルを同じディレクトリにコピーし、名前をpre-revprop-change
  • ファイルに実行権限を与える (サーバー ユーザーなどwww-data)

編集:(リンデスに感謝)

  • その後、スクリプトを編集して0、許可したい編集の種類の終了値を返す必要がある場合があります。
于 2014-09-15T09:12:42.230 に答える
11

これは、多くの一般的なフックを含むスタック オーバーフローの質問へのリンクです。 一般的なタイプの Subversion フックpre-revprop-change、ここにクロスポストされた Windowsのフックの元のソースを含みます。

それらは時間の経過とともに改善される可能性があるため、そこを参照する必要があります。

于 2011-02-02T15:58:00.393 に答える
8

ありがとう #patmortech

そして、「同じユーザーだけが自分のコードを変更できる」というコードを追加しました。

:: Only allow editing of the same user.
for /f "tokens=*" %%a in ( 
'"%VISUALSVN_SERVER%\bin\svnlook.exe" author -r %revision% %repository%') do ( 
set orgAuthor=%%a
)
if /I not "%userName%" == "%orgAuthor%" goto ERROR_SAME_USER
于 2012-11-09T08:47:33.940 に答える
2

PC ユーザーの場合: Windows Server のマッチングで使用すると、.bat 拡張子が機能しませんでした。Django Reinhardt が提案したように VisualSvn を使用し、.cmd 拡張子のフックを作成しました。

于 2012-09-12T15:11:48.933 に答える