##// END OF EJS Templates
destutil: use absolute_import
Gregory Szorc -
r27333:2c60b4b2 default
parent child Browse files
Show More
@@ -1,215 +1,217 b''
1 # destutil.py - Mercurial utility function for command destination
1 # destutil.py - Mercurial utility function for command destination
2 #
2 #
3 # Copyright Matt Mackall <mpm@selenic.com> and other
3 # Copyright Matt Mackall <mpm@selenic.com> and other
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
8 from .i18n import _
10 from .i18n import _
9 from . import (
11 from . import (
10 bookmarks,
12 bookmarks,
11 error,
13 error,
12 obsolete,
14 obsolete,
13 )
15 )
14
16
15 def _destupdatevalidate(repo, rev, clean, check):
17 def _destupdatevalidate(repo, rev, clean, check):
16 """validate that the destination comply to various rules
18 """validate that the destination comply to various rules
17
19
18 This exists as its own function to help wrapping from extensions."""
20 This exists as its own function to help wrapping from extensions."""
19 wc = repo[None]
21 wc = repo[None]
20 p1 = wc.p1()
22 p1 = wc.p1()
21 if not clean:
23 if not clean:
22 # Check that the update is linear.
24 # Check that the update is linear.
23 #
25 #
24 # Mercurial do not allow update-merge for non linear pattern
26 # Mercurial do not allow update-merge for non linear pattern
25 # (that would be technically possible but was considered too confusing
27 # (that would be technically possible but was considered too confusing
26 # for user a long time ago)
28 # for user a long time ago)
27 #
29 #
28 # See mercurial.merge.update for details
30 # See mercurial.merge.update for details
29 if p1.rev() not in repo.changelog.ancestors([rev], inclusive=True):
31 if p1.rev() not in repo.changelog.ancestors([rev], inclusive=True):
30 dirty = wc.dirty(missing=True)
32 dirty = wc.dirty(missing=True)
31 foreground = obsolete.foreground(repo, [p1.node()])
33 foreground = obsolete.foreground(repo, [p1.node()])
32 if not repo[rev].node() in foreground:
34 if not repo[rev].node() in foreground:
33 if dirty:
35 if dirty:
34 msg = _("uncommitted changes")
36 msg = _("uncommitted changes")
35 hint = _("commit and merge, or update --clean to"
37 hint = _("commit and merge, or update --clean to"
36 " discard changes")
38 " discard changes")
37 raise error.UpdateAbort(msg, hint=hint)
39 raise error.UpdateAbort(msg, hint=hint)
38 elif not check: # destination is not a descendant.
40 elif not check: # destination is not a descendant.
39 msg = _("not a linear update")
41 msg = _("not a linear update")
40 hint = _("merge or update --check to force update")
42 hint = _("merge or update --check to force update")
41 raise error.UpdateAbort(msg, hint=hint)
43 raise error.UpdateAbort(msg, hint=hint)
42
44
43 def _destupdateobs(repo, clean, check):
45 def _destupdateobs(repo, clean, check):
44 """decide of an update destination from obsolescence markers"""
46 """decide of an update destination from obsolescence markers"""
45 node = None
47 node = None
46 wc = repo[None]
48 wc = repo[None]
47 p1 = wc.p1()
49 p1 = wc.p1()
48 movemark = None
50 movemark = None
49
51
50 if p1.obsolete() and not p1.children():
52 if p1.obsolete() and not p1.children():
51 # allow updating to successors
53 # allow updating to successors
52 successors = obsolete.successorssets(repo, p1.node())
54 successors = obsolete.successorssets(repo, p1.node())
53
55
54 # behavior of certain cases is as follows,
56 # behavior of certain cases is as follows,
55 #
57 #
56 # divergent changesets: update to highest rev, similar to what
58 # divergent changesets: update to highest rev, similar to what
57 # is currently done when there are more than one head
59 # is currently done when there are more than one head
58 # (i.e. 'tip')
60 # (i.e. 'tip')
59 #
61 #
60 # replaced changesets: same as divergent except we know there
62 # replaced changesets: same as divergent except we know there
61 # is no conflict
63 # is no conflict
62 #
64 #
63 # pruned changeset: no update is done; though, we could
65 # pruned changeset: no update is done; though, we could
64 # consider updating to the first non-obsolete parent,
66 # consider updating to the first non-obsolete parent,
65 # similar to what is current done for 'hg prune'
67 # similar to what is current done for 'hg prune'
66
68
67 if successors:
69 if successors:
68 # flatten the list here handles both divergent (len > 1)
70 # flatten the list here handles both divergent (len > 1)
69 # and the usual case (len = 1)
71 # and the usual case (len = 1)
70 successors = [n for sub in successors for n in sub]
72 successors = [n for sub in successors for n in sub]
71
73
72 # get the max revision for the given successors set,
74 # get the max revision for the given successors set,
73 # i.e. the 'tip' of a set
75 # i.e. the 'tip' of a set
74 node = repo.revs('max(%ln)', successors).first()
76 node = repo.revs('max(%ln)', successors).first()
75 if bookmarks.isactivewdirparent(repo):
77 if bookmarks.isactivewdirparent(repo):
76 movemark = repo['.'].node()
78 movemark = repo['.'].node()
77 return node, movemark, None
79 return node, movemark, None
78
80
79 def _destupdatebook(repo, clean, check):
81 def _destupdatebook(repo, clean, check):
80 """decide on an update destination from active bookmark"""
82 """decide on an update destination from active bookmark"""
81 # we also move the active bookmark, if any
83 # we also move the active bookmark, if any
82 activemark = None
84 activemark = None
83 node, movemark = bookmarks.calculateupdate(repo.ui, repo, None)
85 node, movemark = bookmarks.calculateupdate(repo.ui, repo, None)
84 if node is not None:
86 if node is not None:
85 activemark = node
87 activemark = node
86 return node, movemark, activemark
88 return node, movemark, activemark
87
89
88 def _destupdatebranch(repo, clean, check):
90 def _destupdatebranch(repo, clean, check):
89 """decide on an update destination from current branch"""
91 """decide on an update destination from current branch"""
90 wc = repo[None]
92 wc = repo[None]
91 movemark = node = None
93 movemark = node = None
92 try:
94 try:
93 node = repo.branchtip(wc.branch())
95 node = repo.branchtip(wc.branch())
94 if bookmarks.isactivewdirparent(repo):
96 if bookmarks.isactivewdirparent(repo):
95 movemark = repo['.'].node()
97 movemark = repo['.'].node()
96 except error.RepoLookupError:
98 except error.RepoLookupError:
97 if wc.branch() == 'default': # no default branch!
99 if wc.branch() == 'default': # no default branch!
98 node = repo.lookup('tip') # update to tip
100 node = repo.lookup('tip') # update to tip
99 else:
101 else:
100 raise error.Abort(_("branch %s not found") % wc.branch())
102 raise error.Abort(_("branch %s not found") % wc.branch())
101 return node, movemark, None
103 return node, movemark, None
102
104
103 # order in which each step should be evalutated
105 # order in which each step should be evalutated
104 # steps are run until one finds a destination
106 # steps are run until one finds a destination
105 destupdatesteps = ['evolution', 'bookmark', 'branch']
107 destupdatesteps = ['evolution', 'bookmark', 'branch']
106 # mapping to ease extension overriding steps.
108 # mapping to ease extension overriding steps.
107 destupdatestepmap = {'evolution': _destupdateobs,
109 destupdatestepmap = {'evolution': _destupdateobs,
108 'bookmark': _destupdatebook,
110 'bookmark': _destupdatebook,
109 'branch': _destupdatebranch,
111 'branch': _destupdatebranch,
110 }
112 }
111
113
112 def destupdate(repo, clean=False, check=False):
114 def destupdate(repo, clean=False, check=False):
113 """destination for bare update operation
115 """destination for bare update operation
114
116
115 return (rev, movemark, activemark)
117 return (rev, movemark, activemark)
116
118
117 - rev: the revision to update to,
119 - rev: the revision to update to,
118 - movemark: node to move the active bookmark from
120 - movemark: node to move the active bookmark from
119 (cf bookmark.calculate update),
121 (cf bookmark.calculate update),
120 - activemark: a bookmark to activate at the end of the update.
122 - activemark: a bookmark to activate at the end of the update.
121 """
123 """
122 node = movemark = activemark = None
124 node = movemark = activemark = None
123
125
124 for step in destupdatesteps:
126 for step in destupdatesteps:
125 node, movemark, activemark = destupdatestepmap[step](repo, clean, check)
127 node, movemark, activemark = destupdatestepmap[step](repo, clean, check)
126 if node is not None:
128 if node is not None:
127 break
129 break
128 rev = repo[node].rev()
130 rev = repo[node].rev()
129
131
130 _destupdatevalidate(repo, rev, clean, check)
132 _destupdatevalidate(repo, rev, clean, check)
131
133
132 return rev, movemark, activemark
134 return rev, movemark, activemark
133
135
134 def _destmergebook(repo):
136 def _destmergebook(repo):
135 """find merge destination in the active bookmark case"""
137 """find merge destination in the active bookmark case"""
136 node = None
138 node = None
137 bmheads = repo.bookmarkheads(repo._activebookmark)
139 bmheads = repo.bookmarkheads(repo._activebookmark)
138 curhead = repo[repo._activebookmark].node()
140 curhead = repo[repo._activebookmark].node()
139 if len(bmheads) == 2:
141 if len(bmheads) == 2:
140 if curhead == bmheads[0]:
142 if curhead == bmheads[0]:
141 node = bmheads[1]
143 node = bmheads[1]
142 else:
144 else:
143 node = bmheads[0]
145 node = bmheads[0]
144 elif len(bmheads) > 2:
146 elif len(bmheads) > 2:
145 raise error.Abort(_("multiple matching bookmarks to merge - "
147 raise error.Abort(_("multiple matching bookmarks to merge - "
146 "please merge with an explicit rev or bookmark"),
148 "please merge with an explicit rev or bookmark"),
147 hint=_("run 'hg heads' to see all heads"))
149 hint=_("run 'hg heads' to see all heads"))
148 elif len(bmheads) <= 1:
150 elif len(bmheads) <= 1:
149 raise error.Abort(_("no matching bookmark to merge - "
151 raise error.Abort(_("no matching bookmark to merge - "
150 "please merge with an explicit rev or bookmark"),
152 "please merge with an explicit rev or bookmark"),
151 hint=_("run 'hg heads' to see all heads"))
153 hint=_("run 'hg heads' to see all heads"))
152 assert node is not None
154 assert node is not None
153 return node
155 return node
154
156
155 def _destmergebranch(repo):
157 def _destmergebranch(repo):
156 """find merge destination based on branch heads"""
158 """find merge destination based on branch heads"""
157 node = None
159 node = None
158 branch = repo[None].branch()
160 branch = repo[None].branch()
159 bheads = repo.branchheads(branch)
161 bheads = repo.branchheads(branch)
160 nbhs = [bh for bh in bheads if not repo[bh].bookmarks()]
162 nbhs = [bh for bh in bheads if not repo[bh].bookmarks()]
161
163
162 if len(nbhs) > 2:
164 if len(nbhs) > 2:
163 raise error.Abort(_("branch '%s' has %d heads - "
165 raise error.Abort(_("branch '%s' has %d heads - "
164 "please merge with an explicit rev")
166 "please merge with an explicit rev")
165 % (branch, len(bheads)),
167 % (branch, len(bheads)),
166 hint=_("run 'hg heads .' to see heads"))
168 hint=_("run 'hg heads .' to see heads"))
167
169
168 parent = repo.dirstate.p1()
170 parent = repo.dirstate.p1()
169 if len(nbhs) <= 1:
171 if len(nbhs) <= 1:
170 if len(bheads) > 1:
172 if len(bheads) > 1:
171 raise error.Abort(_("heads are bookmarked - "
173 raise error.Abort(_("heads are bookmarked - "
172 "please merge with an explicit rev"),
174 "please merge with an explicit rev"),
173 hint=_("run 'hg heads' to see all heads"))
175 hint=_("run 'hg heads' to see all heads"))
174 if len(repo.heads()) > 1:
176 if len(repo.heads()) > 1:
175 raise error.Abort(_("branch '%s' has one head - "
177 raise error.Abort(_("branch '%s' has one head - "
176 "please merge with an explicit rev")
178 "please merge with an explicit rev")
177 % branch,
179 % branch,
178 hint=_("run 'hg heads' to see all heads"))
180 hint=_("run 'hg heads' to see all heads"))
179 msg, hint = _('nothing to merge'), None
181 msg, hint = _('nothing to merge'), None
180 if parent != repo.lookup(branch):
182 if parent != repo.lookup(branch):
181 hint = _("use 'hg update' instead")
183 hint = _("use 'hg update' instead")
182 raise error.Abort(msg, hint=hint)
184 raise error.Abort(msg, hint=hint)
183
185
184 if parent not in bheads:
186 if parent not in bheads:
185 raise error.Abort(_('working directory not at a head revision'),
187 raise error.Abort(_('working directory not at a head revision'),
186 hint=_("use 'hg update' or merge with an "
188 hint=_("use 'hg update' or merge with an "
187 "explicit revision"))
189 "explicit revision"))
188 if parent == nbhs[0]:
190 if parent == nbhs[0]:
189 node = nbhs[-1]
191 node = nbhs[-1]
190 else:
192 else:
191 node = nbhs[0]
193 node = nbhs[0]
192 assert node is not None
194 assert node is not None
193 return node
195 return node
194
196
195 def destmerge(repo):
197 def destmerge(repo):
196 if repo._activebookmark:
198 if repo._activebookmark:
197 node = _destmergebook(repo)
199 node = _destmergebook(repo)
198 else:
200 else:
199 node = _destmergebranch(repo)
201 node = _destmergebranch(repo)
200 return repo[node].rev()
202 return repo[node].rev()
201
203
202 histeditdefaultrevset = 'reverse(only(.) and not public() and not ::merge())'
204 histeditdefaultrevset = 'reverse(only(.) and not public() and not ::merge())'
203
205
204 def desthistedit(ui, repo):
206 def desthistedit(ui, repo):
205 """Default base revision to edit for `hg histedit`."""
207 """Default base revision to edit for `hg histedit`."""
206 default = ui.config('histedit', 'defaultrev', histeditdefaultrevset)
208 default = ui.config('histedit', 'defaultrev', histeditdefaultrevset)
207 if default:
209 if default:
208 revs = repo.revs(default)
210 revs = repo.revs(default)
209 if revs:
211 if revs:
210 # The revset supplied by the user may not be in ascending order nor
212 # The revset supplied by the user may not be in ascending order nor
211 # take the first revision. So do this manually.
213 # take the first revision. So do this manually.
212 revs.sort()
214 revs.sort()
213 return revs.first()
215 return revs.first()
214
216
215 return None
217 return None
@@ -1,220 +1,219 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/destutil.py not using absolute_import
107 mercurial/dirstate.py not using absolute_import
106 mercurial/dirstate.py not using absolute_import
108 mercurial/dispatch.py requires print_function
107 mercurial/dispatch.py requires print_function
109 mercurial/encoding.py not using absolute_import
108 mercurial/encoding.py not using absolute_import
110 mercurial/exchange.py not using absolute_import
109 mercurial/exchange.py not using absolute_import
111 mercurial/help.py not using absolute_import
110 mercurial/help.py not using absolute_import
112 mercurial/httpclient/__init__.py not using absolute_import
111 mercurial/httpclient/__init__.py not using absolute_import
113 mercurial/httpclient/_readers.py not using absolute_import
112 mercurial/httpclient/_readers.py not using absolute_import
114 mercurial/httpclient/socketutil.py not using absolute_import
113 mercurial/httpclient/socketutil.py not using absolute_import
115 mercurial/httpconnection.py not using absolute_import
114 mercurial/httpconnection.py not using absolute_import
116 mercurial/keepalive.py not using absolute_import
115 mercurial/keepalive.py not using absolute_import
117 mercurial/keepalive.py requires print_function
116 mercurial/keepalive.py requires print_function
118 mercurial/localrepo.py not using absolute_import
117 mercurial/localrepo.py not using absolute_import
119 mercurial/lsprof.py requires print_function
118 mercurial/lsprof.py requires print_function
120 mercurial/lsprofcalltree.py not using absolute_import
119 mercurial/lsprofcalltree.py not using absolute_import
121 mercurial/lsprofcalltree.py requires print_function
120 mercurial/lsprofcalltree.py requires print_function
122 mercurial/mail.py requires print_function
121 mercurial/mail.py requires print_function
123 mercurial/manifest.py not using absolute_import
122 mercurial/manifest.py not using absolute_import
124 mercurial/mdiff.py not using absolute_import
123 mercurial/mdiff.py not using absolute_import
125 mercurial/patch.py not using absolute_import
124 mercurial/patch.py not using absolute_import
126 mercurial/pure/base85.py not using absolute_import
125 mercurial/pure/base85.py not using absolute_import
127 mercurial/pure/bdiff.py not using absolute_import
126 mercurial/pure/bdiff.py not using absolute_import
128 mercurial/pure/diffhelpers.py not using absolute_import
127 mercurial/pure/diffhelpers.py not using absolute_import
129 mercurial/pure/mpatch.py not using absolute_import
128 mercurial/pure/mpatch.py not using absolute_import
130 mercurial/pure/osutil.py not using absolute_import
129 mercurial/pure/osutil.py not using absolute_import
131 mercurial/pure/parsers.py not using absolute_import
130 mercurial/pure/parsers.py not using absolute_import
132 mercurial/pvec.py not using absolute_import
131 mercurial/pvec.py not using absolute_import
133 mercurial/py3kcompat.py not using absolute_import
132 mercurial/py3kcompat.py not using absolute_import
134 mercurial/revlog.py not using absolute_import
133 mercurial/revlog.py not using absolute_import
135 mercurial/scmposix.py not using absolute_import
134 mercurial/scmposix.py not using absolute_import
136 mercurial/scmutil.py not using absolute_import
135 mercurial/scmutil.py not using absolute_import
137 mercurial/scmwindows.py not using absolute_import
136 mercurial/scmwindows.py not using absolute_import
138 mercurial/similar.py not using absolute_import
137 mercurial/similar.py not using absolute_import
139 mercurial/store.py not using absolute_import
138 mercurial/store.py not using absolute_import
140 mercurial/util.py not using absolute_import
139 mercurial/util.py not using absolute_import
141 mercurial/windows.py not using absolute_import
140 mercurial/windows.py not using absolute_import
142 setup.py not using absolute_import
141 setup.py not using absolute_import
143 tests/filterpyflakes.py requires print_function
142 tests/filterpyflakes.py requires print_function
144 tests/generate-working-copy-states.py requires print_function
143 tests/generate-working-copy-states.py requires print_function
145 tests/get-with-headers.py requires print_function
144 tests/get-with-headers.py requires print_function
146 tests/heredoctest.py requires print_function
145 tests/heredoctest.py requires print_function
147 tests/hypothesishelpers.py not using absolute_import
146 tests/hypothesishelpers.py not using absolute_import
148 tests/hypothesishelpers.py requires print_function
147 tests/hypothesishelpers.py requires print_function
149 tests/killdaemons.py not using absolute_import
148 tests/killdaemons.py not using absolute_import
150 tests/md5sum.py not using absolute_import
149 tests/md5sum.py not using absolute_import
151 tests/mockblackbox.py not using absolute_import
150 tests/mockblackbox.py not using absolute_import
152 tests/printenv.py not using absolute_import
151 tests/printenv.py not using absolute_import
153 tests/readlink.py not using absolute_import
152 tests/readlink.py not using absolute_import
154 tests/readlink.py requires print_function
153 tests/readlink.py requires print_function
155 tests/revlog-formatv0.py not using absolute_import
154 tests/revlog-formatv0.py not using absolute_import
156 tests/run-tests.py not using absolute_import
155 tests/run-tests.py not using absolute_import
157 tests/seq.py not using absolute_import
156 tests/seq.py not using absolute_import
158 tests/seq.py requires print_function
157 tests/seq.py requires print_function
159 tests/silenttestrunner.py not using absolute_import
158 tests/silenttestrunner.py not using absolute_import
160 tests/silenttestrunner.py requires print_function
159 tests/silenttestrunner.py requires print_function
161 tests/sitecustomize.py not using absolute_import
160 tests/sitecustomize.py not using absolute_import
162 tests/svn-safe-append.py not using absolute_import
161 tests/svn-safe-append.py not using absolute_import
163 tests/svnxml.py not using absolute_import
162 tests/svnxml.py not using absolute_import
164 tests/test-ancestor.py requires print_function
163 tests/test-ancestor.py requires print_function
165 tests/test-atomictempfile.py not using absolute_import
164 tests/test-atomictempfile.py not using absolute_import
166 tests/test-batching.py not using absolute_import
165 tests/test-batching.py not using absolute_import
167 tests/test-batching.py requires print_function
166 tests/test-batching.py requires print_function
168 tests/test-bdiff.py not using absolute_import
167 tests/test-bdiff.py not using absolute_import
169 tests/test-bdiff.py requires print_function
168 tests/test-bdiff.py requires print_function
170 tests/test-context.py not using absolute_import
169 tests/test-context.py not using absolute_import
171 tests/test-context.py requires print_function
170 tests/test-context.py requires print_function
172 tests/test-demandimport.py not using absolute_import
171 tests/test-demandimport.py not using absolute_import
173 tests/test-demandimport.py requires print_function
172 tests/test-demandimport.py requires print_function
174 tests/test-dispatch.py not using absolute_import
173 tests/test-dispatch.py not using absolute_import
175 tests/test-dispatch.py requires print_function
174 tests/test-dispatch.py requires print_function
176 tests/test-doctest.py not using absolute_import
175 tests/test-doctest.py not using absolute_import
177 tests/test-duplicateoptions.py not using absolute_import
176 tests/test-duplicateoptions.py not using absolute_import
178 tests/test-duplicateoptions.py requires print_function
177 tests/test-duplicateoptions.py requires print_function
179 tests/test-filecache.py not using absolute_import
178 tests/test-filecache.py not using absolute_import
180 tests/test-filecache.py requires print_function
179 tests/test-filecache.py requires print_function
181 tests/test-filelog.py not using absolute_import
180 tests/test-filelog.py not using absolute_import
182 tests/test-filelog.py requires print_function
181 tests/test-filelog.py requires print_function
183 tests/test-hg-parseurl.py not using absolute_import
182 tests/test-hg-parseurl.py not using absolute_import
184 tests/test-hg-parseurl.py requires print_function
183 tests/test-hg-parseurl.py requires print_function
185 tests/test-hgweb-auth.py not using absolute_import
184 tests/test-hgweb-auth.py not using absolute_import
186 tests/test-hgweb-auth.py requires print_function
185 tests/test-hgweb-auth.py requires print_function
187 tests/test-hgwebdir-paths.py not using absolute_import
186 tests/test-hgwebdir-paths.py not using absolute_import
188 tests/test-hybridencode.py not using absolute_import
187 tests/test-hybridencode.py not using absolute_import
189 tests/test-hybridencode.py requires print_function
188 tests/test-hybridencode.py requires print_function
190 tests/test-lrucachedict.py not using absolute_import
189 tests/test-lrucachedict.py not using absolute_import
191 tests/test-lrucachedict.py requires print_function
190 tests/test-lrucachedict.py requires print_function
192 tests/test-manifest.py not using absolute_import
191 tests/test-manifest.py not using absolute_import
193 tests/test-minirst.py not using absolute_import
192 tests/test-minirst.py not using absolute_import
194 tests/test-minirst.py requires print_function
193 tests/test-minirst.py requires print_function
195 tests/test-parseindex2.py not using absolute_import
194 tests/test-parseindex2.py not using absolute_import
196 tests/test-parseindex2.py requires print_function
195 tests/test-parseindex2.py requires print_function
197 tests/test-pathencode.py not using absolute_import
196 tests/test-pathencode.py not using absolute_import
198 tests/test-pathencode.py requires print_function
197 tests/test-pathencode.py requires print_function
199 tests/test-propertycache.py not using absolute_import
198 tests/test-propertycache.py not using absolute_import
200 tests/test-propertycache.py requires print_function
199 tests/test-propertycache.py requires print_function
201 tests/test-revlog-ancestry.py not using absolute_import
200 tests/test-revlog-ancestry.py not using absolute_import
202 tests/test-revlog-ancestry.py requires print_function
201 tests/test-revlog-ancestry.py requires print_function
203 tests/test-run-tests.py not using absolute_import
202 tests/test-run-tests.py not using absolute_import
204 tests/test-simplemerge.py not using absolute_import
203 tests/test-simplemerge.py not using absolute_import
205 tests/test-status-inprocess.py not using absolute_import
204 tests/test-status-inprocess.py not using absolute_import
206 tests/test-status-inprocess.py requires print_function
205 tests/test-status-inprocess.py requires print_function
207 tests/test-symlink-os-yes-fs-no.py not using absolute_import
206 tests/test-symlink-os-yes-fs-no.py not using absolute_import
208 tests/test-trusted.py not using absolute_import
207 tests/test-trusted.py not using absolute_import
209 tests/test-trusted.py requires print_function
208 tests/test-trusted.py requires print_function
210 tests/test-ui-color.py not using absolute_import
209 tests/test-ui-color.py not using absolute_import
211 tests/test-ui-color.py requires print_function
210 tests/test-ui-color.py requires print_function
212 tests/test-ui-config.py not using absolute_import
211 tests/test-ui-config.py not using absolute_import
213 tests/test-ui-config.py requires print_function
212 tests/test-ui-config.py requires print_function
214 tests/test-ui-verbosity.py not using absolute_import
213 tests/test-ui-verbosity.py not using absolute_import
215 tests/test-ui-verbosity.py requires print_function
214 tests/test-ui-verbosity.py requires print_function
216 tests/test-url.py not using absolute_import
215 tests/test-url.py not using absolute_import
217 tests/test-url.py requires print_function
216 tests/test-url.py requires print_function
218 tests/test-walkrepo.py requires print_function
217 tests/test-walkrepo.py requires print_function
219 tests/test-wireproto.py requires print_function
218 tests/test-wireproto.py requires print_function
220 tests/tinyproxy.py requires print_function
219 tests/tinyproxy.py requires print_function
General Comments 0
You need to be logged in to leave comments. Login now