##// END OF EJS Templates
mpatch: use absolute_import...
Gregory Szorc -
r27337:9a175761 default
parent child Browse files
Show More
@@ -1,118 +1,119 b''
1 # mpatch.py - Python implementation of mpatch.c
1 # mpatch.py - Python implementation of mpatch.c
2 #
2 #
3 # Copyright 2009 Matt Mackall <mpm@selenic.com> and others
3 # Copyright 2009 Matt Mackall <mpm@selenic.com> and others
4 #
4 #
5 # This software may be used and distributed according to the terms of the
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version.
6 # GNU General Public License version 2 or any later version.
7
7
8 from __future__ import absolute_import
9
10 import cStringIO
8 import struct
11 import struct
9 try:
12
10 from cStringIO import StringIO
13 StringIO = cStringIO.StringIO
11 except ImportError:
12 from StringIO import StringIO
13
14
14 # This attempts to apply a series of patches in time proportional to
15 # This attempts to apply a series of patches in time proportional to
15 # the total size of the patches, rather than patches * len(text). This
16 # the total size of the patches, rather than patches * len(text). This
16 # means rather than shuffling strings around, we shuffle around
17 # means rather than shuffling strings around, we shuffle around
17 # pointers to fragments with fragment lists.
18 # pointers to fragments with fragment lists.
18 #
19 #
19 # When the fragment lists get too long, we collapse them. To do this
20 # When the fragment lists get too long, we collapse them. To do this
20 # efficiently, we do all our operations inside a buffer created by
21 # efficiently, we do all our operations inside a buffer created by
21 # mmap and simply use memmove. This avoids creating a bunch of large
22 # mmap and simply use memmove. This avoids creating a bunch of large
22 # temporary string buffers.
23 # temporary string buffers.
23
24
24 def patches(a, bins):
25 def patches(a, bins):
25 if not bins:
26 if not bins:
26 return a
27 return a
27
28
28 plens = [len(x) for x in bins]
29 plens = [len(x) for x in bins]
29 pl = sum(plens)
30 pl = sum(plens)
30 bl = len(a) + pl
31 bl = len(a) + pl
31 tl = bl + bl + pl # enough for the patches and two working texts
32 tl = bl + bl + pl # enough for the patches and two working texts
32 b1, b2 = 0, bl
33 b1, b2 = 0, bl
33
34
34 if not tl:
35 if not tl:
35 return a
36 return a
36
37
37 m = StringIO()
38 m = StringIO()
38 def move(dest, src, count):
39 def move(dest, src, count):
39 """move count bytes from src to dest
40 """move count bytes from src to dest
40
41
41 The file pointer is left at the end of dest.
42 The file pointer is left at the end of dest.
42 """
43 """
43 m.seek(src)
44 m.seek(src)
44 buf = m.read(count)
45 buf = m.read(count)
45 m.seek(dest)
46 m.seek(dest)
46 m.write(buf)
47 m.write(buf)
47
48
48 # load our original text
49 # load our original text
49 m.write(a)
50 m.write(a)
50 frags = [(len(a), b1)]
51 frags = [(len(a), b1)]
51
52
52 # copy all the patches into our segment so we can memmove from them
53 # copy all the patches into our segment so we can memmove from them
53 pos = b2 + bl
54 pos = b2 + bl
54 m.seek(pos)
55 m.seek(pos)
55 for p in bins: m.write(p)
56 for p in bins: m.write(p)
56
57
57 def pull(dst, src, l): # pull l bytes from src
58 def pull(dst, src, l): # pull l bytes from src
58 while l:
59 while l:
59 f = src.pop()
60 f = src.pop()
60 if f[0] > l: # do we need to split?
61 if f[0] > l: # do we need to split?
61 src.append((f[0] - l, f[1] + l))
62 src.append((f[0] - l, f[1] + l))
62 dst.append((l, f[1]))
63 dst.append((l, f[1]))
63 return
64 return
64 dst.append(f)
65 dst.append(f)
65 l -= f[0]
66 l -= f[0]
66
67
67 def collect(buf, list):
68 def collect(buf, list):
68 start = buf
69 start = buf
69 for l, p in reversed(list):
70 for l, p in reversed(list):
70 move(buf, p, l)
71 move(buf, p, l)
71 buf += l
72 buf += l
72 return (buf - start, start)
73 return (buf - start, start)
73
74
74 for plen in plens:
75 for plen in plens:
75 # if our list gets too long, execute it
76 # if our list gets too long, execute it
76 if len(frags) > 128:
77 if len(frags) > 128:
77 b2, b1 = b1, b2
78 b2, b1 = b1, b2
78 frags = [collect(b1, frags)]
79 frags = [collect(b1, frags)]
79
80
80 new = []
81 new = []
81 end = pos + plen
82 end = pos + plen
82 last = 0
83 last = 0
83 while pos < end:
84 while pos < end:
84 m.seek(pos)
85 m.seek(pos)
85 p1, p2, l = struct.unpack(">lll", m.read(12))
86 p1, p2, l = struct.unpack(">lll", m.read(12))
86 pull(new, frags, p1 - last) # what didn't change
87 pull(new, frags, p1 - last) # what didn't change
87 pull([], frags, p2 - p1) # what got deleted
88 pull([], frags, p2 - p1) # what got deleted
88 new.append((l, pos + 12)) # what got added
89 new.append((l, pos + 12)) # what got added
89 pos += l + 12
90 pos += l + 12
90 last = p2
91 last = p2
91 frags.extend(reversed(new)) # what was left at the end
92 frags.extend(reversed(new)) # what was left at the end
92
93
93 t = collect(b2, frags)
94 t = collect(b2, frags)
94
95
95 m.seek(t[1])
96 m.seek(t[1])
96 return m.read(t[0])
97 return m.read(t[0])
97
98
98 def patchedsize(orig, delta):
99 def patchedsize(orig, delta):
99 outlen, last, bin = 0, 0, 0
100 outlen, last, bin = 0, 0, 0
100 binend = len(delta)
101 binend = len(delta)
101 data = 12
102 data = 12
102
103
103 while data <= binend:
104 while data <= binend:
104 decode = delta[bin:bin + 12]
105 decode = delta[bin:bin + 12]
105 start, end, length = struct.unpack(">lll", decode)
106 start, end, length = struct.unpack(">lll", decode)
106 if start > end:
107 if start > end:
107 break
108 break
108 bin = data + length
109 bin = data + length
109 data = bin + 12
110 data = bin + 12
110 outlen += start - last
111 outlen += start - last
111 last = end
112 last = end
112 outlen += length
113 outlen += length
113
114
114 if bin != binend:
115 if bin != binend:
115 raise ValueError("patch cannot be decoded")
116 raise ValueError("patch cannot be decoded")
116
117
117 outlen += orig - last
118 outlen += orig - last
118 return outlen
119 return outlen
@@ -1,216 +1,215 b''
1 #require test-repo
1 #require test-repo
2
2
3 $ cd "$TESTDIR"/..
3 $ cd "$TESTDIR"/..
4
4
5 $ hg files 'set:(**.py)' | xargs python contrib/check-py3-compat.py
5 $ hg files 'set:(**.py)' | xargs python contrib/check-py3-compat.py
6 contrib/casesmash.py not using absolute_import
6 contrib/casesmash.py not using absolute_import
7 contrib/check-code.py not using absolute_import
7 contrib/check-code.py not using absolute_import
8 contrib/check-code.py requires print_function
8 contrib/check-code.py requires print_function
9 contrib/check-config.py not using absolute_import
9 contrib/check-config.py not using absolute_import
10 contrib/check-config.py requires print_function
10 contrib/check-config.py requires print_function
11 contrib/debugcmdserver.py not using absolute_import
11 contrib/debugcmdserver.py not using absolute_import
12 contrib/debugcmdserver.py requires print_function
12 contrib/debugcmdserver.py requires print_function
13 contrib/debugshell.py not using absolute_import
13 contrib/debugshell.py not using absolute_import
14 contrib/fixpax.py not using absolute_import
14 contrib/fixpax.py not using absolute_import
15 contrib/fixpax.py requires print_function
15 contrib/fixpax.py requires print_function
16 contrib/hgclient.py not using absolute_import
16 contrib/hgclient.py not using absolute_import
17 contrib/hgclient.py requires print_function
17 contrib/hgclient.py requires print_function
18 contrib/hgfixes/fix_bytes.py not using absolute_import
18 contrib/hgfixes/fix_bytes.py not using absolute_import
19 contrib/hgfixes/fix_bytesmod.py not using absolute_import
19 contrib/hgfixes/fix_bytesmod.py not using absolute_import
20 contrib/hgfixes/fix_leftover_imports.py not using absolute_import
20 contrib/hgfixes/fix_leftover_imports.py not using absolute_import
21 contrib/import-checker.py not using absolute_import
21 contrib/import-checker.py not using absolute_import
22 contrib/import-checker.py requires print_function
22 contrib/import-checker.py requires print_function
23 contrib/memory.py not using absolute_import
23 contrib/memory.py not using absolute_import
24 contrib/perf.py not using absolute_import
24 contrib/perf.py not using absolute_import
25 contrib/python-hook-examples.py not using absolute_import
25 contrib/python-hook-examples.py not using absolute_import
26 contrib/revsetbenchmarks.py not using absolute_import
26 contrib/revsetbenchmarks.py not using absolute_import
27 contrib/revsetbenchmarks.py requires print_function
27 contrib/revsetbenchmarks.py requires print_function
28 contrib/showstack.py not using absolute_import
28 contrib/showstack.py not using absolute_import
29 contrib/synthrepo.py not using absolute_import
29 contrib/synthrepo.py not using absolute_import
30 contrib/win32/hgwebdir_wsgi.py not using absolute_import
30 contrib/win32/hgwebdir_wsgi.py not using absolute_import
31 doc/check-seclevel.py not using absolute_import
31 doc/check-seclevel.py not using absolute_import
32 doc/gendoc.py not using absolute_import
32 doc/gendoc.py not using absolute_import
33 doc/hgmanpage.py not using absolute_import
33 doc/hgmanpage.py not using absolute_import
34 hgext/__init__.py not using absolute_import
34 hgext/__init__.py not using absolute_import
35 hgext/acl.py not using absolute_import
35 hgext/acl.py not using absolute_import
36 hgext/blackbox.py not using absolute_import
36 hgext/blackbox.py not using absolute_import
37 hgext/bugzilla.py not using absolute_import
37 hgext/bugzilla.py not using absolute_import
38 hgext/censor.py not using absolute_import
38 hgext/censor.py not using absolute_import
39 hgext/children.py not using absolute_import
39 hgext/children.py not using absolute_import
40 hgext/churn.py not using absolute_import
40 hgext/churn.py not using absolute_import
41 hgext/clonebundles.py not using absolute_import
41 hgext/clonebundles.py not using absolute_import
42 hgext/color.py not using absolute_import
42 hgext/color.py not using absolute_import
43 hgext/convert/__init__.py not using absolute_import
43 hgext/convert/__init__.py not using absolute_import
44 hgext/convert/bzr.py not using absolute_import
44 hgext/convert/bzr.py not using absolute_import
45 hgext/convert/common.py not using absolute_import
45 hgext/convert/common.py not using absolute_import
46 hgext/convert/convcmd.py not using absolute_import
46 hgext/convert/convcmd.py not using absolute_import
47 hgext/convert/cvs.py not using absolute_import
47 hgext/convert/cvs.py not using absolute_import
48 hgext/convert/cvsps.py not using absolute_import
48 hgext/convert/cvsps.py not using absolute_import
49 hgext/convert/darcs.py not using absolute_import
49 hgext/convert/darcs.py not using absolute_import
50 hgext/convert/filemap.py not using absolute_import
50 hgext/convert/filemap.py not using absolute_import
51 hgext/convert/git.py not using absolute_import
51 hgext/convert/git.py not using absolute_import
52 hgext/convert/gnuarch.py not using absolute_import
52 hgext/convert/gnuarch.py not using absolute_import
53 hgext/convert/hg.py not using absolute_import
53 hgext/convert/hg.py not using absolute_import
54 hgext/convert/monotone.py not using absolute_import
54 hgext/convert/monotone.py not using absolute_import
55 hgext/convert/p4.py not using absolute_import
55 hgext/convert/p4.py not using absolute_import
56 hgext/convert/subversion.py not using absolute_import
56 hgext/convert/subversion.py not using absolute_import
57 hgext/convert/transport.py not using absolute_import
57 hgext/convert/transport.py not using absolute_import
58 hgext/eol.py not using absolute_import
58 hgext/eol.py not using absolute_import
59 hgext/extdiff.py not using absolute_import
59 hgext/extdiff.py not using absolute_import
60 hgext/factotum.py not using absolute_import
60 hgext/factotum.py not using absolute_import
61 hgext/fetch.py not using absolute_import
61 hgext/fetch.py not using absolute_import
62 hgext/gpg.py not using absolute_import
62 hgext/gpg.py not using absolute_import
63 hgext/graphlog.py not using absolute_import
63 hgext/graphlog.py not using absolute_import
64 hgext/hgcia.py not using absolute_import
64 hgext/hgcia.py not using absolute_import
65 hgext/hgk.py not using absolute_import
65 hgext/hgk.py not using absolute_import
66 hgext/highlight/__init__.py not using absolute_import
66 hgext/highlight/__init__.py not using absolute_import
67 hgext/highlight/highlight.py not using absolute_import
67 hgext/highlight/highlight.py not using absolute_import
68 hgext/histedit.py not using absolute_import
68 hgext/histedit.py not using absolute_import
69 hgext/keyword.py not using absolute_import
69 hgext/keyword.py not using absolute_import
70 hgext/largefiles/__init__.py not using absolute_import
70 hgext/largefiles/__init__.py not using absolute_import
71 hgext/largefiles/basestore.py not using absolute_import
71 hgext/largefiles/basestore.py not using absolute_import
72 hgext/largefiles/lfcommands.py not using absolute_import
72 hgext/largefiles/lfcommands.py not using absolute_import
73 hgext/largefiles/lfutil.py not using absolute_import
73 hgext/largefiles/lfutil.py not using absolute_import
74 hgext/largefiles/localstore.py not using absolute_import
74 hgext/largefiles/localstore.py not using absolute_import
75 hgext/largefiles/overrides.py not using absolute_import
75 hgext/largefiles/overrides.py not using absolute_import
76 hgext/largefiles/proto.py not using absolute_import
76 hgext/largefiles/proto.py not using absolute_import
77 hgext/largefiles/remotestore.py not using absolute_import
77 hgext/largefiles/remotestore.py not using absolute_import
78 hgext/largefiles/reposetup.py not using absolute_import
78 hgext/largefiles/reposetup.py not using absolute_import
79 hgext/largefiles/uisetup.py not using absolute_import
79 hgext/largefiles/uisetup.py not using absolute_import
80 hgext/largefiles/wirestore.py not using absolute_import
80 hgext/largefiles/wirestore.py not using absolute_import
81 hgext/mq.py not using absolute_import
81 hgext/mq.py not using absolute_import
82 hgext/notify.py not using absolute_import
82 hgext/notify.py not using absolute_import
83 hgext/pager.py not using absolute_import
83 hgext/pager.py not using absolute_import
84 hgext/patchbomb.py not using absolute_import
84 hgext/patchbomb.py not using absolute_import
85 hgext/purge.py not using absolute_import
85 hgext/purge.py not using absolute_import
86 hgext/rebase.py not using absolute_import
86 hgext/rebase.py not using absolute_import
87 hgext/record.py not using absolute_import
87 hgext/record.py not using absolute_import
88 hgext/relink.py not using absolute_import
88 hgext/relink.py not using absolute_import
89 hgext/schemes.py not using absolute_import
89 hgext/schemes.py not using absolute_import
90 hgext/share.py not using absolute_import
90 hgext/share.py not using absolute_import
91 hgext/shelve.py not using absolute_import
91 hgext/shelve.py not using absolute_import
92 hgext/strip.py not using absolute_import
92 hgext/strip.py not using absolute_import
93 hgext/transplant.py not using absolute_import
93 hgext/transplant.py not using absolute_import
94 hgext/win32mbcs.py not using absolute_import
94 hgext/win32mbcs.py not using absolute_import
95 hgext/win32text.py not using absolute_import
95 hgext/win32text.py not using absolute_import
96 hgext/zeroconf/Zeroconf.py not using absolute_import
96 hgext/zeroconf/Zeroconf.py not using absolute_import
97 hgext/zeroconf/Zeroconf.py requires print_function
97 hgext/zeroconf/Zeroconf.py requires print_function
98 hgext/zeroconf/__init__.py not using absolute_import
98 hgext/zeroconf/__init__.py not using absolute_import
99 i18n/check-translation.py not using absolute_import
99 i18n/check-translation.py not using absolute_import
100 i18n/polib.py not using absolute_import
100 i18n/polib.py not using absolute_import
101 mercurial/byterange.py not using absolute_import
101 mercurial/byterange.py not using absolute_import
102 mercurial/cmdutil.py not using absolute_import
102 mercurial/cmdutil.py not using absolute_import
103 mercurial/commands.py not using absolute_import
103 mercurial/commands.py not using absolute_import
104 mercurial/commandserver.py not using absolute_import
104 mercurial/commandserver.py not using absolute_import
105 mercurial/context.py not using absolute_import
105 mercurial/context.py not using absolute_import
106 mercurial/dirstate.py not using absolute_import
106 mercurial/dirstate.py not using absolute_import
107 mercurial/dispatch.py requires print_function
107 mercurial/dispatch.py requires print_function
108 mercurial/encoding.py not using absolute_import
108 mercurial/encoding.py not using absolute_import
109 mercurial/exchange.py not using absolute_import
109 mercurial/exchange.py not using absolute_import
110 mercurial/help.py not using absolute_import
110 mercurial/help.py not using absolute_import
111 mercurial/httpclient/__init__.py not using absolute_import
111 mercurial/httpclient/__init__.py not using absolute_import
112 mercurial/httpclient/_readers.py not using absolute_import
112 mercurial/httpclient/_readers.py not using absolute_import
113 mercurial/httpclient/socketutil.py not using absolute_import
113 mercurial/httpclient/socketutil.py not using absolute_import
114 mercurial/httpconnection.py not using absolute_import
114 mercurial/httpconnection.py not using absolute_import
115 mercurial/keepalive.py not using absolute_import
115 mercurial/keepalive.py not using absolute_import
116 mercurial/keepalive.py requires print_function
116 mercurial/keepalive.py requires print_function
117 mercurial/localrepo.py not using absolute_import
117 mercurial/localrepo.py not using absolute_import
118 mercurial/lsprof.py requires print_function
118 mercurial/lsprof.py requires print_function
119 mercurial/lsprofcalltree.py not using absolute_import
119 mercurial/lsprofcalltree.py not using absolute_import
120 mercurial/lsprofcalltree.py requires print_function
120 mercurial/lsprofcalltree.py requires print_function
121 mercurial/mail.py requires print_function
121 mercurial/mail.py requires print_function
122 mercurial/manifest.py not using absolute_import
122 mercurial/manifest.py not using absolute_import
123 mercurial/mdiff.py not using absolute_import
123 mercurial/mdiff.py not using absolute_import
124 mercurial/patch.py not using absolute_import
124 mercurial/patch.py not using absolute_import
125 mercurial/pure/mpatch.py not using absolute_import
126 mercurial/pure/osutil.py not using absolute_import
125 mercurial/pure/osutil.py not using absolute_import
127 mercurial/pure/parsers.py not using absolute_import
126 mercurial/pure/parsers.py not using absolute_import
128 mercurial/pvec.py not using absolute_import
127 mercurial/pvec.py not using absolute_import
129 mercurial/py3kcompat.py not using absolute_import
128 mercurial/py3kcompat.py not using absolute_import
130 mercurial/revlog.py not using absolute_import
129 mercurial/revlog.py not using absolute_import
131 mercurial/scmposix.py not using absolute_import
130 mercurial/scmposix.py not using absolute_import
132 mercurial/scmutil.py not using absolute_import
131 mercurial/scmutil.py not using absolute_import
133 mercurial/scmwindows.py not using absolute_import
132 mercurial/scmwindows.py not using absolute_import
134 mercurial/similar.py not using absolute_import
133 mercurial/similar.py not using absolute_import
135 mercurial/store.py not using absolute_import
134 mercurial/store.py not using absolute_import
136 mercurial/util.py not using absolute_import
135 mercurial/util.py not using absolute_import
137 mercurial/windows.py not using absolute_import
136 mercurial/windows.py not using absolute_import
138 setup.py not using absolute_import
137 setup.py not using absolute_import
139 tests/filterpyflakes.py requires print_function
138 tests/filterpyflakes.py requires print_function
140 tests/generate-working-copy-states.py requires print_function
139 tests/generate-working-copy-states.py requires print_function
141 tests/get-with-headers.py requires print_function
140 tests/get-with-headers.py requires print_function
142 tests/heredoctest.py requires print_function
141 tests/heredoctest.py requires print_function
143 tests/hypothesishelpers.py not using absolute_import
142 tests/hypothesishelpers.py not using absolute_import
144 tests/hypothesishelpers.py requires print_function
143 tests/hypothesishelpers.py requires print_function
145 tests/killdaemons.py not using absolute_import
144 tests/killdaemons.py not using absolute_import
146 tests/md5sum.py not using absolute_import
145 tests/md5sum.py not using absolute_import
147 tests/mockblackbox.py not using absolute_import
146 tests/mockblackbox.py not using absolute_import
148 tests/printenv.py not using absolute_import
147 tests/printenv.py not using absolute_import
149 tests/readlink.py not using absolute_import
148 tests/readlink.py not using absolute_import
150 tests/readlink.py requires print_function
149 tests/readlink.py requires print_function
151 tests/revlog-formatv0.py not using absolute_import
150 tests/revlog-formatv0.py not using absolute_import
152 tests/run-tests.py not using absolute_import
151 tests/run-tests.py not using absolute_import
153 tests/seq.py not using absolute_import
152 tests/seq.py not using absolute_import
154 tests/seq.py requires print_function
153 tests/seq.py requires print_function
155 tests/silenttestrunner.py not using absolute_import
154 tests/silenttestrunner.py not using absolute_import
156 tests/silenttestrunner.py requires print_function
155 tests/silenttestrunner.py requires print_function
157 tests/sitecustomize.py not using absolute_import
156 tests/sitecustomize.py not using absolute_import
158 tests/svn-safe-append.py not using absolute_import
157 tests/svn-safe-append.py not using absolute_import
159 tests/svnxml.py not using absolute_import
158 tests/svnxml.py not using absolute_import
160 tests/test-ancestor.py requires print_function
159 tests/test-ancestor.py requires print_function
161 tests/test-atomictempfile.py not using absolute_import
160 tests/test-atomictempfile.py not using absolute_import
162 tests/test-batching.py not using absolute_import
161 tests/test-batching.py not using absolute_import
163 tests/test-batching.py requires print_function
162 tests/test-batching.py requires print_function
164 tests/test-bdiff.py not using absolute_import
163 tests/test-bdiff.py not using absolute_import
165 tests/test-bdiff.py requires print_function
164 tests/test-bdiff.py requires print_function
166 tests/test-context.py not using absolute_import
165 tests/test-context.py not using absolute_import
167 tests/test-context.py requires print_function
166 tests/test-context.py requires print_function
168 tests/test-demandimport.py not using absolute_import
167 tests/test-demandimport.py not using absolute_import
169 tests/test-demandimport.py requires print_function
168 tests/test-demandimport.py requires print_function
170 tests/test-dispatch.py not using absolute_import
169 tests/test-dispatch.py not using absolute_import
171 tests/test-dispatch.py requires print_function
170 tests/test-dispatch.py requires print_function
172 tests/test-doctest.py not using absolute_import
171 tests/test-doctest.py not using absolute_import
173 tests/test-duplicateoptions.py not using absolute_import
172 tests/test-duplicateoptions.py not using absolute_import
174 tests/test-duplicateoptions.py requires print_function
173 tests/test-duplicateoptions.py requires print_function
175 tests/test-filecache.py not using absolute_import
174 tests/test-filecache.py not using absolute_import
176 tests/test-filecache.py requires print_function
175 tests/test-filecache.py requires print_function
177 tests/test-filelog.py not using absolute_import
176 tests/test-filelog.py not using absolute_import
178 tests/test-filelog.py requires print_function
177 tests/test-filelog.py requires print_function
179 tests/test-hg-parseurl.py not using absolute_import
178 tests/test-hg-parseurl.py not using absolute_import
180 tests/test-hg-parseurl.py requires print_function
179 tests/test-hg-parseurl.py requires print_function
181 tests/test-hgweb-auth.py not using absolute_import
180 tests/test-hgweb-auth.py not using absolute_import
182 tests/test-hgweb-auth.py requires print_function
181 tests/test-hgweb-auth.py requires print_function
183 tests/test-hgwebdir-paths.py not using absolute_import
182 tests/test-hgwebdir-paths.py not using absolute_import
184 tests/test-hybridencode.py not using absolute_import
183 tests/test-hybridencode.py not using absolute_import
185 tests/test-hybridencode.py requires print_function
184 tests/test-hybridencode.py requires print_function
186 tests/test-lrucachedict.py not using absolute_import
185 tests/test-lrucachedict.py not using absolute_import
187 tests/test-lrucachedict.py requires print_function
186 tests/test-lrucachedict.py requires print_function
188 tests/test-manifest.py not using absolute_import
187 tests/test-manifest.py not using absolute_import
189 tests/test-minirst.py not using absolute_import
188 tests/test-minirst.py not using absolute_import
190 tests/test-minirst.py requires print_function
189 tests/test-minirst.py requires print_function
191 tests/test-parseindex2.py not using absolute_import
190 tests/test-parseindex2.py not using absolute_import
192 tests/test-parseindex2.py requires print_function
191 tests/test-parseindex2.py requires print_function
193 tests/test-pathencode.py not using absolute_import
192 tests/test-pathencode.py not using absolute_import
194 tests/test-pathencode.py requires print_function
193 tests/test-pathencode.py requires print_function
195 tests/test-propertycache.py not using absolute_import
194 tests/test-propertycache.py not using absolute_import
196 tests/test-propertycache.py requires print_function
195 tests/test-propertycache.py requires print_function
197 tests/test-revlog-ancestry.py not using absolute_import
196 tests/test-revlog-ancestry.py not using absolute_import
198 tests/test-revlog-ancestry.py requires print_function
197 tests/test-revlog-ancestry.py requires print_function
199 tests/test-run-tests.py not using absolute_import
198 tests/test-run-tests.py not using absolute_import
200 tests/test-simplemerge.py not using absolute_import
199 tests/test-simplemerge.py not using absolute_import
201 tests/test-status-inprocess.py not using absolute_import
200 tests/test-status-inprocess.py not using absolute_import
202 tests/test-status-inprocess.py requires print_function
201 tests/test-status-inprocess.py requires print_function
203 tests/test-symlink-os-yes-fs-no.py not using absolute_import
202 tests/test-symlink-os-yes-fs-no.py not using absolute_import
204 tests/test-trusted.py not using absolute_import
203 tests/test-trusted.py not using absolute_import
205 tests/test-trusted.py requires print_function
204 tests/test-trusted.py requires print_function
206 tests/test-ui-color.py not using absolute_import
205 tests/test-ui-color.py not using absolute_import
207 tests/test-ui-color.py requires print_function
206 tests/test-ui-color.py requires print_function
208 tests/test-ui-config.py not using absolute_import
207 tests/test-ui-config.py not using absolute_import
209 tests/test-ui-config.py requires print_function
208 tests/test-ui-config.py requires print_function
210 tests/test-ui-verbosity.py not using absolute_import
209 tests/test-ui-verbosity.py not using absolute_import
211 tests/test-ui-verbosity.py requires print_function
210 tests/test-ui-verbosity.py requires print_function
212 tests/test-url.py not using absolute_import
211 tests/test-url.py not using absolute_import
213 tests/test-url.py requires print_function
212 tests/test-url.py requires print_function
214 tests/test-walkrepo.py requires print_function
213 tests/test-walkrepo.py requires print_function
215 tests/test-wireproto.py requires print_function
214 tests/test-wireproto.py requires print_function
216 tests/tinyproxy.py requires print_function
215 tests/tinyproxy.py requires print_function
General Comments 0
You need to be logged in to leave comments. Login now