Index: contrib/hook-scripts/svn2rss.py
===================================================================
--- contrib/hook-scripts/svn2rss.py	(revision 20157)
+++ contrib/hook-scripts/svn2rss.py	(working copy)
@@ -34,7 +34,7 @@
     sys.exit(1)
 
 # All clear on the custom module checks.  Import some standard stuff.    
-import getopt, os, popen2, pickle, datetime
+import getopt, os, popen2, pickle, datetime, re, string
 from StringIO import StringIO
 
 
@@ -64,6 +64,7 @@
     usage_and_exit(msg)
 
 max_items = 20
+commit_rev = None
 
 for opt, arg in opts:
     if opt in ("-h", "--help"):
@@ -152,8 +153,10 @@
             f = open(self.pickle_file, "r")
             rss = pickle.load(f)
             f.close()
-            if len(rss.items) == self.max_items :
+            length = len(rss.items)
+            while (length >= self.max_items):
                 rss.items.pop()
+                length = length - 1
             rss.items.insert(0, self.rss_item)
         else:
             rss_item = self.rss_item
@@ -166,7 +169,41 @@
 
         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 is 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()
+  elif (not re.compile(":").search(commit_rev)): 
+    revisions = [int(commit_rev)]
+    # if revision contains ":", split and add the rss items for all
+    # revisions mentioned in the range
+  else:
+    start, end = string.split (commit_rev, ':')
+    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)
+
+  for revision in revisions:
+    revision = str (revision)
+    svn2rss = SVN2RSS(svn_path, revision, repos_path, url, rss_file, max_items)
+    rss = svn2rss.rss
+    svn2rss.pickle()
+
+    fh = open (svn2rss.rss_file, "w")
+    rss.write_xml(fh)
+    fh.close()
+
+except ValueError, msg:
+    usage_and_exit ("svn2rss.py: Invalid value '%s' for --revision." % (commit_rev))
