##// END OF EJS Templates
py3: make hgext/hgk.py use absolute_import
Pulkit Goyal -
r29125:9b12517a default
parent child Browse files
Show More
@@ -1,335 +1,347 b''
1 1 # Minimal support for git commands on an hg repository
2 2 #
3 3 # Copyright 2005, 2006 Chris Mason <mason@suse.com>
4 4 #
5 5 # This software may be used and distributed according to the terms of the
6 6 # GNU General Public License version 2 or any later version.
7 7
8 8 '''browse the repository in a graphical way
9 9
10 10 The hgk extension allows browsing the history of a repository in a
11 11 graphical way. It requires Tcl/Tk version 8.4 or later. (Tcl/Tk is not
12 12 distributed with Mercurial.)
13 13
14 14 hgk consists of two parts: a Tcl script that does the displaying and
15 15 querying of information, and an extension to Mercurial named hgk.py,
16 16 which provides hooks for hgk to get information. hgk can be found in
17 17 the contrib directory, and the extension is shipped in the hgext
18 18 repository, and needs to be enabled.
19 19
20 20 The :hg:`view` command will launch the hgk Tcl script. For this command
21 21 to work, hgk must be in your search path. Alternately, you can specify
22 22 the path to hgk in your configuration file::
23 23
24 24 [hgk]
25 25 path = /location/of/hgk
26 26
27 27 hgk can make use of the extdiff extension to visualize revisions.
28 28 Assuming you had already configured extdiff vdiff command, just add::
29 29
30 30 [hgk]
31 31 vdiff=vdiff
32 32
33 33 Revisions context menu will now display additional entries to fire
34 34 vdiff on hovered and selected revisions.
35 35 '''
36 36
37 from __future__ import absolute_import
38
37 39 import os
38 from mercurial import cmdutil, commands, patch, scmutil, obsolete
39 from mercurial.node import nullid, nullrev, short
40 from mercurial import (
41 cmdutil,
42 commands,
43 obsolete,
44 patch,
45 scmutil,
46 )
47 from mercurial.node import (
48 nullid,
49 nullrev,
50 short,
51 )
40 52 from mercurial.i18n import _
41 53
42 54 cmdtable = {}
43 55 command = cmdutil.command(cmdtable)
44 56 # Note for extension authors: ONLY specify testedwith = 'internal' for
45 57 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
46 58 # be specifying the version(s) of Mercurial they are tested with, or
47 59 # leave the attribute unspecified.
48 60 testedwith = 'internal'
49 61
50 62 @command('debug-diff-tree',
51 63 [('p', 'patch', None, _('generate patch')),
52 64 ('r', 'recursive', None, _('recursive')),
53 65 ('P', 'pretty', None, _('pretty')),
54 66 ('s', 'stdin', None, _('stdin')),
55 67 ('C', 'copy', None, _('detect copies')),
56 68 ('S', 'search', "", _('search'))],
57 69 ('[OPTION]... NODE1 NODE2 [FILE]...'),
58 70 inferrepo=True)
59 71 def difftree(ui, repo, node1=None, node2=None, *files, **opts):
60 72 """diff trees from two commits"""
61 73 def __difftree(repo, node1, node2, files=[]):
62 74 assert node2 is not None
63 75 mmap = repo[node1].manifest()
64 76 mmap2 = repo[node2].manifest()
65 77 m = scmutil.match(repo[node1], files)
66 78 modified, added, removed = repo.status(node1, node2, m)[:3]
67 79 empty = short(nullid)
68 80
69 81 for f in modified:
70 82 # TODO get file permissions
71 83 ui.write(":100664 100664 %s %s M\t%s\t%s\n" %
72 84 (short(mmap[f]), short(mmap2[f]), f, f))
73 85 for f in added:
74 86 ui.write(":000000 100664 %s %s N\t%s\t%s\n" %
75 87 (empty, short(mmap2[f]), f, f))
76 88 for f in removed:
77 89 ui.write(":100664 000000 %s %s D\t%s\t%s\n" %
78 90 (short(mmap[f]), empty, f, f))
79 91 ##
80 92
81 93 while True:
82 94 if opts['stdin']:
83 95 try:
84 96 line = raw_input().split(' ')
85 97 node1 = line[0]
86 98 if len(line) > 1:
87 99 node2 = line[1]
88 100 else:
89 101 node2 = None
90 102 except EOFError:
91 103 break
92 104 node1 = repo.lookup(node1)
93 105 if node2:
94 106 node2 = repo.lookup(node2)
95 107 else:
96 108 node2 = node1
97 109 node1 = repo.changelog.parents(node1)[0]
98 110 if opts['patch']:
99 111 if opts['pretty']:
100 112 catcommit(ui, repo, node2, "")
101 113 m = scmutil.match(repo[node1], files)
102 114 diffopts = patch.difffeatureopts(ui)
103 115 diffopts.git = True
104 116 chunks = patch.diff(repo, node1, node2, match=m,
105 117 opts=diffopts)
106 118 for chunk in chunks:
107 119 ui.write(chunk)
108 120 else:
109 121 __difftree(repo, node1, node2, files=files)
110 122 if not opts['stdin']:
111 123 break
112 124
113 125 def catcommit(ui, repo, n, prefix, ctx=None):
114 126 nlprefix = '\n' + prefix
115 127 if ctx is None:
116 128 ctx = repo[n]
117 129 # use ctx.node() instead ??
118 130 ui.write(("tree %s\n" % short(ctx.changeset()[0])))
119 131 for p in ctx.parents():
120 132 ui.write(("parent %s\n" % p))
121 133
122 134 date = ctx.date()
123 135 description = ctx.description().replace("\0", "")
124 136 ui.write(("author %s %s %s\n" % (ctx.user(), int(date[0]), date[1])))
125 137
126 138 if 'committer' in ctx.extra():
127 139 ui.write(("committer %s\n" % ctx.extra()['committer']))
128 140
129 141 ui.write(("revision %d\n" % ctx.rev()))
130 142 ui.write(("branch %s\n" % ctx.branch()))
131 143 if obsolete.isenabled(repo, obsolete.createmarkersopt):
132 144 if ctx.obsolete():
133 145 ui.write(("obsolete\n"))
134 146 ui.write(("phase %s\n\n" % ctx.phasestr()))
135 147
136 148 if prefix != "":
137 149 ui.write("%s%s\n" % (prefix,
138 150 description.replace('\n', nlprefix).strip()))
139 151 else:
140 152 ui.write(description + "\n")
141 153 if prefix:
142 154 ui.write('\0')
143 155
144 156 @command('debug-merge-base', [], _('REV REV'))
145 157 def base(ui, repo, node1, node2):
146 158 """output common ancestor information"""
147 159 node1 = repo.lookup(node1)
148 160 node2 = repo.lookup(node2)
149 161 n = repo.changelog.ancestor(node1, node2)
150 162 ui.write(short(n) + "\n")
151 163
152 164 @command('debug-cat-file',
153 165 [('s', 'stdin', None, _('stdin'))],
154 166 _('[OPTION]... TYPE FILE'),
155 167 inferrepo=True)
156 168 def catfile(ui, repo, type=None, r=None, **opts):
157 169 """cat a specific revision"""
158 170 # in stdin mode, every line except the commit is prefixed with two
159 171 # spaces. This way the our caller can find the commit without magic
160 172 # strings
161 173 #
162 174 prefix = ""
163 175 if opts['stdin']:
164 176 try:
165 177 (type, r) = raw_input().split(' ')
166 178 prefix = " "
167 179 except EOFError:
168 180 return
169 181
170 182 else:
171 183 if not type or not r:
172 184 ui.warn(_("cat-file: type or revision not supplied\n"))
173 185 commands.help_(ui, 'cat-file')
174 186
175 187 while r:
176 188 if type != "commit":
177 189 ui.warn(_("aborting hg cat-file only understands commits\n"))
178 190 return 1
179 191 n = repo.lookup(r)
180 192 catcommit(ui, repo, n, prefix)
181 193 if opts['stdin']:
182 194 try:
183 195 (type, r) = raw_input().split(' ')
184 196 except EOFError:
185 197 break
186 198 else:
187 199 break
188 200
189 201 # git rev-tree is a confusing thing. You can supply a number of
190 202 # commit sha1s on the command line, and it walks the commit history
191 203 # telling you which commits are reachable from the supplied ones via
192 204 # a bitmask based on arg position.
193 205 # you can specify a commit to stop at by starting the sha1 with ^
194 206 def revtree(ui, args, repo, full="tree", maxnr=0, parents=False):
195 207 def chlogwalk():
196 208 count = len(repo)
197 209 i = count
198 210 l = [0] * 100
199 211 chunk = 100
200 212 while True:
201 213 if chunk > i:
202 214 chunk = i
203 215 i = 0
204 216 else:
205 217 i -= chunk
206 218
207 219 for x in xrange(chunk):
208 220 if i + x >= count:
209 221 l[chunk - x:] = [0] * (chunk - x)
210 222 break
211 223 if full is not None:
212 224 if (i + x) in repo:
213 225 l[x] = repo[i + x]
214 226 l[x].changeset() # force reading
215 227 else:
216 228 if (i + x) in repo:
217 229 l[x] = 1
218 230 for x in xrange(chunk - 1, -1, -1):
219 231 if l[x] != 0:
220 232 yield (i + x, full is not None and l[x] or None)
221 233 if i == 0:
222 234 break
223 235
224 236 # calculate and return the reachability bitmask for sha
225 237 def is_reachable(ar, reachable, sha):
226 238 if len(ar) == 0:
227 239 return 1
228 240 mask = 0
229 241 for i in xrange(len(ar)):
230 242 if sha in reachable[i]:
231 243 mask |= 1 << i
232 244
233 245 return mask
234 246
235 247 reachable = []
236 248 stop_sha1 = []
237 249 want_sha1 = []
238 250 count = 0
239 251
240 252 # figure out which commits they are asking for and which ones they
241 253 # want us to stop on
242 254 for i, arg in enumerate(args):
243 255 if arg.startswith('^'):
244 256 s = repo.lookup(arg[1:])
245 257 stop_sha1.append(s)
246 258 want_sha1.append(s)
247 259 elif arg != 'HEAD':
248 260 want_sha1.append(repo.lookup(arg))
249 261
250 262 # calculate the graph for the supplied commits
251 263 for i, n in enumerate(want_sha1):
252 264 reachable.append(set())
253 265 visit = [n]
254 266 reachable[i].add(n)
255 267 while visit:
256 268 n = visit.pop(0)
257 269 if n in stop_sha1:
258 270 continue
259 271 for p in repo.changelog.parents(n):
260 272 if p not in reachable[i]:
261 273 reachable[i].add(p)
262 274 visit.append(p)
263 275 if p in stop_sha1:
264 276 continue
265 277
266 278 # walk the repository looking for commits that are in our
267 279 # reachability graph
268 280 for i, ctx in chlogwalk():
269 281 if i not in repo:
270 282 continue
271 283 n = repo.changelog.node(i)
272 284 mask = is_reachable(want_sha1, reachable, n)
273 285 if mask:
274 286 parentstr = ""
275 287 if parents:
276 288 pp = repo.changelog.parents(n)
277 289 if pp[0] != nullid:
278 290 parentstr += " " + short(pp[0])
279 291 if pp[1] != nullid:
280 292 parentstr += " " + short(pp[1])
281 293 if not full:
282 294 ui.write("%s%s\n" % (short(n), parentstr))
283 295 elif full == "commit":
284 296 ui.write("%s%s\n" % (short(n), parentstr))
285 297 catcommit(ui, repo, n, ' ', ctx)
286 298 else:
287 299 (p1, p2) = repo.changelog.parents(n)
288 300 (h, h1, h2) = map(short, (n, p1, p2))
289 301 (i1, i2) = map(repo.changelog.rev, (p1, p2))
290 302
291 303 date = ctx.date()[0]
292 304 ui.write("%s %s:%s" % (date, h, mask))
293 305 mask = is_reachable(want_sha1, reachable, p1)
294 306 if i1 != nullrev and mask > 0:
295 307 ui.write("%s:%s " % (h1, mask)),
296 308 mask = is_reachable(want_sha1, reachable, p2)
297 309 if i2 != nullrev and mask > 0:
298 310 ui.write("%s:%s " % (h2, mask))
299 311 ui.write("\n")
300 312 if maxnr and count >= maxnr:
301 313 break
302 314 count += 1
303 315
304 316 # git rev-list tries to order things by date, and has the ability to stop
305 317 # at a given commit without walking the whole repo. TODO add the stop
306 318 # parameter
307 319 @command('debug-rev-list',
308 320 [('H', 'header', None, _('header')),
309 321 ('t', 'topo-order', None, _('topo-order')),
310 322 ('p', 'parents', None, _('parents')),
311 323 ('n', 'max-count', 0, _('max-count'))],
312 324 ('[OPTION]... REV...'))
313 325 def revlist(ui, repo, *revs, **opts):
314 326 """print revisions"""
315 327 if opts['header']:
316 328 full = "commit"
317 329 else:
318 330 full = None
319 331 copy = [x for x in revs]
320 332 revtree(ui, copy, repo, full, opts['max_count'], opts['parents'])
321 333
322 334 @command('view',
323 335 [('l', 'limit', '',
324 336 _('limit number of changes displayed'), _('NUM'))],
325 337 _('[-l LIMIT] [REVRANGE]'))
326 338 def view(ui, repo, *etc, **opts):
327 339 "start interactive history viewer"
328 340 os.chdir(repo.root)
329 341 optstr = ' '.join(['--%s %s' % (k, v) for k, v in opts.iteritems() if v])
330 342 if repo.filtername is None:
331 343 optstr += '--hidden'
332 344
333 345 cmd = ui.config("hgk", "path", "hgk") + " %s %s" % (optstr, " ".join(etc))
334 346 ui.debug("running %s\n" % cmd)
335 347 ui.system(cmd)
@@ -1,173 +1,172 b''
1 1 #require test-repo
2 2
3 3 $ cd "$TESTDIR"/..
4 4
5 5 $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs python contrib/check-py3-compat.py
6 6 hgext/fsmonitor/pywatchman/__init__.py not using absolute_import
7 7 hgext/fsmonitor/pywatchman/__init__.py requires print_function
8 8 hgext/fsmonitor/pywatchman/capabilities.py not using absolute_import
9 9 hgext/fsmonitor/pywatchman/pybser.py not using absolute_import
10 10 hgext/hgcia.py not using absolute_import
11 hgext/hgk.py not using absolute_import
12 11 hgext/highlight/__init__.py not using absolute_import
13 12 hgext/highlight/highlight.py not using absolute_import
14 13 hgext/histedit.py not using absolute_import
15 14 hgext/largefiles/__init__.py not using absolute_import
16 15 hgext/largefiles/basestore.py not using absolute_import
17 16 hgext/largefiles/lfcommands.py not using absolute_import
18 17 hgext/largefiles/lfutil.py not using absolute_import
19 18 hgext/largefiles/localstore.py not using absolute_import
20 19 hgext/largefiles/overrides.py not using absolute_import
21 20 hgext/largefiles/proto.py not using absolute_import
22 21 hgext/largefiles/remotestore.py not using absolute_import
23 22 hgext/largefiles/reposetup.py not using absolute_import
24 23 hgext/largefiles/uisetup.py not using absolute_import
25 24 hgext/largefiles/wirestore.py not using absolute_import
26 25 hgext/mq.py not using absolute_import
27 26 hgext/rebase.py not using absolute_import
28 27 hgext/share.py not using absolute_import
29 28 hgext/win32text.py not using absolute_import
30 29 i18n/check-translation.py not using absolute_import
31 30 i18n/polib.py not using absolute_import
32 31 setup.py not using absolute_import
33 32 tests/heredoctest.py requires print_function
34 33 tests/md5sum.py not using absolute_import
35 34 tests/readlink.py not using absolute_import
36 35 tests/readlink.py requires print_function
37 36 tests/run-tests.py not using absolute_import
38 37 tests/svn-safe-append.py not using absolute_import
39 38 tests/test-atomictempfile.py not using absolute_import
40 39 tests/test-demandimport.py not using absolute_import
41 40
42 41 #if py3exe
43 42 $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs $PYTHON3 contrib/check-py3-compat.py
44 43 contrib/check-code.py: invalid syntax: (unicode error) 'unicodeescape' codec can't decode bytes in position *-*: malformed \N character escape (<unknown>, line *) (glob)
45 44 doc/hgmanpage.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
46 45 hgext/automv.py: error importing module: <SyntaxError> invalid syntax (commands.py, line *) (line *) (glob)
47 46 hgext/blackbox.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
48 47 hgext/bugzilla.py: error importing module: <ImportError> No module named 'urlparse' (line *) (glob)
49 48 hgext/censor.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
50 49 hgext/chgserver.py: error importing module: <ImportError> No module named 'SocketServer' (line *) (glob)
51 50 hgext/children.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
52 51 hgext/churn.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
53 52 hgext/clonebundles.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
54 53 hgext/color.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
55 54 hgext/convert/bzr.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
56 55 hgext/convert/common.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
57 56 hgext/convert/convcmd.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
58 57 hgext/convert/cvs.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
59 58 hgext/convert/cvsps.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
60 59 hgext/convert/darcs.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
61 60 hgext/convert/filemap.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
62 61 hgext/convert/git.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
63 62 hgext/convert/gnuarch.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
64 63 hgext/convert/hg.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
65 64 hgext/convert/monotone.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
66 65 hgext/convert/p*.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
67 66 hgext/convert/subversion.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
68 67 hgext/convert/transport.py: error importing module: <ImportError> No module named 'svn.client' (line *) (glob)
69 68 hgext/eol.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
70 69 hgext/extdiff.py: error importing module: <SyntaxError> invalid syntax (archival.py, line *) (line *) (glob)
71 70 hgext/factotum.py: error importing: <ImportError> No module named 'cStringIO' (error at __init__.py:*) (glob)
72 71 hgext/fetch.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
73 72 hgext/fsmonitor/watchmanclient.py: error importing module: <SystemError> Parent module 'hgext.fsmonitor' not loaded, cannot perform relative import (line *) (glob)
74 73 hgext/gpg.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
75 74 hgext/graphlog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
76 75 hgext/hgcia.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
77 76 hgext/hgk.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
78 77 hgext/histedit.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
79 78 hgext/keyword.py: error importing: <ImportError> No module named 'BaseHTTPServer' (error at common.py:*) (glob)
80 79 hgext/largefiles/basestore.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
81 80 hgext/largefiles/lfcommands.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
82 81 hgext/largefiles/lfutil.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
83 82 hgext/largefiles/localstore.py: error importing module: <ImportError> No module named 'lfutil' (line *) (glob)
84 83 hgext/largefiles/overrides.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
85 84 hgext/largefiles/proto.py: error importing: <ImportError> No module named 'httplib' (error at httppeer.py:*) (glob)
86 85 hgext/largefiles/remotestore.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at wireproto.py:*) (glob)
87 86 hgext/largefiles/reposetup.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
88 87 hgext/largefiles/uisetup.py: error importing module: <SyntaxError> invalid syntax (archival.py, line *) (line *) (glob)
89 88 hgext/largefiles/wirestore.py: error importing module: <ImportError> No module named 'lfutil' (line *) (glob)
90 89 hgext/mq.py: error importing module: <SyntaxError> invalid syntax (commands.py, line *) (line *) (glob)
91 90 hgext/notify.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
92 91 hgext/pager.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
93 92 hgext/patchbomb.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
94 93 hgext/purge.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
95 94 hgext/rebase.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
96 95 hgext/record.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
97 96 hgext/relink.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
98 97 hgext/schemes.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
99 98 hgext/share.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
100 99 hgext/shelve.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
101 100 hgext/strip.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
102 101 hgext/transplant.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
103 102 mercurial/archival.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
104 103 mercurial/branchmap.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
105 104 mercurial/bundle*.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
106 105 mercurial/bundlerepo.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
107 106 mercurial/changegroup.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
108 107 mercurial/changelog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
109 108 mercurial/cmdutil.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
110 109 mercurial/commands.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
111 110 mercurial/commandserver.py: error importing module: <ImportError> No module named 'SocketServer' (line *) (glob)
112 111 mercurial/context.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
113 112 mercurial/copies.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
114 113 mercurial/crecord.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
115 114 mercurial/dirstate.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
116 115 mercurial/discovery.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
117 116 mercurial/dispatch.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
118 117 mercurial/exchange.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
119 118 mercurial/extensions.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
120 119 mercurial/filelog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
121 120 mercurial/filemerge.py: error importing: <ImportError> No module named 'cPickle' (error at formatter.py:*) (glob)
122 121 mercurial/fileset.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
123 122 mercurial/formatter.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
124 123 mercurial/graphmod.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
125 124 mercurial/help.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
126 125 mercurial/hg.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
127 126 mercurial/hgweb/common.py: error importing module: <ImportError> No module named 'BaseHTTPServer' (line *) (glob)
128 127 mercurial/hgweb/hgweb_mod.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
129 128 mercurial/hgweb/hgwebdir_mod.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
130 129 mercurial/hgweb/protocol.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
131 130 mercurial/hgweb/request.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
132 131 mercurial/hgweb/server.py: error importing module: <ImportError> No module named 'BaseHTTPServer' (line *) (glob)
133 132 mercurial/hgweb/webcommands.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
134 133 mercurial/hgweb/webutil.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
135 134 mercurial/hgweb/wsgicgi.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
136 135 mercurial/hook.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
137 136 mercurial/httpclient/_readers.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
138 137 mercurial/httpconnection.py: error importing: <ImportError> No module named 'cStringIO' (error at __init__.py:*) (glob)
139 138 mercurial/httppeer.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
140 139 mercurial/keepalive.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
141 140 mercurial/localrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
142 141 mercurial/mail.py: error importing module: <AttributeError> module 'email' has no attribute 'Header' (line *) (glob)
143 142 mercurial/manifest.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
144 143 mercurial/merge.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
145 144 mercurial/namespaces.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
146 145 mercurial/patch.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
147 146 mercurial/pure/mpatch.py: error importing module: <ImportError> cannot import name 'pycompat' (line *) (glob)
148 147 mercurial/pure/parsers.py: error importing module: <ImportError> No module named 'mercurial.pure.node' (line *) (glob)
149 148 mercurial/repair.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
150 149 mercurial/revlog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
151 150 mercurial/revset.py: error importing module: <AttributeError> 'dict' object has no attribute 'iteritems' (line *) (glob)
152 151 mercurial/scmutil.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
153 152 mercurial/scmwindows.py: error importing module: <ImportError> No module named '_winreg' (line *) (glob)
154 153 mercurial/simplemerge.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
155 154 mercurial/sshpeer.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at wireproto.py:*) (glob)
156 155 mercurial/sshserver.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
157 156 mercurial/statichttprepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
158 157 mercurial/store.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
159 158 mercurial/streamclone.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
160 159 mercurial/subrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
161 160 mercurial/templatefilters.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
162 161 mercurial/templatekw.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
163 162 mercurial/templater.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
164 163 mercurial/ui.py: error importing: <ImportError> No module named 'cPickle' (error at formatter.py:*) (glob)
165 164 mercurial/unionrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
166 165 mercurial/url.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
167 166 mercurial/verify.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
168 167 mercurial/win*.py: error importing module: <ImportError> No module named 'msvcrt' (line *) (glob)
169 168 mercurial/windows.py: error importing module: <ImportError> No module named '_winreg' (line *) (glob)
170 169 mercurial/wireproto.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
171 170 tests/readlink.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
172 171
173 172 #endif
General Comments 0
You need to be logged in to leave comments. Login now