##起こったこと
Codeigniterを利用してアプリケーションを作っています。
自動デプロイをしようと思ってgitからcheckoutしたソースをrsyncで公開ディレクトリの同期をしてみました。
rsync -avC --delete --bwlimit=1250 /src/path/ /application/path/
比べてみると。
diff -r /src/path/ /application/path/
/application/path/applicationだけに発見: core
なんでや!?
調べてみたこと
man rsync
-C, --cvs-exclude
This is a useful shorthand for excluding a broad range of files
that you often don’t want to transfer between systems. It uses a
similar algorithm to CVS to determine if a file should be
ignored.
The exclude list is initialized to exclude the following items
(these initial items are marked as perishable ― see the FILTER
RULES section):
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/
はえーcoreディレクトリは除外されてるやん。みたらわかるーはまるやつやん。
やったこと
以下のように書きました
rsync -avC --include=core --delete --bwlimit=1250 /src/path/ /application/path/
が本当は横着せずにきちんとexclodeをつなげて書くほうがいいのかもしれません。
rsync -av --exclude=.git/ --exclude=.gitignore --include=core --delete --bwlimit=1250 /src/path/ /application/path/
あとexcludeやincludeが多くてコマンドがながくなりそうだったら
rsync -av --exclude-from=exlude.txt --delete --bwlimit=1250 /src/path/ /application/path/
exlude.txt
# exclude
- .git/
- *.bak
- .svn/
# include
+ core
別ファイルで管理するのもありかな。
楽しいCIライフを送りましょう。