mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 23:38:50 +03:00
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:
parent
4b88fb7766
commit
5507a20bc9
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user