Tag Archives: partage de sources

Tuto Git – Modifications simultanées de fichiers sans conflit

Objectif: Ce 3eme article dans la série « Tuto Git » a pour objectif de montrer une séquence de travail simultané sur les fichiers du même projet par deux développeurs différents. Il traite les cas de modifications sans conflit. Pré-requis: Les deux articles précédents sur l’installation et l’utilisation de Git sont lus et les manipulations exécutées.

1. Modification de fichiers différents:

Bien entendu ce cas de figure ne génère jamais de conflit. La modification inclu l’ajout et la suppression de fichiers. On part de la situation de l’article précédent. DEV1 modifie le fichier hello.sh en ajoutant des lignes:
echo "Hello world !" >> hello.sh
echo "Hola todo el mundo !" >> hello.sh
echo "Ciao mondo !" >> hello.sh
Ensuite il crée un nouveau fichier hello.txt avec l’éditeur vi:
vi hello.txt
Ajouter les lignes puis enregistrer:
Ce projet permet d'afficher bonjour dans les langues suivantes:
Français
Anglais
Espagnole
Italien
Il valide ensuite ses modifcations et les envoi sur le serveur Git:
git add hello.txt
git commit -am "Ajout de 3 langues"
git push
Le paramètre -am de la commande git commit permet d’indexer en une seule fois les modifications en ajoutant le commentaire. DEV2 de son côté, supprime le fichier hello.doc, pour cela il execute:
git rm hello.doc
git commit -am "Suppression de hello.doc"
git push
La dernière commande (envoi vers le serveur) échoue, le message de retour est claire: la copie locale n’est pas synchronisée avec le serveur. Il faudra executer:
git pull --no-edit
Les modifications de DEV1 sont alors récupérées.
git push
Cette fois l’envoi réussit. A ce niveau DEV1 ne pourra plus rien envoyer (push) avant de synchroniser sa copie de travail (pull). En tentant de le faire il obtiendra le même message d’erreur. Il a toujours le fichier hello.doc en local:
ls -l
git pull --no-edit
ls -l
Après la synchronisation (pull), le fichier hello.doc disparaît.

2. Modifications simultanées d’un même fichier:

Dans la situation actuelle DEV1 et DEV2 ont des copies locales identiques et synchronisées avec le serveur. DEV1 modifie le fichier hello.sh en modifiant uniquement la première ligne (ancien contenu: « Boujour tout le monde ! ») qui devient: « Boujour monde ! »
git commit -am "Modification message Français"
git push
En même temps DEV2 modifie le même fichier hello.sh en modifiant la troisième ligne (ancien contenu:« Hola todo el mundo ! ») qui devient: « Hola mundo ! »
git commit -am "Modification message Espagnol"
git push
La commande d’envoi au serveur push échoue car la copie locale n’est plus synchronisée.
git pull --no-edit
cat hello.sh
Les deux modifications sont fusionnées car il n’y a pas de conflit entre les deux.
git push
Permet alors d’envoyer la modification vers le serveur. DEV1 devra exécuter la commande git pull pour récupérer la dernière version fusionnée.]]>

Tuto Git – Commandes de base de partage des sources

Objectif: Revue complète, à l’aide un exemple concret, des commandes Git de base de de partage des sources d’un projet par deux ou plusieurs développeurs d’application. Pré-requis: Git est installé et confiiguré sur un système GNU/Linx, cf. article 1 de la serie Tuto Git.

1. Mise en place d’un environnement de simulation.

Dans cette serie de tutoriels on utilisera la simulation suivante sur une même machine: – Côté serveur: le dossier /serveurgit – Côté clients: les dossiers /pcdev1  /pcdev2 .. Pour un suivi plus simple de ce tutoriel vous pouvez ouvrir une console pour chaque PC développeur simulé. Créer les trois dossiers nécessaires:
sudo mkdir /serveurgit
sudo chown login:login /serveurgit
 login: doit être votre login sur la machine utilisée. Faites la même chose pour les deux autres dossiers /pcdev1 et /pcdev2

2. Mise en place d’un dépôt de source sur le serveur.

Ce n’est pas dans l’objectif de ce tutoriel mais c’est une étape nécessaire pour la suite. Il s’agit d’une mise en place basique qui ne doit pas être utilisée dans la pratique. Sur le serveur (aller dans le dossier /serveurgit donc) créer un dépôt de source pour le projet “hello”.
cd /serveurgit
git init --bare hello.git
“hello” est le nom choisi pour le projet (généralement le nom de l’application développée), l’extension “.git” n’est pas obligatoire mais c’est une bonne convention qui permet de reconnaitre le type du dépôt. Cette commande crée un dossier hello.git/. C’est la première chose à faire si on veut commencer à gérer un projet avec Git.

3. Récupération d’une copie de travail locale.

Sur le poste de travail, donc dans le dossier /pcdev1 (cd /pcdev1):
git clone /serveurgit/hello.git
Cette commande “git clone” crée un dossier “hello/” dont le contenu est une copie locale du dépôt crée sur le serveur. Le paramètre de cette commande qui est un chemin sur le disque local, devrait être dans la réalité une URL tel que http://serveur/.. puisqu’il s’agit usuellement d’un serveur ditant.

4. Personnalisation de la configuration du projet.

A n’utiliser que si on souhaite avoir d’autres paramètres pour le projet que ceux configurés globalement dans l’article 1 de la serie.
cd /pcdev1/hello
git config --local user.name "DEV1"
git config --local user.email "DEV1@server.com"
Ces deux commandes modifient le nom d’utilisateur et son adresse email seulement pour ce projet.

5. Ajout d’un fichier au projet

echo '#!/bin/bash' > /pcdev1/hello/hello.sh
echo 'echo "Boujour tout le monde !"' >> /pcdev1/hello/hello.sh
C’est un script shell qui affiche un message de bonjour.
git status
On obtient un retour qui indique que le fichier nouvellement créée n’est pas suivi et nous suggère une commande qu’on va exécuter:
git add hello.sh
Maintenant ce fichier est suivi (ou indexé) mais ce n’est pas suffisant: il faudra le valider (commit) et ensuite l’envoyer au serveur. Avant cela ajoutons un fichier de documentation du projet:
echo 'Ce projet permet d'affichier bonjour dans plusieurs langues' > hello.doc
git add hello.doc
git status
Ce qui crée ce fichier et le rend suivi par git, la dernière commande le confirme. Maintenant on va publier ces ajouts en les envoyant au serveur:
git commit -m "Création du projet Hello"
git push
git status
Ceci valide les deux fichiers en même temps et envoi le tout au serveur, la dernière commande le confirme.

6. Partage du projet

Le projet étant désormais dans le dépôt du serveur, le dévelopeur 2 peut y avoir accès:
cd /pcdev2
git clone /serveurgit/hello.git
cd hello
ls -l
Ce qui permet de récupérer une copie de travail du projet sur le PC du 2eme développeur. Les deux dernières commandes permettent de s’assurer que le contenu est bien récupéré. Un peu plus d’information utile peut être obtenue par:
git log
Et à présent on comprend mieux l’importance de la configuration effectuée et du message ajouté lors de la validation des fichiers.]]>