SVNに慣れてきたので、ステージングサーバーまたはライブサーバーにコードをより簡単にデプロイする方法が必要になりました。また、テストに役立てるために、このサイトのフッターにビルド情報を配置する方法も必要です。サイトはPHP/MySQLです。
8 に答える
最初に、リビジョン情報が必要なファイルのキーワード置換を有効にします。
svn propset svn:keywords "Rev" file.txt
リビジョン情報を保存するファイルに追加します。
$Rev$
さらなる読み物: http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.keywords.html
プロパティ メソッドは、リポジトリ全体の最新のリビジョン (スタック オーバーフローのフッター) ではなく、プロパティを含むファイルの最後のリビジョン番号のみを提供します。それが必要な場合は、svnversionを使用する必要があります。
私は最近、あるプロジェクトで Capistrano を使い始めました。それは素晴らしく、非常に柔軟で強力です。通常の使用法からかなり逸脱してしまいましたが、ワンクリックでの展開がはるかに簡単になります。
必要に応じて svn を更新するスクリプト。
SVN はキーワードをサポートしています。展開したいキーワードをキーワード プロパティに追加すると、SVN が展開されます。$Id$ や $Rev$、または SVN ブックで説明されているキーワードを参照してください。
プロジェクト AssemblyInfo.cs のバージョン番号を更新する場合は、次の記事に興味があるかもしれません。
CodeProject: Visual Studio プロジェクトで Subversion リビジョン番号を使用する
SVN キーワードを有効にすると、プロジェクトをチェックインするたびに、Subversion は特定の「キーワード」についてファイルをスキャンし、キーワードをいくつかの情報に置き換えます。
たとえば、ソース ファイルの先頭に、次のキーワードを含むヘッダーを作成します。
'$Author:$
'$Id:$
'$Rev:$このファイルを Subversion にチェックインすると、これらのキーワードは次のように置き換えられます。
'$Author: paulbetteridge $
'$Id: myfile.vb 145 2008-07-16 15:24:29Z paulbetteridge $
'$Rev: 145 $
私はプッシュにカピストラーノを使用するのが好きです。こちらを参照してください。
SVN $Rev$ プロパティを使用して、フッターにリビジョン番号を取得できます。
デプロイする前にソースを変更した場合や、プロジェクト内の1つのディレクトリからチェックインした場合、同じプロジェクト内の別のディレクトリのリビジョン番号が異なる場合など、キーワードの内容は多くの場合失敗します。ドキュメントを注意深くチェックして、キーワードがあなたが思っていることをしていることを確認してください。
より良い方法は、svnversionプログラムを使用して、コンパイル時またはデプロイメント時にチェックアウトされたディレクトリに関する情報を生成することです。Svnversionは、すべてのディレクトリのバージョンに関する情報を表示し、ソースがローカルで変更されたかどうかにフラグを立てます。
私がphpプロジェクトのために思いついた方法は、最良の方法ではないかもしれませんが、しばらくして検索すると、チェックアウトを実行し、バージョンチェックを実行し、.svnフォルダーを消去して先に進むことです. これが私が書いたシェルスクリプトの一部です:
(最初に、レポをチェックアウトするスクリプトが必要です)
# get the svn revision number and create a RELEASE file
svnvers=`svnversion .`
echo "version: $svnvers"
echo "<release><development>0</development><revision>$svnvers</revision></release>" > RELEASE
# remove all .svn directories
find . -name .svn -exec rm -rf {} \;
これを管理する非常に簡単な方法は、次の方法でアプリをセットアップすることです。
展開アプリをトランク ( svn co
/www ルートへのプロジェクト)の作業コピーにするだけで、更新が必要なときにsvn up
ssh コンソール ( ) を介して実行できます。ssh user@host.com svn up /path/to/project
適切なチェックアウト メカニズムを使用してロールバックすることもできます。これは重要です。これを行う場合は、RewriteRules (または同等のもの) を .htaccess (または同等のもの) に追加して、.svn ディレクトリへのアクセスを禁止します。上記を実行できない場合は、svn export
代わりに ssh を介して実行します (したがって、「作業コピー」にはなりません) up
。
また、Ruby on Rails が Capistrano で何をするかを見ることができます。基本的な概念は同じですが、各チェックアウトを別のフォルダーに保存し、「最新」を /www にシンボリック リンクすることで、更新が途中で失敗した場合のトランザクション バックアップをサポートします。ディレクトリ。