Edited at

FuelPHPプロジェクトをgit管理するときにすべきこと

More than 5 years have passed since last update.


前提

oilコマンドのインストールが済んでいること

FuelPHPの1.7.0をインストールする前提で書く(バージョン依存の部分はそれぞれ説明を入れる)


2014/08/07 追記

oilの1.7.2でこの方法を試したところファイル構造やコアパッケージの扱い方が変わっていたので、

1.7.2においてもこの記事の内容が全て使えるわけではないことをご了承下さい


参考


FuelPHPで作成するアプリケーションをGitHubで管理する | mawatari.jp

http://mawatari.jp/archives/creating-a-fuelphp-application-repository-on-github



ゴール

FuelPHPのコアパッケージをサブモジュール化した上で、自分のリポジトリを作成する


利点

FuelPHP自体のバージョンやパッケージのバージョン管理をする必要はない(いじらない)ので、


  • デフォルトで作成されているフレームワーク資源(*.mdファイルなど)で不要なものを消す

  • 資源管理がシンプルかつ明確になる

  • コアのバージョンを別バージョン管理下におけるのでバージョンの移行がスムーズ


まずプロジェクト作成

oil create [projectName]

cd [projectName]


Fuelが生成したgit、コア部分やmdファイルを削除

rm -rf .git .gitmodules *.md docs fuel/core fuel/packages

この時点で、

.git/ Fuelのバージョン管理

.gitmodules Fuelのサブモジュール

docs ドキュメント

fuel/core Fuelのコアライブラリ

fuel/packages/ Fuelのコアパッケージ

README.md

CHANGELOG.md

CONTRIBUTING.md

TESTING.md

LICENSE.md

が削除される。


削除したコアファイルをサブモジュールとして追加

git submodule add git://github.com/fuel/core.git fuel/core

git submodule add git://github.com/fuel/oil.git fuel/packages/oil
git submodule add git://github.com/fuel/auth.git fuel/packages/auth
git submodule add git://github.com/fuel/parser.git fuel/packages/parser
git submodule add git://github.com/fuel/orm.git fuel/packages/orm
git submodule add git://github.com/fuel/email.git fuel/packages/email


追加したサブモジュールを目的のバージョンにチェックアウト

git submodule foreach各サブモジュールに対して順番にコマンドを実行する

指定できるバージョンは

https://github.com/fuel/core/branches

を参照

git submodule foreach 'git checkout 1.7/master'


今までの変更をローカルにコミットする

git add .

git commit -m "initial commit"


リモートリポジトリを作成 or 登録しpushする


既にリポジトリを作ってある場合

git remote add origin [リポジトリURL]

git push -u origin master


これからリポジトリを作る場合(Github)

hub create [-p](プライベートにしたいなら-pオプションをつける)

git push -u origin master


上記手順で作成したリポジトリをcloneする場合


方法1. --recursiveオプションを付ける

git clone --recursive [リポジトリURL]


方法2. 普通にcloneしてからsubmoduleをアップデートする

git clone [リポジトリURL]

git submodule init
git submodule update


サブモジュールのバージョンを上げたい場合

git submodule foreach 'git pull' # 全てのサブモジュールの最新版を取得

git submodule foreach 'git checkout [Fuelのバージョン]/master'


No submodule mapping found in .gitmodules for path ***と言われたら


git の submodule をちゃんと削除する - sakurako_sの日記

http://d.hatena.ne.jp/sakurako_s/20111103/1320251487


キャッシュ上にサブモジュールの情報が残ってしまう現象らしい

git rm --cached ***