44 pass |
44 pass |
45 if os.path.isdir(path): |
45 if os.path.isdir(path): |
46 return 'file://%s' % os.path.normpath(os.path.abspath(path)) |
46 return 'file://%s' % os.path.normpath(os.path.abspath(path)) |
47 return path |
47 return path |
48 |
48 |
|
49 def optrev(number): |
|
50 optrev = svn.core.svn_opt_revision_t() |
|
51 optrev.kind = svn.core.svn_opt_revision_number |
|
52 optrev.value.number = number |
|
53 return optrev |
|
54 |
49 class changedpath(object): |
55 class changedpath(object): |
50 def __init__(self, p): |
56 def __init__(self, p): |
51 self.copyfrom_path = p.copyfrom_path |
57 self.copyfrom_path = p.copyfrom_path |
52 self.copyfrom_rev = p.copyfrom_rev |
58 self.copyfrom_rev = p.copyfrom_rev |
53 self.action = p.action |
59 self.action = p.action |
122 except SubversionException, err: |
128 except SubversionException, err: |
123 return [] |
129 return [] |
124 |
130 |
125 def getheads(self): |
131 def getheads(self): |
126 # detect standard /branches, /tags, /trunk layout |
132 # detect standard /branches, /tags, /trunk layout |
127 optrev = svn.core.svn_opt_revision_t() |
133 rev = optrev(self.last_changed) |
128 optrev.kind = svn.core.svn_opt_revision_number |
|
129 optrev.value.number = self.last_changed |
|
130 rpath = self.url.strip('/') |
134 rpath = self.url.strip('/') |
131 cfgtrunk = self.ui.config('convert', 'svn.trunk') |
135 cfgtrunk = self.ui.config('convert', 'svn.trunk') |
132 cfgbranches = self.ui.config('convert', 'svn.branches') |
136 cfgbranches = self.ui.config('convert', 'svn.branches') |
133 trunk = (cfgtrunk or 'trunk').strip('/') |
137 trunk = (cfgtrunk or 'trunk').strip('/') |
134 branches = (cfgbranches or 'branches').strip('/') |
138 branches = (cfgbranches or 'branches').strip('/') |
135 if self.exists(trunk, optrev) and self.exists(branches, optrev): |
139 if self.exists(trunk, rev) and self.exists(branches, rev): |
136 self.ui.note('found trunk at %r and branches at %r\n' % |
140 self.ui.note('found trunk at %r and branches at %r\n' % |
137 (trunk, branches)) |
141 (trunk, branches)) |
138 oldmodule = self.module |
142 oldmodule = self.module |
139 self.module += '/' + trunk |
143 self.module += '/' + trunk |
140 lt = self.latest(self.module, self.last_changed) |
144 lt = self.latest(self.module, self.last_changed) |
141 self.head = self.revid(lt) |
145 self.head = self.revid(lt) |
142 self.heads = [self.head] |
146 self.heads = [self.head] |
143 branchnames = svn.client.ls(rpath + '/' + branches, optrev, False, |
147 branchnames = svn.client.ls(rpath + '/' + branches, rev, False, |
144 self.ctx) |
148 self.ctx) |
145 for branch in branchnames.keys(): |
149 for branch in branchnames.keys(): |
146 if oldmodule: |
150 if oldmodule: |
147 module = '/' + oldmodule + '/' + branches + '/' + branch |
151 module = '/' + oldmodule + '/' + branches + '/' + branch |
148 else: |
152 else: |
624 return data, mode |
628 return data, mode |
625 |
629 |
626 def _find_children(self, path, revnum): |
630 def _find_children(self, path, revnum): |
627 path = path.strip('/') |
631 path = path.strip('/') |
628 pool = Pool() |
632 pool = Pool() |
629 optrev = svn.core.svn_opt_revision_t() |
|
630 optrev.kind = svn.core.svn_opt_revision_number |
|
631 optrev.value.number = revnum |
|
632 rpath = '/'.join([self.base, path]).strip('/') |
633 rpath = '/'.join([self.base, path]).strip('/') |
633 return ['%s/%s' % (path, x) for x in svn.client.ls(rpath, optrev, True, self.ctx, pool).keys()] |
634 return ['%s/%s' % (path, x) for x in svn.client.ls(rpath, optrev(revnum), True, self.ctx, pool).keys()] |