Mercurial > hgsubversion
changeset 982:ea8ef4dd967e
Merge with stable.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Sun, 11 Nov 2012 15:31:52 -0600 |
parents | 82bbb3428684 (current diff) 9ffa1daf7b08 (diff) |
children | 0ba09ecf5df2 |
files | hgsubversion/wrappers.py |
diffstat | 3 files changed, 22 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/hgsubversion/svnmeta.py +++ b/hgsubversion/svnmeta.py @@ -48,13 +48,13 @@ class SVNMeta(object): self.revmap = maps.RevMap(repo) author_host = self.ui.config('hgsubversion', 'defaulthost', uuid) - authors = self.ui.config('hgsubversion', 'authormap') + authors = util.configpath(self.ui, 'authormap') tag_locations = self.ui.configlist('hgsubversion', 'tagpaths', ['tags']) self.usebranchnames = self.ui.configbool('hgsubversion', 'usebranchnames', True) - branchmap = self.ui.config('hgsubversion', 'branchmap') - tagmap = self.ui.config('hgsubversion', 'tagmap') - filemap = self.ui.config('hgsubversion', 'filemap') + branchmap = util.configpath(self.ui, 'branchmap') + tagmap = util.configpath(self.ui, 'tagmap') + filemap = util.configpath(self.ui, 'filemap') self.branches = {} if os.path.exists(self.branch_info_file):
--- a/hgsubversion/util.py +++ b/hgsubversion/util.py @@ -32,6 +32,9 @@ def formatrev(rev): return '\t(working copy)' return '\t(revision %d)' % rev +def configpath(ui, name): + path = ui.config('hgsubversion', name) + return path and hgutil.expandpath(path) def filterdiff(diff, oldrev, newrev): diff = newfile_devnull_re.sub(r'--- \1\t(revision 0)' '\n' @@ -374,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.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)
--- 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: