~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/versionedfile.py

Merge pt1 hooks branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
2
 
#
3
 
# Authors:
4
 
#   Johan Rydberg <jrydberg@gnu.org>
 
1
# Copyright (C) 2006-2011 Canonical Ltd
5
2
#
6
3
# This program is free software; you can redistribute it and/or modify
7
4
# it under the terms of the GNU General Public License as published by
930
927
 
931
928
    The use of tuples allows a single code base to support several different
932
929
    uses with only the mapping logic changing from instance to instance.
 
930
 
 
931
    :ivar _immediate_fallback_vfs: For subclasses that support stacking,
 
932
        this is a list of other VersionedFiles immediately underneath this
 
933
        one.  They may in turn each have further fallbacks.
933
934
    """
934
935
 
935
936
    def add_lines(self, key, parents, lines, parent_texts=None,
1193
1194
    def _extract_blocks(self, version_id, source, target):
1194
1195
        return None
1195
1196
 
 
1197
    def _transitive_fallbacks(self):
 
1198
        """Return the whole stack of fallback versionedfiles.
 
1199
 
 
1200
        This VersionedFiles may have a list of fallbacks, but it doesn't
 
1201
        necessarily know about the whole stack going down, and it can't know
 
1202
        at open time because they may change after the objects are opened.
 
1203
        """
 
1204
        all_fallbacks = []
 
1205
        for a_vfs in self._immediate_fallback_vfs:
 
1206
            all_fallbacks.append(a_vfs)
 
1207
            all_fallbacks.extend(a_vfs._transitive_fallbacks())
 
1208
        return all_fallbacks
 
1209
 
1196
1210
 
1197
1211
class ThunkedVersionedFiles(VersionedFiles):
1198
1212
    """Storage for many versioned files thunked onto a 'VersionedFile' class.