Mercurial > hg-stable
changeset 20374:a3545c3104aa
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.
author | Sean Farley <sean.michael.farley@gmail.com> |
---|---|
date | Tue, 21 Jan 2014 11:20:14 -0600 |
parents | e8203629371b |
children | 81cf597dafa9 |
files | hgext/convert/convcmd.py |
diffstat | 1 files changed, 39 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/convert/convcmd.py Tue Jan 21 11:34:55 2014 -0600 +++ b/hgext/convert/convcmd.py Tue Jan 21 11:20:14 2014 -0600 @@ -120,6 +120,42 @@ 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 @@ 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()