Le but de cet article est de décrire la mise en oeuvre de GIT pour publier simplement ses codes sources depuis un poste local vers un serveur Web distant. Tout ce qui est décrit dans cet article a été mis en oeuvre et fonctionne.
Prérequis :
- Installer Apache, MySQL et PHP sur le serveur Web distant
- Installer GIT sur le serveur Web distant
- Installer GIT (et Tortoise GIT pour un environnement plus convivial) sur le PC local
Sur le PC local :
Pour commencer nous devons démarrer un dépôt Git d'une des manières suivantes :
- En partant de zéro en créant un répertoire vide pour notre nouveau projet et en l'initialisant dans Git
- En reprenant le répertoire d'un projet déjà existant et en l'initialisant dans Git
- En clonant un dépôt Git existant
Dans les deux premiers cas, il faut se rendre dans le répertoire du projet et lancer la commande suivante :
$ cd mon_projet $ git init
Il sera ensuite nécessaire d'indexer et de valider les fichiers et répertoires que nous souhaitons versionner.
$ git add mon_repertoire $ git add index.php $ git commit -m "démarrage de mon projet avec Git"
Dans le dernier cas il faut à l'emplacement où nous souhaitons créer le dépôt, exécuter la commande suivante :
$ git clone
Cette adresse email est protégée contre les robots des spammeurs, vous devez activer Javascript pour la voir.
:super_projet.git
Sur le serveur Web distant :
Nous commençons par créer un dépôt vide qui sera le miroir de notre dépôt local.
$ mkdir /home/john/mon_projet.git $ cd /home/john/mon_projet.git $ git init --bare
Nous définissons et activons ensuite un hook post-receive qui fait un "check out" de notre dernière branche dans le document root du serveur Web (Le répertoire doit obligatoirement exister, Git ne le créera pas).
$ mkdir /var/www/mon_projet_web $ vi /home/john/mon_projet/hook/post-receive $ !/bin/sh $ GIT_WORK_TREE=/var/www/mon_projet_web git checkout -f $ chmod +x hooks/post-receive
Sur le PC local :
Nous définissons le miroir distant en précisant un nom et créons la branche master.
$ git remote add mprojet
Cette adresse email est protégée contre les robots des spammeurs, vous devez activer Javascript pour la voir.
:mon_projet.git $ git push mprojet +master:refs/heads/master
Le répertoire du projet (dans le document root) sur le serveur Web distant contient désormais une copie de nos fichiers sources locaux.
Le processus de publication des fichiers sources :
Il suffira de lancer la commande :
$ git push mprojet
Ceci transférera tous les derniers commits vers le répertoire Web distant. En effet le hook post-receive se chargera de répliquer les fichiers du dépôt distant dans le répertoire Web visible par tous.
Références :
- http://toroid.org/ams/git-website-howto
- http://git-scm.com/book/fr/v1/Les-bases-de-Git-D%C3%A9marrer-un-d%C3%A9p%C3%B4t-Git
- https://www.atlassian.com/git/tutorials/syncing
- http://stackoverflow.com/questions/7633299/simple-git-post-commit-hook-to-copy-committed-files-to-a-certain-folder
- http://stackoverflow.com/questions/6635018/reuse-git-work-tree-in-post-receive-hook-to-rm-a-few-files
- http://gitref.org/creating/#init
- http://stackoverflow.com/questions/2114111/where-does-git-config-global-get-written-to
- http://openclassrooms.com/courses/gerez-vos-codes-source-avec-git
- https://ensiwiki.ensimag.fr/index.php/Maintenir_un_historique_propre_avec_Git
|