~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/revfile.py

  • Committer: mbp at sourcefrog
  • Date: 2005-04-09 02:55:38 UTC
  • Revision ID: mbp@sourcefrog.net-20050409025538-c4170f7052c820bf7e186259
- use -1 for no_base in revfile
- better revfile dumper

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
 
46
46
total 48 bytes.
47
47
 
48
 
The header is also 48 bytes for tidyness.
 
48
The header is also 48 bytes for tidyness and easy calculation.
49
49
 
50
50
Both the index and the text are only ever appended to; a consequence
51
51
is that sequence numbers are stable references.  But not every
73
73
 
74
74
_HEADER = "bzr revfile v1\n"
75
75
_HEADER = _HEADER + ('\xff' * (_RECORDSIZE - len(_HEADER)))
 
76
_NO_BASE = 0xFFFFFFFFL
76
77
 
77
78
class RevfileError(Exception):
78
79
    pass
141
142
        self.datafile.flush()
142
143
 
143
144
        entry = sha.new(t).digest()
144
 
        entry += struct.pack(">llll12x", 0, 0, data_offset, len(t))
 
145
        entry += struct.pack(">IIII12x", 0xFFFFFFFFL, 0, data_offset, len(t))
145
146
        assert len(entry) == _RECORDSIZE
146
147
 
147
148
        self.idxfile.write(entry)
159
160
        if len(rec) != _RECORDSIZE:
160
161
            raise RevfileError("short read of %d bytes getting index %d from %r"
161
162
                               % (len(rec), idx, self.basename))
162
 
        return struct.unpack(">20sllll12x", rec)
 
163
        return struct.unpack(">20sIIII12x", rec)
163
164
 
164
165
        
165
166
        
185
186
        open(self.indexfile(), "a").write(entry)
186
187
        open(self.datafile(), "a").write(data)
187
188
 
188
 
    def dump(self):
189
 
        print '%-8s %-40s %-8s %-8s %-8s %-8s' \
190
 
              % tuple('idx sha1 base flags offset len'.split())
191
 
        print '-'*8, '-'*40, ('-'*8 + ' ')*4
 
189
    def dump(self, f=sys.stdout):
 
190
        f.write('%-8s %-40s %-8s %-8s %-8s %-8s\n' 
 
191
                % tuple('idx sha1 base flags offset len'.split()))
 
192
        f.write('-------- ---------------------------------------- ')
 
193
        f.write('-------- -------- -------- --------\n')
 
194
 
192
195
        for i in range(len(self)):
193
196
            rec = self[i]
194
 
            print "#%-7d %40s #%-7d %08x %8d %8d " \
195
 
                  % (i, hexlify(rec[0]), rec[1], rec[2], rec[3], rec[4])
 
197
            f.write("#%-7d %40s " % (i, hexlify(rec[0])))
 
198
            if rec[1] == _NO_BASE:
 
199
                f.write("(none)   ")
 
200
            else:
 
201
                f.write("#%-7d " % rec[1])
 
202
                
 
203
            f.write("%8x %8d %8d\n" % (rec[2], rec[3], rec[4]))
196
204
        
197
205
 
198
206