~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to prepare_shelf.py

  • Committer: Aaron Bentley
  • Date: 2008-10-06 19:34:00 UTC
  • mto: (0.15.1 unshelve)
  • mto: This revision was merged to the branch mainline in revision 3820.
  • Revision ID: aaron@aaronbentley.com-20081006193400-ioply4z1koumdv5z
Add support for writing shelves

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
from cStringIO import StringIO
19
19
 
20
 
from bzrlib import merge3
21
 
from bzrlib import transform
 
20
from bzrlib import merge3, pack, transform
 
21
 
 
22
from bzrlib.plugins.shelf2 import serialize_transform
22
23
 
23
24
 
24
25
class ShelfCreator(object):
102
103
 
103
104
    def transform(self):
104
105
        self.work_transform.apply()
 
106
 
 
107
    def make_shelf_filename(self):
 
108
        transport = self.work_tree.bzrdir.root_transport.clone('.shelf2')
 
109
        transport.ensure_base()
 
110
        return transport.local_abspath('01')
 
111
 
 
112
    def write_shelf(self):
 
113
        filename = self.make_shelf_filename()
 
114
        shelf_file = open(filename, 'wb')
 
115
        try:
 
116
            serializer = pack.ContainerSerialiser()
 
117
            shelf_file.write(serializer.begin())
 
118
            for bytes in serialize_transform.serialize(
 
119
                self.shelf_transform, serializer):
 
120
                shelf_file.write(bytes)
 
121
            shelf_file.write(serializer.end())
 
122
        finally:
 
123
            shelf_file.close()
 
124
        return filename