Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
mercurial [26/11/2006 23:09] – Ajout partie "réseaux" bug | mercurial [20/12/2006 22:41] (Version actuelle) – Complément sur rename, revert, rollback, etc. bug | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ~~NOTOC~~ | ||
+ | |||
+ | ====== Crash course mercurial ====== | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Création du dépôt ===== | ||
+ | |||
+ | <code bash> | ||
+ | [bug@tux]$ cd projet | ||
+ | [bug@tux: | ||
+ | </ | ||
+ | |||
+ | À partir de ce moment là, mercurial dispose du nécessaire pour consigner les changements apportés aux sources. | ||
+ | |||
+ | |||
+ | ===== Consignation des modifications dans le dépôt ===== | ||
+ | |||
+ | <code bash> | ||
+ | [bug@tux]$ hg commit | ||
+ | </ | ||
+ | |||
+ | Permet d' | ||
+ | |||
+ | <code bash> | ||
+ | [bug@tux: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Historique du dépôt ===== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Affiche l' | ||
+ | |||
+ | <code bash> | ||
+ | [bug@tux: | ||
+ | changeset: | ||
+ | tag: tip | ||
+ | user: bug | ||
+ | date: Thu Oct 19 22:44:18 2006 +0200 | ||
+ | summary: | ||
+ | |||
+ | changeset: | ||
+ | user: autre@tux.u-strasbg.fr | ||
+ | date: Thu Oct 19 21:02:24 2006 +0200 | ||
+ | summary: | ||
+ | |||
+ | changeset: | ||
+ | user: Dave Nul < | ||
+ | date: Wed Oct 18 22:05:41 2006 +0200 | ||
+ | summary: | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Pour limiter l' | ||
+ | |||
+ | |||
+ | ===== Ajout, suppression, | ||
+ | |||
+ | '' | ||
+ | |||
+ | <code bash> | ||
+ | [bug@tux: | ||
+ | ? style.css | ||
+ | [bug@tux: | ||
+ | [bug@tux: | ||
+ | [bug@tux: | ||
+ | [bug@tux: | ||
+ | [bug@tux: | ||
+ | [bug@tux: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Etat du dépôt ===== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Permet de voir dans quel état sont les sources du point de vue de mercurial. Exemple : | ||
+ | |||
+ | <code bash> | ||
+ | [bug@tux: | ||
+ | M index.html | ||
+ | ? search.patch | ||
+ | </ | ||
+ | |||
+ | Le fichier index.html est sous contrôle de mercurial et son état est M(odified), donc il a été modifié depuis la dernière consignation dans le dépôt (// | ||
+ | |||
+ | <code bash> | ||
+ | [bug@tux: | ||
+ | [bug@tux: | ||
+ | M index.html | ||
+ | A search.patch | ||
+ | [bug@tux: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Différences avec le dépôt ===== | ||
+ | |||
+ | '' | ||
+ | |||
+ | <code bash> | ||
+ | [bug@tux: | ||
+ | diff -r a0a00f7ed15a index.html | ||
+ | --- a/ | ||
+ | +++ b/ | ||
+ | @@ -10,10 +10,10 @@ Morbi et dui. Sed tellus elit, volutpat | ||
+ | Morbi et dui. Sed tellus elit, volutpat a, dignissim nec, | ||
+ | | ||
+ | | ||
+ | -erat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. | ||
+ | +erat. Lorem ipsum dilor sit amet, consectetuer adipiscing elit. | ||
+ | enim. | ||
+ | |||
+ | -Nulla viverra sem nec erat. Fusce laoreet libero vel ante. Mauris | ||
+ | +Nulla viverra sem nic erot. Fusce laoreet libero vel ante. Mauris | ||
+ | | ||
+ | vitae nisi convallis faucibus. Nunc molestie molestie. Quisque | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Restauration de l' | ||
+ | |||
+ | Pour restaurer le répertoire de travail dans le dernier état consigné dans le dépôt (//tip//), il existe la commande '' | ||
+ | |||
+ | Il peut aussi être nécessaire de restaurer le répertoire de travail dans un état antérieur. Par exemple : | ||
+ | |||
+ | <code bash> | ||
+ | [bug@tux: | ||
+ | 14844509ed21 | ||
+ | [bug@tux: | ||
+ | changeset: | ||
+ | tag: tip | ||
+ | user: bug | ||
+ | date: Thu Oct 19 22:44:18 2006 +0200 | ||
+ | summary: | ||
+ | |||
+ | changeset: | ||
+ | user: autre@tux.u-strasbg.fr | ||
+ | date: Thu Oct 19 21:02:24 2006 +0200 | ||
+ | summary: | ||
+ | |||
+ | changeset: | ||
+ | user: Dave Nul < | ||
+ | date: Wed Oct 18 22:05:41 2006 +0200 | ||
+ | summary: | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Pour restaurer le répertoire de travail dans l' | ||
+ | |||
+ | <code bash> | ||
+ | [bug@tux: | ||
+ | 248fd23b2247 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Branche et mainline ===== | ||
+ | |||
+ | Mercurial étant un SCM/VCS distribué, tout dépôt est une branche. La méthode la plus simple pour créer une nouvelle branche consiste à copier (cloner) un dépôt existant. Par exemple : | ||
+ | |||
+ | <code bash> | ||
+ | [bug@tux: | ||
+ | [bug@tux]$ hg clone projet projet-test-branch | ||
+ | </ | ||
+ | |||
+ | Par la suite, pour synchroniser la " | ||
+ | |||
+ | Dans un dépôt la commande '' | ||
+ | |||
+ | |||
+ | ===== Fichier de configuration ===== | ||
+ | |||
+ | Le fichier '' | ||
+ | |||
+ | < | ||
+ | [ui] | ||
+ | username = Alice < | ||
+ | |||
+ | [web] | ||
+ | contact = Alice | ||
+ | allowgz = true | ||
+ | allowbz2 = true | ||
+ | allowzip = true | ||
+ | style = gitweb | ||
+ | |||
+ | [extensions] | ||
+ | hgext.mq= | ||
+ | hgext.hbisect= | ||
+ | hgext.hgk= | ||
+ | hgext.patchbomb= | ||
+ | </ | ||
+ | |||
+ | Dans chaque dépôt, les valeurs de ces variables peuvent être surchargées via un fichier local '' | ||
+ | |||
+ | |||
+ | ===== Communiquer les changements ===== | ||
+ | |||
+ | Alice et Robert souhaitent coordonner leur travail sur un projet commun placé sous contrôle de Mercurial. Alice dispose du dépôt primaire (localisé dans / | ||
+ | |||
+ | ==== Accès local ==== | ||
+ | |||
+ | Robert travaillant sur la même machine qu' | ||
+ | |||
+ | <code bash> | ||
+ | [robert@tux: | ||
+ | [robert@tux: | ||
+ | changeset: | ||
+ | tag: tip | ||
+ | user: alice | ||
+ | date: Thu Oct 19 22:44:18 2006 +0200 | ||
+ | summary: | ||
+ | </ | ||
+ | |||
+ | Il peut maintenant modifier le projet puis envoyer ses // | ||
+ | |||
+ | <code bash> | ||
+ | [robert@tux: | ||
+ | [robert@tux: | ||
+ | adding changesets | ||
+ | adding manifests | ||
+ | adding file changes | ||
+ | added 1 changesets with 1 changes to 1 files | ||
+ | </ | ||
+ | |||
+ | Si Robert ne peut écrire dans le dépôt d' | ||
+ | |||
+ | ==== Accès réseaux en lecture seule ==== | ||
+ | |||
+ | Le dépôt d' | ||
+ | |||
+ | <code bash> | ||
+ | [alice@tux: | ||
+ | ... | ||
+ | [robert@tux: | ||
+ | [robert@tux: | ||
+ | changeset: | ||
+ | tag: tip | ||
+ | user: alice | ||
+ | date: Thu Oct 19 22:44:18 2006 +0200 | ||
+ | summary: | ||
+ | </ | ||
+ | |||
+ | Robert transmettra ensuite ses modifications par '' | ||
+ | |||
+ | Alice peut aussi opter pour offrir un accès HTTP permanent à son dépôt (sans avoir à lancer la commande '' | ||
+ | |||
+ | <code bash> | ||
+ | [alice@tux: | ||
+ | [alice@tux: | ||
+ | [alice@tux: | ||
+ | ... | ||
+ | [robert@tux: | ||
+ | [robert@tux: | ||
+ | changeset: | ||
+ | tag: tip | ||
+ | user: alice | ||
+ | date: Thu Oct 19 22:44:18 2006 +0200 | ||
+ | summary: | ||
+ | </ | ||
+ | |||
+ | ==== Accès réseaux en écriture ==== | ||
+ | |||
+ | Alice décide que Robert peut écrire dans son dépôt Mercurial. Si Robert a un accès SSH sur la machine d' | ||
+ | |||
+ | <code bash> | ||
+ | [robert@tux: | ||
+ | [robert@tux: | ||
+ | changeset: | ||
+ | tag: tip | ||
+ | user: alice | ||
+ | date: Thu Oct 19 22:44:18 2006 +0200 | ||
+ | summary: | ||
+ | [robert@tux: | ||
+ | [robert@tux: | ||
+ | [robert@tux: | ||
+ | adding changesets | ||
+ | adding manifests | ||
+ | adding file changes | ||
+ | added 1 changesets with 1 changes to 1 files | ||
+ | [robert@tux: | ||
+ | </ | ||
+ | |||
+ | La commande '' | ||
+ | |||
+ | La même chose est réalisable via HTTP. Alice met en place un accès HTTP à son dépôt comme précédemment (en utilisant le CGI), puis : | ||
+ | |||
+ | * dans le fichier .hg/hgrc de son dépôt elle rajoute | ||
+ | < | ||
+ | allow_push = * | ||
+ | push_ssl = false | ||
+ | </ | ||
+ | * dans un fichier .htaccess de son dépôt elle rajoute | ||
+ | < | ||
+ | <Limit POST> | ||
+ | AuthType Digest | ||
+ | AuthName " | ||
+ | AuthUserFile / | ||
+ | require valid-user | ||
+ | </ | ||
+ | </ | ||
+ | * elle crée enfin le fichier .digestpw nécessaire avec un login et un mot de passe pour Robert. | ||
+ | |||
+ | Robert peut désormais récupérer le dépôt d' | ||
+ | |||
+ | ===== Annulation d'un commit ===== | ||
+ | |||
+ | Dans mercurial, l' | ||
+ | |||
+ | ===== Exportation d'une archive ===== | ||
+ | |||
+ | La distribution des sources d'un projet sous contrôle de mercurial peut être réalisée sous la forme d'un fichier archive (tar, tgz, tbz, zip) qui est fabriqué via une commande analogue à '' | ||
+ | |||
+ | ===== Nommer une revision ===== | ||
+ | |||
+ | Dans mercurial, chaque révision d'un dépôt est identifié par un compteur incrémenté à chaque //commit// et par un HASH : | ||
+ | |||
+ | <code bash> | ||
+ | [robert@tux: | ||
+ | changeset: | ||
+ | </ | ||
+ | |||
+ | Ce HASH est en réalité une version courte du HASH (SHA) réel utilisé pour identifié la révision dans le dépôt : | ||
+ | |||
+ | <code bash> | ||
+ | [robert@tux: | ||
+ | f066ae784d95f9730992036faa9cbb53a422b494 | ||
+ | </ | ||
+ | |||
+ | Il est aussi possible de donner un nom symbolique à une révision quelconque. Par exemple : | ||
+ | |||
+ | <code bash> | ||
+ | [robert@tux: | ||
+ | changeset: | ||
+ | [robert@tux: | ||
+ | </ | ||
+ | |||
+ | va associer à la révision 35 ou au // | ||
+ | |||
+ | <code bash> | ||
+ | [robert@tux: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Autres commandes utiles ===== | ||
+ | |||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | |||