drop support for pre-2.0 versions of Mercurial

This commit is contained in:
Dan Villiom Podlaski Christiansen 2013-08-05 20:49:53 +02:00
parent c81850ef00
commit 1be6c1de4e
7 changed files with 26 additions and 78 deletions

2
README
View File

@ -16,7 +16,7 @@ Installation
------------
You need to have either have Subversion 1.5 (or later) installed along with
either Subvertpy 0.7.4 (or later) or the Subversion SWIG Python bindings. You
need Mercurial 1.3 or later.
need Mercurial 2.0 or later.
.. _mercurial: http://selenic.com/repo/hg
.. _mercurial-stable: http://selenic.com/repo/hg-stable

View File

@ -191,7 +191,7 @@ class HgEditor(svnwrap.Editor):
# A mapping of file paths to batons
self._openpaths = {}
self._deleted = set()
self._getctx = util.lrucachefunc(self.repo.changectx, 3)
self._getctx = hgutil.lrucachefunc(self.repo.changectx)
# A stack of opened directory (baton, path) pairs.
self._opendirs = []
self._missing = set()

View File

@ -135,7 +135,7 @@ def _buildmeta(ui, repo, args, partial=False, skipuuid=False):
# of the repository instead. During this traversal, we find all converted
# changesets that close a branch, and store their first parent
for rev in xrange(startrev, len(repo)):
util.progress(ui, 'prepare', rev - startrev, total=numrevs)
ui.progress('prepare', rev - startrev, total=numrevs)
try:
ctx = repo[rev]
except error.RepoError:
@ -165,10 +165,10 @@ def _buildmeta(ui, repo, args, partial=False, skipuuid=False):
closed.add(parentctx.rev())
lastpulled.write(str(youngest) + '\n')
util.progress(ui, 'prepare', None, total=numrevs)
ui.progress('prepare', None, total=numrevs)
for rev in xrange(startrev, len(repo)):
util.progress(ui, 'rebuild', rev-startrev, total=numrevs)
ui.progress('rebuild', rev-startrev, total=numrevs)
try:
ctx = repo[rev]
except error.RepoError:
@ -300,7 +300,7 @@ def _buildmeta(ui, repo, args, partial=False, skipuuid=False):
int(parentrev),
revision)
util.progress(ui, 'rebuild', None, total=numrevs)
ui.progress('rebuild', None, total=numrevs)
# save off branch info
branchinfofile = open(os.path.join(svnmetadir, 'branch_info'), 'w')

View File

@ -148,16 +148,6 @@ def pickle_atomic(data, file_path):
else:
f.close()
# TODO remove when we drop 1.3 support
def progress(ui, *args, **kwargs):
if getattr(ui, 'progress', False):
return ui.progress(*args, **kwargs)
# TODO remove when we drop 1.5 support
remoteui = getattr(cmdutil, 'remoteui', getattr(hg, 'remoteui', False))
if not remoteui:
raise ImportError('Failed to import remoteui')
def parseurl(url, heads=[]):
parsed = hg.parseurl(url, heads)
if len(parsed) == 3:
@ -373,35 +363,6 @@ def getfilestoresize(ui):
size = -1
return size
# Copy-paste from mercurial.util to avoid having to deal with backward
# compatibility, plus the cache size is configurable.
def lrucachefunc(func, size):
'''cache most recent results of function calls'''
cache = {}
order = deque()
if func.func_code.co_argcount == 1:
def f(arg):
if arg not in cache:
if len(cache) > size:
del cache[order.popleft()]
cache[arg] = func(arg)
else:
order.remove(arg)
order.append(arg)
return cache[arg]
else:
def f(*args):
if args not in cache:
if len(cache) > size:
del cache[order.popleft()]
cache[args] = func(*args)
else:
order.remove(args)
order.append(args)
return cache[args]
return f
def parse_revnum(svnrepo, r):
try:
return int(r or 0)
@ -409,5 +370,4 @@ def parse_revnum(svnrepo, r):
if isinstance(r, str) and r.lower() in ('head', 'tip'):
return svnrepo.last_changed_rev
else:
# TODO: use error.RepoLookupError when we drop 1.3?
raise hgutil.Abort("unknown Subversion revision %r" % r)
raise error.RepoLookupError("unknown Subversion revision %r" % r)

View File

@ -59,7 +59,7 @@ def verify(ui, repo, args=None, **opts):
svndata = svn.list_files(branchpath, srev)
for i, (fn, type) in enumerate(svndata):
util.progress(ui, 'verify', i, total=len(hgfiles))
ui.progress('verify', i, total=len(hgfiles))
if type != 'f':
continue
@ -90,7 +90,7 @@ def verify(ui, repo, args=None, **opts):
ui.write('missing file: %s\n' % f)
result = 1
util.progress(ui, 'verify', None, total=len(hgfiles))
ui.progress('verify', None, total=len(hgfiles))
else:
class VerifyEditor(svnwrap.Editor):
@ -132,7 +132,7 @@ def verify(ui, repo, args=None, **opts):
self.props = None
self.seen += 1
util.progress(self.ui, 'verify', self.seen, total=self.total)
self.ui.progress('verify', self.seen, total=self.total)
def open_file(self, path, base_revnum):
raise NotImplementedError()
@ -191,7 +191,7 @@ def verify(ui, repo, args=None, **opts):
raise NotImplementedError()
def check(self):
util.progress(self.ui, 'verify', None, total=self.total)
self.ui.progress('verify', None, total=self.total)
for f in self.unexpected:
self.ui.warn('unexpected file: %s\n' % f)

