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