|
|
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
|
|
|
|
|
|
- si "hg merge" fonctionne - lancez la deux fois |