2740


cakephp2.5.6を使っているのですが、gitでlibフォルダをignoreするべきか悩んでいます。

まだ、cakephpは初心者でlibフォルダがどの様な役割をしているかも把握していません。

もしも、gitの管理下に入れる必要性が無いのなら省きたいのですが、どうしたらよいでしょうか？ よろしくお願いします。


CC BY-SA 3.0
2014-12-27T14:20:06.510
2704
2014-12-29T13:37:20.100
5436
question
git cakephp
cakephp2系のlibフォルダはgitの管理に入れた方が良いのでしょうか？


自分はいつもlib含めて管理をしています。  
なぜなら全てをgit管理下に置けば新しく環境を設置する際clone一回すればいいからです。 ※CakePHP自体の設定は除いて  
他にもCakePHPのバージョン上げるなどのときにも戻しやすいので重宝しています。


CC BY-SA 3.0
2014-12-28T04:29:21.837
2719
2014-12-28T04:29:21.837
4262
2704
answer


libはlibraryの略で、cakephpが使用しているフレームワークの中身が丸ごと詰まっています。
基本的にユーザーがいじる部分ではない(カスタマイズをのぞいて)ので、gitにあげてもあげなくてもいいと思いますが、ishigetaniさんがおっしゃっているようにバージョンアップやチームでコーディングをする場合は、gitにあげた方がいいと思います。


CC BY-SA 3.0
2014-12-28T06:38:47.990
2723
2014-12-28T06:38:47.990
5330
2704
answer


Cakephp本体を管理下に入れてしまうと、Cake本体のバージョンアップ時に手間なのでComposerを利用してインストールを行い、Vendor配下をgit管理下から外すという方法が良いと思います。

[ComposerでCekePHPをインストール](http://book.cakephp.org/2.0/ja/installation/advanced-
installation.html#composercekephp)

複数名のプロジェクトではGit管理下の方が良いという意見が多いようですが、含めてしまうとフレームワークの本体をいじってしまう可能性が出てきます。本体を改修してしまうと、本体の更新時に大変なことになります。。

例え注意深く運用していたとしても、このリスクはチームメンバーの増加に比例してしまうので、リスク管理の意味合いからも物理的に除外した方が安全と考えます。


CC BY-SA 3.0
2014-12-28T09:43:52.027
2740
2014-12-29T13:37:20.100
2014-12-29T13:37:20.100
5296
5296
2704
answer


昨今では CakePHP(2系)でも [Composer](http://getcomposer.org)
を使う管理方法があって、abebeさんが回答されているように公式サイトに解説記事もあります。プロジェクトで、他にも Composer
でインストールしているライブラリを利用しているのであれば、Composer での管理へ寄せてしまうのがベストかとは思います。

Composer ではなくあくまで Git で全部管理したいという場合は、CakePHP
本体（および他の外部ライブラリ）はプロジェクトのリポジトリには直接含めず、Gitのサブモジュールという機能を使ってシンボリックリンクのように管理する方法があります。プロジェクトに対して、CakePHP
の特定のコミットへの紐付けを、リポジトリは独立させたままできます。

ただし、CakePHP 2系では、このように CakePHP
本体とプロジェクトで扱っている部分とを別々にするようには初期設定されていないため、ディレクトリの配置等に関する部分を多少変更する必要があるようです。以下の記事が参考になります。

  * [CakePHP 2.0+Gitの開発環境を手早く構築する](http://tkyk.name/blog/2012/02/17/cakephp20-git-starter/)

この記事は、

  * libディレクトリなどCakePHPのコア関係の箇所と、アプリケーションの箇所とを分けて構成している
  * コア機能部分は cakephp というサブディレクリにまとめ、それを、プロジェクトの git リポジトリに対するサブモジュールとして設定

のように説明されています。


CC BY-SA 3.0
2014-12-29T13:33:58.553
2801
2014-12-29T13:33:58.553
5444
2704
answer