goa/doc/devmanual_fr/sect_mercurial.txt
author Julien Jehannet <Julien Jehannet <julien.jehannet@logilab.fr>>
Tue, 02 Mar 2010 21:48:36 +0100
branchstable
changeset 4783 6dc34d4cf892
parent 0 b97547f5f1fa
permissions -rw-r--r--
[F] views: fix 2 unicode errors 1. You can now use valid unicode strings in ValidationError exception. Previously, if 'err' contains unicode, UnicodeDecodeError was raised by format_errors() >>> templstr = '<li>%s</li>\n' >>> e = ValidationError(None, {None: u'oué, une exception en unicode!'}) >>> templstr % e '<li>None (None): ou\xc3\xa9, une exception en unicode!</li>\n' >>> templstr = u'<li>%s</li>\n' >>> templstr % e u'<li>None (None): ou\xe9, une exception en unicode!</li>\n' 2. The message of an Exception can contains unicode. But it now properly managed by “informal” string representation. We can easily fix the problem by using the Exception.message attribute that still contains the original message. >>> a = AssertionError(u'séfdsdf') >>> a.message u's\xe9fdsdf' >>> str(a) Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 1: ordinal not in range(128) >>> a = ValueError(u'fsdfsdéfsdfs') >>> str(a) Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 6: ordinal not in range(128) >>> a ValueError(u'fsdfsd\xe9fsdfs',) >>> unicode(a) Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 6: ordinal not in range(128) >>> a.message u'fsdfsd\xe9fsdfs'

Prsentation de Mercurial
-------------------------

Introduction
````````````
Mercurial_ gre un ensemble distribu d'entrepts contenant des arbres de
rvisions (chaque rvision indique les changements  effectuer pour obtenir la
version suivante, et ainsi de suite). Localement, on dispose d'un entrept
contenant un arbre de rvisions, et d'un rpertoire de travail. Il est possible
de mettre dans son rpertoire de travail, une des versions issue de son entrept
local, de la modifier puis de la verser dans son entrept. Il est galement
possible de rcuprer dans son entrept local des rvisions venant d'un autre
entrept, ou d'exporter ses propres rvisions depuis son entrept local vers un
autre entrept.

A noter que contrairement  CVS/Subversion, on cre gnralement un entrept par
projet  grer.

Lors d'un dveloppement collaboratif, on cre gnralement un entrept central
accessible  tout les dveloppeurs du projet. Ces entrepts centraux servent de
rfrence. Selon ses besoins, chacun peut ensuite disposer d'un entrept local,
qu'il faudra penser  synchroniser avec l'entrept central de temps  autre. 


Principales commandes
`````````````````````
* Crer un entrept local ::

    hg clone ssh://orion//home/src/prive/rep

* Voir le contenu de l'entrept local (outil graphique en Tk) ::

    hg view

* Ajouter un sous-rpertoire ou un fichier dans le rpertoire courant ::

    hg add rep

* Placer dans son rpertoire de travail une rvision spcifique (ou la dernire
  revision) issue de l'entrept local ::

    hg update [identifiant-revision]
    hg up [identifiant-revision]

* Rcuprer dans son entrept local, l'arbre de rvisions contenu dans un
  entrept distant (cette opration ne modifie pas le rpertoire local) ::

    hg pull ssh://orion//home/src/prive/rep
    hg pull -u ssh://orion//home/src/prive/rep # quivalent  pull + update

* Voir quelles sont les ttes de branches de l'entrept local si un `pull` a
  tir une nouvelle branche ::

    hg heads

* Verser le rpertoire de travail dans l'entrept local (et crer une nouvelle
  rvision) ::

    hg commit
    hg ci

* Fusionner, avec la rvision mre du rpertoire local, une autre rvision issue
  de l'entrept local (la nouvelle rvision qui en rsultera aura alors deux
  rvisions mres) ::

    hg merge identifiant-revision

* Exporter dans un entrept distant, l'arbre de rvisions contenu dans son
  entrept local (cette opration ne modifie pas le rpertoire local) ::

    hg push ssh://orion//home/src/prive/rep

* Voir quelle sont les rvisions locales non prsentes dans un autre entrept ::

    hg outgoing ssh://orion//home/src/prive/rep

* Voir quelle sont les rvisions d'un autre entrept non prsentes localement ::

    hg incoming ssh://orion//home/src/prive/rep

* Voir quelle est la rvision issue de l'entrept local qui a t sortie dans le
  rpertoire de travail et modifie ::

    hg parent

* Voir les diffrences entre le rpertoire de travail et la rvision mre de
  l'entrept local, ventuellement permettant de les verser dans l'entrept
  local ::

    hg diff
    hg commit-tool
    hg ct


Bonnes pratiques
````````````````
* penser  faire un `hg pull -u` rgulirement et particulirement avant de
  faire un `hg commit`

* penser  faire un `hg push` lorsque votre entrept contient une version
  relativement stable de vos modifications

* si un `hg pull -u` a cr une nouvelle tte de branche :

  1. identifier l'identifiant de celle-ci avec `hg head`
  2. fusionner avec `hg merge`
  3. `hg ci`
  4. `hg push`

.. _Mercurial: http://www.selenic.com/mercurial/