~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/branch.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-04-20 08:33:47 UTC
  • mfrom: (2018.5.174 hpss)
  • Revision ID: pqm@pqm.ubuntu.com-20070420083347-m00rr4y00xjnv7or
(Andrew Bennetts, and many others) High performance smart server: add smart (non-vfs) commands to the client and server.

Show diffs side-by-side

added added

removed removed

Lines of Context:
579
579
 
580
580
    def get_push_location(self):
581
581
        """Return the None or the location to push this branch to."""
582
 
        raise NotImplementedError(self.get_push_location)
 
582
        push_loc = self.get_config().get_user_option('push_location')
 
583
        return push_loc
583
584
 
584
585
    def set_push_location(self, location):
585
586
        """Set a new push location for this branch."""
707
708
 
708
709
    def _get_checkout_format(self):
709
710
        """Return the most suitable metadir for a checkout of this branch.
710
 
        Weaves are used if this branch's repostory uses weaves.
 
711
        Weaves are used if this branch's repository uses weaves.
711
712
        """
712
713
        if isinstance(self.bzrdir, bzrdir.BzrDirPreSplitOut):
713
714
            from bzrlib.repofmt import weaverepo
813
814
        """Return the current default format."""
814
815
        return klass._default_format
815
816
 
 
817
    def get_reference(self, a_bzrdir):
 
818
        """Get the target reference of the branch in a_bzrdir.
 
819
 
 
820
        format probing must have been completed before calling
 
821
        this method - it is assumed that the format of the branch
 
822
        in a_bzrdir is correct.
 
823
 
 
824
        :param a_bzrdir: The bzrdir to get the branch data from.
 
825
        :return: None if the branch is not a reference branch.
 
826
        """
 
827
        return None
 
828
 
816
829
    def get_format_string(self):
817
830
        """Return the ASCII format string that identifies this format."""
818
831
        raise NotImplementedError(self.get_format_string)
1049
1062
        if not _found:
1050
1063
            format = BranchFormat.find_format(a_bzrdir)
1051
1064
            assert format.__class__ == self.__class__
1052
 
        transport = a_bzrdir.get_branch_transport(None)
1053
 
        control_files = lockable_files.LockableFiles(transport, 'lock',
1054
 
                                                     lockdir.LockDir)
1055
 
        return BzrBranch5(_format=self,
1056
 
                          _control_files=control_files,
1057
 
                          a_bzrdir=a_bzrdir,
1058
 
                          _repository=a_bzrdir.find_repository())
 
1065
        try:
 
1066
            transport = a_bzrdir.get_branch_transport(None)
 
1067
            control_files = lockable_files.LockableFiles(transport, 'lock',
 
1068
                                                         lockdir.LockDir)
 
1069
            return BzrBranch5(_format=self,
 
1070
                              _control_files=control_files,
 
1071
                              a_bzrdir=a_bzrdir,
 
1072
                              _repository=a_bzrdir.find_repository())
 
1073
        except NoSuchFile:
 
1074
            raise NotBranchError(path=transport.base)
1059
1075
 
1060
1076
 
1061
1077
class BzrBranchFormat6(BzrBranchFormat5):
1125
1141
        """See BranchFormat.get_format_description()."""
1126
1142
        return "Checkout reference format 1"
1127
1143
        
 
1144
    def get_reference(self, a_bzrdir):
 
1145
        """See BranchFormat.get_reference()."""
 
1146
        transport = a_bzrdir.get_branch_transport(None)
 
1147
        return transport.get('location').read()
 
1148
 
1128
1149
    def initialize(self, a_bzrdir, target_branch=None):
1129
1150
        """Create a branch of this format in a_bzrdir."""
1130
1151
        if target_branch is None:
1152
1173
            # emit some sort of warning/error to the caller ?!
1153
1174
        return clone
1154
1175
 
1155
 
    def open(self, a_bzrdir, _found=False):
 
1176
    def open(self, a_bzrdir, _found=False, location=None):
1156
1177
        """Return the branch that the branch reference in a_bzrdir points at.
1157
1178
 
1158
1179
        _found is a private parameter, do not use it. It is used to indicate
1161
1182
        if not _found:
1162
1183
            format = BranchFormat.find_format(a_bzrdir)
1163
1184
            assert format.__class__ == self.__class__
1164
 
        transport = a_bzrdir.get_branch_transport(None)
1165
 
        real_bzrdir = bzrdir.BzrDir.open(transport.get('location').read())
 
1185
        if location is None:
 
1186
            location = self.get_reference(a_bzrdir)
 
1187
        real_bzrdir = bzrdir.BzrDir.open(location)
1166
1188
        result = real_bzrdir.open_branch()
1167
1189
        # this changes the behaviour of result.clone to create a new reference
1168
1190
        # rather than a copy of the content of the branch.
1501
1523
        except errors.InvalidURLJoin, e:
1502
1524
            raise errors.InaccessibleParent(parent, self.base)
1503
1525
 
1504
 
    def get_push_location(self):
1505
 
        """See Branch.get_push_location."""
1506
 
        push_loc = self.get_config().get_user_option('push_location')
1507
 
        return push_loc
1508
 
 
1509
1526
    def set_push_location(self, location):
1510
1527
        """See Branch.set_push_location."""
1511
1528
        self.get_config().set_user_option(
1745
1762
        return "Experimental branch format"
1746
1763
 
1747
1764
    @classmethod
 
1765
    def get_reference(cls, a_bzrdir):
 
1766
        """Get the target reference of the branch in a_bzrdir.
 
1767
 
 
1768
        format probing must have been completed before calling
 
1769
        this method - it is assumed that the format of the branch
 
1770
        in a_bzrdir is correct.
 
1771
 
 
1772
        :param a_bzrdir: The bzrdir to get the branch data from.
 
1773
        :return: None if the branch is not a reference branch.
 
1774
        """
 
1775
        return None
 
1776
 
 
1777
    @classmethod
1748
1778
    def _initialize_control_files(cls, a_bzrdir, utf8_files, lock_filename,
1749
1779
            lock_class):
1750
1780
        branch_transport = a_bzrdir.get_branch_transport(cls)
1982
2012
    easy to identify.
1983
2013
    """
1984
2014
 
1985
 
    def __init__(self, transport_server, transport_readonly_server, formats):
 
2015
    def __init__(self, transport_server, transport_readonly_server, formats,
 
2016
        vfs_transport_factory=None):
1986
2017
        self._transport_server = transport_server
1987
2018
        self._transport_readonly_server = transport_readonly_server
1988
2019
        self._formats = formats