私たちのウェブショップにSubversionを紹介しています。チェックインしたファイルをFTP経由でサーバーにアップロードしたい(そして、Subversionに慣れてきたら、SFTP経由で)。ファイルは、テスト目的でリリース候補ページに送信されます。スクリプトを呼び出して、ファイルを本番環境に移動できます。
私の質問はこれです:Subversionを介してファイルをサーバーに転送するにはどうすればよいですか?ファイルがチェックインされたときに転送を行うスクリプトを追加できますか?
SubVersionでpostcommitフックを使用するスクリプトを作成したいとします。スクリプトをリポジトリからエクスポートしてからサーバーにFTPで転送するか、リポジトリからサーバーの作業ディレクトリにチェックアウトして、コミット後のフックスクリプトでサーバーの作業ディレクトリで「svnupdate」を呼び出すことができます。 。
サーバーへのシェルアクセスがあり、それにSVNがインストールされている(またはSVNをインストールできる)場合、最善の策はFTPを完全にバイパスすることです。
アプリのデプロイ方法は(簡略化)です
サーバー(またはライブサーバー自体に直接)に変更を加える必要がある場合は、Subversionを使用してコードを同期するのは簡単です。
おそらく、展開にはsvn checkoutではなくsvn exportを使用する必要があると思います.svnディレクトリが本番バックアップジョブを混乱させることはありません. svn export は「クリーンな」チェックアウトです。
また、すべてを処理するスクリプトも作成します。コードの構造によっては、多くの場合、ディレクトリをバージョン管理し、シンボリック リンクを最新バージョンに更新するだけでロールバックが容易になります。
Capistranoなどを使用してデプロイを自動化することもできます。ただし、CruiseControl の推奨事項には 2 番目です。
あなたが探しているのは、自動ビルドスクリプトとの統合のようなものだと思います。私はCruiseControlを使用して、ASP.Netアプリケーションで同様のことを行いました。私はあなたの正確な要件を知りませんが、あなたがそれをあなたが望むことをするようにさせることができると思います。
おそらく、SVNの「フック」を使用してこれを行うことができます。基本的に、すべてのチェックインの前または後にスクリプトを実行するようにサーバーを構成できます。オンラインブックの関連セクションへの直接リンクは次のとおりです。
私はオリオンの考えを2番目にしています。サーバーへのシェルアクセスがあれば、Subversion自体をデプロイメントツールとして使用するのは実際には非常に簡単です。誤って.svnディレクトリを公開しないように、いくつかのWebサーバールールが設定されていることを確認してください。
svn2web は、コミットごとに Subversion リポジトリから Web サーバーにファイルを ftp または scp します。詳細については、SourceForgeプロジェクトを参照してください。