Linux環境(CentOS)でCakePHPをgit管理する手順をまとめてみました。

こんにちは。
gitをぼちぼち使い始めていたのですが、CakePHPでgit管理する場合にコアファイルも管理すべきかそうしないべきか、バージョンをあげるときを考えたら、どうするべきかなどで悩んでいました。そのときはCakePHPではコアディレクトリを管理下から外してました。

今回は、コアディレクトリをsubmodule化してコアディレクトリも管理します。こうすることで、バージョン上げも容易?にできるのかと思います。今回はcakephpを2つ使います。ひとつは、今までのように使いますが、コアファイルは削除します。そして、もうひとつのやつは、subumodule化してコアファイルを使用します。今回はほんとに備忘録的な意味合いが強いですがが、、



最初に全体の流れ

  1. 1つ目のcakephpをダウンロードする
  2. ダウンロードしたコアファイルを削除してgitの設定
  3. 実際に使用するコアファイルのダウンロードをする
  4. 設定をする

1.1つ目のcakephpをダウンロードする

$ git clone git://github.com/cakephp/cakephp.git 
$ cd cakephp

2.ダウンロードしたコアファイルを削除してgitの設定

$ rm -rf lib
$ rm -rf .git
$ git init

3.実際に使用するコアファイルのダウンロードをする

$ git submodule add git://github.com/cakephp/cakephp.git
$ git submodule update --init

4.設定をする

# app/webroot/index.phpを編集
vi app/webroot/index.php

  //define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'lib');
+ define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'cakephp' . DS . 'lib');


# app/webroot/test.phpを編集
vi app/webroot/test.php

  //define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'lib');
+ define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'cakephp' . DS . 'lib');

#app/Console/cake.phpを編集
vi app/Console/cake.php

<?php
#!/usr/bin/php -q
$ds = DIRECTORY_SEPARATOR;
$dispatcher = 'Cake' . $ds . 'Console' . $ds . 'ShellDispatcher.php';

if (function_exists('ini_set')) {
        $root = dirname(dirname(dirname(__FILE__)));

        // the following line differs from its sibling
        // /lib/Cake/Console/Templates/skel/Console/cake.php
        //ini_set('include_path', $root . $ds . 'lib' . PATH_SEPARATOR . ini_get('include_path'));
        ini_set('include_path', $root . $ds . 'cakephp' . $ds . 'lib' . PATH_SEPARATOR . ini_get('include_path'));
}

// for managing cakephp's core-code by git-submodule
$idx = array_search('-app',$argv);
if ($idx === false) {
        $argv[] = '-app';
        $argv[] = $root . $ds .'app';
}

if (!include($dispatcher)) {
        trigger_error('Could not locate CakePHP core files.', E_USER_ERROR);
}
unset($paths, $path, $dispatcher, $root, $ds);

return ShellDispatcher::run($argv);
$ git add .
$ git commit -m "Initial commit"

今回は以下のサイトを参考にしました。ありがとうございました!
俺流CakePHPセットアップ方法 - a long log
CakePHP 2.xのコア部分をGitのSubmoduleにて管理 - longkey1::blog
Gitと一緒にCakePHPを楽しむ – CakePHP Advent Calendar 2010 6日目