/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/revision.py

remove more duplicate merged hunks. Bad MERGE3, BAD.

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 node_distances, select_farthest, all_descendants
20
 
 
21
 
NULL_REVISION="null:"
 
19
from bzrlib.graph import farthest_nodes, node_distances, all_descendants
22
20
 
23
21
class RevisionReference(object):
24
22
    """
108
106
    revisions_source is an object supporting a get_revision operation that
109
107
    behaves like Branch's.
110
108
    """
111
 
    if candidate_id is None:
112
 
        return True
 
109
 
113
110
    for ancestor_id, distance in iter_ancestors(revision_id, revision_source):
114
111
        if ancestor_id == candidate_id:
115
112
            return True
209
206
    while len(lines) > 0:
210
207
        new_lines = set()
211
208
        for line in lines:
212
 
            if line == NULL_REVISION:
213
 
                parents = []
214
 
                root = NULL_REVISION
215
 
            else:
216
 
                try:
217
 
                    rev = revision_source.get_revision(line)
218
 
                    parents = [p.revision_id for p in rev.parents]
219
 
                    if len(parents) == 0:
220
 
                        parents = [NULL_REVISION]
221
 
                except bzrlib.errors.NoSuchRevision:
222
 
                    if line == revision:
223
 
                        raise
224
 
                    parents = None
 
209
            try:
 
210
                rev = revision_source.get_revision(line)
 
211
                parents = [p.revision_id for p in rev.parents]
 
212
                if len(parents) == 0:
 
213
                    root = line
 
214
            except bzrlib.errors.NoSuchRevision:
 
215
                if line == revision:
 
216
                    raise
 
217
                parents = None
225
218
            if parents is not None:
226
219
                for parent in parents:
227
220
                    if parent not in ancestors:
242
235
    root, ancestors, descendants = revision_graph(revision_a, revision_source)
243
236
    root_b, ancestors_b, descendants_b = revision_graph(revision_b, 
244
237
                                                        revision_source)
245
 
    if root != root_b:
246
 
        raise bzrlib.errors.NoCommonRoot(revision_a, revision_b)
 
238
    assert root == root_b
247
239
    common = set()
248
240
    for node, node_anc in ancestors_b.iteritems():
249
241
        if node in ancestors:
258
250
    return root, ancestors, descendants, common
259
251
 
260
252
def common_ancestor(revision_a, revision_b, revision_source):
261
 
    try:
262
 
        root, ancestors, descendants, common = \
263
 
            combined_graph(revision_a, revision_b, revision_source)
264
 
    except bzrlib.errors.NoCommonRoot:
265
 
        raise bzrlib.errors.NoCommonAncestor(revision_a, revision_b)
266
 
        
267
 
    distances = node_distances (descendants, ancestors, root)
268
 
    farthest = select_farthest(distances, common)
269
 
    if farthest is None or farthest == NULL_REVISION:
270
 
        raise bzrlib.errors.NoCommonAncestor(revision_a, revision_b)
271
 
    return farthest
 
253
    root, ancestors, descendants, common = \
 
254
        combined_graph(revision_a, revision_b, revision_source)
 
255
    nodes = farthest_nodes(descendants, ancestors, root)
 
256
    for node in nodes:
 
257
        if node in common:
 
258
            return node
272
259
 
273
260
class MultipleRevisionSources(object):
274
261
    """Proxy that looks in multiple branches for revisions."""