git 上で、Symfony2 プロジェクトを作成し、管理する方法 ===================================================== .. tip:: このエントリは git に特定した話をしていますが、一般的な原則は Subversion でプロジェクトを管理することになっても適応できるでしょう。 :doc:`/book/page_creation` を読み、 Symfony の使い方に慣れてきたら、自分自身でプロジェクトを始めることになるでしょう。このクックブックの記事では、ソースコントロールマネジメントシステムである `git` を使って、新しい Symfony2 のプロジェクトを作成し管理する最良の方法を学びます。 最初に行うプロジェクトのセットアップ ------------------------------------ まず、始めるために、Symfony をダウンロードし、あなたのローカルのリポジトリを初期化する必要があります: 1. `Symfony2 Standard Edition`_ のベンダーライブラリ無し(without vendors)をダウンロードしてください. 2. ダウンロードしたディストリビューションを Unzip/untar してください。そうすると、設定ファイル等が格納された新しいプロジェクト用に構成された Symfony フォルダが作られます。名前の変更は、あなたの好きなようにできます。 3. あなたの新しいプロジェクトのルートディレクトリに ``.gitignore`` ファイルを新しく作成してください(``deps`` ファイルがある同じディレクトリです)。そして、そのファイルには以下の内容を貼りつけてください。これらのパターンにマッチするファイルは、 git 上では無視されることになります: .. code-block:: text /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 リポジトリを初期化します: .. code-block:: bash $ git init 6. git に初期の時点で存在している全てのファイルを追加します: .. code-block:: bash $ git add . 7. あなたのプロジェクトの最初のコミットをします: .. code-block:: bash $ git commit -m "Initial commit" 8. 最後に、サードパーティのライブラリ群の全てをダウンロードします: .. code-block:: bash $ php bin/vendors install ここまで来れば、git リポジトリに 完全に動く Symfony2 のプロジェクトをちゃんとコミットしたことになります。これですぐにでも開発を始めることができ、新しい変更を git リポジトリにコミットすることができます。 より詳細にあなたのアプリケーションを設定し、開発する方法は、\ :doc:`/book/page_creation` の章を参照してください。 .. tip:: Symfony2 Standard Edition では、いくつかの機能のサンプルが付いてきます。これらのサンプルコードを削除するには、 `Standard Edition Readme`_ のインストラクションを参照してください。 .. _cookbook-managing-vendor-libraries: bin/vendors と deps でベンダーライブラリを管理する -------------------------------------------------- 全ての Symfony のプロジェクトでは、たくさんのサードパーティ "ベンダー" ライブラリーを使用しています。 デフォルトでは、\ ``php bin/venrods install`` コマンドを走らせることによって、これらのライブラリはダウンロードされます。このスクリプトは、\ ``deps`` ファイルを読み、必要なライブラリを ``venrods/`` ディレクトリにダウンロードします。また、\ ``deps.lock`` ファイルも読み、それぞれのライブラリの git のコミットハッシュと一致いているかチェックします。 このステップでは、ベンダーライブラリはあなたの git リポジトリの一部にはなりませんし、git のサブモジュール(submodule) にさえもなりません。その代わりに、\ ``bin/vendors`` スクリプトが ``deps`` と ``deps.lock`` ファイルで指定した通りに、全てを管理してくれます。これらのファイルは、あなたのリポジトリの一部となりますので、それぞれのサードパーティのライブラリの必要なバージョンが git 上でバージョンコントロールされます。そして、\ ``bin/vendors`` スクリプトを使って、あなたのプロジェクトを最新にすることができるのです。 開発者がプロジェクトをクローン(clone)する際には、常に ``php bin/vendors install`` スクリプトを実行し、全ての必要なベンダーライブラリがダウンロードされているか確認してください。 .. sidebar:: Symfony のアップグレード Symfony はサードパーティのライブラリの集合であり、それらのサードパーティのライブラリは ``deps`` と ``deps.lock`` を通して全て管理されているので、Symfony 自体のアップグレードは、最新の Symfony Standard Edition のバージョンにマッチするように これらのファイルをアップグレードするだけになります。 もちろんあなた自身が ``deps`` や ``deps.lock`` に新しいエントリを追加した際には、最初から書いてあった場所のみを書き換えてください(自分で指定したカスタムエントリは削除しないようにしてください)。 .. caution:: また、\ ``php bin/vendors update`` コマンドに関してですが、このコマンドはあなたのプロジェクトをアップグレードすることとは関係ありませんし、普段使うことはないでしょう。このコマンドは、あなたの使用しているベンダーライブラリ群を、 ``deps`` ファイルで指定したバージョンにアップデートさせて、\ ``deps.lock`` ファイルに記録します。これは、バージョンをフリーズさせるときに使われます。 さらに、既にインストールされたもので ``deps.lock`` ファイルをアップデートさせたいだけであれば、 ``php bin/vendors lock`` を実行するだけで、適切な git の SHA ID を deps.lock ファイルに格納します。 vendor コマンドと git submodule に関して ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ベンダーライブラリを管理する際に ``deps`` と ``bin/vendors`` を使う代わりに、\ git ネイティブの機能である `git submodule` を使用することもできます。このアプローチでも問題はありませんが、\ ``deps`` を使用して管理する方法が公式にオススメする方法です。 git submodules ではときどき問題に衝突することがあるでしょう。 あなたのプロジェクトをリモートサーバ上に格納する ------------------------------------------------ これで完全に動く Symfony2 のプロジェクトあ git 上に管理されることになりました。しかし、ほとんどの場合では、バックアップのためだったり、他の開発者とコラボレーションするために、同プロジェクトをリモートサーバ上に格納したいと思うでしょう。 あなたのプロジェクトをリモートサーバ上に格納する最も簡単な方法は、\ `GitHub`_ を使用することです。プライベートリポジトリを使用したい際には月々の使用料を払う必要がありますが、パブリックリポジトリは、無料です。 また代替手段としては、\ `barebones repository`_ を作成し、そこにプッシュすることにより、あなたの git リポジトリをどのサーバにも格納することができます。\ `Gitolite`_ はそれを手助けするライブラリの一つです。 .. _`git`: http://git-scm.com/ .. _`Symfony2 Standard Edition`: http://symfony.com/download .. _`Standard Edition Readme`: https://github.com/symfony/symfony-standard/blob/master/README.md .. _`git submodules`: http://book.git-scm.com/5_submodules.html .. _`GitHub`: https://github.com/ .. _`barebones repository`: http://progit.org/book/ch4-4.html .. _`Gitolite`: https://github.com/sitaramc/gitolite .. 2011/11/02 ganchiku 8ed337cb24830941cf6ac62dd3f03796e48e6cc8