Encoding problem and bug running hookscript ?
Yannick CHARLES
yannick.charles at gmail.com
Wed Nov 28 21:18:42 UTC 2012
Yes, with
hg qpush -a --encoding utf-8
it works perfectly.
I also checked the encodings (with hg help -v and locale) on the server
side, I get the same results as in your example.
Thanks a lot for your help ! :)
Yannick CHARLES
2012/11/28 Matt Mackall <mpm at selenic.com>
> On Wed, 2012-11-28 at 20:52 +0100, Yannick CHARLES wrote:
> > Good evening everybody,
> >
> > I have the following setup:
> >
> > A repository "test-syst", and a versionned patch queue located at
> > "test-syst/.hg/patches-Yann" (final goal will be to have one patch queue
> > for each developer).
> > These two are located on a remote server, running Mercurial 2.3.2
> > (latest version on release ppa) on Ubuntu 12.04 (precise).
> >
> > There is a changegroup hook configured for the patches repository that
> > calls the following shell script (the script is passed the developer
> > name as argument, here Yann):
> >
> > ------
> >
> > #/bin/bash
> >
> > # Getting back to "test-syst/.hg" as the script is run from
> > "test-syst/.hg/patches-Yann"
> > cd ..
> >
> > # Config file backup
> > cp hgrc hgrc_bak
> >
> > # Add user name to prevent error when applying patch
> > echo "
> > [ui]
> > username = $1
> > " >> hgrc
> >
> > # Select stack
> > hg qqueue $1
> > # Select some guard
> > hg qselect pub
> > # Apply all patches
> > hg qpush -a
> >
> > #
> > # Here goes some command that builds the contents of the repository,
> > once patched, and export the resulting files to some folder.
> > #
> >
> > # Restore original config file
> > mv hgrc_bak hgrc
> > # Restore original state
> > hg qpop -a
> >
> > --------
> > One of the patches committed in the patches repo has non-ascii accented
> > letters (à) in its description.
> >
> > Provided that I invoke it from the right directory, the script works
> > fine from the command line. It also works fine if I push changes from
> > another repository created with qclone on the server itself.
> >
> > However, when I push changes from my machine (also with Mercurial 2.3.2,
> > and TortoiseHg 2.4.3, on Ubuntu 11.04) to the patch repository over
> > http, the hg qpush -a command in the script fails and I get the
> > following output:
> >
> > searching for changes
> > remote: adding changesets
> > remote: adding manifests
> > remote: adding file changes
> > remote: added 1 changesets with 1 changes to 1 files
> > remote: 1 files updated, 0 files merged, 0 files removed, 0 files
> unresolved
> > remote: applying 2012-11-28_16-32-05_r0+.diff
> > remote: applying 2012-11-28_17-34-08_r1+.diff
> > remote: transaction abort!
> > remote: rollback completed
> > remote: cleaning up working directory...done
> > remote: abort: decoding near 'h tant qu'à faire': 'ascii' codec can't
> > decode byte 0xc3 in position 17: ordinal not in range(128)!
>
> My guess is that this is happening in qpush. The patch description is
> probably in UTF-8, but Mercurial on the server ("remote:") is expecting
> ASCII. Adding "--encoding utf-8" to the qpush call will probably fix it.
>
> You can find out what encoding Mercurial thinks it's using like this:
>
> $ hg help -v | grep encoding
> --encoding ENCODE set the charset encoding (default: UTF-8)
> --encodingmode MODE set the charset encoding mode (default: strict)
>
> Your webserver/hook is probably running with no locale variables. Add
> this to your script to see your locale encoding:
>
> $ locale | grep CTYPE
> LC_CTYPE=en_US.UTF-8
>
> > Also, would it help somehow to update to Mercurial 2.4 ?
>
> Nope.
>
> --
> Mathematics is the supreme nostalgia of our time.
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial/attachments/20121128/58fd1ea5/attachment-0002.html>
More information about the Mercurial
mailing list