Mercurial pour nous les nuls, leçon 6 : pull, update

L’index des leçons :

  1. Leçon 1 : la gestion de version
  2. Leçon 2 : qu’est-ce qu’un dépôt ?
  3. Leçon 3 : les logiciels ”clients”
  4. Leçon 4 : création d’un dépôt
  5. Leçon 5 : enregistrement de révision
  6. Leçon 6 : synchronisation de dépôts, mise à jour du répertoire de travail
  7. Leçon 7 : identifier les différences
  8. Leçon 8 : la gestion des branches
  9. Leçon 9 : la fusion de branche
  10. Leçon 10 : retour vers le passé
  11. Leçon 11 : patch et collaboration indirecte

Récupération d’une révision enregistrée sur dépôt distant : Pull

Une des personnes ayant accès au dépôt distant a, de son côté, fait des modifications et enregistré là-bas (via un push) cette révision. MacHg m’informe de ceci grâce au compteur affiché en regard de mon dépôt local :

Compteur modifié

Vous observerez la valeur 1 qui précède la flèche descendante et qui indique le nombre de révisions à récupérer via la commande pull depuis le dépôt distant. Vous savez par ailleurs à quoi correspond le nombre qui suit et qui précède la flèche montante[1]

Si je consulte le site Bitbucket, sur la page des commits du dépôt Commun, je constate qu’un certain minux a pushé — vous me pardonnerez cet anglicisme conjugué que vous risquez de voir ailleurs — une révision :

Révisions sur Bitbucket

Cette révision n’est présente que là-bas, sur le serveur de Bitbucket, et pour pouvoir l’utiliser il faut d’abord la récupérer localement, dans mon dépôt qui se trouve sur ma machine. Pour cela je vais utiliser le bouton Pull présent sur la barre d’outils de MacHg — cette commande, comme toutes les autres, sont également accessibles via les menus de l’application :

Bouton Pull sur la barre d'outils

Je clique sur ce bouton et une fenêtre m’indiquant le détail de l’action qui va être faite surgit :

Récupération des révisions depuis le dépôt distant

MacHg m’indique ici que les révisions disponibles sur le dépôt distant, nommé Commun, vont être rapatriées localement sur mon dépôt nommé Dépôt. Il m’indique en outre le nombre de révision qui sont concernées (voir le nombre 1 sur la capture d’écran ci-dessus).

Je confirme en cliquant sur le bouton Pull et après quelques instants, dont la durée variera en fonction de la vitesse de votre connexion et du volume d’information à récupérer, indiquera alors le résultat de l’action :

Résultat du pull

Je peux ensuite vérifier que mon dépôt local est bien synchronisé avec le dépôt distant (ils sont une copie parfaite l’un de l’autre) grâce au compteur affiché en regard :

Le compteur est à zéro, c'est synchronisé

La commande terminal équivalente est la suivante :

hg pull <url>

Arrivé à ce stade nous savons comment enregistrer localement nos révisions (commit), les envoyer sur le dépôt distant qu’on partage avec d’autres (push) et enfin comment récupérer les révisions enregistrées par les autres pour les avoir à disposition localement (pull).

Mettre à jour son répertoire de travail avec la dernière révision : Update

Si vous vérifiez le contenu de votre répertoire de travail vous constaterez cependant que rien n’a bougé, y compris depuis que vous avez fait un pull pour récupérer les révisions stockées sur le repository (ou dépôt) distant.

MacHg offre un outil qui permet de lister les révisions successives stockées dans un dépôt :

Liste des révisions disponibles

Vous remarquerez la ligne surlignée en violet qui indique l’état actuel de votre répertoire de travail. Vous remarquerez également qu’il existe une révision supplémentaire (récupérée précédemment). Je la sélectionne (voir la ligne surlignée en vert sur la copie d’écran qui suit) et peux constater le détail de celle-ci :

Détail de la dernière révision

Les détails m’informent qu’il y a deux jours un utilsateur minux a fait un push d’une révision qui comprend l’ajout d’un fichier _public.php.

Pour récupérer le contenu de cette nouvelle révision il faut alors utiliser la commande Update. Cette commande aura pour effet de copier localement, c’est à dire sur votre répertoire de travail, les nouveaux fichiers, de remplacer les fichiers modifiés et éventuellement de supprimer ceux qui l’auront été. En clair vous aurez ensuite une copie de l’état[2] du répertoire de travail de minux sur votre ordinateur.

Je clique alors sur le bouton Update disponible sur la barre d’outils de MacHg :

Bouton de mise à jour du répertoire de travail sur la barre d'outils

Une fenêtre est affichée dans laquelle je vais sélectionner la révision dans laquelle je veux mettre à jour mon répertoire de travail :

Mise à jour du répertoire de travail avec la dernière révision

Je sélectionne la révision la plus récente, numérotée 3 dans la liste et valide en cliquant sur le bouton Update. Une fois le répertoire mis à jour j’obtiens un récapitulatif de l’action effectuée :

résultat de la mise à jour

Ici, un fichier a été mis à jour, le fichier _public.php créé par minux. Je peux vérifier cela dans le répertoire de travail :

Nouvel état du répertoire de travail

La commande équivalente pour faire un update est la suivante :

hg update

Ce mécanisme de mise à jour (update en anglais) est également valable pour revenir sur une révision antérieure. Je pourrais ainsi revenir à loisirs sur la révision 2 ou 1 si le besoin s’en faisait sentir. MacHg fera le nécessaire pour faire en sorte que mon répertoire local reflète exactement l’état dans lequel il était au moment du commit de la révision choisie.

La commande pour revenir à une autre révision que la révision la plus récente, taguée tip, est la suivante :

hg update -r <revision_number>

Le cycle complété depuis la leçon précédente est donc :

  1. Changement dans le répertoire de travail (création de nouveaux fichiers, modifications de certains d’entre eux, suppressions éventuelles, …) ;
  2. Commit pour enregistrer ces changements (ce qu’on appelle une révision) ;
  3. Push vers le dépôt distant[3] pour synchroniser la ou les révisions enregistrées localement ;
  4. Pull depuis le dépôt distant pour récupérer les révisions qui manquent ;
  5. Update pour mettre à jour le répertoire de travail au niveau de la dernière révision.

Conclusion

Nous en savons d’ores et déjà assez pour travailler de manière collaborative avec d’autres sur un projet dont le dépôt est stocké sur un serveur. Nous verrons qu’il peut être nécessaire de consulter les modifications apportées au fur et à mesure des commit des uns et des autres. Pour cela je vous indiquerai quelques logiciels qui rendent cette tâche plus facile dans la leçon suivante.

Glossaire

Pull : Récupération des révisions commitées depuis un dépôt distant vers un dépôt local.

Update : Mise à jour d’un répertoire de travail vers une révision stockée dans le dépôt local.


Leçon suivante

Notes

[1] Si ce n’est pas le cas vous pouvez relire la leçon précédente ou vous souvenir qu’il s’agit du nombre de révisions enregistrées localement et qui nont pas été envoyées sur le dépôt distant à l’aide de la commande push.

[2] L’état est bien sûr celui en vigueur au moment de l’enregistrement de la révision via un commit.

[3] Le push est également possible entre deux dépôts locaux.

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/7060

Haut de page