~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/store.py

  • Committer: Martin Pool
  • Date: 2005-04-28 07:24:55 UTC
  • Revision ID: mbp@sourcefrog.net-20050428072453-7b99afa993a1e549
todo

Show diffs side-by-side

added added

removed removed

Lines of Context:
34
34
    pass
35
35
 
36
36
 
37
 
class ImmutableStore(object):
 
37
class ImmutableStore:
38
38
    """Store that holds files indexed by unique names.
39
39
 
40
40
    Files can be added, but not modified once they are in.  Typically
74
74
        self._basedir = basedir
75
75
 
76
76
    def _path(self, id):
77
 
        assert '/' not in id
78
77
        return os.path.join(self._basedir, id)
79
78
 
80
79
    def __repr__(self):
108
107
        f.close()
109
108
 
110
109
 
111
 
    def copy_multi(self, other, ids):
112
 
        """Copy texts for ids from other into self.
113
 
 
114
 
        If an id is present in self, it is skipped.  A count of copied
115
 
        ids is returned, which may be less than len(ids).
116
 
        """
117
 
        from bzrlib.progress import ProgressBar
118
 
        pb = ProgressBar()
119
 
        pb.update('preparing to copy')
120
 
        to_copy = [id for id in ids if id not in self]
121
 
        count = 0
122
 
        for id in to_copy:
123
 
            count += 1
124
 
            pb.update('copy', count, len(to_copy))
125
 
            self.add(other[id], id)
126
 
        assert count == len(to_copy)
127
 
        pb.clear()
128
 
        return count
129
 
    
130
 
 
131
110
    def __contains__(self, fileid):
132
111
        """"""
133
112
        p = self._path(fileid)