~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/revision.py

  • Committer: Aaron Bentley
  • Date: 2005-09-10 23:37:36 UTC
  • mto: (1185.3.4)
  • mto: This revision was merged to the branch mainline in revision 1390.
  • Revision ID: aaron.bentley@utoronto.ca-20050910233735-0cc3a7a2617bc79c
more cleanups, docs, sorting stuff

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
 
18
18
import bzrlib.errors
19
 
from bzrlib.graph import farthest_node
 
19
from bzrlib.graph import farthest_nodes
20
20
 
21
21
class RevisionReference(object):
22
22
    """
260
260
    return a_closest[0]
261
261
 
262
262
def revision_graph(revision, revision_source):
 
263
    """Produce a graph of the ancestry of the specified revision.
 
264
    Return root, ancestors map, descendants map
 
265
 
 
266
    TODO: Produce graphs with the NULL revision as root, so that we can find
 
267
    a common even when trees are not branches don't represent a single line
 
268
    of descent.
 
269
    """
263
270
    ancestors = {}
264
271
    descendants = {}
265
272
    lines = [revision]
290
297
    return root, ancestors, descendants
291
298
 
292
299
def combined_graph(revision_a, revision_b, revision_source):
 
300
    """Produce a combined ancestry graph.
 
301
    Return graph root, ancestors map, descendants map, set of common nodes"""
293
302
    root, ancestors, descendants = revision_graph(revision_a, revision_source)
294
303
    root_b, ancestors_b, descendants_b = revision_graph(revision_b, 
295
304
                                                        revision_source)
310
319
def common_ancestor(revision_a, revision_b, revision_source):
311
320
    root, ancestors, descendants, common = \
312
321
        combined_graph(revision_a, revision_b, revision_source)
313
 
    nodes = farthest_node(descendants, ancestors, root)
 
322
    nodes = farthest_nodes(descendants, ancestors, root)
314
323
    for node in nodes:
315
324
        if node in common:
316
325
            return node