Tout d'abord, créer un dossier (odeva_hg) où vous allez stocker tous les projets de la séance Mercurial.
Les premières expérimentations seront réalisées en local
## Création d'un entrepôt
- Tapez la commande "hg init NOM_PROJET"
- Regarder le contenu du répertoire NOM_PROJET
-----
## Ajout des fichiers
- Dans le répertoire NOM_PROJET, créez un fichier texte VOTRE_NOM.txt
- Fait-il déjà parti de l'entrepôt? Comment peut-on le savoir? Inspirez-vous en exécutant la commande suivante "hg help"
- Si besoin, ajoutez le fichier à l'entrepôt? Est-ce que le fichier à bien été ajouté à l'entrepôt?
-----
## Cloner un entrepôt
- Pour vous convaincre que le fichier à bien été ajouté, vous aller faire une clone de votre NOM_PROJET.
- Replacez-vous dans le répertoire odeva_hg et tapez la commande suivante "hg clone NOM_PROJET NOUVELLE_COPIE"
- Est-ce que la NOUVELLE_COPIE contient le fichier VOTRE_NOM.txt ? Si non, peut être vous avez oublié de faire un "commit" lors de l'étape prétendante. Mais rien, n'est perdu...
-------
## Transmettre des mises à jour
- Revenez dans le répertoire NOM_PROJET et créez un deuxième fichier VOTRE_NOM.html
- Ajoutez-le à la version courante de l'entrepôt en réalisant également un "commit".
- Vous pouvez ensuite transmettre à d'autres entrepôts (comme par exemple NOUVELLE_COPIE) cette nouvelle version.
- Pour anticiper les modifications que cela engendra sur l'entrepôt destination vous pouvez utiliser la commande "hg outgoing" - "hg help outgoing" pour la documentation.
- Si vous êtes satisfait de la réponse reçue vous pouvez utiliser la commande "hg push" pour mettre à jour l'entrepôt destination - "hg help push" pour la documentation
-------
## Accepter des mises à jour
- Lorsqu'un autre entrepôt fait une demande de "push", l'entrepôt destinataire est passé dans une nouvelle version. Cependant les modifications apportées ne sont pas visibles dans votre répertoire de travail correspondant.
- Pour vous en convaincre, regardez le contenu du répertoire destination NOUVELLE_COPIE où le/les nouveaux fichiers ne se trouvent pas encore
- Dans ce même répertoire tapez la commande "hg history" pour vous convaincre que l'entrepôt associé à votre répertoire du travail est déjà en version 1.
- Pour enlever tout doute, demandez le clonage de l'entrepôt courant NOUVELLE_COPIE vers un nouveau entrepôt appelé NOUVELLE_COPIE2. Regardez le contenu du nouveau répertoire associé à l'entrepôt NOUVELLE_COPIE2.
- Revenons dans l'entrepôt NOUVELLE_COPIE. Pour connaître le contenu de la mise à jour il est possible d'utiliser les commandes suivantes "hg -v log" ou "hg --debug log". Quelle différence entre les deux versions de la commande?
- Mettez à jour votre copie locale en réalisant un "hg update"
--------
## Rechercher des mises à jour
- Allez dans le répertoire NOUVELLE_COPIE2 et créez un nouveau fichier VOTRE_NOM.dat.
- Ajoutez-le à l'entrepôt et réalisez un commit
- Déplacez-vous dans le répertoire NOUVELLE_COPIE et en utilisant la commande "hg incoming" vérifiez s'il y a eu des modifications dans NOUVELLE_COPIE2 par rapport à notre copie locale dans NOUVELLE_COPIE
- Si l'on souhaite on peut mettre à jour l'entrepôt NOUVELLE_COPIE avec la commande "hg pull". Est-ce que cela met à jour la copie locale de l'entrepôt?
------
## Resolution de conflits
- Modifiez une nouvelle fois le fichier VOTRE_NOM.html dans le répertoire PROJET et effectuez un commit de suite.
- Modifiez une nouvelle fois le fichier VOTRE_NOM.html dans le répertoire NOUVELLE_COPIE et effectuez un commit de suite.
- Depuis le répertoire NOUVELLE_COPIE faites une opération PULL sur l'entrepôt PROJET
- HG constate que les deux entrepôts ont évolué en parallèle et donc une opération de MERGE s'impose. consultez l'aide "hg help merge"
- (si hg imerge ne fonctionne pas ) : Lors de cette expérimentation, nous n'allons pas utiliser la commande "hg update -C" (qui écrase l'ensemble des modifications locales), mais nous allons résoudre les conflits.
- tout d'abord il faut retrouver les fichiers en conflit (ici, on sait qu'il s'agit de VOTRE_NOM.html). De manière générale, vous pouvez utiliser la commande "hg resolve --all"
- ensuite vous éditez le fichier en conflit (VOTRE_NOM.html) afin qu'ils correspondent à vos souhaits/aux besoins de l'application etc.
- vous marquez toujours avec la commande "hg resolve" les fichiers n'ayant plus de conflit.
- une fois tous les conflits résolus, vous refaits un commit et au souhait, vous propagez (outgoing puis push) les modifications