Index: contrib/hook-scripts/svn2rss.py
===================================================================
--- contrib/hook-scripts/svn2rss.py	(revision 20186)
+++ contrib/hook-scripts/svn2rss.py	(working copy)
@@ -64,6 +64,7 @@
     usage_and_exit(msg)
 
 max_items = 20
+commit_rev = None
 
 for opt, arg in opts:
     if opt in ("-h", "--help"):
@@ -132,7 +133,7 @@
         s = StringIO()    
         pickle.dump(self.rss, s)
         f = open(self.pickle_file,"w")
-        f.write (s.getvalue())
+        f.write(s.getvalue())
         f.close()
 
     def make_rss_item(self):
@@ -149,12 +150,10 @@
     def make_rss(self):
         """ Generate a PyRSS2Gen RSS2 object """
         if os.path.exists(self.pickle_file):
-            f = open(self.pickle_file, "r")
-            rss = pickle.load(f)
-            f.close()
-            if len(rss.items) == self.max_items :
-                rss.items.pop()
+            rss = pickle.load(open(self.pickle_file, "r"))
             rss.items.insert(0, self.rss_item)
+            if(len(rss.items) > self.max_items):
+                del(rss.items[self.max_items:])
         else:
             rss_item = self.rss_item
             rss = PyRSS2Gen.RSS2(
@@ -166,7 +165,42 @@
 
         return rss
 
-svn2rss = SVN2RSS(svn_path, commit_rev, repos_path, url, rss_file, max_items)
-rss = svn2rss.rss
-svn2rss.pickle()
-rss.write_xml(open(rss_file, "w"))
+try:
+    if (commit_rev == None):
+        cmd = "svnlook youngest " + repos_path
+        out, x, y = popen2.popen3(cmd)
+        cmd_out = out.readlines()
+        revisions = [int(cmd_out[0])]
+        out.close()
+        x.close()
+        y.close()
+    else:
+        rev_range = commit_rev.split(':')
+        len_rev_range = len(rev_range)
+        if (len_rev_range == 1):
+            revisions = [int(commit_rev)]
+        elif (len_rev_range == 2):
+            start, end = rev_range
+            start = int(start)
+            end   = int(end)
+
+            # The rss feed is a stack. Generate the rss item from 'end'
+            # revision, so it is moved down and 'start' revision remains as
+            # first rss item
+            if (start < end):
+                revisions = range(end, start - 1, -1)
+            else:
+                revisions = range(end , start + 1, 1)
+        else:
+            usage_and_exit("svn2rss.py: Invalid value '%s' for --revision." % (commit_rev))
+
+    for revision in revisions:
+        revision = str(revision)
+        svn2rss = SVN2RSS(svn_path, revision, repos_path, url, rss_file, max_items)
+        rss = svn2rss.rss
+        svn2rss.pickle()
+
+        rss.write_xml(open(svn2rss.rss_file, "w"))
+
+except ValueError, msg:
+    usage_and_exit("svn2rss.py: Invalid value '%s' for --revision." % (commit_rev))
