|
1 .. -*- coding: utf-8 -*- |
|
2 |
|
3 Présentation de Mercurial |
|
4 ------------------------- |
|
5 |
|
6 Introduction |
|
7 ```````````` |
|
8 Mercurial_ gère un ensemble distribué d'entrepôts contenant des arbres de |
|
9 révisions (chaque révision indique les changements à effectuer pour obtenir la |
|
10 version suivante, et ainsi de suite). Localement, on dispose d'un entrepôt |
|
11 contenant un arbre de révisions, et d'un répertoire de travail. Il est possible |
|
12 de mettre dans son répertoire de travail, une des versions issue de son entrepôt |
|
13 local, de la modifier puis de la verser dans son entrepôt. Il est également |
|
14 possible de récuprer dans son entrepôt local des révisions venant d'un autre |
|
15 entrepôt, ou d'exporter ses propres révisions depuis son entrepôt local vers un |
|
16 autre entrepôt. |
|
17 |
|
18 A noter que contrairement à CVS/Subversion, on crée généralement un entrepôt par |
|
19 projet à gérer. |
|
20 |
|
21 Lors d'un développement collaboratif, on crée généralement un entrepôt central |
|
22 accessible à tout les développeurs du projet. Ces entrepôts centraux servent de |
|
23 référence. Selon ses besoins, chacun peut ensuite disposer d'un entrepôt local, |
|
24 qu'il faudra penser à synchroniser avec l'entrepôt central de temps à autre. |
|
25 |
|
26 |
|
27 Principales commandes |
|
28 ````````````````````` |
|
29 * Créer un entrepôt local :: |
|
30 |
|
31 hg clone ssh://orion//home/src/prive/rep |
|
32 |
|
33 * Voir le contenu de l'entrepôt local (outil graphique en Tk) :: |
|
34 |
|
35 hg view |
|
36 |
|
37 * Ajouter un sous-répertoire ou un fichier dans le répertoire courant :: |
|
38 |
|
39 hg add rep |
|
40 |
|
41 * Placer dans son répertoire de travail une révision spécifique (ou la dernière |
|
42 revision) issue de l'entrepôt local :: |
|
43 |
|
44 hg update [identifiant-revision] |
|
45 hg up [identifiant-revision] |
|
46 |
|
47 * Récupérer dans son entrepôt local, l'arbre de révisions contenu dans un |
|
48 entrepôt distant (cette opération ne modifie pas le répertoire local) :: |
|
49 |
|
50 hg pull ssh://orion//home/src/prive/rep |
|
51 hg pull -u ssh://orion//home/src/prive/rep # équivalent à pull + update |
|
52 |
|
53 * Voir quelles sont les têtes de branches de l'entrepôt local si un `pull` a |
|
54 tiré une nouvelle branche :: |
|
55 |
|
56 hg heads |
|
57 |
|
58 * Verser le répertoire de travail dans l'entrepôt local (et créer une nouvelle |
|
59 révision) :: |
|
60 |
|
61 hg commit |
|
62 hg ci |
|
63 |
|
64 * Fusionner, avec la révision mère du répertoire local, une autre révision issue |
|
65 de l'entrepôt local (la nouvelle révision qui en résultera aura alors deux |
|
66 révisions mères) :: |
|
67 |
|
68 hg merge identifiant-revision |
|
69 |
|
70 * Exporter dans un entrepôt distant, l'arbre de révisions contenu dans son |
|
71 entrepôt local (cette opération ne modifie pas le répertoire local) :: |
|
72 |
|
73 hg push ssh://orion//home/src/prive/rep |
|
74 |
|
75 * Voir quelle sont les révisions locales non présentes dans un autre entrepôt :: |
|
76 |
|
77 hg outgoing ssh://orion//home/src/prive/rep |
|
78 |
|
79 * Voir quelle sont les révisions d'un autre entrepôt non présentes localement :: |
|
80 |
|
81 hg incoming ssh://orion//home/src/prive/rep |
|
82 |
|
83 * Voir quelle est la révision issue de l'entrepôt local qui a été sortie dans le |
|
84 répertoire de travail et modifiée :: |
|
85 |
|
86 hg parent |
|
87 |
|
88 * Voir les différences entre le répertoire de travail et la révision mère de |
|
89 l'entrepôt local, éventuellement permettant de les verser dans l'entrepôt |
|
90 local :: |
|
91 |
|
92 hg diff |
|
93 hg commit-tool |
|
94 hg ct |
|
95 |
|
96 |
|
97 Bonnes pratiques |
|
98 ```````````````` |
|
99 * penser à faire un `hg pull -u` régulièrement et particulièrement avant de |
|
100 faire un `hg commit` |
|
101 |
|
102 * penser à faire un `hg push` lorsque votre entrepôt contient une version |
|
103 relativement stable de vos modifications |
|
104 |
|
105 * si un `hg pull -u` a créé une nouvelle tête de branche : |
|
106 |
|
107 1. identifier l'identifiant de celle-ci avec `hg head` |
|
108 2. fusionner avec `hg merge` |
|
109 3. `hg ci` |
|
110 4. `hg push` |
|
111 |
|
112 .. _Mercurial: http://www.selenic.com/mercurial/ |