Index: mergebot/trunk/mergebot/svn.py
===================================================================
--- mergebot/trunk/mergebot/svn.py	(revision 49)
+++ mergebot/trunk/mergebot/svn.py	(revision 50)
@@ -98,4 +98,9 @@
 
     def merge(self, from_url, workingdir, revision_range, logfile):
+        if self.svn_version[:2] == [1,4]:
+            return self.merge14(from_url, workingdir, revision_range, logfile)
+        return self.merge16(from_url, workingdir, revision_range, logfile)
+
+    def merge14(self, from_url, workingdir, revision_range, logfile):
         """Returns a list (status, filename) tuples"""
         # There are a couple of different 'Skipped' messages.
@@ -112,4 +117,30 @@
                 filename = skipped_regex.findall(line)[0]
                 status = "C"
+            else:
+                assert line[4] == ' ', "Unexpected output from svn merge " \
+                    "operation; the 5th character should always be a space." \
+                    "  Output was %r." % line
+                filename = line[5:-1] # (strip trailing newline)
+                status = line[:4].rstrip()
+            results.append((status, filename))
+        return results
+
+    def merge16(self, from_url, workingdir, revision_range, logfile):
+        """Returns a list (status, filename) tuples"""
+        # There are a couple of different 'Skipped' messages.
+        skipped_regex = re.compile("Skipped.* '(.*)'", re.M)
+        start_rev, end_rev = revision_range
+        pipe = os.popen("cd %s && svn merge --revision %s:%s %s . 2>>%s" % \
+            (workingdir, start_rev, end_rev, from_url, logfile))
+        output = pipe.readlines()
+        # FIXME: check pipe.close for errors
+        results = []
+        for line in output:
+            if line.startswith("Skipped"):
+                # This kind of conflict requires special handling.
+                filename = skipped_regex.findall(line)[0]
+                status = "C"
+            elif line.startswith("--- Merging r"):
+                continue # ignore the line
             else:
                 assert line[4] == ' ', "Unexpected output from svn merge " \
