/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/smart/branch.py

  • Committer: Jelmer Vernooij
  • Date: 2012-01-02 14:27:58 UTC
  • mfrom: (6410 +trunk)
  • mto: This revision was merged to the branch mainline in revision 6441.
  • Revision ID: jelmer@samba.org-20120102142758-hl7xrn7m5hjhecdv
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""Server-side branch related request implmentations."""
18
18
 
 
19
from __future__ import absolute_import
19
20
 
20
21
from bzrlib import (
21
22
    bencode,
77
78
            branch.repository.unlock()
78
79
 
79
80
 
 
81
class SmartServerBranchBreakLock(SmartServerBranchRequest):
 
82
 
 
83
    def do_with_branch(self, branch):
 
84
        """Break a branch lock.
 
85
        """
 
86
        branch.break_lock()
 
87
        return SuccessfulSmartServerResponse(('ok', ), )
 
88
 
 
89
 
80
90
class SmartServerBranchGetConfigFile(SmartServerBranchRequest):
81
91
 
82
92
    def do_with_branch(self, branch):
85
95
        The body is not utf8 decoded - its the literal bytestream from disk.
86
96
        """
87
97
        try:
88
 
            content = branch._transport.get_bytes('branch.conf')
 
98
            content = branch.control_transport.get_bytes('branch.conf')
89
99
        except errors.NoSuchFile:
90
100
            content = ''
91
101
        return SuccessfulSmartServerResponse( ('ok', ), content)
92
102
 
93
103
 
 
104
class SmartServerBranchPutConfigFile(SmartServerBranchRequest):
 
105
    """Set the configuration data for a branch.
 
106
 
 
107
    New in 2.5.
 
108
    """
 
109
 
 
110
    def do_with_branch(self, branch, branch_token, repo_token):
 
111
        """Set the content of branch.conf.
 
112
 
 
113
        The body is not utf8 decoded - its the literal bytestream for disk.
 
114
        """
 
115
        self._branch = branch
 
116
        self._branch_token = branch_token
 
117
        self._repo_token = repo_token
 
118
        # Signal we want a body
 
119
        return None
 
120
 
 
121
    def do_body(self, body_bytes):
 
122
        self._branch.repository.lock_write(token=self._repo_token)
 
123
        try:
 
124
            self._branch.lock_write(token=self._branch_token)
 
125
            try:
 
126
                self._branch.control_transport.put_bytes(
 
127
                    'branch.conf', body_bytes)
 
128
            finally:
 
129
                self._branch.unlock()
 
130
        finally:
 
131
            self._branch.repository.unlock()
 
132
        return SuccessfulSmartServerResponse(('ok', ))
 
133
 
 
134
 
94
135
class SmartServerBranchGetParent(SmartServerBranchRequest):
95
136
 
96
137
    def do_with_branch(self, branch):
195
236
        return SuccessfulSmartServerResponse(('ok', str(revno), last_revision))
196
237
 
197
238
 
 
239
class SmartServerBranchRequestRevisionIdToRevno(SmartServerBranchRequest):
 
240
 
 
241
    def do_with_branch(self, branch, revid):
 
242
        """Return branch.revision_id_to_revno().
 
243
 
 
244
        New in 2.5.
 
245
 
 
246
        The revno is encoded in decimal, the revision_id is encoded as utf8.
 
247
        """
 
248
        try:
 
249
            dotted_revno = branch.revision_id_to_dotted_revno(revid)
 
250
        except errors.NoSuchRevision:
 
251
            return FailedSmartServerResponse(('NoSuchRevision', revid))
 
252
        return SuccessfulSmartServerResponse(
 
253
            ('ok', ) + tuple(map(str, dotted_revno)))
 
254
 
 
255
 
198
256
class SmartServerSetTipRequest(SmartServerLockedBranchRequest):
199
257
    """Base class for handling common branch request logic for requests that
200
258
    update the branch tip.
377
435
        branch.unlock()
378
436
        return SuccessfulSmartServerResponse(('ok',))
379
437
 
 
438
 
 
439
class SmartServerBranchRequestGetPhysicalLockStatus(SmartServerBranchRequest):
 
440
    """Get the physical lock status for a branch.
 
441
 
 
442
    New in 2.5.
 
443
    """
 
444
 
 
445
    def do_with_branch(self, branch):
 
446
        if branch.get_physical_lock_status():
 
447
            return SuccessfulSmartServerResponse(('yes',))
 
448
        else:
 
449
            return SuccessfulSmartServerResponse(('no',))