mercurial/commandserver.py
changeset 20650 e811b93f2cb1
parent 20631 5d4606bec54c
child 21195 9336bc7dca8e
equal deleted inserted replaced
20649:9524938c8ff8 20650:e811b93f2cb1
   140                 # write log on a special 'd' (debug) channel
   140                 # write log on a special 'd' (debug) channel
   141                 logfile = channeledoutput(sys.stdout, sys.stdout, 'd')
   141                 logfile = channeledoutput(sys.stdout, sys.stdout, 'd')
   142             else:
   142             else:
   143                 logfile = open(logpath, 'a')
   143                 logfile = open(logpath, 'a')
   144 
   144 
   145         # the ui here is really the repo ui so take its baseui so we don't end
   145         if repo:
   146         # up with its local configuration
   146             # the ui here is really the repo ui so take its baseui so we don't
   147         self.ui = repo.baseui
   147             # end up with its local configuration
   148         self.repo = repo
   148             self.ui = repo.baseui
   149         self.repoui = repo.ui
   149             self.repo = repo
       
   150             self.repoui = repo.ui
       
   151         else:
       
   152             self.ui = ui
       
   153             self.repo = self.repoui = None
   150 
   154 
   151         if mode == 'pipe':
   155         if mode == 'pipe':
   152             self.cerr = channeledoutput(sys.stderr, sys.stdout, 'e')
   156             self.cerr = channeledoutput(sys.stderr, sys.stdout, 'e')
   153             self.cout = channeledoutput(sys.stdout, sys.stdout, 'o')
   157             self.cout = channeledoutput(sys.stdout, sys.stdout, 'o')
   154             self.cin = channeledinput(sys.stdin, sys.stdout, 'I')
   158             self.cin = channeledinput(sys.stdin, sys.stdout, 'I')
   181             args = self._read(length).split('\0')
   185             args = self._read(length).split('\0')
   182 
   186 
   183         # 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
   184         # persist between requests
   188         # persist between requests
   185         copiedui = self.ui.copy()
   189         copiedui = self.ui.copy()
   186         self.repo.baseui = copiedui
   190         if self.repo:
   187         # clone ui without using ui.copy because this is protected
   191             self.repo.baseui = copiedui
   188         repoui = self.repoui.__class__(self.repoui)
   192             # clone ui without using ui.copy because this is protected
   189         repoui.copy = copiedui.copy # redo copy protection
   193             repoui = self.repoui.__class__(self.repoui)
   190         self.repo.ui = self.repo.dirstate._ui = repoui
   194             repoui.copy = copiedui.copy # redo copy protection
   191         self.repo.invalidateall()
   195             self.repo.ui = self.repo.dirstate._ui = repoui
       
   196             self.repo.invalidateall()
   192 
   197 
   193         req = dispatch.request(args[:], copiedui, self.repo, self.cin,
   198         req = dispatch.request(args[:], copiedui, self.repo, self.cin,
   194                                self.cout, self.cerr)
   199                                self.cout, self.cerr)
   195 
   200 
   196         ret = (dispatch.dispatch(req) or 0) & 255 # might return None
   201         ret = (dispatch.dispatch(req) or 0) & 255 # might return None