206
206
def get_delta(self, version):
207
207
"""Get a delta for constructing version from some other version.
209
:return: (delta_parent, sha1, delta)
209
:return: (delta_parent, sha1, noeol, delta)
210
210
Where delta_parent is a version id or None to indicate no parent.
212
212
raise NotImplementedError(self.get_delta)
214
def get_deltas(self, versions):
215
"""Get multiple deltas at once for constructing versions.
217
:return: dict(version_id:(delta_parent, sha1, noeol, delta))
218
Where delta_parent is a version id or None to indicate no parent, and
219
version_id is the version_id created by that delta.
222
for version in versions:
223
result[version] = self.get_delta(version)
214
226
def get_suffixes(self):
215
227
"""Return the file suffixes associated with this versioned file."""
216
228
raise NotImplementedError(self.get_suffixes)
520
532
graph = self.source.get_graph()
521
533
order = topo_sort(graph.items())
522
534
pb = ui.ui_factory.nested_progress_bar()
524
537
# TODO for incremental cross-format work:
525
538
# make a versioned file with the following content:
530
543
# and the incorrect version data will be ignored.
531
544
# TODO: for all ancestors that are present in target already,
532
545
# check them for consistent data, this requires moving sha1 from
547
# TODO: remove parent texts when they are not relevant any more for
548
# memory pressure reduction. RBC 20060313
549
# pb.update('Converting versioned data', 0, len(order))
550
# deltas = self.source.get_deltas(order)
533
551
for index, version in enumerate(order):
534
552
pb.update('Converting versioned data', index, len(order))
535
delta_parent, sha1, noeol, delta = self.source.get_delta(version)
536
target.add_delta(version,
537
self.source.get_parents(version),
553
parent_text = target.add_lines(version,
554
self.source.get_parents(version),
555
self.source.get_lines(version),
556
parent_texts=parent_texts)
557
parent_texts[version] = parent_text
558
#delta_parent, sha1, noeol, delta = deltas[version]
559
#target.add_delta(version,
560
# self.source.get_parents(version),
565
#target.get_lines(version)
543
567
# this should hit the native code path for target
544
568
if target is not self.target: