~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/store.py

  • Committer: Martin Pool
  • Date: 2005-06-20 03:29:21 UTC
  • Revision ID: mbp@sourcefrog.net-20050620032921-240d0ade23545055
- remove redundant precursor check

Show diffs side-by-side

added added

removed removed

Lines of Context:
34
34
    pass
35
35
 
36
36
 
37
 
class ImmutableStore:
 
37
class ImmutableStore(object):
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
77
78
        return os.path.join(self._basedir, id)
78
79
 
79
80
    def __repr__(self):
94
95
 
95
96
        p = self._path(fileid)
96
97
        if os.access(p, os.F_OK) or os.access(p + '.gz', os.F_OK):
97
 
            bailout("store %r already contains id %r" % (self._basedir, fileid))
 
98
            raise BzrError("store %r already contains id %r" % (self._basedir, fileid))
98
99
 
99
100
        if compressed:
100
101
            f = gzip.GzipFile(p + '.gz', 'wb')
107
108
        f.close()
108
109
 
109
110
 
 
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
 
110
131
    def __contains__(self, fileid):
111
132
        """"""
112
133
        p = self._path(fileid)