2011-06-18 17 views
2

でプロジェクト名を取得しますそれらがリポジトリのルートに格納されていることを知りました。は、私はこのようにレイアウトされたSubversionリポジトリを持ってコミット後のsubversionのフック

私が得る唯一のパラメータは、リポジトリパスとリビジョン番号です。特定のプロジェクトだけでこのスクリプトを実行する方法はありますか?

おかげで、

ソリューション: 究極のソリューションは、このような何か行ってきました:Subversionでは

#!/bin/bash 
REPOS="$1" 
REV="$2" 
if svnlook changed -r $REV $REPOS | grep ProjectA; then 
    echo "do stuff" 
fi 

答えて

3

はい、コミットされたリビジョンで変更されたファイルのリストを取得し、適切な正規表現でgrepを実行して、正しい場所にプロジェクト名が含まれているかどうかを判断しますコードを実行し、そうでない場合はスクリプトの最後にジャンプして0を返します。

0

を「プロジェクト」のような定義は存在しません...定義はによって行われなければなりません君は。これはSubversionが "Project"ベースではなくリポジトリ内の変更に対してそれを実行することを意味します...

リポジトリとリビジョン番号のような情報を使用して、必要な情報を抽出することができます。 svnlookを使用して必要な情報を抽出するだけで、svnlookを適切なパラメータで呼び出すことができます。

1

ここでは、Windows 2012 Server上のVisualSVNに関するこの質問に対する回答を探しました。いくつかの情報を収集した後、VisualSVNのWindowsバッチファイルのポストコミットフックで、特定のプロジェクトをそのサーバーにデプロイするために開発サーバーにPHPスクリプトをロードするソリューションです。フックコマンドは1行です:

svnlook changed "%1" | findstr /L "ProjectA/trunk/" && powershell -Command "Invoke-WebRequest http://192.168.0.177/checkout_on_commit/checkout_on_commit.php -OutFile $ENV:SYSTEMROOT\Temp\commit.txt" || rem 

レムが他のプロジェクトへのコミットのために、故障したとして亀によって報告されてからフックを防ぐために「ノーオペレーション」として必要でした。プロジェクトをLinuxサーバーにデプロイするcheckout_on_commit.phpの内容は次のとおりです。

<?php 
`date >> checkout.log`; 
`svn sw --non-interactive --no-auth-cache --username project_a_readonly --password trytoguess https://svnserver/svn/GroupA/ProjectA/trunk /app/www/ >> checkout.log`; 
?> 
関連する問題