78
79
raise ValueError("invalid property value %r for %r" %
82
def get_history(self, repository):
83
"""Return the canonical line-of-history for this revision.
85
If ghosts are present this may differ in result from a ghost-free
88
current_revision = self
90
while current_revision is not None:
91
reversed_result.append(current_revision.revision_id)
92
if not len (current_revision.parent_ids):
93
reversed_result.append(None)
94
current_revision = None
96
next_revision_id = current_revision.parent_ids[0]
97
current_revision = repository.get_revision(next_revision_id)
98
reversed_result.reverse()
99
return reversed_result
82
102
def is_ancestor(revision_id, candidate_id, branch):
83
103
"""Return true if candidate_id is an ancestor of revision_id.
260
280
return root, ancestors, descendants, common
263
def common_ancestor(revision_a, revision_b, revision_source):
283
def common_ancestor(revision_a, revision_b, revision_source,
265
root, ancestors, descendants, common = \
266
combined_graph(revision_a, revision_b, revision_source)
267
except bzrlib.errors.NoCommonRoot:
268
raise bzrlib.errors.NoCommonAncestor(revision_a, revision_b)
270
distances = node_distances (descendants, ancestors, root)
271
farthest = select_farthest(distances, common)
272
if farthest is None or farthest == NULL_REVISION:
273
raise bzrlib.errors.NoCommonAncestor(revision_a, revision_b)
287
pb.update('Picking ancestor', 1, 3)
288
root, ancestors, descendants, common = \
289
combined_graph(revision_a, revision_b, revision_source)
290
except bzrlib.errors.NoCommonRoot:
291
raise bzrlib.errors.NoCommonAncestor(revision_a, revision_b)
293
pb.update('Picking ancestor', 2, 3)
294
distances = node_distances (descendants, ancestors, root)
295
pb.update('Picking ancestor', 3, 2)
296
farthest = select_farthest(distances, common)
297
if farthest is None or farthest == NULL_REVISION:
298
raise bzrlib.errors.NoCommonAncestor(revision_a, revision_b)