# Travailler avec Git
Kohana utilise [git](http://git-scm.com/) comme système de gestion de versions et [github](http://github.com/kohana) pour l'aspect collaboratif. Ce tutorial présente comment utiliser git et github pour mettre en place une application simple.
## Structure initiale
[!!] Ce tutorial prend comme prérequis le fait que votre serveur web est déjà mis en place et que vous être dans l'étape de création d'une nouvelle application située à .
En utilisant votre console, placez vous dans le répertoire `gitorial` et exécutez `git init`. Cela créera la structure du dépôt git.
Ensuite, nous allons créér un [sous-module](http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html) pour le répertoire `system`. Allez à l'URL et copiez l'URL de clonage:
![Github Clone URL](http://img.skitch.com/20091019-rud5mmqbf776jwua6hx9nm1n.png)
Maintenant utilisez cette URL pour créér le sous-module `system`:
~~~
git submodule add git://github.com/kohana/core.git system
~~~
[!!] Cela créera un lien vers la version stable en développement. La version stable en développement est sûre à utiliser pour vos environnements de production et possède la même API que la version stable en téléchargement à laquelle sont ajoutés les correctifs de bugs.
A partir de là vous pouvez ajouter les modules que vous souhiatez, par exemple le module [Base de données](http://github.com/kohana/database):
~~~
git submodule add git://github.com/kohana/database.git modules/database
~~~
Une fois les sous-modules ajoutés, vous devez les initialiser:
~~~
git submodule init
~~~
Enfin il faut les commiter:
~~~
git commit -m 'Added initial submodules'
~~~
L'étape suivante consiste en la création de la structure des répertoires de votre application kohana. Le minimum requis est:
~~~
mkdir -p application/classes/{controller,model}
mkdir -p application/{config,views}
mkdir -m 0777 -p application/{cache,logs}
~~~
Si vous lancez la commande linux `find application` vous devez voir:
~~~
application
application/cache
application/config
application/classes
application/classes/controller
application/classes/model
application/logs
application/views
~~~
Puisque l'on ne souhaite pas que les changements sur les logs et les mises en cache soient pris en compte, il faut ajouter un fichier `.gitignore` à chacun de ces répertoires. Cela aura pour effet d'ignorer tous les fichiers non cachés du répertoire:
~~~
echo '[^.]*' > application/{logs,cache}/.gitignore
~~~
[!!] Git ignore les répertoires vides, donc le fait d'ajouter le fichier `.gitignore` vous assure que git prendra en compte le répertoire mais pas les fichiers qu'il contient.
Ensuite il faut récupérer les fichiers `index.php` et `bootstrap.php`:
~~~
wget http://github.com/kohana/kohana/raw/master/index.php
wget http://github.com/kohana/kohana/raw/master/application/bootstrap.php -O application/bootstrap.php
~~~
Commiter tous les changements:
~~~
git add application
git commit -m 'Added initial directory structure'
~~~
C'est tout! Vous avez désormais une application gérée sous Git.
## Mettre à jour les sous-modules
Tôt ou tard vous allez sûrement avoir besoin de mettre à jour vos sous-modules. Pour mettre à jour l'ensemble de vos sous-modules à la version la plus récente `HEAD`, entrez:
~~~
git submodule foreach
~~~
Pour mettre à jour un seul sous-module, par exemple `system`, entrez:
~~~
cd system
git checkout master
git fetch
git merge origin/master
cd ..
git add system
git commit -m 'Updated system to latest version'
~~~
Enfin si vous souhaitez mettre à jour un sous-module par rapport à une révision particulière, entrez:
~~~
cd modules/database
git fetch
git checkout fbfdea919028b951c23c3d99d2bc1f5bbeda0c0b
cd ../..
git add database
git commit -m 'Updated database module'
~~~