~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/revision.py

merge from aaron - fixes bare excepts, adds ancestor namespace

Show diffs side-by-side

added added

removed removed

Lines of Context:
235
235
    root, ancestors, descendants = revision_graph(revision_a, revision_source)
236
236
    root_b, ancestors_b, descendants_b = revision_graph(revision_b, 
237
237
                                                        revision_source)
238
 
    assert root == root_b
 
238
    if root != root_b:
 
239
        raise bzrlib.errors.NoCommonRoot(revision_a, revision_b)
239
240
    common = set()
240
241
    for node, node_anc in ancestors_b.iteritems():
241
242
        if node in ancestors:
250
251
    return root, ancestors, descendants, common
251
252
 
252
253
def common_ancestor(revision_a, revision_b, revision_source):
253
 
    root, ancestors, descendants, common = \
254
 
        combined_graph(revision_a, revision_b, revision_source)
 
254
    try:
 
255
        root, ancestors, descendants, common = \
 
256
            combined_graph(revision_a, revision_b, revision_source)
 
257
    except bzrlib.errors.NoCommonRoot:
 
258
        raise bzrlib.errors.NoCommonAncestor(revision_a, revision_b)
 
259
        
255
260
    nodes = farthest_nodes(descendants, ancestors, root)
256
261
    for node in nodes:
257
262
        if node in common:
258
263
            return node
 
264
    raise bzrlib.errors.NoCommonAncestor(revision_a, revision_b)
259
265
 
260
266
class MultipleRevisionSources(object):
261
267
    """Proxy that looks in multiple branches for revisions."""