~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to weavefile.py

  • Committer: Martin Pool
  • Date: 2005-07-01 03:20:54 UTC
  • mto: This revision was merged to the branch mainline in revision 852.
  • Revision ID: mbp@sourcefrog.net-20050701032054-8646d73879eab190
Store SHA1 in weave file for later verification

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
series of version headers, followed by the weave itself.
28
28
 
29
29
Each version marker has 'v' and the version, then 'i' and the included
30
 
previous versions.  The inclusions do not need to list versions
31
 
included by a parent.
 
30
previous versions, then '1' and the SHA-1 of the text, if known.  The
 
31
inclusions do not need to list versions included by a parent.
32
32
 
33
33
The weave is bracketed by 'w' and 'W' lines, and includes the '{}[]'
34
34
processing instructions.  Lines of text are prefixed by '.' if the
38
38
# TODO: When extracting a single version it'd be enough to just pass
39
39
# an iterator returning the weave lines...
40
40
 
41
 
FORMAT_1 = '# bzr weave file v1\n'
42
 
 
 
41
FORMAT_1 = '# bzr weave file v2\n'
43
42
 
44
43
 
45
44
def write_weave(weave, f, format=None):
78
77
            print >>f
79
78
        else:
80
79
            print >>f, 'i'
 
80
        print >>f, '1', weave._sha1s[version]
81
81
        print >>f
82
82
 
83
83
    print >>f, 'w'
135
135
                w._addversion(full)
136
136
            else:
137
137
                w._addversion(None)
 
138
 
 
139
            l = f.readline()[:-1]
 
140
            assert l.startswith('1 ')
 
141
            w._sha1s.append(l[2:])
 
142
                
138
143
            assert f.readline() == '\n'
139
144
        elif l == 'w\n':
140
145
            break