Show More
@@ -155,8 +155,7 b' def convert(ui, src, dest=None, revmapfi' | |||||
155 | (forces target IDs to change). It takes a boolean argument and |
|
155 | (forces target IDs to change). It takes a boolean argument and | |
156 | defaults to False. |
|
156 | defaults to False. | |
157 |
|
157 | |||
158 | :convert.hg.startrev: convert start revision and its descendants. |
|
158 | :convert.hg.revs: revset specifying the source revisions to convert. | |
159 | It takes a hg revision identifier and defaults to 0. |
|
|||
160 |
|
159 | |||
161 | CVS Source |
|
160 | CVS Source | |
162 | ########## |
|
161 | ########## |
@@ -21,7 +21,7 b'' | |||||
21 | import os, time, cStringIO |
|
21 | import os, time, cStringIO | |
22 | from mercurial.i18n import _ |
|
22 | from mercurial.i18n import _ | |
23 | from mercurial.node import bin, hex, nullid |
|
23 | from mercurial.node import bin, hex, nullid | |
24 | from mercurial import hg, util, context, bookmarks, error |
|
24 | from mercurial import hg, util, context, bookmarks, error, scmutil | |
25 |
|
25 | |||
26 | from common import NoRepo, commit, converter_source, converter_sink |
|
26 | from common import NoRepo, commit, converter_source, converter_sink | |
27 |
|
27 | |||
@@ -252,23 +252,37 b' class mercurial_source(converter_source)' | |||||
252 | self.convertfp = None |
|
252 | self.convertfp = None | |
253 | # Restrict converted revisions to startrev descendants |
|
253 | # Restrict converted revisions to startrev descendants | |
254 | startnode = ui.config('convert', 'hg.startrev') |
|
254 | startnode = ui.config('convert', 'hg.startrev') | |
255 | if startnode is not None: |
|
255 | hgrevs = ui.config('convert', 'hg.revs') | |
256 | try: |
|
256 | if hgrevs is None: | |
257 | startnode = self.repo.lookup(startnode) |
|
257 | if startnode is not None: | |
258 | except error.RepoError: |
|
258 | try: | |
259 | raise util.Abort(_('%s is not a valid start revision') |
|
259 | startnode = self.repo.lookup(startnode) | |
260 | % startnode) |
|
260 | except error.RepoError: | |
261 | startrev = self.repo.changelog.rev(startnode) |
|
261 | raise util.Abort(_('%s is not a valid start revision') | |
262 | children = {startnode: 1} |
|
262 | % startnode) | |
263 |
|
|
263 | startrev = self.repo.changelog.rev(startnode) | |
264 |
children |
|
264 | children = {startnode: 1} | |
265 | self.keep = children.__contains__ |
|
265 | for r in self.repo.changelog.descendants([startrev]): | |
|
266 | children[self.repo.changelog.node(r)] = 1 | |||
|
267 | self.keep = children.__contains__ | |||
|
268 | else: | |||
|
269 | self.keep = util.always | |||
|
270 | if rev: | |||
|
271 | self._heads = [self.repo[rev].node()] | |||
|
272 | else: | |||
|
273 | self._heads = self.repo.heads() | |||
266 | else: |
|
274 | else: | |
267 | self.keep = util.always |
|
275 | if rev or startnode is not None: | |
268 | if rev: |
|
276 | raise util.Abort(_('hg.revs cannot be combined with ' | |
269 | self._heads = [self.repo[rev].node()] |
|
277 | 'hg.startrev or --rev')) | |
270 | else: |
|
278 | nodes = set() | |
271 |
|
|
279 | parents = set() | |
|
280 | for r in scmutil.revrange(self.repo, [hgrevs]): | |||
|
281 | ctx = self.repo[r] | |||
|
282 | nodes.add(ctx.node()) | |||
|
283 | parents.update(p.node() for p in ctx.parents()) | |||
|
284 | self.keep = nodes.__contains__ | |||
|
285 | self._heads = nodes - parents | |||
272 |
|
286 | |||
273 | def changectx(self, rev): |
|
287 | def changectx(self, rev): | |
274 | if self.lastrev != rev: |
|
288 | if self.lastrev != rev: |
@@ -183,3 +183,23 b' Convert from merge' | |||||
183 | b |
|
183 | b | |
184 | $ hg -q verify |
|
184 | $ hg -q verify | |
185 | $ cd .. |
|
185 | $ cd .. | |
|
186 | ||||
|
187 | Convert from revset in convert.hg.revs | |||
|
188 | ||||
|
189 | $ hg convert --config convert.hg.revs='3:4+0' source revsetrepo | |||
|
190 | initializing destination revsetrepo repository | |||
|
191 | scanning source... | |||
|
192 | sorting... | |||
|
193 | converting... | |||
|
194 | 2 0: add a b f | |||
|
195 | 1 3: change a | |||
|
196 | 0 4: merge 2 and 3 | |||
|
197 | ||||
|
198 | $ glog revsetrepo | |||
|
199 | o 2 "4: merge 2 and 3" files: b c d e f | |||
|
200 | | | |||
|
201 | o 1 "3: change a" files: a | |||
|
202 | | | |||
|
203 | o 0 "0: add a b f" files: a b f | |||
|
204 | ||||
|
205 | $ cd .. |
@@ -135,9 +135,8 b'' | |||||
135 | store original revision ID in changeset (forces target IDs |
|
135 | store original revision ID in changeset (forces target IDs | |
136 | to change). It takes a boolean argument and defaults to |
|
136 | to change). It takes a boolean argument and defaults to | |
137 | False. |
|
137 | False. | |
138 |
convert.hg. |
|
138 | convert.hg.revs | |
139 | convert start revision and its descendants. It takes a hg |
|
139 | revset specifying the source revisions to convert. | |
140 | revision identifier and defaults to 0. |
|
|||
141 |
|
140 | |||
142 | CVS Source |
|
141 | CVS Source | |
143 | ########## |
|
142 | ########## |
General Comments 0
You need to be logged in to leave comments.
Login now