Mercurial > hgsubversion
diff hgsubversion/editor.py @ 436:404162e4bb53
editor: move find missing files routine into RevisionData class
author | Dirkjan Ochtman <dirkjan@ochtman.nl> |
---|---|
date | Tue, 16 Jun 2009 09:11:52 +0200 |
parents | 7c576ae19d80 |
children | 0d3b5acb1d51 |
line wrap: on
line diff
--- a/hgsubversion/editor.py +++ b/hgsubversion/editor.py @@ -77,6 +77,41 @@ class RevisionData(object): self.symlinks[path] = False self.ui.note('D %s\n' % path) + def findmissing(self, svn): + + if not self.missing: + return + + msg = 'fetching %s files that could not use replay.\n' + self.ui.debug(msg % len(self.missing)) + root = svn.subdir and svn.subdir[1:] or '' + r = self.rev.revnum + + files = set() + for p in self.missing: + self.ui.note('.') + self.ui.flush() + if p[-1] == '/': + dir = p[len(root):] + new = [dir + f for f, k in svn.list_files(dir, r) if k == 'f'] + files.update(new) + else: + files.add(p[len(root):]) + + i = 1 + self.ui.note('\nfetching files...\n') + for p in files: + self.ui.note('.') + self.ui.flush() + if i % 50 == 0: + svn.init_ra_and_client() + i += 1 + data, mode = svn.get_file(p, r) + self.set(p, data, 'x' in mode, 'l' in mode) + + self.missing = set() + self.ui.note('\n') + class HgEditor(delta.Editor):