~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/repository.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-03-06 07:44:17 UTC
  • mfrom: (1553.5.64 bzr.mbp.locks)
  • Revision ID: pqm@pqm.ubuntu.com-20060306074417-344f1d83d99b9730
Integrate LockDirs into new format, etc

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005 Canonical Ltd
 
1
# Copyright (C) 2005, 2006 Canonical Ltd
2
2
 
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
19
19
from unittest import TestSuite
20
20
import xml.sax.saxutils
21
21
 
22
 
 
 
22
import bzrlib.bzrdir as bzrdir
23
23
from bzrlib.decorators import needs_read_lock, needs_write_lock
24
 
import bzrlib.errors as errors
25
24
from bzrlib.errors import InvalidRevisionId
26
 
import bzrlib.gpg as gpg
27
 
from bzrlib.lockable_files import LockableFiles
 
25
from bzrlib.lockable_files import LockableFiles, TransportLock
 
26
from bzrlib.lockdir import LockDir
28
27
from bzrlib.osutils import safe_unicode
29
28
from bzrlib.revision import NULL_REVISION
 
29
import bzrlib.errors as errors
 
30
import bzrlib.gpg as gpg
30
31
from bzrlib.store import copy_all
31
32
from bzrlib.store.weave import WeaveStore
32
33
from bzrlib.store.text import TextStore
155
156
    def lock_read(self):
156
157
        self.control_files.lock_read()
157
158
 
 
159
    def is_locked(self):
 
160
        return self.control_files.is_locked()
 
161
 
158
162
    @needs_read_lock
159
163
    def missing_revision_ids(self, other, revision_id=None):
160
164
        """Return the revision ids that other has that this does not.
812
816
 
813
817
        mutter('creating repository in %s.', a_bzrdir.transport.base)
814
818
        dirs = ['revision-store', 'weaves']
815
 
        lock_file = 'branch-lock'
816
 
        files = [('inventory.weave', StringIO(empty_weave)), 
 
819
        files = [('inventory.weave', StringIO(empty_weave)),
817
820
                 ]
818
821
        
819
822
        # FIXME: RBC 20060125 dont peek under the covers
820
823
        # NB: no need to escape relative paths that are url safe.
821
 
        control_files = LockableFiles(a_bzrdir.transport, 'branch-lock')
 
824
        control_files = LockableFiles(a_bzrdir.transport, 'branch-lock',
 
825
                                      TransportLock)
 
826
        control_files.create_lock()
822
827
        control_files.lock_write()
823
828
        control_files._transport.mkdir_multi(dirs,
824
829
                mode=control_files._dir_mode)
934
939
        """Create the required files and the initial control_files object."""
935
940
        # FIXME: RBC 20060125 dont peek under the covers
936
941
        # NB: no need to escape relative paths that are url safe.
937
 
        lock_file = 'lock'
938
942
        repository_transport = a_bzrdir.get_repository_transport(self)
939
 
        repository_transport.put(lock_file, StringIO()) # TODO get the file mode from the bzrdir lock files., mode=file_mode)
940
 
        control_files = LockableFiles(repository_transport, 'lock')
 
943
        control_files = LockableFiles(repository_transport, 'lock', LockDir)
 
944
        control_files.create_lock()
941
945
        return control_files
942
946
 
943
947
    def _get_revision_store(self, repo_transport, control_files):
963
967
            repo_transport = _override_transport
964
968
        else:
965
969
            repo_transport = a_bzrdir.get_repository_transport(None)
966
 
        control_files = LockableFiles(repo_transport, 'lock')
 
970
        control_files = LockableFiles(repo_transport, 'lock', LockDir)
967
971
        revision_store = self._get_revision_store(repo_transport, control_files)
968
972
        return MetaDirRepository(_format=self,
969
973
                                 a_bzrdir=a_bzrdir,
974
978
        """Upload the initial blank content."""
975
979
        control_files = self._create_control_files(a_bzrdir)
976
980
        control_files.lock_write()
977
 
        control_files._transport.mkdir_multi(dirs,
978
 
                mode=control_files._dir_mode)
979
981
        try:
 
982
            control_files._transport.mkdir_multi(dirs,
 
983
                    mode=control_files._dir_mode)
980
984
            for file, content in files:
981
985
                control_files.put(file, content)
982
986
            for file, content in utf8_files:
1038
1042
     - a format marker of its own
1039
1043
     - an optional 'shared-storage' flag
1040
1044
     - an optional 'no-working-trees' flag
 
1045
     - a LockDir lock
1041
1046
    """
1042
1047
 
1043
1048
    def get_format_string(self):