77
78
branch.repository.unlock()
81
class SmartServerBranchBreakLock(SmartServerBranchRequest):
83
def do_with_branch(self, branch):
84
"""Break a branch lock.
87
return SuccessfulSmartServerResponse(('ok', ), )
80
90
class SmartServerBranchGetConfigFile(SmartServerBranchRequest):
82
92
def do_with_branch(self, branch):
85
95
The body is not utf8 decoded - its the literal bytestream from disk.
88
content = branch._transport.get_bytes('branch.conf')
98
content = branch.control_transport.get_bytes('branch.conf')
89
99
except errors.NoSuchFile:
91
101
return SuccessfulSmartServerResponse( ('ok', ), content)
104
class SmartServerBranchPutConfigFile(SmartServerBranchRequest):
105
"""Set the configuration data for a branch.
110
def do_with_branch(self, branch, branch_token, repo_token):
111
"""Set the content of branch.conf.
113
The body is not utf8 decoded - its the literal bytestream for disk.
115
self._branch = branch
116
self._branch_token = branch_token
117
self._repo_token = repo_token
118
# Signal we want a body
121
def do_body(self, body_bytes):
122
self._branch.repository.lock_write(token=self._repo_token)
124
self._branch.lock_write(token=self._branch_token)
126
self._branch.control_transport.put_bytes(
127
'branch.conf', body_bytes)
129
self._branch.unlock()
131
self._branch.repository.unlock()
132
return SuccessfulSmartServerResponse(('ok', ))
94
135
class SmartServerBranchGetParent(SmartServerBranchRequest):
96
137
def do_with_branch(self, branch):
195
236
return SuccessfulSmartServerResponse(('ok', str(revno), last_revision))
239
class SmartServerBranchRequestRevisionIdToRevno(SmartServerBranchRequest):
241
def do_with_branch(self, branch, revid):
242
"""Return branch.revision_id_to_revno().
246
The revno is encoded in decimal, the revision_id is encoded as utf8.
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)))
198
256
class SmartServerSetTipRequest(SmartServerLockedBranchRequest):
199
257
"""Base class for handling common branch request logic for requests that
200
258
update the branch tip.
378
436
return SuccessfulSmartServerResponse(('ok',))
439
class SmartServerBranchRequestGetPhysicalLockStatus(SmartServerBranchRequest):
440
"""Get the physical lock status for a branch.
445
def do_with_branch(self, branch):
446
if branch.get_physical_lock_status():
447
return SuccessfulSmartServerResponse(('yes',))
449
return SuccessfulSmartServerResponse(('no',))