Installation for development

Installation for development should allow:

  • access to the source code,
  • upload the code to our CVS (i.e. git) and
  • work with composer.

As Chill is divided into bundles (the Symfony name for ‘modules’), each bundle has his own repository.

Installation and big picture

First, you should install Chill as described in the basic-installation section.

Two things must be modified :

First, add the –prefer-source argument when you create project.

composer create-project chill-project/standard path/to/your/directory --stability=dev --prefer-source

Second, when composer ask you the following question :

Do you want to remove the existing VCS (.git, .svn..) history? [Y,n]?

You should answer `n` (no).

Once Chill is installed, all the downloaded bundles will be stored in the /vendor directories. In those directories, you will have access to the git commands.

$ cd vendor/chill-project/main/
$ git remote -v
composer   git://github.com/Chill-project/Standard.git (fetch)
composer   git://github.com/Chill-project/Standard.git (push)
origin     git://github.com/Chill-project/Standard.git (fetch)
origin     git@github.com:Chill-project/Standard.git (push)

Files cleaning after installation

Composer will delete unrequired files, and add some. This is perfectly normal and will appears in your git index. But you should NOT delete those files.

This is the expected ‘git status’ result:

$git status
  #(...)

  Modifications qui ne seront pas validées :
    (utilisez "git add/rm <fichier>..." pour mettre à jour ce qui sera validé)
    (utilisez "git checkout -- <fichier>..." pour annuler les modifications dans la copie de travail)

          modifié:         app/SymfonyRequirements.php
          supprimé:        app/SymfonyStandard/Composer.php
          supprimé:        app/SymfonyStandard/RootPackageInstallSubscriber.php
          modifié:         app/check.php

You can ignore the local changes using the git update-index –assume-unchanged command.

$ git update-index --assume-unchanged app/check.php
$ git update-index --assume-unchanged app/SymfonyRequirements.php
$ git update-index --assume-unchanged app/SymfonyStandard/Composer.php
$ git update-index --assume-unchanged app/SymfonyStandard/RootPackageInstallSuscriber.php

Working with your own fork

Ideally, you will work on a fork of the main github repository. To ensure that composer will download the code from your repository, you will have to adapt the composer.json file accordingly, using your own repositories.

For each Chill module that you have forked, add an indexed array into the “repositories” key of the composer.json file at the root of the chill installation directory if you want to force composer to download from your own forked repositories:

"repositories": [
   {
     "type": "git",
     "url": "git://github.com/your-github-username/ChillMain.git"
   },
   {
     "type": "git",
     "url": "git://github.com/your-github-username/Chill-Person.git"
   }
]

Then run composer update to load your forked code. If it does not happen, delete the content of the chill/vendor/chill-project/my_forked_bundle and relaunch composer update and the code will be downloaded from your fork.

composer update

You may also use aliases to define versions.

Editing the code and commiting

You may edit code in the vendor/path/to/the/bundle directory.

Once satisfied with your changes, you should commit as usually :

$ cd vendor/path/to/bundle
$ git status
Sur la branche master
Votre branche est à jour avec 'origin/master'.

rien à valider, la copie de travail est propre

Tips

The command composer status (see composer documentation) will give you and idea of which bundle has been edited :

$ cd ./../../ #back to the root project directory
$ composer status
You have changes in the following dependencies:
/path/to/your/project/install/vendor/chill-project/main
Use --verbose (-v) to see modified files