~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/versionedfile.py

  • Committer: Richard Wilbur
  • Date: 2016-02-04 19:07:28 UTC
  • mto: This revision was merged to the branch mainline in revision 6618.
  • Revision ID: richard.wilbur@gmail.com-20160204190728-p0zvfii6zase0fw7
Update COPYING.txt from the original http://www.gnu.org/licenses/gpl-2.0.txt  (Only differences were in whitespace.)  Thanks to Petr Stodulka for pointing out the discrepancy.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""Versioned text file storage api."""
18
18
 
 
19
from __future__ import absolute_import
 
20
 
19
21
from copy import copy
20
22
from cStringIO import StringIO
21
23
import os
24
26
 
25
27
from bzrlib.lazy_import import lazy_import
26
28
lazy_import(globals(), """
27
 
import urllib
28
 
 
29
29
from bzrlib import (
30
30
    annotate,
31
31
    bencode,
38
38
    multiparent,
39
39
    tsort,
40
40
    revision,
 
41
    urlutils,
41
42
    )
42
43
""")
43
44
from bzrlib.registry import Registry
821
822
 
822
823
    def map(self, key):
823
824
        """See KeyMapper.map()."""
824
 
        return urllib.quote(self._map(key))
 
825
        return urlutils.quote(self._map(key))
825
826
 
826
827
    def unmap(self, partition_id):
827
828
        """See KeyMapper.unmap()."""
828
 
        return self._unmap(urllib.unquote(partition_id))
 
829
        return self._unmap(urlutils.unquote(partition_id))
829
830
 
830
831
 
831
832
class PrefixMapper(URLEscapeMapper):
878
879
    def _escape(self, prefix):
879
880
        """Turn a key element into a filesystem safe string.
880
881
 
881
 
        This is similar to a plain urllib.quote, except
 
882
        This is similar to a plain urlutils.quote, except
882
883
        it uses specific safe characters, so that it doesn't
883
884
        have to translate a lot of valid file ids.
884
885
        """
891
892
 
892
893
    def _unescape(self, basename):
893
894
        """Escaped names are easily unescaped by urlutils."""
894
 
        return urllib.unquote(basename)
 
895
        return urlutils.unquote(basename)
895
896
 
896
897
 
897
898
def make_versioned_files_factory(versioned_file_factory, mapper):
972
973
    def _add_text(self, key, parents, text, nostore_sha=None, random_id=False):
973
974
        """Add a text to the store.
974
975
 
975
 
        This is a private function for use by CommitBuilder.
 
976
        This is a private function for use by VersionedFileCommitBuilder.
976
977
 
977
978
        :param key: The key tuple of the text to add. If the last element is
978
979
            None, a CHK string will be generated during the addition.
1422
1423
        return result
1423
1424
 
1424
1425
 
 
1426
class VersionedFilesWithFallbacks(VersionedFiles):
 
1427
 
 
1428
    def without_fallbacks(self):
 
1429
        """Return a clone of this object without any fallbacks configured."""
 
1430
        raise NotImplementedError(self.without_fallbacks)
 
1431
 
 
1432
    def add_fallback_versioned_files(self, a_versioned_files):
 
1433
        """Add a source of texts for texts not present in this knit.
 
1434
 
 
1435
        :param a_versioned_files: A VersionedFiles object.
 
1436
        """
 
1437
        raise NotImplementedError(self.add_fallback_versioned_files)
 
1438
 
 
1439
    def get_known_graph_ancestry(self, keys):
 
1440
        """Get a KnownGraph instance with the ancestry of keys."""
 
1441
        parent_map, missing_keys = self._index.find_ancestry(keys)
 
1442
        for fallback in self._transitive_fallbacks():
 
1443
            if not missing_keys:
 
1444
                break
 
1445
            (f_parent_map, f_missing_keys) = fallback._index.find_ancestry(
 
1446
                                                missing_keys)
 
1447
            parent_map.update(f_parent_map)
 
1448
            missing_keys = f_missing_keys
 
1449
        kg = _mod_graph.KnownGraph(parent_map)
 
1450
        return kg
 
1451
 
 
1452
 
1425
1453
class _PlanMergeVersionedFile(VersionedFiles):
1426
1454
    """A VersionedFile for uncommitted and committed texts.
1427
1455