comparison hgext/convert/cvs.py @ 10800:49c109d037dd stable

convert.cvs: Initialize state variable and abort on cvs error Fix as proposed by Frank Kingswood. Avoids UnboundLocalError: local variable 'mode' referenced before assignment when cvs fails. This alsa partially fixes issue1592.
author Mads Kiilerich <mads@kiilerich.com>
date Tue, 30 Mar 2010 02:42:21 +0200
parents 08a0f04b56bd
children 9f6731b03906
comparison
equal deleted inserted replaced
10798:e46c19c586fa 10800:49c109d037dd
225 self.writep.write("Argument %s\n" % x) 225 self.writep.write("Argument %s\n" % x)
226 self.writep.write("Directory .\n%s\nco\n" % self.realroot) 226 self.writep.write("Directory .\n%s\nco\n" % self.realroot)
227 self.writep.flush() 227 self.writep.flush()
228 228
229 data = "" 229 data = ""
230 mode = None
230 while 1: 231 while 1:
231 line = self.readp.readline() 232 line = self.readp.readline()
232 if line.startswith("Created ") or line.startswith("Updated "): 233 if line.startswith("Created ") or line.startswith("Updated "):
233 self.readp.readline() # path 234 self.readp.readline() # path
234 self.readp.readline() # entries 235 self.readp.readline() # entries
242 elif line.startswith("Mbinary "): 243 elif line.startswith("Mbinary "):
243 count = int(self.readp.readline()[:-1]) 244 count = int(self.readp.readline()[:-1])
244 data = chunkedread(self.readp, count) 245 data = chunkedread(self.readp, count)
245 else: 246 else:
246 if line == "ok\n": 247 if line == "ok\n":
248 if mode is None:
249 raise util.Abort(_('malformed response from CVS'))
247 return (data, "x" in mode and "x" or "") 250 return (data, "x" in mode and "x" or "")
248 elif line.startswith("E "): 251 elif line.startswith("E "):
249 self.ui.warn(_("cvs server: %s\n") % line[2:]) 252 self.ui.warn(_("cvs server: %s\n") % line[2:])
250 elif line.startswith("Remove"): 253 elif line.startswith("Remove"):
251 self.readp.readline() 254 self.readp.readline()