/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/bundle/serializer/v10.py

  • Committer: Aaron Bentley
  • Date: 2007-06-20 00:25:11 UTC
  • mto: (2520.5.2 bzr.mpbundle)
  • mto: This revision was merged to the branch mainline in revision 2631.
  • Revision ID: aaron.bentley@utoronto.ca-20070620002511-6mylajxf4mipn7g7
refactor bundle serialization to make write_bundle primary

Show diffs side-by-side

added added

removed removed

Lines of Context:
141
141
    def write(self, repository, revision_ids, forced_bases, fileobj):
142
142
        write_op = BundleWriteOperation.from_old_args(repository, revision_ids,
143
143
                                                      forced_bases, fileobj)
144
 
        write_op.do_write()
 
144
        return write_op.do_write()
 
145
 
 
146
    def write_bundle(self, repository, target, base, fileobj):
 
147
        write_op =  BundleWriteOperation(base, target, repository, fileobj)
 
148
        return write_op.do_write()
145
149
 
146
150
    def read(self, file):
147
151
        bundle = BundleInfoV10(file, self)
157
161
        return BundleWriteOperation(base, target, repository, fileobj,
158
162
                                    revision_ids)
159
163
 
160
 
    def __init__(self, base, target, repository, fileobj, revision_ids):
 
164
    def __init__(self, base, target, repository, fileobj, revision_ids=None):
161
165
        self.base = base
162
166
        self.target = target
163
167
        self.repository = repository
164
168
        bundle = BundleWriter(fileobj)
165
169
        self.bundle = bundle
166
 
        self.revision_ids = revision_ids
 
170
        if revision_ids is not None:
 
171
            self.revision_ids = revision_ids
 
172
        else:
 
173
            base_ancestry = set(repository.get_ancestry(base))
 
174
            revision_ids = set(repository.get_ancestry(target))
 
175
            self.revision_ids = revision_ids.difference(base_ancestry)
167
176
 
168
177
    def do_write(self):
169
178
        self.bundle.begin()
172
181
        self.write_revisions()
173
182
        self.write_testament()
174
183
        self.bundle.end()
 
184
        return self.revision_ids
175
185
 
176
186
    def iter_file_revisions(self):
177
187
        """This is the correct approach, but not compatible.