質問: ### 前提・実現したいこと 自社で作成しているWebアプリケーションのバージョン管理を行う。 1.WEBサーバー1台で構成されている「アプリA」とWEB/DBサーバーそれぞれ1台ずつで構成されている「アプリB」のバージョン管理を行う 2.GIT導入も検討したが、開発規模(1、2人)を考えSubversionを導入することに 3.「アプリA」「アプリB」それぞれの/var/www以下のディレクトリをバージョン管理したい ### わからないこと **1リポジトリを設置する場所について、Subversion用のサーバーを立てるべきか?** →「アプリA」「アプリB」それぞれのサーバー内にsvnディレクトリを作成し その中にtrunkを作成した場合問題があるか? **2Subversion用のサーバーを立てた場合** 「アプリA」「アプリB」それぞれのディレクトリを作成し1台のサーバーに複数のリポジトリが存在しても問題ないか? **3本番環境へのリリースについて** 変更内容をコミットし反映させたあと、 本番環境へのリリース作業のイメージがつかめておりません。 ・上記1の場合 本番環境にリリースする際はSVN/trunk/var/www...以下のファイルを vra/www...に「cp」でコピーするようなイメージでしょうか? ・上記2の場合 こちらもコミット後、本番環境へリリースする際の流れを把握したいです。 ### 補足情報(言語/FW/ツール等のバージョンなど) 前職では簡単なHTMLページで作業する際にSubversionを利用していたので、 チェックアウトからコミットまでは把握しているのですが、 本番サーバーへのアップ部分については、別サーバー担当が行っていたためよくわかっておりません。 サーバー情報などが必要な場合はご指摘頂ければ、 用意いたしますので、恐れ入りますが、ご教授頂けますようお願い致します。
回答: > > 1リポジトリを設置する場所について、Subversion用のサーバーを立てるべきか? > > > 別でなければ行けません。 本番環境と開発用リポジトリを一緒にしてしまったら * 本番機がマシンごと吹っ飛んだとき復旧の方法がありません * 開発作業が本番サービスに負荷をかけることになります * 本番公開前の検証環境がないということになるのでしょうか > > 「アプリA」「アプリB」それぞれのディレクトリを作成し1台のサーバーに複数のリポジトリが存在しても問題ないか? > > > 問題ありません。svnserveでリポジトリルートを設定したら、その下にある各リポジトリが公開されます。 > > 本番環境へリリースする際の流れを把握したいです。 > > > svn exportコマンドを使うのがいいでしょう。 また、そのときのエクスポート先は本番ディレクトリに直接ではなく、リビジョン番号付きのディレクトリ(リリースディレクトリ)にまずエクスポートし、本番ディレクトリはリリースディレクトリへのシンボリックリンクという形にするのが事故が少ないかと思います。 リリースディレクトリへのエクスポート、そこへのシンボリックリンクの貼り替え、を一括で行うスクリプトを作ってそれを叩くようにすれば手軽かつ安全です。