Mercurial > hg > mercurial-crew-with-dirclash
comparison hgext/convert/cvs.py @ 5308:9400d677efc7
Merge with crew-stable
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Fri, 14 Sep 2007 23:10:41 +0200 |
parents | 7e05bdeee7de 7256cc396bbf |
children | 6874368120dc |
comparison
equal
deleted
inserted
replaced
5300:81575b7b505e | 5308:9400d677efc7 |
---|---|
38 maxrev = int(self.rev) | 38 maxrev = int(self.rev) |
39 except ValueError: | 39 except ValueError: |
40 try: | 40 try: |
41 # date | 41 # date |
42 util.parsedate(self.rev, ['%Y/%m/%d %H:%M:%S']) | 42 util.parsedate(self.rev, ['%Y/%m/%d %H:%M:%S']) |
43 cmd = "%s -d '1970/01/01 00:00:01' -d '%s'" % (cmd, self.rev) | 43 cmd = '%s -d "1970/01/01 00:00:01" -d "%s"' % (cmd, self.rev) |
44 except util.Abort: | 44 except util.Abort: |
45 raise util.Abort('revision %s is not a patchset number or date' % self.rev) | 45 raise util.Abort('revision %s is not a patchset number or date' % self.rev) |
46 cmd += " 2>&1" | |
46 | 47 |
47 d = os.getcwd() | 48 d = os.getcwd() |
48 try: | 49 try: |
49 os.chdir(self.path) | 50 os.chdir(self.path) |
50 id = None | 51 id = None |
164 if not conntype: | 165 if not conntype: |
165 # :ext:user@host/home/user/path/to/cvsroot | 166 # :ext:user@host/home/user/path/to/cvsroot |
166 if root.startswith(":ext:"): | 167 if root.startswith(":ext:"): |
167 root = root[5:] | 168 root = root[5:] |
168 m = re.match(r'(?:([^@:/]+)@)?([^:/]+):?(.*)', root) | 169 m = re.match(r'(?:([^@:/]+)@)?([^:/]+):?(.*)', root) |
169 if not m: | 170 # Do not take Windows path "c:\foo\bar" for a connection strings |
171 if os.path.isdir(root) or not m: | |
170 conntype = "local" | 172 conntype = "local" |
171 else: | 173 else: |
172 conntype = "rsh" | 174 conntype = "rsh" |
173 user, host, root = m.group(1), m.group(2), m.group(3) | 175 user, host, root = m.group(1), m.group(2), m.group(3) |
174 | 176 |
178 if user: | 180 if user: |
179 cmd = [rsh, '-l', user, host] + cmd | 181 cmd = [rsh, '-l', user, host] + cmd |
180 else: | 182 else: |
181 cmd = [rsh, host] + cmd | 183 cmd = [rsh, host] + cmd |
182 | 184 |
183 self.writep, self.readp = os.popen2(cmd) | 185 # popen2 does not support argument lists under Windows |
186 cmd = [util.shellquote(arg) for arg in cmd] | |
187 cmd = util.quotecommand(' '.join(cmd)) | |
188 self.writep, self.readp = os.popen2(cmd, 'b') | |
184 | 189 |
185 self.realroot = root | 190 self.realroot = root |
186 | 191 |
187 self.writep.write("Root %s\n" % root) | 192 self.writep.write("Root %s\n" % root) |
188 self.writep.write("Valid-responses ok error Valid-requests Mode" | 193 self.writep.write("Valid-responses ok error Valid-requests Mode" |
204 def _getfile(self, name, rev): | 209 def _getfile(self, name, rev): |
205 if rev.endswith("(DEAD)"): | 210 if rev.endswith("(DEAD)"): |
206 raise IOError | 211 raise IOError |
207 | 212 |
208 args = ("-N -P -kk -r %s --" % rev).split() | 213 args = ("-N -P -kk -r %s --" % rev).split() |
209 args.append(os.path.join(self.cvsrepo, name)) | 214 args.append(self.cvsrepo + '/' + name) |
210 for x in args: | 215 for x in args: |
211 self.writep.write("Argument %s\n" % x) | 216 self.writep.write("Argument %s\n" % x) |
212 self.writep.write("Directory .\n%s\nco\n" % self.realroot) | 217 self.writep.write("Directory .\n%s\nco\n" % self.realroot) |
213 self.writep.flush() | 218 self.writep.flush() |
214 | 219 |