CakePHPのcore部分をgit submodule化してgithubで管理する

2011-11-09追記

  • app/webroot/test.phpのCAKE_CORE_INCLUDE_PATHを修正することを書いてなかったので追加
  • bakeのときにはappディレクトリを指定する必要があることを追加

ここから元記事

CakePHP as a Git submodule | Bravo Kernelの通りやればできる。
重要なのはapp/webroot/index.phpを修正してCAKE_CORE_INCLUDE_PATHのディレクトリを指定することくらい

前提

  • CakePHP2.0
  • Webサーバのdocrootは以下の通り
~/Sites/docroot/

submodule化の流れ

.gitを削除

[17:53]% rm -fR .git                                                                  [~/Sites/docroot]


cake本体を削除

[17:54]% rm -fR lib                                                           [~/Sites/docroot]


後々考えてgitignoreを作成

[17:55]% touch .gitignore                                                     [~/Sites/docroot]


初めのcommit

[17:55]% git init                                                             [~/Sites/docroot]
Initialized empty Git repository in ~/Sites/docroot/.git/
[17:55]% git add .                                                            [~/Sites/docroot]
[17:55]% git commit -m 'first commit'                                         [~/Sites/docroot]
[master (root-commit) 6083f1c] first commit
 436 files changed, 67172 insertions(+), 0 deletions(-)
# 以下略


git submoduleでcakeを追加

[17:55]% git submodule add https://github.com/cakephp/cakephp.git             [~/Sites/docroot]
Cloning into cakephp...
remote: Counting objects: 134378, done.
remote: Compressing obje
# 以下略


submoduleを初期化

[18:05]% git submodule init                                                   [~/Sites/docroot]
Submodule 'cakephp' () registered for path 'cakephp'


念のためupdate

[18:06]% git submodule update                                                 [~/Sites/docroot]


cakephpのgitを切り替えたいので一旦中に入る

[18:06]% cd cakephp                                                           [~/Sites/docroot]


ローカルに「2.0.2」というbranchを作り、stableであるCakePHP2.0.2のtagデータをcheckoutする

[18:08]% git checkout -b 2.0.2 refs/tags/2.0.2                        [~/Sites/docroot/cakephp]
Switched to a new branch '2.0.2'


戻る

[18:09]% cd ..                                                        [~/Sites/docroot/cakephp]


CakePHPのCoreのディレクトリを修正しないといけないのでapp/webroot/index.phpとテストをするのでapp/webroot/test.phpを修正する

# vim app/webroot/index.phpでCAKE_CORE_INCLUDE_PATHを以下のように修正
    //define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'lib');
    define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'cakephp' . DS . 'lib');


commitするためにgit addする

[18:15]% git add app/webroot/index.php                                        [~/Sites/docroot]


git commit

[18:15]% git commit                                                           [~/Sites/docroot]


最後にgit hubにpush

# githubのCodeタブに書いてあることを丸写し
[18:17]% git remote add origin うんちゃらかんちゃら              [~/Sites/docroot]
[18:18]% git push -u origin master                                            [~/Sites/docroot]


できたできたー。簡単。

bakeを使う場合

bakeを使う場合には/webroot/index.phpを通らないのでappのディレクトリを指定する必要がある

[16:43]% ./cakephp/lib/Cake/Console/cake -app app bake                        [~/Sites/fmn/cakephp]