SVNにコミットしたソースを、シェルかツールなどを1回実行すると、
SVNと本番ディレクトリのファイルを比較して、
新しければファイルを上書きする。ということがしたいです。
ツールなど、何か便利な方法があれば教えて下さい。
WEBアプリケーションでPHPで作ります。
PHPファイルやSmartyテンプレート、HTMLファイル、CSS、画像等をセットしたいです。
JAVAで使ってるANTのようなものが、PHPであるのか、自作しないといけないのか不明です。
よろしくお願い致します。
SVNで管理しているなら、本番サーバ上にチェックアウトして更新がある度に svn up を実行すれば良いのではないでしょうか?
開発は別ディレクトリかもしくはローカル環境にチェックアウトしてそこで行い、修正したらしたらSVNにcommitして、サーバ上で svn up をして本番に反映させるという手順です。
Capistrano というデプロイツールを使ってみてはどうでしょうか?
このツールは、簡単に言うと下記のことをコマンド1つでほぼ全自動で行えるようになるツールです。
よくRuby on Railsと一緒に使われることが多く、Capistrano自体もRubyで作られていますが、希望されているようなPHPで作られたWebアプリケーションの更新処理を行うくらいであれば、少し設定をカスタマイズしてやれば十分可能です。
あとは、すでに書いてあるようにCapistranoはRubyで出来ているため、手元のCapistranoを実行するサーバ(恐らくSVNリポジトリがあるサーバ)にRubyをインストールしたりする必要はあります。
ですが、Capistranoを使うことで手間のかかる更新処理をほぼ自動化できてしまうメリットに比べればRubyのインストールとCapistranoの設定にかかる手間はすぐにでも取り返せると思います。
toshiwoさんありがとうございます。
Capistranoは初めて知りました。
紹介頂いたサイトやGoogleでいろいろ調べて見ましたが、便利そうです。が、今の私にはレベルが高そうなので、勉強してみて、運用上必要な機能の使い方を調べます。
1の回答の補足です。
確かにサーバ上にチェックアウトすると .svn ディレクトリが公開状態になってしまいますが、以下の内容の .htaccess をトップディレクトリに一つ置くだけで .svn ディレクトリにアクセスを禁止することが出来ます。
RewriteEngine on RewriteRule (^|/)\.svn - [F]
この .htaccess も SVN 上に commit しておくと便利です。
.htaccessの設定まで書いて頂きありがとうございます。
実際に試してみて、できました。(SVN co するとき権限も変わらないので助かりました)
ありがとうございます。これで運用していきます。
そうか! そんな簡単にできるのですね!
長い間うんうん考えていましたが、全く気づきませんでした。
ありがとうございます。
=================
と、試してみて気づいたのですが、
svn up するには、.svnディレクトリが必要(つまり事前にチェックアウトが必要)ですよね。
本番環境ではやはりそれはまずいので、
.svnが無い状態(SVN関連のファイルが無い状態)にしたいです。
そんなことできますか?