git 上で、Symfony2 プロジェクトを作成し、管理する方法

Tip

このエントリは git に特定した話をしていますが、一般的な原則は Subversion でプロジェクトを管理することになっても適応できるでしょう。

Symfony2 でのページ作成 を読み、 Symfony の使い方に慣れてきたら、自分自身でプロジェクトを始めることになるでしょう。このクックブックの記事では、ソースコントロールマネジメントシステムである git を使って、新しい Symfony2 のプロジェクトを作成し管理する最良の方法を学びます。

最初に行うプロジェクトのセットアップ

まず、始めるために、Symfony をダウンロードし、あなたのローカルのリポジトリを初期化する必要があります:

  1. Symfony2 Standard Edition のベンダーライブラリ無し(without vendors)をダウンロードしてください.

  2. ダウンロードしたディストリビューションを Unzip/untar してください。そうすると、設定ファイル等が格納された新しいプロジェクト用に構成された Symfony フォルダが作られます。名前の変更は、あなたの好きなようにできます。

  3. あなたの新しいプロジェクトのルートディレクトリに .gitignore ファイルを新しく作成してください(deps ファイルがある同じディレクトリです)。そして、そのファイルには以下の内容を貼りつけてください。これらのパターンにマッチするファイルは、 git 上では無視されることになります:

    /web/bundles/
    /app/bootstrap*
    /app/cache/*
    /app/logs/*
    /vendor/
    /app/config/parameters.yml
    
  4. app/config/parameters.yml ファイルをコピーして app/config/parameters.yml.dist という新しい名前で保存してください。 上の .gitignore で指定した通り parameters.yml ファイルは、データベースのパスワードなどの環境に依存した設定のため、コミットされないように、 git は無視することになります。 parameters.yml.dist ファイルを作成しておくことによって、新しい開発者が、同プロジェクトをクローン(clone)し、parameters.yml にコピーし、カスタマイズし、開発をすぐに開発できるようになります:

  5. git リポジトリを初期化します:

    $ git init
    
  6. git に初期の時点で存在している全てのファイルを追加します:

    $ git add .
    
  7. あなたのプロジェクトの最初のコミットをします:

    $ git commit -m "Initial commit"
    
  8. 最後に、サードパーティのライブラリ群の全てをダウンロードします:

    $ php bin/vendors install
    

ここまで来れば、git リポジトリに 完全に動く Symfony2 のプロジェクトをちゃんとコミットしたことになります。これですぐにでも開発を始めることができ、新しい変更を git リポジトリにコミットすることができます。

より詳細にあなたのアプリケーションを設定し、開発する方法は、Symfony2 でのページ作成 の章を参照してください。

Tip

Symfony2 Standard Edition では、いくつかの機能のサンプルが付いてきます。これらのサンプルコードを削除するには、 Standard Edition Readme のインストラクションを参照してください。

bin/vendors と deps でベンダーライブラリを管理する

全ての Symfony のプロジェクトでは、たくさんのサードパーティ “ベンダー” ライブラリーを使用しています。

デフォルトでは、php bin/venrods install コマンドを走らせることによって、これらのライブラリはダウンロードされます。このスクリプトは、deps ファイルを読み、必要なライブラリを venrods/ ディレクトリにダウンロードします。また、deps.lock ファイルも読み、それぞれのライブラリの git のコミットハッシュと一致いているかチェックします。

このステップでは、ベンダーライブラリはあなたの git リポジトリの一部にはなりませんし、git のサブモジュール(submodule) にさえもなりません。その代わりに、bin/vendors スクリプトが depsdeps.lock ファイルで指定した通りに、全てを管理してくれます。これらのファイルは、あなたのリポジトリの一部となりますので、それぞれのサードパーティのライブラリの必要なバージョンが git 上でバージョンコントロールされます。そして、bin/vendors スクリプトを使って、あなたのプロジェクトを最新にすることができるのです。

開発者がプロジェクトをクローン(clone)する際には、常に php bin/vendors install スクリプトを実行し、全ての必要なベンダーライブラリがダウンロードされているか確認してください。

Caution

また、php bin/vendors update コマンドに関してですが、このコマンドはあなたのプロジェクトをアップグレードすることとは関係ありませんし、普段使うことはないでしょう。このコマンドは、あなたの使用しているベンダーライブラリ群を、 deps ファイルで指定したバージョンにアップデートさせて、deps.lock ファイルに記録します。これは、バージョンをフリーズさせるときに使われます。

さらに、既にインストールされたもので deps.lock ファイルをアップデートさせたいだけであれば、 php bin/vendors lock を実行するだけで、適切な git の SHA ID を deps.lock ファイルに格納します。

vendor コマンドと git submodule に関して

ベンダーライブラリを管理する際に depsbin/vendors を使う代わりに、git ネイティブの機能である git submodule を使用することもできます。このアプローチでも問題はありませんが、deps を使用して管理する方法が公式にオススメする方法です。 git submodules ではときどき問題に衝突することがあるでしょう。

あなたのプロジェクトをリモートサーバ上に格納する

これで完全に動く Symfony2 のプロジェクトあ git 上に管理されることになりました。しかし、ほとんどの場合では、バックアップのためだったり、他の開発者とコラボレーションするために、同プロジェクトをリモートサーバ上に格納したいと思うでしょう。

あなたのプロジェクトをリモートサーバ上に格納する最も簡単な方法は、GitHub を使用することです。プライベートリポジトリを使用したい際には月々の使用料を払う必要がありますが、パブリックリポジトリは、無料です。

また代替手段としては、barebones repository を作成し、そこにプッシュすることにより、あなたの git リポジトリをどのサーバにも格納することができます。Gitolite はそれを手助けするライブラリの一つです。