35

少しグーグルで調べたところ、Windows 用の SVN フックのリソースが実際には存在しないことがわかりました。そこで、ここに wiki を立ち上げて一元化しようと考えました。

貢献する場合は、必ず次のことを示してください。

  1. フックの名前
  2. スクリプトの機能
  3. 実際のスクリプト

注: 壮大なスクリプトを投稿しても役に立たないと思います。

4

9 に答える 9

11

空のコメントでコミットを防止する

  1. 事前コミット
  2. 空のコメントでのコミットを防ぎます

ソース:

"c:\Program Files\Subversion\bin\svnlook.exe" log -t %2 %1 | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo "Commit Comments are Required" >&2
exit 1
:OK
exit 0
于 2009-03-11T07:19:41.510 に答える
8

svn::log 以外のリビジョン props への編集を防ぎます

  1. pre-revprop-change.bat
  2. svn::log 以外のリビジョン プロパティの編集を禁止します

@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-03-11T07:10:53.217 に答える
6

* 更新: Twitter は OAuth を支持してユーザー名/パスワード認証を廃止したため、これは機能しなくなりました。*

コミット情報を Twitter に公開します

  1. フックの名前 = post-commit
  2. スクリプトの動作 = リビジョン、作成者、およびコミット メッセージを Twitter に公開する

使用上の注意:

  • twitterUsernametwitterPasswordを実際の Twitter に置き換えます。
  • これは VisualSVN に対してテストされており、動作させる唯一の方法は、ハードコードされたパスc:\hook\post-commitにすべてをダンプすることでした。これは、VisualSVN が読み取り/書き込みアクセスできる任意のパスに変更できます。
  • Wget をインストールする必要があります。インストーラーはこちらからダウンロードできます
  • コメントと改善を歓迎します。これは Windows での初めての SVN フックであり、私の GAWD は苦痛でした。

実際のスクリプト

echo status= > c:\hook\post-commit\msg.txt
echo Rev#%2 by >> c:\hook\post-commit\msg.txt
"%VISUALSVN_SERVER%\bin\svnlook.exe" author -r %2 %1 >> c:\hook\post-commit\msg.txt
"%VISUALSVN_SERVER%\bin\svnlook.exe" log -r %2 %1 >> c:\hook\post-commit\msg.txt
"c:\Program Files (x86)\GnuWin32\bin\wget.exe" --user=twitterUsername --password=twitterPassword --post-file=c:\hook\post-commit\msg.txt --append-output=c:\hook\post-commit\log.txt --output-document=c:\hook\post-commit\download.txt --delete-after http://twitter.com/statuses/update.xml
于 2010-03-04T04:55:13.617 に答える
4

Java でコーディングされた subHooker を使用するのが好きです。コミット前後のフック機能を提供します。

コミット前:

  • コミット メッセージの要件、最小長、またはその両方を強制します (または強制しません)。
  • コミット メッセージで RegEX 式の要件を強制できます。バックログまたは欠陥番号を要求する (または要求しない) のに適しています。

コミット後:

  • HTML またはプレーン テキストの電子メール メッセージを送信する
    • プレーン メッセージと HTML メッセージの両方がテンプレート システムを使用します
    • 差分をオンまたはオフにできます
    • 変更セットのオンとオフを切り替えることができます
  • ローカリゼーションをサポート
  • 標準化されたロギングをサポートします。

Googleコード@ http://code.google.com/p/subhooker/で見つけることができます

それは無料で、そうです、私は作成者です。私は数年前から Subversion を実行してきました。私はそれが大好きなので、これをコミュニティに貢献しています。

于 2011-12-08T22:32:16.957 に答える
4

一般的な「遅延」コミット メッセージをチェックします

  1. フックの名前 = pre-commit
  2. スクリプトの動作 = 空行または「.」をチェックします。ライン。また、唯一のコメントとして許可されていない単語のファイルも確認してください。

実際のスクリプト

rem Make sure that the log message contains some text.
set REPOS=%1
set TXN=%2

"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo Your commit has been blocked because you didn't provide a log message  1>&2
echo Please write a log message describing the purpose of your changes and 1>&2
echo then try committing again. -- Thank you 1>&2 
exit 1

:OK
rem Check if comment is in list of reserved words to not be used..

"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% >comment
setlocal enabledelayedexpansion
Set SEPARATOR=
set COMMENT=
for /f "delims=" %%a in (comment) do (  
    set currentline=%%a
    set COMMENT=!COMMENT!%SEPARATOR%!currentline!
)

FIND "%COMMENT%" "C:\Program Files\Subversion\excludedwords.txt">Null
If %ERRORLEVEL% EQU 1 goto OK2

:Fail
echo Your commit has been blocked because the single word comment you provided is not allowed 1>&2
echo Line is -%COMMENT%- 1>&2
echo Please write a proper log message describing the purpose of your changes and 1>&2
echo then try committing again. -- Thank you 1>&2 
exit 1


:OK2
rem Check that the author of this commit has the rights to perform
rem the commit on the files and directories being modified.
rem commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1

rem All checks passed, so allow the commit.
exit 0

サンプル除外語ファイル: 更新された更新された更新されました。更新しました。修正修正修正。修理。.. . ... . . . . 並べ替えました。ソート済み ソート済み。

等等等等

于 2009-10-20T15:52:53.770 に答える
3

svn::log 以外のリビジョン props への編集を禁止します

  1. pre-revprop-change.bat
  2. svn::log (代替バージョン) 以外のリビジョン プロパティへの編集を防止します

ソース:

rem Only allow log messages to be changed.
if "%4" == "svn:log" exit 0
echo Property '%4' cannot be changed >&2
exit 1
于 2009-06-04T14:30:20.577 に答える
3

Windows で Subversion を使用している .NET 開発者向けに、Phil Haack がCaptainHookについて投稿しました。

CaptainHook は、.NET を使用して Subversion フックを作成するためのシンプルなプラグイン フレームワークです。

プロジェクトはSource Forgeでホストされています

于 2009-03-11T07:28:44.860 に答える
1

このフックは、特定のブランチへのコミットを防ぎます

(この場合はbranch-16E ):

setlocal

rem Subversion sends through the path to the repository and transaction id  
set REPOS=%1
set TXN=%2

rem Committing to a branch is not allowed
svnlook changed -t %TXN% %REPOS% | findstr "\/branch-16E"
if %errorlevel% EQU 0 goto errb else exit 0

:errb
echo. 1>&2
echo This branch was closed. If you want to commit here contact your administrator. 1>&2
exit 1
于 2016-07-04T14:29:54.573 に答える
1

C# を使用してフックのリポジトリを開始しました。私の最初のフックは、チェックイン通知を RSS フィードに送信するためのものでした: SubversionRss私は現在、チェックイン通知を Twitter フィードに送信するためのコミット後のフックに取り組んでいます。

于 2009-03-19T17:31:36.337 に答える