##// END OF EJS Templates
largefiles: redo heads interception...
Joerg Sonnenberger -
r46816:bd31462a default
parent child Browse files
Show More
@@ -190,13 +190,6 b' def _uisetup(ui):'
190 190 )
191 191 # TODO also wrap wireproto.commandsv2 once heads is implemented there.
192 192
193 # can't do this in reposetup because it needs to have happened before
194 # wirerepo.__init__ is called
195 proto.ssholdcallstream = sshpeer.sshv1peer._callstream
196 proto.httpoldcallstream = httppeer.httppeer._callstream
197 sshpeer.sshv1peer._callstream = proto.sshrepocallstream
198 httppeer.httppeer._callstream = proto.httprepocallstream
199
200 193 # override some extensions' stuff as well
201 194 for name, module in extensions.extensions():
202 195 if name == b'rebase':
@@ -33,10 +33,6 b' LARGEFILES_REQUIRED_MSG = ('
33 33
34 34 eh = exthelper.exthelper()
35 35
36 # these will all be replaced by largefiles.uisetup
37 ssholdcallstream = None
38 httpoldcallstream = None
39
40 36
41 37 def putlfile(repo, proto, sha):
42 38 """Server command for putting a largefile into a repository's local store
@@ -106,7 +102,27 b' def statlfile(repo, proto, sha):'
106 102
107 103
108 104 def wirereposetup(ui, repo):
105 orig_commandexecutor = repo.commandexecutor
106
109 107 class lfileswirerepository(repo.__class__):
108 def commandexecutor(self):
109 executor = orig_commandexecutor()
110 if self.capable(b'largefiles'):
111 orig_callcommand = executor.callcommand
112
113 class lfscommandexecutor(executor.__class__):
114 def callcommand(self, command, args):
115 if command == b'heads':
116 command = b'lheads'
117 return orig_callcommand(command, args)
118
119 executor.__class__ = lfscommandexecutor
120 return executor
121
122 @wireprotov1peer.batchable
123 def lheads(self):
124 return self.heads.batchable(self)
125
110 126 def putlfile(self, sha, fd):
111 127 # unfortunately, httprepository._callpush tries to convert its
112 128 # input file-like into a bundle before sending it, so we can't use
@@ -200,22 +216,3 b' def heads(orig, repo, proto):'
200 216 return wireprototypes.ooberror(LARGEFILES_REQUIRED_MSG)
201 217
202 218 return orig(repo, proto)
203
204
205 def sshrepocallstream(self, cmd, **args):
206 if cmd == b'heads' and self.capable(b'largefiles'):
207 cmd = b'lheads'
208 if cmd == b'batch' and self.capable(b'largefiles'):
209 args['cmds'] = args[r'cmds'].replace(b'heads ', b'lheads ')
210 return ssholdcallstream(self, cmd, **args)
211
212
213 headsre = re.compile(br'(^|;)heads\b')
214
215
216 def httprepocallstream(self, cmd, **args):
217 if cmd == b'heads' and self.capable(b'largefiles'):
218 cmd = b'lheads'
219 if cmd == b'batch' and self.capable(b'largefiles'):
220 args['cmds'] = headsre.sub(b'lheads', args['cmds'])
221 return httpoldcallstream(self, cmd, **args)
General Comments 0
You need to be logged in to leave comments. Login now