FuelPHPで作成するアプリケーションをGitHubで管理する
FuelPHPで作成するアプリケーションをGitHubで管理する方法をメモしておきます。
2012年9月10日追記
2012年9月9日にFuelPHP1.3がリリースされましたので、一部追記をしました。
ソフトウェア | バージョン |
---|---|
FuelPHP | 1.2.1, 1.3 |
Git | 1.7.11.1 |
FuelPHPで作成するアプリケーションをGitHubで管理する手順
手順1. GitHubでリポジトリを新規作成
様々なサイトや書籍で紹介されていますので、詳細は省きます。以下、簡単に。
- GitHubにサインインし、右上のメニューより「Create a New Repo」をクリックします。
- リポジトリの設定を行い「Create repository」をクリックします。今回は初期ファイルは必要ありませんので、Repository nameの登録だけで構いません。
手順2. ローカルマシンでアプリケーション開発準備
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | # FuelPHPをGitHubからcloneします(project_nameは任意で) git clone git://github.com/fuel/fuel.git project_name cd project_name # Gitの管理ファイルは、FuelPHPのコアおよびパッケージ用になっていますので削除します # .gitignoreは、そのまま流用できるので消す必要はありません rm -rf .git .gitmodules # FuelPHPプロジェクト用のドキュメントを削除します # 必要に応じて、アプリケーション用のREADME.md等を追加しましょう rm *.md # コア、パッケージ、マニュアルを削除します(サブモジュールとして管理します) rm -rf docs fuel/core fuel/packages # L.6〜L.15をひとまとめにした削除コマンド rm -rf .git .gitmodules *.md docs fuel/core fuel/packages # アプリケーション用の管理ファイルを作成します git init # Gitサブモジュールを追加を追加します(コア以外は必要に応じて追加しましょう) 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 add git://github.com/fuel/docs.git docs # 1.2/masterをチェックアウト git submodule foreach 'git checkout 1.2/master' # ローカルリポジトリにcommitします git add . git commit -m "first commit" # 手順1で作成したリポジトリを登録し、pushします git remote add origin git@github.com:mawatari/repository_name.git git push -u origin master |
以上で、FuelPHPで作成するアプリケーションをGitHubで管理する準備は整いました。開発に勤しみましょう。
ちょっと補足
補足部分は読飛ばして構いません。手順3. cloneしたリポジトリのメンテナンスへ
L.1〜L.2で説明したFuelPHPを取得する方法は、以下に示す通り、他にもあります。
1 2 3 4 5 | # oilコマンド oil create project_name # git clone git clone --recursive git://github.com/fuel/fuel.git project_name |
ただし、コアおよびパッケージをサブモジュールとして管理するには、2-1.のL.15のようにディレクトリを削除してやる必要があるようです。削除するなら、それらを最初からダウンロードしない方が時間を省略できるため、2-1.L.2の通り、オプションなしのcloneを実行しています。(2-1.L.2のコマンドは、それらをcloneしませんが、空ディレクトリは作成されるため、ディレクトリの削除は必要でした。)
kenjisさんのブログ(FuelPHP のアプリケーションのリポジトリを作成する方法)および、Creating a FuelPHP Application Repositoryの動画では、削除せずにサブモジュールの追加ができているようですが、私の環境では以下のようなエラーが出ました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # サブモジュールも含めてcloneする git clone --recursive git://github.com/fuel/fuel.git project_name # 〜中略〜 git submodule add git://github.com/fuel/core.git fuel/core # 以下のようなエラーが表示される The following path is ignored by one of your .gitignore files: fuel/core Use -f if you really want to add it. # 指示に従って -f オプションをつける git submodule add -f git://github.com/fuel/core.git fuel/core # しかし、エラー Adding existing repo at 'fuel/core' to the index fatal: Not a git repository: fuel/core/../../.git/modules/fuel/core Failed to add submodule 'fuel/core' # サブモジュールを含めずにcloneする git clone git://github.com/fuel/fuel.git project_name # 〜中略〜(2-1.L.15を実行してない状態) git submodule add git://github.com/fuel/core.git fuel/core # 以下のようなエラーが表示される # 空ディレクトリが存在しているだけでエラーが出る模様 'fuel/core' already exists and is not a valid git repo |
git clone -b 1.1/master --recursive git://github.com/fuel/fuel.git project_nameとして、FuelPHP 1.1を指定してみましたが、結果は同じでした。また、FuelPHP関係なしに git submodule add <repository> <path>で、パスに空ディレクトリを指定するとエラーになります。これはGitの仕様ということでしょうか。もしかしたら、何か方法があるのかもしれませんが、とりあえずここまで。わかる方がいらっしゃったら、ぜひ教えてください!
サブモジュールに関しては、以下が詳しいです。
参考:Pro Git – 6.6 Git のさまざまなツール – サブモジュール
参考: git submodule --help
手順3. cloneしたリポジトリのメンテナンス
前述の通り、2012年9月9日にFuelPHP1.3がリリースされました。cloneしたリポジトリのメンテナンス方法についてのメモを追記します。以下の手順で、サブモジュールとして管理しているFuelPHPのコアおよびパッケージを最新の状態にします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # リポジトリの変更点をローカルリポジトリにマージ git submodule foreach 'git pull' Entering 'fuel/core' remote: Counting objects: 11, done. remote: Compressing objects: 100% (2/2), done. remote: Total 8 (delta 7), reused 7 (delta 6) Unpacking objects: 100% (8/8), done. From git://github.com/fuel/core * [new branch] 1.3/master -> origin/1.3/master * [new branch] 1.4/develop -> origin/1.4/develop Already up-to-date. # 〜その他、省略〜 # 1.3/masterをチェックアウト git submodule foreach 'git checkout 1.3/master' |
登録したものをGitHubからcloneする際の注意
複数人で開発をするときや、別のマシンで開発をするとき等、GitHubに登録したFuelPHPアプリケーションをcloneすることがあると思います。コアおよびパッケージをサブモジュールとして管理しているので、オプションをつけたり、サブモジュール用のコマンドを実行する必要があります。
1 2 3 4 5 6 7 | # サブモジュールも同時にcloneするためのオプションをつけて実行 git clone --recursive git://github.com/mawatari/repository_name.git # もしくはサブモジュールを利用するためのコマンドを実行 git clone git://github.com/mawatari/repository_name.git git submodule init git submodule update |