Eclipse, PDT, FuelPHP, EGit で github を使う

Eclipse上でPDTを使ってFuelPHPのプロジェクトをGit管理したかったので、EGit で github を使えるようにしてみました。

参考にさせていただいたサイトはこちら。
FuelPHPってなんじゃ?(Git管理編)

Eclipse、PDT、FuelPHP は既に使える状態になっているものとします。

まずはEclipseからGitを使えるように、EGit をインストールします。

Eclipse の Helpメニュー -> Install New Software でダイアログを開きます。EGitのダウンロード用URLはデフォルトで登録されているので、--All Available Sites-- の中から Collaboration -> Eclipse EGit を選択してインストールします。

インストールできたら Eclipse の Windowメニュー -> Preference でダイアログを開き、Team -> Git -> Configuration の User Settings タブで、New Entry ボタンをクリックして、user.name, user.email を設定します。

次にFuelPHPを使うプロジェクトを作成します。

$ oil create contact
$ cd contact

ここで気をつけなければいけないことがあります。oil create で作られたプロジェクトは、FuelPHPgithubリポジトリを clone して作られいるためGit管理になっています。その中でいくつかのディレクトリは git の submodule として登録されているのですが、通常はその中の .git はディレクトリになっているはずが、私の環境(Ubuntu12.04)ではファイルになっていて、中身は下記の用にプロジェクトルートの .git ディレクトリ配下のパスがかかれていました。

$ cat fuel/core/.git
gitdir: /home/akanuma/Learning/php/work/contact/.git/modules/fuel/core

CentOS環境で試した時にはディレクトリとして作成されていたので環境によるのだと思いますが、このままだとあとでコミット候補としてインデックスに登録しようとした時に、下記のようなエラーが表示されます。

$ git add .
fatal: Not a git repository: /home/akanuma/Learning/php/work/sample/.git/modules/fuel/packages/parser

また、submodule として登録した時にも下記のようにエラーになります。

$ 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.

そこで、下記の用にして .git ファイルの中身がさしているディレクトリを .git ディレクトリとして移動します。

$ rm fuel/core/.git
$ mv .git/modules/fuel/core fuel/core/.git
$ rm fuel/packages/auth/.git
$ mv .git/modules/fuel/packages/auth fuel/packages/auth/.git
$ rm fuel/packages/email/.git
$ mv .git/modules/fuel/packages/email fuel/packages/email/.git
$ rm fuel/packages/oil/.git
$ mv .git/modules/fuel/packages/oil fuel/packages/oil/.git
$ rm fuel/packages/orm/.git
$ mv .git/modules/fuel/packages/orm fuel/packages/orm/.git
$ rm fuel/packages/parser/.git
$ mv .git/modules/fuel/packages/parser fuel/packages/parser/.git
$ rm -rf .git/modules/fuel

次に、FuelPHP の Git 管理下から外すために下記のように Git 関連ディレクトリを削除します。

$ rm -rf .git .gitmodule

ローカルリポジトリを初期化します。

$ git init
Initialized empty Git repository in /home/akanuma/Learning/php/work/contact/.git/

サブモジュールを追加します。

$ git submodule add git://github.com/fuel/core.git fuel/core/
Adding existing repo at 'fuel/core' to the index
$ git submodule add git://github.com/fuel/oil.git fuel/packages/oil
Adding existing repo at 'fuel/packages/oil' to the index
$ git submodule add git://github.com/fuel/parser.git fuel/packages/parser
Adding existing repo at 'fuel/packages/parser' to the index
$ git submodule add git://github.com/fuel/email.git fuel/packages/email
Adding existing repo at 'fuel/packages/email' to the index
$ git submodule add git://github.com/fuel/auth.git fuel/packages/auth
Adding existing repo at 'fuel/packages/auth' to the index
$ git submodule add git://github.com/fuel/orm.git fuel/packages/orm
Adding existing repo at 'fuel/packages/orm' to the index

ドキュメント類を削除します。

$ rm *.md
$ rm -rf docs

アプリケーション全体をコミット候補に加えるためにインデックスに追加します。

$ git add .

ローカルリポジトリにコミットします。

$ git commit -m 'First Commit.'

Eclipse の Fileメニュー -> New -> PHP Project で新規プロジェクト作成ダイアログを開きます。Project名を入力し、Content では Create project at existing location (from existing source) を選択し、oil create で作成したプロジェクトのルートディレクトリを選択し、Finish をクリックしてプロジェクトを作成します。

プロジェクトを右クリックし、Team -> Share Project を選択します。リポジトリタイプは Git を選択し次へ。Use or create repository in parent folder of project にチェックを入れ、先ほど作成したローかリポジトリを選択して Finish をクリックして共有設定をします。

再度プロジェクトを右クリックし、Team -> Commit でコミットダイアログを表示し、コメントを入力してから Commit をクリックしてコミットします。

さらにプロジェクトを右クリックし、Team -> Remote -> Push を選択してダイアログを表示し、Location に githubリポジトリの情報を入力して次へ。Source ref: で master を選択して Add Spec ボタンをクリックし、Finish ボタンをクリックして github への Push を実行します。

以上で FuelPHP のプロジェクトを github 管理下に置くことができます。