185 args = self._read(length).split('\0') |
185 args = self._read(length).split('\0') |
186 |
186 |
187 # copy the uis so changes (e.g. --config or --verbose) don't |
187 # copy the uis so changes (e.g. --config or --verbose) don't |
188 # persist between requests |
188 # persist between requests |
189 copiedui = self.ui.copy() |
189 copiedui = self.ui.copy() |
|
190 uis = [copiedui] |
190 if self.repo: |
191 if self.repo: |
191 self.repo.baseui = copiedui |
192 self.repo.baseui = copiedui |
192 # clone ui without using ui.copy because this is protected |
193 # clone ui without using ui.copy because this is protected |
193 repoui = self.repoui.__class__(self.repoui) |
194 repoui = self.repoui.__class__(self.repoui) |
194 repoui.copy = copiedui.copy # redo copy protection |
195 repoui.copy = copiedui.copy # redo copy protection |
|
196 uis.append(repoui) |
195 self.repo.ui = self.repo.dirstate._ui = repoui |
197 self.repo.ui = self.repo.dirstate._ui = repoui |
196 self.repo.invalidateall() |
198 self.repo.invalidateall() |
|
199 |
|
200 for ui in uis: |
|
201 # any kind of interaction must use server channels |
|
202 ui.setconfig('ui', 'nontty', 'true', 'commandserver') |
197 |
203 |
198 req = dispatch.request(args[:], copiedui, self.repo, self.cin, |
204 req = dispatch.request(args[:], copiedui, self.repo, self.cin, |
199 self.cout, self.cerr) |
205 self.cout, self.cerr) |
200 |
206 |
201 ret = (dispatch.dispatch(req) or 0) & 255 # might return None |
207 ret = (dispatch.dispatch(req) or 0) & 255 # might return None |