~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/store/weave.py

  • Committer: Robert Collins
  • Date: 2005-10-17 11:56:54 UTC
  • mfrom: (1185.16.59)
  • Revision ID: robertc@robertcollins.net-20051017115654-662239e1587524a8
mergeĀ fromĀ martin.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
# files whose id differs only in case.  That should probably be forbidden.
21
21
 
22
22
 
 
23
from cStringIO import StringIO
 
24
import os
23
25
import errno
24
 
import os
25
 
from cStringIO import StringIO
26
 
import urllib
27
26
 
28
27
from bzrlib.weavefile import read_weave, write_weave_v5
29
28
from bzrlib.weave import Weave
48
47
    def filename(self, file_id):
49
48
        """Return the path relative to the transport root."""
50
49
        if self._prefixed:
51
 
            return hash_prefix(file_id) + urllib.quote(file_id) + WeaveStore.FILE_SUFFIX
 
50
            return hash_prefix(file_id) + file_id + WeaveStore.FILE_SUFFIX
52
51
        else:
53
 
            return urllib.quote(file_id) + WeaveStore.FILE_SUFFIX
 
52
            return file_id + WeaveStore.FILE_SUFFIX
54
53
 
55
54
    def __iter__(self):
56
55
        l = len(WeaveStore.FILE_SUFFIX)
57
 
        for relpath in self._iter_files_recursive():
 
56
        for relpath in self._transport.iter_files_recursive():
58
57
            if relpath.endswith(WeaveStore.FILE_SUFFIX):
59
58
                yield os.path.basename(relpath[:-l])
60
59
 
89
88
        w = self.get_weave(file_id, transaction)
90
89
        return w.get(w.lookup(rev_id))
91
90
    
92
 
    def get_weave_prelude_or_empty(self, file_id, transaction):
93
 
        """cheap version that reads the prelude but not the lines
94
 
        """
95
 
        weave = transaction.map.find_weave(file_id)
96
 
        if weave:
97
 
            mutter("cache hit in %s for %s", self, file_id)
98
 
            return weave
99
 
        try:
100
 
            return read_weave(self._get(file_id),prelude=True)
101
 
        except NoSuchFile:
102
 
            return Weave(weave_name=file_id)
103
 
 
104
91
    def get_weave_or_empty(self, file_id, transaction):
105
92
        """Return a weave, or an empty one if it doesn't exist.""" 
106
93
        try: