Mercurial > hgsubversion
changeset 974:336f4bce479a stable
consolidate revision parsing
Accept HEAD for --rev and --skiprevs as well as --startrev, and make
the error message more closely mirror the regular Mercurial error
message.
author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
---|---|
date | Sun, 04 Nov 2012 11:34:16 +0100 (2012-11-04) |
parents | 21197f5ee9de |
children | 9ffa1daf7b08 |
files | hgsubversion/util.py hgsubversion/wrappers.py |
diffstat | 2 files changed, 15 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/hgsubversion/util.py +++ b/hgsubversion/util.py @@ -377,3 +377,13 @@ def lrucachefunc(func, size): return cache[args] return f + +def parse_revnum(svnrepo, r): + try: + return int(r or 0) + except ValueError: + if isinstance(r, str) and r.upper() == 'HEAD': + return svnrepo.last_changed_rev + else: + # TODO: use error.RepoLookupError when we drop 1.3? + raise hgutil.Abort("unknown Subversion revision %r" % r)
--- a/hgsubversion/wrappers.py +++ b/hgsubversion/wrappers.py @@ -307,12 +307,6 @@ def pull(repo, source, heads=[], force=F old_encoding = util.swap_out_encoding() total = None try: - try: - stopat_rev = int(checkout or 0) - except ValueError: - raise hgutil.Abort('unrecognised Subversion revision %s: ' - 'only numbers work.' % checkout) - have_replay = not repo.ui.configbool('hgsubversion', 'stupid') if not have_replay: repo.ui.note('fetching stupidly...\n') @@ -320,6 +314,8 @@ def pull(repo, source, heads=[], force=F svn = source.svn meta = repo.svnmeta(svn.uuid, svn.subdir) + stopat_rev = util.parse_revnum(svn, checkout) + layout = repo.ui.config('hgsubversion', 'layout', 'auto') if layout == 'auto': try: @@ -349,11 +345,8 @@ def pull(repo, source, heads=[], force=F if start <= 0: # we are initializing a new repository - start = repo.ui.config('hgsubversion', 'startrev', 0) - if isinstance(start, str) and start.upper() == 'HEAD': - start = svn.last_changed_rev - else: - start = int(start) + start = util.parse_revnum(svn, repo.ui.config('hgsubversion', + 'startrev', 0)) if start > 0: if layout == 'standard': @@ -369,11 +362,7 @@ def pull(repo, source, heads=[], force=F start = 0 skiprevs = repo.ui.configlist('hgsubversion', 'unsafeskip', '') - try: - skiprevs = set(map(int, skiprevs)) - except ValueError: - raise hgutil.Abort('unrecognised Subversion revisions %r: ' - 'only numbers work.' % checkout) + skiprevs = set(util.parse_revnum(svn, r) for r in skiprevs) oldrevisions = len(meta.revmap) if stopat_rev: