Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/cvs/cvsclient.py
Show First 20 Lines • Show All 283 Lines • ▼ Show 20 Lines | def _parse_rlog_response(self, fp): | ||||
elif line[0:7] == b"error ": | elif line[0:7] == b"error ": | ||||
expect_error = True | expect_error = True | ||||
continue | continue | ||||
else: | else: | ||||
raise CVSProtocolError("Bad CVS protocol response: %s" % line) | raise CVSProtocolError("Bad CVS protocol response: %s" % line) | ||||
rlog_output.seek(0) | rlog_output.seek(0) | ||||
return rlog_output | return rlog_output | ||||
def fetch_rlog(self): | def fetch_rlog(self, path="", state=""): | ||||
if len(path) > 0: | |||||
path_arg = path | |||||
else: | |||||
path_arg = self.cvs_module_name | |||||
if len(state) > 0: | |||||
state_arg = "Argument -s%s\n" % state | |||||
else: | |||||
state_arg = "" | |||||
vlorentz: equivalent, but more pythonic | |||||
fp = tempfile.TemporaryFile() | fp = tempfile.TemporaryFile() | ||||
self.conn_write_str( | self.conn_write_str( | ||||
"Global_option -q\nArgument --\nArgument %s\nrlog\n" % self.cvs_module_name | "Global_option -q\n" | ||||
f"{state_arg}" | |||||
"Argument --\n" | |||||
f"Argument {path_arg}\n" | |||||
"rlog\n" | |||||
) | ) | ||||
while True: | while True: | ||||
response = self.conn_read_line() | response = self.conn_read_line() | ||||
if response is None: | if response is None: | ||||
raise CVSProtocolError("No response from CVS server") | raise CVSProtocolError("No response from CVS server") | ||||
if response[0:2] == b"E ": | if response[0:2] == b"E ": | ||||
if len(path) > 0 and response[-11:] == b" - ignored\n": | |||||
response = self.conn_read_line() | |||||
if response != b"error \n": | |||||
vlorentzUnsubmitted Not Done Inline Actionsdouble space? how come? vlorentz: double space? how come? | |||||
stspAuthorUnsubmitted Done Inline ActionsThis is simply what the cvs server sends back. stsp: This is simply what the cvs server sends back. | |||||
raise CVSProtocolError( | |||||
"Invalid response from CVS server: %s" % response | |||||
) | |||||
return None # requested path does not exist (ignore) | |||||
raise CVSProtocolError("Error response from CVS server: %s" % response) | raise CVSProtocolError("Error response from CVS server: %s" % response) | ||||
fp.write(response) | fp.write(response) | ||||
if response == b"ok\n": | if response == b"ok\n": | ||||
break | break | ||||
fp.seek(0) | fp.seek(0) | ||||
return self._parse_rlog_response(fp) | return self._parse_rlog_response(fp) | ||||
def checkout(self, path, rev, dest_dir, expand_keywords): | def checkout(self, path, rev, dest_dir, expand_keywords): | ||||
▲ Show 20 Lines • Show All 110 Lines • Show Last 20 Lines |
equivalent, but more pythonic