Mercurial > hg > mercurial-crew-with-dirclash
comparison hgext/convert/subversion.py @ 4792:1f10a6cccdb5
convert: add optional module argument to svn._fetch_revisions
author | Brendan Cully <brendan@kublai.com> |
---|---|
date | Tue, 03 Jul 2007 15:12:07 -0700 |
parents | 9f20f4b205ba |
children | ea618c5934f3 |
comparison
equal
deleted
inserted
replaced
4791:9f20f4b205ba | 4792:1f10a6cccdb5 |
---|---|
128 return (u"svn:%s%s@%s" % (self.uuid, self.module, revnum)).decode(self.encoding) | 128 return (u"svn:%s%s@%s" % (self.uuid, self.module, revnum)).decode(self.encoding) |
129 | 129 |
130 def revnum(self, rev): | 130 def revnum(self, rev): |
131 return int(rev.split('@')[-1]) | 131 return int(rev.split('@')[-1]) |
132 | 132 |
133 def revsplit(self, rev): | |
134 url, revnum = rev.encode(self.encoding).split('@', 1) | |
135 revnum = int(revnum) | |
136 parts = url.split('/', 1) | |
137 uuid = parts.pop(0)[4:] | |
138 mod = '/' | |
139 if parts: | |
140 mod += parts[0] | |
141 return uuid, mod, revnum | |
142 | |
133 def latest(self, path, stop=0): | 143 def latest(self, path, stop=0): |
134 'find the latest revision affecting path, up to stop' | 144 'find the latest revision affecting path, up to stop' |
135 if not stop: | 145 if not stop: |
136 stop = svn.ra.get_latest_revnum(self.ra) | 146 stop = svn.ra.get_latest_revnum(self.ra) |
137 try: | 147 try: |
168 def reparent(self, module): | 178 def reparent(self, module): |
169 svn_url = self.base + module | 179 svn_url = self.base + module |
170 self.ui.debug("reparent to %s\n" % svn_url.encode(self.encoding)) | 180 self.ui.debug("reparent to %s\n" % svn_url.encode(self.encoding)) |
171 svn.ra.reparent(self.ra, svn_url.encode(self.encoding)) | 181 svn.ra.reparent(self.ra, svn_url.encode(self.encoding)) |
172 | 182 |
173 def _fetch_revisions(self, from_revnum = 0, to_revnum = 347, pb=None): | 183 def _fetch_revisions(self, from_revnum = 0, to_revnum = 347, module=None): |
174 # batching is broken for branches | 184 # batching is broken for branches |
175 to_revnum = 0 | 185 to_revnum = 0 |
176 if not hasattr(self, 'child_rev'): | 186 if not hasattr(self, 'child_rev'): |
177 self.child_rev = from_revnum | 187 self.child_rev = from_revnum |
178 self.child_cset = self.commits.get(self.child_rev) | 188 self.child_cset = self.commits.get(self.child_rev) |
431 self.child_cset.parents = [rev] | 441 self.child_cset.parents = [rev] |
432 self.commits[self.child_rev] = self.child_cset | 442 self.commits[self.child_rev] = self.child_cset |
433 self.child_cset = cset | 443 self.child_cset = cset |
434 self.child_rev = rev | 444 self.child_rev = rev |
435 | 445 |
446 if module is None: | |
447 module = self.module | |
436 try: | 448 try: |
437 discover_changed_paths = True | 449 discover_changed_paths = True |
438 strict_node_history = False | 450 strict_node_history = False |
439 svn.ra.get_log(self.ra, [self.module], from_revnum, to_revnum, 0, | 451 svn.ra.get_log(self.ra, [module], from_revnum, to_revnum, 0, |
440 discover_changed_paths, strict_node_history, | 452 discover_changed_paths, strict_node_history, |
441 parselogentry) | 453 parselogentry) |
442 self.last_revnum = to_revnum | 454 self.last_revnum = to_revnum |
443 except SubversionException, (_, num): | 455 except SubversionException, (_, num): |
444 if num == svn.core.SVN_ERR_FS_NO_SUCH_REVISION: | 456 if num == svn.core.SVN_ERR_FS_NO_SUCH_REVISION: |
495 cl.sort() | 507 cl.sort() |
496 return cl | 508 return cl |
497 | 509 |
498 def getcommit(self, rev): | 510 def getcommit(self, rev): |
499 if rev not in self.commits: | 511 if rev not in self.commits: |
500 revnum = self.revnum(rev) | 512 uuid, module, revnum = self.revsplit(rev) |
501 minrev = revnum - LOG_BATCH_SIZE > 0 and revnum - LOG_BATCH_SIZE or 0 | 513 minrev = revnum - LOG_BATCH_SIZE > 0 and revnum - LOG_BATCH_SIZE or 0 |
502 self._fetch_revisions(from_revnum=revnum, to_revnum=minrev) | 514 self._fetch_revisions(from_revnum=revnum, to_revnum=minrev, |
515 module=module) | |
503 return self.commits[rev] | 516 return self.commits[rev] |
504 | 517 |
505 def gettags(self): | 518 def gettags(self): |
506 return [] | 519 return [] |
507 | 520 |