/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 push.py

Support read locking object stores.

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
    NoPushSupport,
32
32
    )
33
33
from bzrlib.plugins.git.object_store import (
34
 
    BazaarObjectStore,
 
34
    get_object_store,
35
35
    )
36
36
from bzrlib.plugins.git.repository import (
37
37
    GitRepository,
103
103
    def __init__(self, source, target):
104
104
        super(InterToGitRepository, self).__init__(source, target)
105
105
        self.mapping = self.target.get_mapping()
106
 
        self.source_store = BazaarObjectStore(self.source, self.mapping)
 
106
        self.source_store = get_object_store(self.source, self.mapping)
107
107
 
108
108
    @staticmethod
109
109
    def _get_repo_format_to_test():
230
230
        return old_refs, new_refs
231
231
 
232
232
    def dfetch_refs(self, update_refs):
233
 
        self.source.lock_read()
 
233
        self.source_store.lock_read()
234
234
        try:
235
235
            old_refs = self._get_target_bzr_refs()
236
236
            new_refs = update_refs(old_refs)
259
259
                        gitid = self.source_store._lookup_revision_sha1(revid)
260
260
                self.target_refs[name] = gitid
261
261
        finally:
262
 
            self.source.unlock()
 
262
            self.source_store.unlock()
263
263
        return revidmap, old_refs, new_refs
264
264
 
265
265
    def _get_missing_objects_iterator(self, pb):
272
272
            fetch_spec=None, mapped_refs=None):
273
273
        if not self.mapping.roundtripping:
274
274
            raise NoPushSupport()
275
 
        if mapped_refs is not None:
276
 
            stop_revisions = mapped_refs
277
 
        elif revision_id is not None:
278
 
            stop_revisions = [(None, revision_id)]
279
 
        elif fetch_spec is not None:
280
 
            stop_revisions = [(None, revid) for revid in fetch_spec.heads]
281
 
        else:
282
 
            stop_revisions = [(None, revid) for revid in self.source.all_revision_ids()]
283
 
        self.source.lock_read()
 
275
        self.source_store.lock_read()
284
276
        try:
 
277
            if mapped_refs is not None:
 
278
                stop_revisions = mapped_refs
 
279
            elif revision_id is not None:
 
280
                stop_revisions = [(None, revision_id)]
 
281
            elif fetch_spec is not None:
 
282
                stop_revisions = [(None, revid) for revid in fetch_spec.heads]
 
283
            else:
 
284
                stop_revisions = [(None, revid) for revid in self.source.all_revision_ids()]
285
285
            todo = list(self.missing_revisions(stop_revisions))
286
286
            pb = ui.ui_factory.nested_progress_bar()
287
287
            try:
296
296
            finally:
297
297
                pb.finished()
298
298
        finally:
299
 
            self.source.unlock()
 
299
            self.source_store.unlock()
300
300
 
301
301
    @staticmethod
302
302
    def is_compatible(source, target):
317
317
            self.new_refs = update_refs(self.old_refs)
318
318
            for name, (gitid, revid) in self.new_refs.iteritems():
319
319
                if gitid is None:
320
 
                    ret[name] = unpeel_map.re_unpeel_tag(self.source_store._lookup_revision_sha1(revid), old_refs.get(name))
 
320
                    git_sha = self.source_store._lookup_revision_sha1(revid)
 
321
                    ret[name] = unpeel_map.re_unpeel_tag(git_sha, old_refs.get(name))
321
322
                else:
322
323
                    ret[name] = gitid
323
324
            return ret
324
 
        self.source.lock_read()
 
325
        self.source_store.lock_read()
325
326
        try:
326
327
            new_refs = self.target.send_pack(determine_wants,
327
328
                    self.source_store.generate_lossy_pack_contents)
328
329
        finally:
329
 
            self.source.unlock()
 
330
            self.source_store.unlock()
330
331
        return revidmap, self.old_refs, self.new_refs
331
332
 
332
333
    def fetch_refs(self, update_refs):