Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commandserver.py @ 14864:1b872599f39f stable
cmdserver: restore old working dir after dispatch when we have --cwd
author | Idan Kamara <idankk86@gmail.com> |
---|---|
date | Mon, 11 Jul 2011 17:49:45 +0300 |
parents | 712954a67be3 |
children | bb2cffe81a94 |
comparison
equal
deleted
inserted
replaced
14863:1c148e935244 | 14864:1b872599f39f |
---|---|
5 # This software may be used and distributed according to the terms of the | 5 # This software may be used and distributed according to the terms of the |
6 # GNU General Public License version 2 or any later version. | 6 # GNU General Public License version 2 or any later version. |
7 | 7 |
8 from i18n import _ | 8 from i18n import _ |
9 import struct | 9 import struct |
10 import sys | 10 import sys, os |
11 import dispatch, encoding, util | 11 import dispatch, encoding, util |
12 | 12 |
13 logfile = None | 13 logfile = None |
14 | 14 |
15 def log(*args): | 15 def log(*args): |
129 """ | 129 """ |
130 Listens for commands on stdin, runs them and writes the output on a channel | 130 Listens for commands on stdin, runs them and writes the output on a channel |
131 based stream to stdout. | 131 based stream to stdout. |
132 """ | 132 """ |
133 def __init__(self, ui, repo, mode): | 133 def __init__(self, ui, repo, mode): |
134 self.cwd = os.getcwd() | |
134 self.ui = ui | 135 self.ui = ui |
135 | 136 |
136 logpath = ui.config("cmdserver", "log", None) | 137 logpath = ui.config("cmdserver", "log", None) |
137 if logpath: | 138 if logpath: |
138 global logfile | 139 global logfile |
181 # persist between requests | 182 # persist between requests |
182 copiedui = self.ui.copy() | 183 copiedui = self.ui.copy() |
183 self.repo.baseui = copiedui | 184 self.repo.baseui = copiedui |
184 self.repo.ui = self.repo.dirstate._ui = self.repoui.copy() | 185 self.repo.ui = self.repo.dirstate._ui = self.repoui.copy() |
185 | 186 |
186 req = dispatch.request(args, copiedui, self.repo, self.cin, | 187 req = dispatch.request(args[:], copiedui, self.repo, self.cin, |
187 self.cout, self.cerr) | 188 self.cout, self.cerr) |
188 | 189 |
189 ret = dispatch.dispatch(req) or 0 # might return None | 190 ret = dispatch.dispatch(req) or 0 # might return None |
191 | |
192 # restore old cwd | |
193 if '--cwd' in args: | |
194 os.chdir(self.cwd) | |
190 | 195 |
191 self.cresult.write(struct.pack('>i', int(ret))) | 196 self.cresult.write(struct.pack('>i', int(ret))) |
192 | 197 |
193 def getencoding(self): | 198 def getencoding(self): |
194 """ writes the current encoding to the result channel """ | 199 """ writes the current encoding to the result channel """ |