[[[
Accept -rX-Y, for all svnmerge commands, where X > Y.
Before this patch, empty RevisionSet()s were created when X > Y.

* contrib/client-side/svnmerge_test.py
   (TestCase_RevisionSet.test_reverse_order_input_string): New test. Try
    creating a RevisionSet() with a string range, in descending order.

* contrib/client-side/svnmerge.py
   (RevisionSet.__init__): Sort the input revision range before filling in
    RevisionSet._revs.
]]]
Index: contrib/client-side/svnmerge_test.py
===================================================================
--- contrib/client-side/svnmerge_test.py        (revision 19641)
+++ contrib/client-side/svnmerge_test.py        (working copy)
@@ -89,6 +89,18 @@
         self.assert_(2 in rs)
         self.assert_(9 not in rs)
 
+    def test_descending_order_input_string(self):
+        """Pass a range in descending order and see if RevisionSet() works."""
+        rs = svnmerge.RevisionSet("45-30")
+        self.assert_(30 in rs)
+        self.assert_(32 in rs)
+        self.assert_(39 in rs)
+        self.assert_(44 in rs)
+        self.assert_(45 in rs)
+        self.assert_(29 not in rs)
+        self.assert_(46 not in rs)
+        self.assert_(47 not in rs)
+
     def test_constr_dict(self):
         rs = svnmerge.RevisionSet({18:1, 24:1, 25:1, 43:1})
         self.assert_(24 in rs)
Index: contrib/client-side/svnmerge.py
===================================================================
--- contrib/client-side/svnmerge.py     (revision 19641)
+++ contrib/client-side/svnmerge.py     (working copy)
@@ -454,8 +454,12 @@
                     if len(rev_or_revs) == 1:
                         self._revs[int(rev_or_revs[0])] = 1
                     elif len(rev_or_revs) == 2:
-                        for rev in range(int(rev_or_revs[0]),
-                                         int(rev_or_revs[1])+1):
+                        # handle revision ranges provided in descending order.
+                        # convert to int before further use
+                        rev_or_revs = map(int, rev_or_revs)
+                        rev_or_revs.sort()
+                        for rev in range(rev_or_revs[0],
+                                         rev_or_revs[1]+1):
                             self._revs[rev] = 1
                     else:
                         raise ValueError, 'Ill formatted revision range: ' + R
Accept -rX-Y, for all svnmerge commands, where X > Y.
Before this patch, empty RevisionSet()s were created when X > Y.

* contrib/client-side/svnmerge_test.py
  (TestCase_RevisionSet.test_reverse_order_input_string): New test. Try
   creating a RevisionSet() with a string range, in descending order.

* contrib/client-side/svnmerge.py
  (RevisionSet.__init__): Sort the input revision range before filling in
   RevisionSet._revs.
_______________________________________________
Svnmerge mailing list
[email protected]
http://www.orcaware.com/mailman/listinfo/svnmerge

Reply via email to