##// END OF EJS Templates
merge with stable
Matt Mackall -
r12718:372abc79 merge default
parent child Browse files
Show More
@@ -7,22 +7,22 b''
7
7
8 from common import NoRepo, checktool, commandline, commit, converter_source
8 from common import NoRepo, checktool, commandline, commit, converter_source
9 from mercurial.i18n import _
9 from mercurial.i18n import _
10 from mercurial import util
10 from mercurial import encoding, util
11 import os, shutil, tempfile, re
11 import os, shutil, tempfile, re
12
12
13 # The naming drift of ElementTree is fun!
13 # The naming drift of ElementTree is fun!
14
14
15 try:
15 try:
16 from xml.etree.cElementTree import ElementTree
16 from xml.etree.cElementTree import ElementTree, XMLParser
17 except ImportError:
17 except ImportError:
18 try:
18 try:
19 from xml.etree.ElementTree import ElementTree
19 from xml.etree.ElementTree import ElementTree, XMLParser
20 except ImportError:
20 except ImportError:
21 try:
21 try:
22 from elementtree.cElementTree import ElementTree
22 from elementtree.cElementTree import ElementTree, XMLParser
23 except ImportError:
23 except ImportError:
24 try:
24 try:
25 from elementtree.ElementTree import ElementTree
25 from elementtree.ElementTree import ElementTree, XMLParser
26 except ImportError:
26 except ImportError:
27 ElementTree = None
27 ElementTree = None
28
28
@@ -88,12 +88,24 b' class darcs_source(converter_source, com'
88 self.ui.debug('cleaning up %s\n' % self.tmppath)
88 self.ui.debug('cleaning up %s\n' % self.tmppath)
89 shutil.rmtree(self.tmppath, ignore_errors=True)
89 shutil.rmtree(self.tmppath, ignore_errors=True)
90
90
91 def recode(self, s, encoding=None):
92 if isinstance(s, unicode):
93 # XMLParser returns unicode objects for anything it can't
94 # encode into ASCII. We convert them back to str to get
95 # recode's normal conversion behavior.
96 s = s.encode('latin-1')
97 return super(darcs_source, self).recode(s, encoding)
98
91 def xml(self, cmd, **kwargs):
99 def xml(self, cmd, **kwargs):
92 # NOTE: darcs is currently encoding agnostic and will print
100 # NOTE: darcs is currently encoding agnostic and will print
93 # patch metadata byte-for-byte, even in the XML changelog.
101 # patch metadata byte-for-byte, even in the XML changelog.
94 etree = ElementTree()
102 etree = ElementTree()
103 # While we are decoding the XML as latin-1 to be as liberal as
104 # possible, etree will still raise an exception if any
105 # non-printable characters are in the XML changelog.
106 parser = XMLParser(encoding='latin-1')
95 fp = self._run(cmd, **kwargs)
107 fp = self._run(cmd, **kwargs)
96 etree.parse(fp)
108 etree.parse(fp, parser=parser)
97 self.checkexit(fp.close())
109 self.checkexit(fp.close())
98 return etree.getroot()
110 return etree.getroot()
99
111
@@ -49,8 +49,6 b' update source'
49 $ darcs record -a -l -m p1.2
49 $ darcs record -a -l -m p1.2
50 Finished recording patch 'p1.2'
50 Finished recording patch 'p1.2'
51
51
52 merge branch
53
54 $ darcs pull -a ../darcs-clone
52 $ darcs pull -a ../darcs-clone
55 Backing up ./a(-darcs-backup0)
53 Backing up ./a(-darcs-backup0)
56 We have conflicts in the following files:
54 We have conflicts in the following files:
@@ -85,6 +83,15 b' darcs is encoding agnostic, so it takes '
85
83
86 $ darcs record -a -l -m 'p4: desc ñ' -A 'author ñ'
84 $ darcs record -a -l -m 'p4: desc ñ' -A 'author ñ'
87 Finished recording patch 'p4: desc ñ'
85 Finished recording patch 'p4: desc ñ'
86
87 Test latin-1 commit message
88
89 $ echo h > h
90 $ printf "p5: desc " > ../p5
91 $ python -c 'print "".join([chr(i) for i in range(128, 256)])' >> ../p5
92 $ darcs record -a -l --logfile ../p5
93 Finished recording patch 'p5: desc ��������������������������������������������������������������������������������������������������������������������������������'
94
88 $ glog()
95 $ glog()
89 > {
96 > {
90 > HGENCODING=utf-8 hg glog --template '{rev} "{desc|firstline}" ({author}) files: {files}\n' "$@"
97 > HGENCODING=utf-8 hg glog --template '{rev} "{desc|firstline}" ({author}) files: {files}\n' "$@"
@@ -95,12 +102,13 b' darcs is encoding agnostic, so it takes '
95 scanning source...
102 scanning source...
96 sorting...
103 sorting...
97 converting...
104 converting...
98 5 p0
105 6 p0
99 4 p1.2
106 5 p1.2
100 3 p1.1
107 4 p1.1
101 2 p2
108 3 p2
102 1 p3
109 2 p3
103 0 p4: desc ?
110 1 p4: desc ?
111 0 p5: desc ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
104
112
105 The converter does not currently handle patch conflicts very well.
113 The converter does not currently handle patch conflicts very well.
106 When they occur, it reverts *all* changes and moves forward,
114 When they occur, it reverts *all* changes and moves forward,
@@ -109,8 +117,11 b' Unfortunately, non-conflicting changes, '
109 "c" file in p1.1 patch are reverted too.
117 "c" file in p1.1 patch are reverted too.
110 Just to say that manifest not listing "c" here is a bug.
118 Just to say that manifest not listing "c" here is a bug.
111
119
112 $ glog -R darcs-repo-hg
120 $ HGENCODING=latin-1 glog -R darcs-repo-hg -r 6 | "$TESTDIR"/printrepr.py
113 o 5 "p4: desc ñ" (author ñ) files: g
121 o 6 "p5: desc \xc2\x80\xc2\x81\xc2\x82\xc2\x83\xc2\x84\xc2\x85\xc2\x86\xc2\x87\xc2\x88\xc2\x89\xc2\x8a\xc2\x8b\xc2\x8c\xc2\x8d\xc2\x8e\xc2\x8f\xc2\x90\xc2\x91\xc2\x92\xc2\x93\xc2\x94\xc2\x95\xc2\x96\xc2\x97\xc2\x98\xc2\x99\xc2\x9a\xc2\x9b\xc2\x9c\xc2\x9d\xc2\x9e\xc2\x9f\xc2\xa0\xc2\xa1\xc2\xa2\xc2\xa3\xc2\xa4\xc2\xa5\xc2\xa6\xc2\xa7\xc2\xa8\xc2\xa9\xc2\xaa\xc2\xab\xc2\xac\xc2\xad\xc2\xae\xc2\xaf\xc2\xb0\xc2\xb1\xc2\xb2\xc2\xb3\xc2\xb4\xc2\xb5\xc2\xb6\xc2\xb7\xc2\xb8\xc2\xb9\xc2\xba\xc2\xbb\xc2\xbc\xc2\xbd\xc2\xbe\xc2\xbf\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x97\xc3\x98\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc3\x9e\xc3\x9f\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb3\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb7\xc3\xb8\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf" (test@example.org) files: h
122 |
123 $ HGENCODING=utf-8 glog -R darcs-repo-hg -r 0:5 | "$TESTDIR"/printrepr.py
124 o 5 "p4: desc \xc3\xb1" (author \xc3\xb1) files: g
114 |
125 |
115 o 4 "p3" (test@example.org) files: dir/d dir/d2 dir2/d f ff
126 o 4 "p3" (test@example.org) files: dir/d dir/d2 dir2/d f ff
116 |
127 |
@@ -122,6 +133,7 b' Just to say that manifest not listing "c'
122 |
133 |
123 o 0 "p0" (test@example.org) files: a
134 o 0 "p0" (test@example.org) files: a
124
135
136
125 $ hg up -q -R darcs-repo-hg
137 $ hg up -q -R darcs-repo-hg
126 $ hg -R darcs-repo-hg manifest --debug
138 $ hg -R darcs-repo-hg manifest --debug
127 7225b30cdf38257d5cc7780772c051b6f33e6d6b 644 a
139 7225b30cdf38257d5cc7780772c051b6f33e6d6b 644 a
@@ -129,3 +141,4 b' Just to say that manifest not listing "c'
129 37406831adc447ec2385014019599dfec953c806 644 dir2/d
141 37406831adc447ec2385014019599dfec953c806 644 dir2/d
130 b783a337463792a5c7d548ad85a7d3253c16ba8c 644 ff
142 b783a337463792a5c7d548ad85a7d3253c16ba8c 644 ff
131 0973eb1b2ecc4de7fafe7447ce1b7462108b4848 644 g
143 0973eb1b2ecc4de7fafe7447ce1b7462108b4848 644 g
144 fe6f8b4f507fe3eb524c527192a84920a4288dac 644 h
General Comments 0
You need to be logged in to leave comments. Login now