Mercurial > hg
annotate tests/test-mq-qimport @ 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 | c52057614c72 |
children | da0b9109186d |
rev | line source |
---|---|
6027
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
1 #!/bin/sh |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
2 |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
3 cat > writelines.py <<EOF |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
4 import sys |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
5 path = sys.argv[1] |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
6 args = sys.argv[2:] |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
7 assert (len(args) % 2) == 0 |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
8 |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
9 f = file(path, 'wb') |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
10 for i in xrange(len(args)/2): |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
11 count, s = args[2*i:2*i+2] |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
12 count = int(count) |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
13 s = s.decode('string_escape') |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
14 f.write(s*count) |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
15 f.close() |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
16 |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
17 EOF |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
18 |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
19 echo "[extensions]" >> $HGRCPATH |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
20 echo "mq=" >> $HGRCPATH |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
21 echo "[diff]" >> $HGRCPATH |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
22 echo "git=1" >> $HGRCPATH |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
23 |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
24 hg init repo |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
25 cd repo |
6940
05ec27530d04
qimport: report filename in case of IOError
Martin Geisler <mg@daimi.au.dk>
parents:
6027
diff
changeset
|
26 |
05ec27530d04
qimport: report filename in case of IOError
Martin Geisler <mg@daimi.au.dk>
parents:
6027
diff
changeset
|
27 echo % qimport non-existing-file |
7421
4c4324476be6
Catch both IOError and OSError, fix regression introduced by 8046f0a070a6
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7273
diff
changeset
|
28 hg qimport non-existing-file |
6940
05ec27530d04
qimport: report filename in case of IOError
Martin Geisler <mg@daimi.au.dk>
parents:
6027
diff
changeset
|
29 |
9287
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
30 echo % import email |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
31 hg qimport --push -n email - <<EOF |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
32 From: Username in email <test@example.net> |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
33 Subject: [PATCH] Message in email |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
34 Date: Fri, 02 Jan 1970 00:00:00 +0000 |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
35 |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
36 Text before patch. |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
37 |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
38 # HG changeset patch |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
39 # User Username in patch <test@example.net> |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
40 # Date 0 0 |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
41 # Node ID 1a706973a7d84cb549823634a821d9bdf21c6220 |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
42 # Parent 0000000000000000000000000000000000000000 |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
43 First line of commit message. |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
44 |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
45 More text in commit message. |
10730
4d6bd7b8b6d8
mq: allow lines starting with '--- ' in patch messages
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
9287
diff
changeset
|
46 --- confuse the diff detection |
9287
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
47 |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
48 diff --git a/x b/x |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
49 new file mode 100644 |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
50 --- /dev/null |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
51 +++ b/x |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
52 @@ -0,0 +1,1 @@ |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
53 +new file |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
54 Text after patch. |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
55 |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
56 EOF |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
57 |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
58 echo % hg tip -v |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
59 hg tip -v |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
60 hg qpop |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
61 hg qdelete email |
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8362
diff
changeset
|
62 |
7158
d1d011accf94
mq: let qimport read patches from URLs
Brendan Cully <brendan@kublai.com>
parents:
6940
diff
changeset
|
63 echo % import URL |
d1d011accf94
mq: let qimport read patches from URLs
Brendan Cully <brendan@kublai.com>
parents:
6940
diff
changeset
|
64 echo foo >> foo |
d1d011accf94
mq: let qimport read patches from URLs
Brendan Cully <brendan@kublai.com>
parents:
6940
diff
changeset
|
65 hg add foo |
d1d011accf94
mq: let qimport read patches from URLs
Brendan Cully <brendan@kublai.com>
parents:
6940
diff
changeset
|
66 hg diff > $HGTMP/url.diff |
d1d011accf94
mq: let qimport read patches from URLs
Brendan Cully <brendan@kublai.com>
parents:
6940
diff
changeset
|
67 hg revert --no-backup foo |
d1d011accf94
mq: let qimport read patches from URLs
Brendan Cully <brendan@kublai.com>
parents:
6940
diff
changeset
|
68 rm foo |
7266
e7f6401584f7
test-mq-qimport: fix URL generation under windows
Patrick Mezard <pmezard@gmail.com>
parents:
7160
diff
changeset
|
69 # Under unix: file:///foobar/blah |
e7f6401584f7
test-mq-qimport: fix URL generation under windows
Patrick Mezard <pmezard@gmail.com>
parents:
7160
diff
changeset
|
70 # Under windows: file:///c:/foobar/blah |
10775
c52057614c72
Tests with spaces in paths
Mads Kiilerich <mads@kiilerich.com>
parents:
10730
diff
changeset
|
71 patchurl=`echo "$HGTMP"/url.diff | tr '\\\\' /` |
c52057614c72
Tests with spaces in paths
Mads Kiilerich <mads@kiilerich.com>
parents:
10730
diff
changeset
|
72 expr "$patchurl" : "\/" > /dev/null |
7266
e7f6401584f7
test-mq-qimport: fix URL generation under windows
Patrick Mezard <pmezard@gmail.com>
parents:
7160
diff
changeset
|
73 if [ $? -ne 0 ]; then |
10775
c52057614c72
Tests with spaces in paths
Mads Kiilerich <mads@kiilerich.com>
parents:
10730
diff
changeset
|
74 patchurl="/$patchurl" |
7266
e7f6401584f7
test-mq-qimport: fix URL generation under windows
Patrick Mezard <pmezard@gmail.com>
parents:
7160
diff
changeset
|
75 fi |
10775
c52057614c72
Tests with spaces in paths
Mads Kiilerich <mads@kiilerich.com>
parents:
10730
diff
changeset
|
76 hg qimport file://"$patchurl" |
7158
d1d011accf94
mq: let qimport read patches from URLs
Brendan Cully <brendan@kublai.com>
parents:
6940
diff
changeset
|
77 hg qun |
d1d011accf94
mq: let qimport read patches from URLs
Brendan Cully <brendan@kublai.com>
parents:
6940
diff
changeset
|
78 |
7160
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
79 echo % import patch that already exists |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
80 echo foo2 >> foo |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
81 hg add foo |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
82 hg diff > ../url.diff |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
83 hg revert --no-backup foo |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
84 rm foo |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
85 hg qimport ../url.diff |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
86 hg qpush |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
87 cat foo |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
88 hg qpop |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
89 echo % qimport -f |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
90 hg qimport -f ../url.diff |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
91 hg qpush |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
92 cat foo |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
93 hg qpop |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
94 |
6940
05ec27530d04
qimport: report filename in case of IOError
Martin Geisler <mg@daimi.au.dk>
parents:
6027
diff
changeset
|
95 echo % build diff with CRLF |
6027
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
96 python ../writelines.py b 5 'a\n' 5 'a\r\n' |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
97 hg ci -Am addb |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
98 python ../writelines.py b 2 'a\n' 10 'b\n' 2 'a\r\n' |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
99 hg diff > b.diff |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
100 hg up -C |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
101 echo % qimport CRLF diff |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
102 hg qimport b.diff |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
103 hg qpush |
cee68264ed92
mq: qimport must read patches in binary mode
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
104 |
8362
bbc74c05b8a4
mq: add -P/--push option to qimport
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7421
diff
changeset
|
105 echo % try to import --push |
bbc74c05b8a4
mq: add -P/--push option to qimport
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7421
diff
changeset
|
106 echo another >> b |
bbc74c05b8a4
mq: add -P/--push option to qimport
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7421
diff
changeset
|
107 hg diff > another.diff |
bbc74c05b8a4
mq: add -P/--push option to qimport
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7421
diff
changeset
|
108 hg up -C |
bbc74c05b8a4
mq: add -P/--push option to qimport
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7421
diff
changeset
|
109 hg qimport --push another.diff |
bbc74c05b8a4
mq: add -P/--push option to qimport
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7421
diff
changeset
|
110 hg qfin -a |
bbc74c05b8a4
mq: add -P/--push option to qimport
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7421
diff
changeset
|
111 hg qimport -rtip -P |