Changeset 50 for mergebot/trunk/mergebot/svn.py
- Timestamp:
- Feb 23, 2010 6:31:25 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
mergebot/trunk/mergebot/svn.py
r48 r50 98 98 99 99 def merge(self, from_url, workingdir, revision_range, logfile): 100 if self.svn_version[:2] == [1,4]: 101 return self.merge14(from_url, workingdir, revision_range, logfile) 102 return self.merge16(from_url, workingdir, revision_range, logfile) 103 104 def merge14(self, from_url, workingdir, revision_range, logfile): 100 105 """Returns a list (status, filename) tuples""" 101 106 # There are a couple of different 'Skipped' messages. … … 112 117 filename = skipped_regex.findall(line)[0] 113 118 status = "C" 119 else: 120 assert line[4] == ' ', "Unexpected output from svn merge " \ 121 "operation; the 5th character should always be a space." \ 122 " Output was %r." % line 123 filename = line[5:-1] # (strip trailing newline) 124 status = line[:4].rstrip() 125 results.append((status, filename)) 126 return results 127 128 def merge16(self, from_url, workingdir, revision_range, logfile): 129 """Returns a list (status, filename) tuples""" 130 # There are a couple of different 'Skipped' messages. 131 skipped_regex = re.compile("Skipped.* '(.*)'", re.M) 132 start_rev, end_rev = revision_range 133 pipe = os.popen("cd %s && svn merge --revision %s:%s %s . 2>>%s" % \ 134 (workingdir, start_rev, end_rev, from_url, logfile)) 135 output = pipe.readlines() 136 # FIXME: check pipe.close for errors 137 results = [] 138 for line in output: 139 if line.startswith("Skipped"): 140 # This kind of conflict requires special handling. 141 filename = skipped_regex.findall(line)[0] 142 status = "C" 143 elif line.startswith("--- Merging r"): 144 continue # ignore the line 114 145 else: 115 146 assert line[4] == ' ', "Unexpected output from svn merge " \
Note: See TracChangeset
for help on using the changeset viewer.