View File

@ -1,11 +1,7 @@
from hgext import rebase as hgrebase
from mercurial import cmdutil
try:
from mercurial import discovery
discovery.nullid # force demandimport to import the module
except ImportError:
discovery = None
from mercurial import discovery
from mercurial import patch
from mercurial import hg
from mercurial import util as hgutil
@ -13,6 +9,8 @@ from mercurial import node
from mercurial import i18n
from mercurial import extensions
from mercurial import repair
from mercurial import revset
from mercurial import scmutil
import layouts
import os
@ -23,12 +21,6 @@ import svnwrap
import svnrepo
import util
try:
from mercurial import scmutil
revpair = scmutil.revpair
except ImportError:
revpair = cmdutil.revpair
pullfuns = {
True: replay.convert_rev,
False: stupidmod.convert_rev,
@ -128,11 +120,10 @@ def findcommonoutgoing(repo, other, onlyheads=None, force=False,
parent = repo.parents()[0].node()
hashes = meta.revmap.hashes()
common, heads = util.outgoing_common_and_heads(repo, hashes, parent)
if discovery is not None:
outobj = getattr(discovery, 'outgoing', None)
if outobj is not None:
# Mercurial 2.1 and later
return outobj(repo.changelog, common, heads)
outobj = getattr(discovery, 'outgoing', None)
if outobj is not None:
# Mercurial 2.1 and later
return outobj(repo.changelog, common, heads)
# Mercurial 2.0 and earlier
return common, heads
@ -163,7 +154,7 @@ def diff(orig, ui, repo, *args, **opts):
if o_r:
parent = repo[o_r[-1]].parents()[0]
opts['rev'] = ['%s:.' % node.hex(parent.node()), ]
node1, node2 = revpair(repo, opts['rev'])
node1, node2 = scmutil.revpair(repo, opts['rev'])
baserev, _junk = hashes.get(node1, (-1, 'junk'))
newrev, _junk = hashes.get(node2, (-1, 'junk'))
it = patch.diff(repo, node1, node2,
@ -181,11 +172,7 @@ def push(repo, dest, force, revs):
"""push revisions starting at a specified head back to Subversion.
"""
assert not revs, 'designated revisions for push remains unimplemented.'
if hasattr(cmdutil, 'bail_if_changed'):
cmdutil.bail_if_changed(repo)
else:
# Since 1.9 (d68ddccf276b)
cmdutil.bailifchanged(repo)
cmdutil.bailifchanged(repo)
checkpush = getattr(repo, 'checkpush', None)
if checkpush:
checkpush(force, revs)
@ -328,7 +315,8 @@ def push(repo, dest, force, revs):
parent = repo[None].p1()
if parent.node() in temporary_commits:
hg.update(repo, parent.p1().node())
repair.strip(ui, repo, temporary_commits, backup=None)
for n in temporary_commits:
repair.strip(ui, repo, n, backup=None)
finally:
util.swap_out_encoding(old_encoding)
return 1 # so we get a sane exit status, see hg's commands.push
@ -429,7 +417,7 @@ def pull(repo, source, heads=[], force=False):
w = hgutil.termwidth()
bits = (r.revnum, r.author, msg)
ui.status(('[r%d] %s: %s' % bits)[:w] + '\n')
util.progress(ui, 'pull', r.revnum - start, total=total)
ui.progress('pull', r.revnum - start, total=total)
meta.save_tbdelta(tbdelta)
close = pullfuns[have_replay](ui, meta, svn, r, tbdelta,
@ -464,7 +452,7 @@ def pull(repo, source, heads=[], force=False):
ui.traceback()
finally:
if total is not None:
util.progress(ui, 'pull', None, total=total)
ui.progress('pull', None, total=total)
util.swap_out_encoding(old_encoding)
if lastpulled is not None:

View File

@ -2,9 +2,9 @@ import test_util
import unittest
from mercurial import error
from mercurial import hg
from mercurial import node
from mercurial import util as hgutil
class TestFetchBranches(test_util.TestBase):
def _load_fixture_and_fetch_with_anchor(self, fixture_name, anchor):
@ -108,7 +108,7 @@ class TestFetchBranches(test_util.TestBase):
self.test_branch_tip_update_to_default(True)
def test_branch_pull_anchor(self):
self.assertRaises(hgutil.Abort,
self.assertRaises(error.RepoLookupError,
self._load_fixture_and_fetch_with_anchor,
'unorderedbranch.svndump', 'NaN')
repo = self._load_fixture_and_fetch_with_anchor(