##// END OF EJS Templates
py3: make largefiles/proto.py use absolute_import
liscju -
r29312:29139be0 default
parent child Browse files
Show More
@@ -1,180 +1,189
1 # Copyright 2011 Fog Creek Software
1 # Copyright 2011 Fog Creek Software
2 #
2 #
3 # This software may be used and distributed according to the terms of the
3 # This software may be used and distributed according to the terms of the
4 # GNU General Public License version 2 or any later version.
4 # GNU General Public License version 2 or any later version.
5 from __future__ import absolute_import
5
6
6 import os
7 import os
7 import re
8 import re
8
9
9 from mercurial import error, httppeer, util, wireproto
10 from mercurial.i18n import _
10 from mercurial.i18n import _
11
11
12 from mercurial import (
13 error,
14 httppeer,
15 util,
16 wireproto,
17 )
18
19 from . import (
20 lfutil,
21 )
22
12 urlerr = util.urlerr
23 urlerr = util.urlerr
13 urlreq = util.urlreq
24 urlreq = util.urlreq
14
25
15 import lfutil
16
17 LARGEFILES_REQUIRED_MSG = ('\nThis repository uses the largefiles extension.'
26 LARGEFILES_REQUIRED_MSG = ('\nThis repository uses the largefiles extension.'
18 '\n\nPlease enable it in your Mercurial config '
27 '\n\nPlease enable it in your Mercurial config '
19 'file.\n')
28 'file.\n')
20
29
21 # these will all be replaced by largefiles.uisetup
30 # these will all be replaced by largefiles.uisetup
22 capabilitiesorig = None
31 capabilitiesorig = None
23 ssholdcallstream = None
32 ssholdcallstream = None
24 httpoldcallstream = None
33 httpoldcallstream = None
25
34
26 def putlfile(repo, proto, sha):
35 def putlfile(repo, proto, sha):
27 '''Server command for putting a largefile into a repository's local store
36 '''Server command for putting a largefile into a repository's local store
28 and into the user cache.'''
37 and into the user cache.'''
29 proto.redirect()
38 proto.redirect()
30
39
31 path = lfutil.storepath(repo, sha)
40 path = lfutil.storepath(repo, sha)
32 util.makedirs(os.path.dirname(path))
41 util.makedirs(os.path.dirname(path))
33 tmpfp = util.atomictempfile(path, createmode=repo.store.createmode)
42 tmpfp = util.atomictempfile(path, createmode=repo.store.createmode)
34
43
35 try:
44 try:
36 proto.getfile(tmpfp)
45 proto.getfile(tmpfp)
37 tmpfp._fp.seek(0)
46 tmpfp._fp.seek(0)
38 if sha != lfutil.hexsha1(tmpfp._fp):
47 if sha != lfutil.hexsha1(tmpfp._fp):
39 raise IOError(0, _('largefile contents do not match hash'))
48 raise IOError(0, _('largefile contents do not match hash'))
40 tmpfp.close()
49 tmpfp.close()
41 lfutil.linktousercache(repo, sha)
50 lfutil.linktousercache(repo, sha)
42 except IOError as e:
51 except IOError as e:
43 repo.ui.warn(_('largefiles: failed to put %s into store: %s\n') %
52 repo.ui.warn(_('largefiles: failed to put %s into store: %s\n') %
44 (sha, e.strerror))
53 (sha, e.strerror))
45 return wireproto.pushres(1)
54 return wireproto.pushres(1)
46 finally:
55 finally:
47 tmpfp.discard()
56 tmpfp.discard()
48
57
49 return wireproto.pushres(0)
58 return wireproto.pushres(0)
50
59
51 def getlfile(repo, proto, sha):
60 def getlfile(repo, proto, sha):
52 '''Server command for retrieving a largefile from the repository-local
61 '''Server command for retrieving a largefile from the repository-local
53 cache or user cache.'''
62 cache or user cache.'''
54 filename = lfutil.findfile(repo, sha)
63 filename = lfutil.findfile(repo, sha)
55 if not filename:
64 if not filename:
56 raise error.Abort(_('requested largefile %s not present in cache')
65 raise error.Abort(_('requested largefile %s not present in cache')
57 % sha)
66 % sha)
58 f = open(filename, 'rb')
67 f = open(filename, 'rb')
59 length = os.fstat(f.fileno())[6]
68 length = os.fstat(f.fileno())[6]
60
69
61 # Since we can't set an HTTP content-length header here, and
70 # Since we can't set an HTTP content-length header here, and
62 # Mercurial core provides no way to give the length of a streamres
71 # Mercurial core provides no way to give the length of a streamres
63 # (and reading the entire file into RAM would be ill-advised), we
72 # (and reading the entire file into RAM would be ill-advised), we
64 # just send the length on the first line of the response, like the
73 # just send the length on the first line of the response, like the
65 # ssh proto does for string responses.
74 # ssh proto does for string responses.
66 def generator():
75 def generator():
67 yield '%d\n' % length
76 yield '%d\n' % length
68 for chunk in util.filechunkiter(f):
77 for chunk in util.filechunkiter(f):
69 yield chunk
78 yield chunk
70 return wireproto.streamres(generator())
79 return wireproto.streamres(generator())
71
80
72 def statlfile(repo, proto, sha):
81 def statlfile(repo, proto, sha):
73 '''Server command for checking if a largefile is present - returns '2\n' if
82 '''Server command for checking if a largefile is present - returns '2\n' if
74 the largefile is missing, '0\n' if it seems to be in good condition.
83 the largefile is missing, '0\n' if it seems to be in good condition.
75
84
76 The value 1 is reserved for mismatched checksum, but that is too expensive
85 The value 1 is reserved for mismatched checksum, but that is too expensive
77 to be verified on every stat and must be caught be running 'hg verify'
86 to be verified on every stat and must be caught be running 'hg verify'
78 server side.'''
87 server side.'''
79 filename = lfutil.findfile(repo, sha)
88 filename = lfutil.findfile(repo, sha)
80 if not filename:
89 if not filename:
81 return '2\n'
90 return '2\n'
82 return '0\n'
91 return '0\n'
83
92
84 def wirereposetup(ui, repo):
93 def wirereposetup(ui, repo):
85 class lfileswirerepository(repo.__class__):
94 class lfileswirerepository(repo.__class__):
86 def putlfile(self, sha, fd):
95 def putlfile(self, sha, fd):
87 # unfortunately, httprepository._callpush tries to convert its
96 # unfortunately, httprepository._callpush tries to convert its
88 # input file-like into a bundle before sending it, so we can't use
97 # input file-like into a bundle before sending it, so we can't use
89 # it ...
98 # it ...
90 if issubclass(self.__class__, httppeer.httppeer):
99 if issubclass(self.__class__, httppeer.httppeer):
91 res = self._call('putlfile', data=fd, sha=sha,
100 res = self._call('putlfile', data=fd, sha=sha,
92 headers={'content-type':'application/mercurial-0.1'})
101 headers={'content-type':'application/mercurial-0.1'})
93 try:
102 try:
94 d, output = res.split('\n', 1)
103 d, output = res.split('\n', 1)
95 for l in output.splitlines(True):
104 for l in output.splitlines(True):
96 self.ui.warn(_('remote: '), l) # assume l ends with \n
105 self.ui.warn(_('remote: '), l) # assume l ends with \n
97 return int(d)
106 return int(d)
98 except ValueError:
107 except ValueError:
99 self.ui.warn(_('unexpected putlfile response: %r\n') % res)
108 self.ui.warn(_('unexpected putlfile response: %r\n') % res)
100 return 1
109 return 1
101 # ... but we can't use sshrepository._call because the data=
110 # ... but we can't use sshrepository._call because the data=
102 # argument won't get sent, and _callpush does exactly what we want
111 # argument won't get sent, and _callpush does exactly what we want
103 # in this case: send the data straight through
112 # in this case: send the data straight through
104 else:
113 else:
105 try:
114 try:
106 ret, output = self._callpush("putlfile", fd, sha=sha)
115 ret, output = self._callpush("putlfile", fd, sha=sha)
107 if ret == "":
116 if ret == "":
108 raise error.ResponseError(_('putlfile failed:'),
117 raise error.ResponseError(_('putlfile failed:'),
109 output)
118 output)
110 return int(ret)
119 return int(ret)
111 except IOError:
120 except IOError:
112 return 1
121 return 1
113 except ValueError:
122 except ValueError:
114 raise error.ResponseError(
123 raise error.ResponseError(
115 _('putlfile failed (unexpected response):'), ret)
124 _('putlfile failed (unexpected response):'), ret)
116
125
117 def getlfile(self, sha):
126 def getlfile(self, sha):
118 """returns an iterable with the chunks of the file with sha sha"""
127 """returns an iterable with the chunks of the file with sha sha"""
119 stream = self._callstream("getlfile", sha=sha)
128 stream = self._callstream("getlfile", sha=sha)
120 length = stream.readline()
129 length = stream.readline()
121 try:
130 try:
122 length = int(length)
131 length = int(length)
123 except ValueError:
132 except ValueError:
124 self._abort(error.ResponseError(_("unexpected response:"),
133 self._abort(error.ResponseError(_("unexpected response:"),
125 length))
134 length))
126
135
127 # SSH streams will block if reading more than length
136 # SSH streams will block if reading more than length
128 for chunk in util.filechunkiter(stream, 128 * 1024, length):
137 for chunk in util.filechunkiter(stream, 128 * 1024, length):
129 yield chunk
138 yield chunk
130 # HTTP streams must hit the end to process the last empty
139 # HTTP streams must hit the end to process the last empty
131 # chunk of Chunked-Encoding so the connection can be reused.
140 # chunk of Chunked-Encoding so the connection can be reused.
132 if issubclass(self.__class__, httppeer.httppeer):
141 if issubclass(self.__class__, httppeer.httppeer):
133 chunk = stream.read(1)
142 chunk = stream.read(1)
134 if chunk:
143 if chunk:
135 self._abort(error.ResponseError(_("unexpected response:"),
144 self._abort(error.ResponseError(_("unexpected response:"),
136 chunk))
145 chunk))
137
146
138 @wireproto.batchable
147 @wireproto.batchable
139 def statlfile(self, sha):
148 def statlfile(self, sha):
140 f = wireproto.future()
149 f = wireproto.future()
141 result = {'sha': sha}
150 result = {'sha': sha}
142 yield result, f
151 yield result, f
143 try:
152 try:
144 yield int(f.value)
153 yield int(f.value)
145 except (ValueError, urlerr.httperror):
154 except (ValueError, urlerr.httperror):
146 # If the server returns anything but an integer followed by a
155 # If the server returns anything but an integer followed by a
147 # newline, newline, it's not speaking our language; if we get
156 # newline, newline, it's not speaking our language; if we get
148 # an HTTP error, we can't be sure the largefile is present;
157 # an HTTP error, we can't be sure the largefile is present;
149 # either way, consider it missing.
158 # either way, consider it missing.
150 yield 2
159 yield 2
151
160
152 repo.__class__ = lfileswirerepository
161 repo.__class__ = lfileswirerepository
153
162
154 # advertise the largefiles=serve capability
163 # advertise the largefiles=serve capability
155 def capabilities(repo, proto):
164 def capabilities(repo, proto):
156 '''Wrap server command to announce largefile server capability'''
165 '''Wrap server command to announce largefile server capability'''
157 return capabilitiesorig(repo, proto) + ' largefiles=serve'
166 return capabilitiesorig(repo, proto) + ' largefiles=serve'
158
167
159 def heads(repo, proto):
168 def heads(repo, proto):
160 '''Wrap server command - largefile capable clients will know to call
169 '''Wrap server command - largefile capable clients will know to call
161 lheads instead'''
170 lheads instead'''
162 if lfutil.islfilesrepo(repo):
171 if lfutil.islfilesrepo(repo):
163 return wireproto.ooberror(LARGEFILES_REQUIRED_MSG)
172 return wireproto.ooberror(LARGEFILES_REQUIRED_MSG)
164 return wireproto.heads(repo, proto)
173 return wireproto.heads(repo, proto)
165
174
166 def sshrepocallstream(self, cmd, **args):
175 def sshrepocallstream(self, cmd, **args):
167 if cmd == 'heads' and self.capable('largefiles'):
176 if cmd == 'heads' and self.capable('largefiles'):
168 cmd = 'lheads'
177 cmd = 'lheads'
169 if cmd == 'batch' and self.capable('largefiles'):
178 if cmd == 'batch' and self.capable('largefiles'):
170 args['cmds'] = args['cmds'].replace('heads ', 'lheads ')
179 args['cmds'] = args['cmds'].replace('heads ', 'lheads ')
171 return ssholdcallstream(self, cmd, **args)
180 return ssholdcallstream(self, cmd, **args)
172
181
173 headsre = re.compile(r'(^|;)heads\b')
182 headsre = re.compile(r'(^|;)heads\b')
174
183
175 def httprepocallstream(self, cmd, **args):
184 def httprepocallstream(self, cmd, **args):
176 if cmd == 'heads' and self.capable('largefiles'):
185 if cmd == 'heads' and self.capable('largefiles'):
177 cmd = 'lheads'
186 cmd = 'lheads'
178 if cmd == 'batch' and self.capable('largefiles'):
187 if cmd == 'batch' and self.capable('largefiles'):
179 args['cmds'] = headsre.sub('lheads', args['cmds'])
188 args['cmds'] = headsre.sub('lheads', args['cmds'])
180 return httpoldcallstream(self, cmd, **args)
189 return httpoldcallstream(self, cmd, **args)
@@ -1,156 +1,155
1 #require test-repo
1 #require test-repo
2
2
3 $ . "$TESTDIR/helpers-testrepo.sh"
3 $ . "$TESTDIR/helpers-testrepo.sh"
4 $ cd "$TESTDIR"/..
4 $ cd "$TESTDIR"/..
5
5
6 $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs python contrib/check-py3-compat.py
6 $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs python contrib/check-py3-compat.py
7 hgext/fsmonitor/pywatchman/__init__.py not using absolute_import
7 hgext/fsmonitor/pywatchman/__init__.py not using absolute_import
8 hgext/fsmonitor/pywatchman/__init__.py requires print_function
8 hgext/fsmonitor/pywatchman/__init__.py requires print_function
9 hgext/fsmonitor/pywatchman/capabilities.py not using absolute_import
9 hgext/fsmonitor/pywatchman/capabilities.py not using absolute_import
10 hgext/fsmonitor/pywatchman/pybser.py not using absolute_import
10 hgext/fsmonitor/pywatchman/pybser.py not using absolute_import
11 hgext/highlight/__init__.py not using absolute_import
11 hgext/highlight/__init__.py not using absolute_import
12 hgext/highlight/highlight.py not using absolute_import
12 hgext/highlight/highlight.py not using absolute_import
13 hgext/largefiles/proto.py not using absolute_import
14 hgext/largefiles/remotestore.py not using absolute_import
13 hgext/largefiles/remotestore.py not using absolute_import
15 hgext/largefiles/reposetup.py not using absolute_import
14 hgext/largefiles/reposetup.py not using absolute_import
16 hgext/largefiles/uisetup.py not using absolute_import
15 hgext/largefiles/uisetup.py not using absolute_import
17 hgext/largefiles/wirestore.py not using absolute_import
16 hgext/largefiles/wirestore.py not using absolute_import
18 hgext/share.py not using absolute_import
17 hgext/share.py not using absolute_import
19 hgext/win32text.py not using absolute_import
18 hgext/win32text.py not using absolute_import
20 i18n/check-translation.py not using absolute_import
19 i18n/check-translation.py not using absolute_import
21 i18n/polib.py not using absolute_import
20 i18n/polib.py not using absolute_import
22 setup.py not using absolute_import
21 setup.py not using absolute_import
23 tests/heredoctest.py requires print_function
22 tests/heredoctest.py requires print_function
24 tests/md5sum.py not using absolute_import
23 tests/md5sum.py not using absolute_import
25 tests/readlink.py not using absolute_import
24 tests/readlink.py not using absolute_import
26 tests/run-tests.py not using absolute_import
25 tests/run-tests.py not using absolute_import
27 tests/test-demandimport.py not using absolute_import
26 tests/test-demandimport.py not using absolute_import
28
27
29 #if py3exe
28 #if py3exe
30 $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs $PYTHON3 contrib/check-py3-compat.py
29 $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs $PYTHON3 contrib/check-py3-compat.py
31 doc/hgmanpage.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
30 doc/hgmanpage.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
32 hgext/automv.py: error importing module: <SyntaxError> invalid syntax (commands.py, line *) (line *) (glob)
31 hgext/automv.py: error importing module: <SyntaxError> invalid syntax (commands.py, line *) (line *) (glob)
33 hgext/blackbox.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
32 hgext/blackbox.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
34 hgext/bugzilla.py: error importing module: <ImportError> No module named 'urlparse' (line *) (glob)
33 hgext/bugzilla.py: error importing module: <ImportError> No module named 'urlparse' (line *) (glob)
35 hgext/censor.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
34 hgext/censor.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
36 hgext/chgserver.py: error importing module: <ImportError> No module named 'SocketServer' (line *) (glob)
35 hgext/chgserver.py: error importing module: <ImportError> No module named 'SocketServer' (line *) (glob)
37 hgext/children.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
36 hgext/children.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
38 hgext/churn.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
37 hgext/churn.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
39 hgext/clonebundles.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
38 hgext/clonebundles.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
40 hgext/color.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
39 hgext/color.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
41 hgext/convert/bzr.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
40 hgext/convert/bzr.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
42 hgext/convert/common.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
41 hgext/convert/common.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
43 hgext/convert/convcmd.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
42 hgext/convert/convcmd.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
44 hgext/convert/cvs.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
43 hgext/convert/cvs.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
45 hgext/convert/cvsps.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
44 hgext/convert/cvsps.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
46 hgext/convert/darcs.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
45 hgext/convert/darcs.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
47 hgext/convert/filemap.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
46 hgext/convert/filemap.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
48 hgext/convert/git.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
47 hgext/convert/git.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
49 hgext/convert/gnuarch.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
48 hgext/convert/gnuarch.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
50 hgext/convert/hg.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
49 hgext/convert/hg.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
51 hgext/convert/monotone.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
50 hgext/convert/monotone.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
52 hgext/convert/p*.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
51 hgext/convert/p*.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
53 hgext/convert/subversion.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
52 hgext/convert/subversion.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
54 hgext/convert/transport.py: error importing module: <ImportError> No module named 'svn.client' (line *) (glob)
53 hgext/convert/transport.py: error importing module: <ImportError> No module named 'svn.client' (line *) (glob)
55 hgext/eol.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
54 hgext/eol.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
56 hgext/extdiff.py: error importing module: <SyntaxError> invalid syntax (archival.py, line *) (line *) (glob)
55 hgext/extdiff.py: error importing module: <SyntaxError> invalid syntax (archival.py, line *) (line *) (glob)
57 hgext/factotum.py: error importing: <ImportError> No module named 'rfc822' (error at __init__.py:*) (glob)
56 hgext/factotum.py: error importing: <ImportError> No module named 'rfc822' (error at __init__.py:*) (glob)
58 hgext/fetch.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
57 hgext/fetch.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
59 hgext/fsmonitor/watchmanclient.py: error importing module: <SystemError> Parent module 'hgext.fsmonitor' not loaded, cannot perform relative import (line *) (glob)
58 hgext/fsmonitor/watchmanclient.py: error importing module: <SystemError> Parent module 'hgext.fsmonitor' not loaded, cannot perform relative import (line *) (glob)
60 hgext/gpg.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
59 hgext/gpg.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
61 hgext/graphlog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
60 hgext/graphlog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
62 hgext/hgk.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
61 hgext/hgk.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
63 hgext/histedit.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
62 hgext/histedit.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
64 hgext/keyword.py: error importing: <ImportError> No module named 'BaseHTTPServer' (error at common.py:*) (glob)
63 hgext/keyword.py: error importing: <ImportError> No module named 'BaseHTTPServer' (error at common.py:*) (glob)
65 hgext/largefiles/basestore.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
64 hgext/largefiles/basestore.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
66 hgext/largefiles/lfcommands.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
65 hgext/largefiles/lfcommands.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
67 hgext/largefiles/lfutil.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
66 hgext/largefiles/lfutil.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
68 hgext/largefiles/localstore.py: error importing module: <ImportError> No module named 'lfutil' (line *) (glob)
67 hgext/largefiles/localstore.py: error importing module: <ImportError> No module named 'lfutil' (line *) (glob)
69 hgext/largefiles/overrides.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
68 hgext/largefiles/overrides.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
70 hgext/largefiles/proto.py: error importing: <ImportError> No module named 'httplib' (error at httppeer.py:*) (glob)
69 hgext/largefiles/proto.py: error importing: <ImportError> No module named 'httplib' (error at httppeer.py:*) (glob)
71 hgext/largefiles/remotestore.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at wireproto.py:*) (glob)
70 hgext/largefiles/remotestore.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at wireproto.py:*) (glob)
72 hgext/largefiles/reposetup.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
71 hgext/largefiles/reposetup.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
73 hgext/largefiles/uisetup.py: error importing module: <SyntaxError> invalid syntax (archival.py, line *) (line *) (glob)
72 hgext/largefiles/uisetup.py: error importing module: <SyntaxError> invalid syntax (archival.py, line *) (line *) (glob)
74 hgext/largefiles/wirestore.py: error importing module: <ImportError> No module named 'lfutil' (line *) (glob)
73 hgext/largefiles/wirestore.py: error importing module: <ImportError> No module named 'lfutil' (line *) (glob)
75 hgext/mq.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
74 hgext/mq.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
76 hgext/notify.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
75 hgext/notify.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
77 hgext/pager.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
76 hgext/pager.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
78 hgext/patchbomb.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
77 hgext/patchbomb.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
79 hgext/purge.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
78 hgext/purge.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
80 hgext/rebase.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
79 hgext/rebase.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
81 hgext/record.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
80 hgext/record.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
82 hgext/relink.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
81 hgext/relink.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
83 hgext/schemes.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
82 hgext/schemes.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
84 hgext/share.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
83 hgext/share.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
85 hgext/shelve.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
84 hgext/shelve.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
86 hgext/strip.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
85 hgext/strip.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
87 hgext/transplant.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
86 hgext/transplant.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
88 mercurial/archival.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
87 mercurial/archival.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
89 mercurial/branchmap.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
88 mercurial/branchmap.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
90 mercurial/bundle*.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
89 mercurial/bundle*.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
91 mercurial/bundlerepo.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
90 mercurial/bundlerepo.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
92 mercurial/changegroup.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
91 mercurial/changegroup.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
93 mercurial/changelog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
92 mercurial/changelog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
94 mercurial/cmdutil.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
93 mercurial/cmdutil.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
95 mercurial/commands.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
94 mercurial/commands.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
96 mercurial/commandserver.py: error importing module: <ImportError> No module named 'SocketServer' (line *) (glob)
95 mercurial/commandserver.py: error importing module: <ImportError> No module named 'SocketServer' (line *) (glob)
97 mercurial/context.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
96 mercurial/context.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
98 mercurial/copies.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
97 mercurial/copies.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
99 mercurial/crecord.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
98 mercurial/crecord.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
100 mercurial/dirstate.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
99 mercurial/dirstate.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
101 mercurial/discovery.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
100 mercurial/discovery.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
102 mercurial/dispatch.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
101 mercurial/dispatch.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
103 mercurial/exchange.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
102 mercurial/exchange.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
104 mercurial/extensions.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
103 mercurial/extensions.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
105 mercurial/filelog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
104 mercurial/filelog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
106 mercurial/filemerge.py: error importing: <ImportError> No module named 'cPickle' (error at formatter.py:*) (glob)
105 mercurial/filemerge.py: error importing: <ImportError> No module named 'cPickle' (error at formatter.py:*) (glob)
107 mercurial/fileset.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
106 mercurial/fileset.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
108 mercurial/formatter.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
107 mercurial/formatter.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
109 mercurial/graphmod.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
108 mercurial/graphmod.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
110 mercurial/help.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
109 mercurial/help.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
111 mercurial/hg.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
110 mercurial/hg.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
112 mercurial/hgweb/common.py: error importing module: <ImportError> No module named 'BaseHTTPServer' (line *) (glob)
111 mercurial/hgweb/common.py: error importing module: <ImportError> No module named 'BaseHTTPServer' (line *) (glob)
113 mercurial/hgweb/hgweb_mod.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
112 mercurial/hgweb/hgweb_mod.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
114 mercurial/hgweb/hgwebdir_mod.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
113 mercurial/hgweb/hgwebdir_mod.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
115 mercurial/hgweb/protocol.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
114 mercurial/hgweb/protocol.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
116 mercurial/hgweb/request.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
115 mercurial/hgweb/request.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
117 mercurial/hgweb/server.py: error importing module: <ImportError> No module named 'BaseHTTPServer' (line *) (glob)
116 mercurial/hgweb/server.py: error importing module: <ImportError> No module named 'BaseHTTPServer' (line *) (glob)
118 mercurial/hgweb/webcommands.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
117 mercurial/hgweb/webcommands.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
119 mercurial/hgweb/webutil.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
118 mercurial/hgweb/webutil.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
120 mercurial/hgweb/wsgicgi.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
119 mercurial/hgweb/wsgicgi.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
121 mercurial/hook.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
120 mercurial/hook.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
122 mercurial/httpconnection.py: error importing: <ImportError> No module named 'rfc822' (error at __init__.py:*) (glob)
121 mercurial/httpconnection.py: error importing: <ImportError> No module named 'rfc822' (error at __init__.py:*) (glob)
123 mercurial/httppeer.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
122 mercurial/httppeer.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
124 mercurial/keepalive.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
123 mercurial/keepalive.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
125 mercurial/localrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
124 mercurial/localrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
126 mercurial/mail.py: error importing module: <AttributeError> module 'email' has no attribute 'Header' (line *) (glob)
125 mercurial/mail.py: error importing module: <AttributeError> module 'email' has no attribute 'Header' (line *) (glob)
127 mercurial/manifest.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
126 mercurial/manifest.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
128 mercurial/merge.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
127 mercurial/merge.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
129 mercurial/namespaces.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
128 mercurial/namespaces.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
130 mercurial/patch.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
129 mercurial/patch.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
131 mercurial/pure/mpatch.py: error importing module: <ImportError> cannot import name 'pycompat' (line *) (glob)
130 mercurial/pure/mpatch.py: error importing module: <ImportError> cannot import name 'pycompat' (line *) (glob)
132 mercurial/pure/parsers.py: error importing module: <ImportError> No module named 'mercurial.pure.node' (line *) (glob)
131 mercurial/pure/parsers.py: error importing module: <ImportError> No module named 'mercurial.pure.node' (line *) (glob)
133 mercurial/repair.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
132 mercurial/repair.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
134 mercurial/revlog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
133 mercurial/revlog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
135 mercurial/revset.py: error importing module: <AttributeError> 'dict' object has no attribute 'iteritems' (line *) (glob)
134 mercurial/revset.py: error importing module: <AttributeError> 'dict' object has no attribute 'iteritems' (line *) (glob)
136 mercurial/scmutil.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
135 mercurial/scmutil.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
137 mercurial/scmwindows.py: error importing module: <ImportError> No module named '_winreg' (line *) (glob)
136 mercurial/scmwindows.py: error importing module: <ImportError> No module named '_winreg' (line *) (glob)
138 mercurial/simplemerge.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
137 mercurial/simplemerge.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
139 mercurial/sshpeer.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at wireproto.py:*) (glob)
138 mercurial/sshpeer.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at wireproto.py:*) (glob)
140 mercurial/sshserver.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
139 mercurial/sshserver.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
141 mercurial/statichttprepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
140 mercurial/statichttprepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
142 mercurial/store.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
141 mercurial/store.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
143 mercurial/streamclone.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
142 mercurial/streamclone.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
144 mercurial/subrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
143 mercurial/subrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
145 mercurial/templatefilters.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
144 mercurial/templatefilters.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
146 mercurial/templatekw.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
145 mercurial/templatekw.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
147 mercurial/templater.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
146 mercurial/templater.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
148 mercurial/ui.py: error importing: <ImportError> No module named 'cPickle' (error at formatter.py:*) (glob)
147 mercurial/ui.py: error importing: <ImportError> No module named 'cPickle' (error at formatter.py:*) (glob)
149 mercurial/unionrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
148 mercurial/unionrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
150 mercurial/url.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
149 mercurial/url.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
151 mercurial/verify.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
150 mercurial/verify.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
152 mercurial/win*.py: error importing module: <ImportError> No module named 'msvcrt' (line *) (glob)
151 mercurial/win*.py: error importing module: <ImportError> No module named 'msvcrt' (line *) (glob)
153 mercurial/windows.py: error importing module: <ImportError> No module named '_winreg' (line *) (glob)
152 mercurial/windows.py: error importing module: <ImportError> No module named '_winreg' (line *) (glob)
154 mercurial/wireproto.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
153 mercurial/wireproto.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
155
154
156 #endif
155 #endif
General Comments 0
You need to be logged in to leave comments. Login now