Mercurial > hgsubversion
changeset 1420:014c47a8e653
svncommands: get rid of RevMap.readmapfile
This is a part of the bigger plan to get rid of reading or writing rev_map
directly without going through the RevMap class.
Since we have enough pieces to not use RevMap.readmapfile directly, use
them in _buildmeta.
author | Jun Wu <quark@fb.com> |
---|---|
date | Sat, 14 May 2016 20:05:40 +0100 |
parents | 2e4145e452cd |
children | 0094f222c5dc |
files | hgsubversion/svncommands.py |
diffstat | 1 files changed, 9 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/hgsubversion/svncommands.py +++ b/hgsubversion/svncommands.py @@ -64,8 +64,8 @@ def _buildmeta(ui, repo, args, partial=F youngest = 0 startrev = 0 - sofar = [] branchinfo = {} + revmap = meta.revmap if partial: try: # we can't use meta.lastpulled here because we are bootstraping the @@ -75,9 +75,8 @@ def _buildmeta(ui, repo, args, partial=F youngestpath = os.path.join(meta.metapath, 'lastpulled') if os.path.exists(youngestpath): youngest = util.load(youngestpath) - sofar = list(maps.RevMap.readmapfile(meta.revmap_file)) - if sofar and len(sofar[-1].split(' ', 2)) > 1: - lasthash = sofar[-1].split(' ', 2)[1] + lasthash = revmap.lasthash + if len(revmap) > 0 and lasthash: startrev = repo[lasthash].rev() + 1 branchinfo = util.load(meta.branch_info_file) foundpartialinfo = True @@ -91,9 +90,9 @@ def _buildmeta(ui, repo, args, partial=F except AttributeError: ui.status('no metadata available -- doing a full rebuild\n') - revmap = open(meta.revmap_file, 'w') - revmap.write('%d\n' % maps.RevMap.VERSION) - revmap.writelines(sofar) + if not partial: + revmap.clear() + last_rev = -1 if not partial and os.path.exists(meta.tagfile): os.unlink(meta.tagfile) @@ -140,6 +139,7 @@ def _buildmeta(ui, repo, args, partial=F meta.lastpulled = youngest ui.progress('prepare', None, total=numrevs) + revmapbuf = [] for rev in xrange(startrev, len(repo)): ui.progress('rebuild', rev-startrev, total=numrevs) try: @@ -226,7 +226,7 @@ def _buildmeta(ui, repo, args, partial=F continue branch = meta.layoutobj.localname(commitpath) - revmap.write('%s %s %s\n' % (revision, ctx.hex(), branch or '')) + revmapbuf.append((revision, branch, ctx.node())) revision = int(revision) if revision > last_rev: @@ -276,6 +276,7 @@ def _buildmeta(ui, repo, args, partial=F int(parentrev), revision) + revmap.batchset(revmapbuf) ui.progress('rebuild', None, total=numrevs) # save off branch info