[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/