Mercurial > hg-stable
comparison hgext/convert/subversion.py @ 4814:744371157212
convert: svn: remove svn_paths wrappers
author | Brendan Cully <brendan@kublai.com> |
---|---|
date | Thu, 05 Jul 2007 12:45:41 -0700 |
parents | 1fcdf2fe3d7c |
children | 4cdbaa885d8a |
comparison
equal
deleted
inserted
replaced
4813:1fcdf2fe3d7c | 4814:744371157212 |
---|---|
24 import transport | 24 import transport |
25 except ImportError: | 25 except ImportError: |
26 pass | 26 pass |
27 | 27 |
28 class CompatibilityException(Exception): pass | 28 class CompatibilityException(Exception): pass |
29 | |
30 class svn_entry(object): | |
31 """Emulate a Subversion path change.""" | |
32 __slots__ = ['path', 'copyfrom_path', 'copyfrom_rev', 'action'] | |
33 def __init__(self, entry): | |
34 self.copyfrom_path = entry.copyfrom_path | |
35 self.copyfrom_rev = entry.copyfrom_rev | |
36 self.action = entry.action | |
37 | |
38 def __str__(self): | |
39 return "%s %s %s" % (self.action, self.copyfrom_path, self.copyfrom_rev) | |
40 | |
41 def __repr__(self): | |
42 return self.__str__() | |
43 | |
44 class svn_paths(object): | |
45 """Emulate a Subversion ordered dictionary of changed paths.""" | |
46 __slots__ = ['values', 'order'] | |
47 def __init__(self, orig_paths): | |
48 self.order = [] | |
49 self.values = {} | |
50 if hasattr(orig_paths, 'keys'): | |
51 self.order = sorted(orig_paths.keys()) | |
52 self.values.update(orig_paths) | |
53 return | |
54 if not orig_paths: | |
55 return | |
56 for path in orig_paths: | |
57 self.order.append(path) | |
58 self.values[path] = svn_entry(orig_paths[path]) | |
59 self.order.sort() # maybe the order it came in isn't so great... | |
60 | |
61 def __iter__(self): | |
62 return iter(self.order) | |
63 | |
64 def __getitem__(self, key): | |
65 return self.values[key] | |
66 | |
67 def __str__(self): | |
68 s = "{\n" | |
69 for path in self.order: | |
70 s += "'%s': %s,\n" % (path, self.values[path]) | |
71 s += "}" | |
72 return s | |
73 | |
74 def __repr__(self): | |
75 return self.__str__() | |
76 | 29 |
77 # SVN conversion code stolen from bzr-svn and tailor | 30 # SVN conversion code stolen from bzr-svn and tailor |
78 class convert_svn(converter_source): | 31 class convert_svn(converter_source): |
79 def __init__(self, ui, url, rev=None): | 32 def __init__(self, ui, url, rev=None): |
80 super(convert_svn, self).__init__(ui, url, rev=rev) | 33 super(convert_svn, self).__init__(ui, url, rev=rev) |
211 received.append(arg) | 164 received.append(arg) |
212 | 165 |
213 self.child_cset = None | 166 self.child_cset = None |
214 def parselogentry(*arg, **args): | 167 def parselogentry(*arg, **args): |
215 orig_paths, revnum, author, date, message, pool = arg | 168 orig_paths, revnum, author, date, message, pool = arg |
216 orig_paths = svn_paths(orig_paths) | |
217 | 169 |
218 if self.is_blacklisted(revnum): | 170 if self.is_blacklisted(revnum): |
219 self.ui.note('skipping blacklisted revision %d\n' % revnum) | 171 self.ui.note('skipping blacklisted revision %d\n' % revnum) |
220 return | 172 return |
221 | 173 |
241 if branch == 'trunk': | 193 if branch == 'trunk': |
242 branch = '' | 194 branch = '' |
243 except IndexError: | 195 except IndexError: |
244 branch = None | 196 branch = None |
245 | 197 |
246 for path in orig_paths: | 198 for path in sorted(orig_paths): |
247 # self.ui.write("path %s\n" % path) | 199 # self.ui.write("path %s\n" % path) |
248 if path == self.module: # Follow branching back in history | 200 if path == self.module: # Follow branching back in history |
249 ent = orig_paths[path] | 201 ent = orig_paths[path] |
250 if ent: | 202 if ent: |
251 if ent.copyfrom_path: | 203 if ent.copyfrom_path: |
548 | 500 |
549 def gettags(self): | 501 def gettags(self): |
550 tags = {} | 502 tags = {} |
551 def parselogentry(*arg, **args): | 503 def parselogentry(*arg, **args): |
552 orig_paths, revnum, author, date, message, pool = arg | 504 orig_paths, revnum, author, date, message, pool = arg |
553 orig_paths = svn_paths(orig_paths) | |
554 for path in orig_paths: | 505 for path in orig_paths: |
555 if not path.startswith('/tags/'): | 506 if not path.startswith('/tags/'): |
556 continue | 507 continue |
557 ent = orig_paths[path] | 508 ent = orig_paths[path] |
558 source = ent.copyfrom_path | 509 source = ent.copyfrom_path |