convert: add parseclosemap method

This is a copy of the parsesplicemap method and will serve as a way to specify
which changesets to close while converting.
This commit is contained in:
Sean Farley 2014-01-21 11:20:14 -06:00
parent 4b88fb7766
commit 5507a20bc9

View File

@ -120,6 +120,42 @@ class converter(object):
self.splicemap = self.parsesplicemap(opts.get('splicemap'))
self.branchmap = mapfile(ui, opts.get('branchmap'))
self.closemap = self.parseclosemap(opts.get('closemap'))
def parseclosemap(self, path):
""" check and validate the closemap format and
return a list of revs to close.
Format checking has two parts.
1. generic format which is same across all source types
2. specific format checking which may be different for
different source type. This logic is implemented in
checkrevformat function in source files like
hg.py, subversion.py etc.
"""
if not path:
return []
m = []
try:
fp = open(path, 'r')
for i, line in enumerate(fp):
line = line.splitlines()[0].rstrip()
if not line:
# Ignore blank lines
continue
# split line
lex = shlex.shlex(line, posix=True)
lex.whitespace_split = True
lex.whitespace += ','
line = list(lex)
for part in line:
self.source.checkrevformat(part, 'closemap')
m.extend(line)
# if file does not exist or error reading, exit
except IOError:
raise util.Abort(_('closemap file not found or error reading %s:')
% path)
return m
def parsesplicemap(self, path):
""" check and validate the splicemap format and
@ -408,6 +444,9 @@ class converter(object):
except KeyError:
parents = [b[0] for b in pbranches]
source = progresssource(self.ui, self.source, len(files))
if self.closemap and rev in self.closemap:
commit.extra['close'] = 1
newnode = self.dest.putcommit(files, copies, parents, commit,
source, self.map)
source.close()