view tests/test-win32text.out @ 12252:4481f8a93c7a stable

convert/darcs: handle non-ASCII metadata in darcs changelog (issue2354) Given a commit author or message with non-ASCII characters in a darcs repo, convert would raise a UnicodeEncodeError when adding changesets to the hg changelog. This happened because etree returns back unicode objects for any text it can't encode into ASCII. convert was passing these objects to changelog.add(), which would then attempt encoding.fromlocal() on them. This patch ensures converter_source.recode() is called on each piece of commit data returned by etree. (Also note that darcs is currently encoding agnostic and will print out whatever is in a patch's metadata byte-for-byte, even in the XML changelog.)
author Brodie Rao <brodie@bitheap.org>
date Fri, 10 Sep 2010 09:30:50 -0500
parents f2618cacb485
children
line wrap: on
line source

[hooks]
pretxncommit.crlf = python:hgext.win32text.forbidcrlf
pretxnchangegroup.crlf = python:hgext.win32text.forbidcrlf

commit should succeed

updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
commit should fail
Attempt to commit or push text file(s) using CRLF line endings
in f583ea08d42a: f
transaction abort!
rollback completed
abort: pretxncommit.crlf hook failed

commits should succeed

push should fail
pushing to ../zoz
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
Attempt to commit or push text file(s) using CRLF line endings
in bc2d09796734: g
in b1aa5cde7ff4: f

To prevent this mistake in your local repository,
add to Mercurial.ini or .hg/hgrc:

[hooks]
pretxncommit.crlf = python:hgext.win32text.forbidcrlf

and also consider adding:

[extensions]
win32text =
[encode]
** = cleverencode:
[decode]
** = cleverdecode:
transaction abort!
rollback completed
abort: pretxnchangegroup.crlf hook failed

commit should succeed

push should succeed
pushing to ../zoz
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 2 files

and now for something completely different
Attempt to commit or push text file(s) using CRLF line endings
in 053ba1a3035a: d/f2
transaction abort!
rollback completed
abort: pretxncommit.crlf hook failed
forgetting d/f2


changeset:   5:f0b1c8d75fce
tag:         tip
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       bin
description:
5


changeset:   4:77796dbcd4ad
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
4


changeset:   3:7c1b5430b350
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f g
description:
2.3


changeset:   2:bc2d09796734
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       g
description:
2.2


changeset:   1:b1aa5cde7ff4
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
2


changeset:   0:fcf06d5c4e1d
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
1



updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

adding dupe/a
adding dupe/b
adding dupe/c
adding dupe/d
changeset:   8:67ac5962ab43
tag:         tip
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       d
description:
d


changeset:   7:68c127d1834e
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       b c
description:
b/c


changeset:   6:adbf8bf7f31d
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       a
description:
a


changeset:   5:f0b1c8d75fce
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       bin
description:
5


changeset:   4:77796dbcd4ad
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
4


changeset:   3:7c1b5430b350
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f g
description:
2.3


changeset:   2:bc2d09796734
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       g
description:
2.2


changeset:   1:b1aa5cde7ff4
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
2


changeset:   0:fcf06d5c4e1d
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
1



pulling from dupe
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 4 changes to 4 files
Attempt to commit or push text file(s) using CRLF line endings
in 67ac5962ab43: d
in 68c127d1834e: b
in 68c127d1834e: c

To prevent this mistake in your local repository,
add to Mercurial.ini or .hg/hgrc:

[hooks]
pretxncommit.crlf = python:hgext.win32text.forbidcrlf

and also consider adding:

[extensions]
win32text =
[encode]
** = cleverencode:
[decode]
** = cleverdecode:
transaction abort!
rollback completed
abort: pretxnchangegroup.crlf hook failed

changeset:   5:f0b1c8d75fce
tag:         tip
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       bin
description:
5


changeset:   4:77796dbcd4ad
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
4


changeset:   3:7c1b5430b350
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f g
description:
2.3


changeset:   2:bc2d09796734
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       g
description:
2.2


changeset:   1:b1aa5cde7ff4
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
2


changeset:   0:fcf06d5c4e1d
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
1



hello<NUL><CR><LF>
some<LF>text<LF>
rem empty<CR><LF>

[extensions]
win32text = 
[decode]
** = cleverdecode:
[encode]
** = cleverencode:

WARNING: f4.bat already has CRLF line endings
and does not need EOL conversion by the win32text plugin.
Before your next commit, please reconsider your encode/decode settings in 
Mercurial.ini or ..../.hg/hgrc.
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
hello<NUL><CR><LF>
some<CR><LF>text<CR><LF>
rem empty<CR><LF>

# empty<CR><LF>
# empty<LF>
% just linefeed<LF>
% just linefeed<LF>
no changes needed to linefeed
% just linefeed<LF>
M linefeed
reverting linefeed
% just linefeed<CR><LF>