雑記

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|09|11|
2009|02|03|05|06|07|08|10|11|12|
2010|01|03|04|05|06|07|08|09|10|
2011|05|06|09|10|
2012|03|07|09|12|
2013|01|02|04|05|07|08|10|11|
2014|04|05|08|10|12|
2015|01|05|
2016|09|

2009-12-19 [長年日記]

ソースコードを本番環境に直接チェックアウトするとか…

そこにデータが存在するから設定ミスした時に漏えいするわけで、不必要なデータは置かないというのが基本中の基本だと思います。

継続的なupdateの必要があり、それが面倒という人は、例えば以下のようなスクリプトを使って運用してみてはどうでしょう?

#!/bin/sh
cd CHECKOUT_DIR
svn update
rsync -avzC --delete . DEPLOY_DIR

チェックアウト用のディレクトリ(CHECKOUT_DIR)を別に設けておき、そこから運用に必要なソースだけ本番環境(DEPLOY_DIR)にコピーします。肝はrsyncの-Cオプションで、バージョン3.0.6の場合は以下の名前のファイル/ディレクトリのコピーを抑制してくれます。

RCS  SCCS  CVS  CVS.adm   RCSLOG   cvslog.*   tags   TAGS
.make.state  .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak
*.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so  *.exe
*.Z *.elc *.ln core .svn/ .git/ .bzr/

上記以外にコピーしたくないファイル/ディレクトリがある場合は、--excludeオプション等で追加します。

あるいはこうした手順を、例えばローカルなテスト環境にチェックアウト、テストを通過したらrsyncで本番環境を同期させるという風にルーチンワークに組み込んでしまえば「余計な手間」は一切なくなります。