221
222
def add_version(self, lines, version_id, parent_ids,
222
force_snapshot=None):
223
force_snapshot=None, single_parent=False):
223
224
if force_snapshot is None:
224
225
do_snapshot = self.do_snapshot(version_id, parent_ids)
228
229
self._snapshots.add(version_id)
229
230
diff = MultiParent([NewText(lines)])
231
parent_lines = self.get_line_list(parent_ids)
233
parent_lines = self.get_line_list(parent_ids[:1])
235
parent_lines = self.get_line_list(parent_ids)
232
236
diff = MultiParent.from_lines(lines, parent_lines)
233
237
self.add_diff(diff, version_id, parent_ids)
234
238
self._lines[version_id] = lines
237
241
self._diffs[version_id] = diff
238
242
self._parents[version_id] = parent_ids
240
def import_versionedfile(self, vf, ft_set=None, no_cache=True,):
244
def import_versionedfile(self, vf, snapshots, no_cache=True,
245
single_parent=False):
246
"""Import all revisions of a versionedfile
248
:param vf: The versionedfile to import
249
:param snapshots: If provided, the revisions to make snapshots of.
250
Otherwise, this will be auto-determined
251
:param no_cache: If true, clear the cache after every add.
252
:param single_parent: If true, omit all but one parent text, (but
253
retain parent metadata).
241
255
revisions = set(vf.versions())
242
256
total = len(revisions)
243
while len(revisions) > 0:
245
for revision in revisions:
246
parents = vf.get_parents(revision)
247
if [p for p in parents if p not in self._diffs] != []:
249
lines = [a + ' ' + l for a, l in vf.annotate_iter(revision)]
251
force_snapshot = None
253
force_snapshot = (revision in ft_set)
254
self.add_version(lines, revision, parents, force_snapshot)
258
revisions = [r for r in revisions if r not in added]
259
print >> sys.stderr, "%.1f %%" % ((((total - len(revisions))
257
pb = ui.ui_factory.nested_progress_bar()
259
while len(revisions) > 0:
261
for revision in revisions:
262
parents = vf.get_parents(revision)
263
if [p for p in parents if p not in self._diffs] != []:
265
lines = [a + ' ' + l for a, l in
266
vf.annotate_iter(revision)]
268
force_snapshot = None
270
force_snapshot = (revision in ft_set)
271
self.add_version(lines, revision, parents, force_snapshot,
276
pb.update('Importing revisions',
277
(total - len(revisions)) + len(added), total)
278
revisions = [r for r in revisions if r not in added]
262
282
def clear_cache(self):
263
283
self._lines.clear()