mergeinfo プロパティを使用して SVN へのコミットを防ぐトリガーを設定するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2004981

  •  18-09-2019
  •  | 
  •  

質問

そうしたいです。 svn mergeinfo プロパティの作成を避ける 枝の根元以外には。幹支店とその他の支店があります。

svn トリガーについてまったく何も知らないと仮定すると、ブランチのルート以外への mergeinfo プロパティの追加を防ぐプリコミット フックをセットアップするには、どのような手順に従う必要がありますか?

トランクはリポジトリのベース「/trunk」にあり、すべてのブランチは「/branchs/foo」にあります。

役に立ちましたか?

解決

基本的に、SVNを定義する必要があります 事前コミット 針。まず最初に、について読んでください フック全般.

まず、pre-commit.tmpl ファイルをコピーすることから始めるとよいでしょう。 pre-commit, 、そこにロジックを実装します。

現在実行中のトランザクションの差分を調べて、次のような行を確認するとよいでしょう。追加した:svn:マージ情報

これが追加されたファイルに関する情報は別の行にあるため、grep よりも複雑な処理ツール (おそらく単純な Perl スクリプト) が必要になる場合があります。

トランザクションに不要なプロパティが追加されていると判断した場合は、コミットをブロックできます。または、特に大胆な場合は、トランザクションを変更して続行してみることもできます。

他のヒント

以下は動作するはずです。あなたのリポジトリはすでにSVNを持っている:トランク上mergeinfo、あなたは誰もが再び1を追加したいことはありませんので。

ところで、私たちの実際のフックはまた、すべてのログメッセージを伴っているコミットしていることを保証し、また、リポジトリブラウザを経由して、当社の重要なトップレベルのディレクトリの一部の削除から保護します。

@echo off

set logfile=%TEMP%\%2.txt

"c:\program files\subversion\svnlook" log -t %2 %1 > %logfile%

for /f "tokens=1,2*" %%i in (%logfile%) do (
    if %%i==UU goto checkmergetracking
)

for /f "tokens=1,2*" %%i in (%logfile%) do (
    if %%i==_U goto checkmergetracking
)

del %logfile%
exit 0

:checkmergetracking
"c:\program files\subversion\svnlook" diff -t %2 %1 > %logfile%
find "Added: svn:mergeinfo" %logfile%
if ERRORLEVEL 1 goto nomergeinfo

del %logfile%
echo "Addition of Merge Info Not Allowed" >&2
exit 1

:nomergeinfo
del %logfile%
exit 0
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top