Index: reviewboard/contrib/tools/post-review
===================================================================
--- reviewboard/contrib/tools/post-review	(revision 1641)
+++ reviewboard/contrib/tools/post-review	(working copy)
@@ -70,6 +70,7 @@
 ###
 # End user-settable variables.
 ###
+BUG_FROM_JOB_RE = None
 
 
 VERSION = "0.8"
@@ -1054,7 +1055,31 @@
         # XXX: This breaks on filenames with spaces.
         return last_line.split(' ')[2]
 
+    def bugs(self, args):
+        """
+        Retrived the information about bugs fixed frmo the 'Jobs' information
+        in a changelist.
+        """
+        changenum = args[0]
+        bugs_fixed = []
 
+        if BUG_FROM_JOB_RE:
+            debug("Retriving bugs fixed from changenum %s" % changenum)
+            fixes = execute(["p4", "fixes", "-c", changenum], split_lines=True)
+
+            # Get the jobs list
+            for line in fixes:
+                line = line.strip()
+                if not line:
+                    continue
+
+                m = re.search(BUG_FROM_JOB_RE, line)
+                if m:
+                    bug_number = m.group(1)
+                    bugs_fixed.append(bug_number)
+
+        return ','.join(bugs_fixed)
+
 class MercurialClient(SCMClient):
     """
     A wrapper around the hg Mercurial tool that fetches repository
@@ -1402,7 +1427,7 @@
 
 
 def tempt_fate(server, tool, changenum, diff_content=None,
-               parent_diff_content=None, submit_as=None):
+               parent_diff_content=None, submit_as=None, bugs_closed=None):
     """
     Attempts to create a review request on a Review Board server and upload
     a diff. On success, the review request path is displayed.
@@ -1435,10 +1460,15 @@
                                             options.branch)
             save_draft = True
 
-        if options.bugs_closed:
+        if bugs_closed:
             server.set_review_request_field(review_request, 'bugs_closed',
+                                            bugs_closed)
+            save_draft = True
+        else:
+            if options.bugs_closed:
+                server.set_review_request_field(review_request, 'bugs_closed',
                                             options.bugs_closed)
-            save_draft = True
+                save_draft = True
 
         if options.description:
             server.set_review_request_field(review_request, 'description',
@@ -1720,6 +1750,11 @@
     else:
         diff, parent_diff = tool.diff(args)
 
+    if isinstance(tool,PerforceClient):
+        bugs = tool.bugs(args)
+    else:
+        bugs = None
+
     if options.output_diff_only:
         print diff
         sys.exit(0)
@@ -1729,7 +1764,8 @@
 
     review_url = tempt_fate(server, tool, changenum, diff_content=diff,
                             parent_diff_content=parent_diff,
-                            submit_as=options.submit_as)
+                            submit_as=options.submit_as,
+                            bugs_closed=bugs)
 
     # Load the review up in the browser if requested to:
     if options.open_browser:
