reviewboard: store commit ID in commit messages instead of extras (bug 1243486); r=dminor draft
authorGregory Szorc <gps@mozilla.com>
Wed, 03 Feb 2016 13:00:50 -0800
changeset 7113 1201e404ad4ff4829d0ed24bd0aefdce481a5a28
parent 7112 e41e512eda19c4c3956a9ed3e8507bb2dbbc02dd
push id594
push usergszorc@mozilla.com
push dateFri, 05 Feb 2016 20:03:35 +0000
reviewersdminor
bugs1243486
reviewboard: store commit ID in commit messages instead of extras (bug 1243486); r=dminor Storing the commit ID in extras was littered with problems. First, the ID wasn't always available from data that Review Board had access to (it sees the commit message but not the extras by default). Second, Mercurial doesn't always preserve extras, as the existing `hg graft` test demonstrated. While there wasn't a test for it, I believe MQ dropped the custom extras entry as well. Third, Git stores the commit ID in the commit message. Both implementations should be consistent to make logic using the commit IDs simpler. This commit moves the commit ID storage from extras to the commit message. Because we changed the content of the commit, SHA-1s change. This resulted in massive test fallout. Most of the changes were basic overwrites of the new SHA-1. Some test commands referenced SHA-1s and these needed updated. In a few cases, uses of `hg commit --amend -m` had to define the commit ID manually to carry it over so a new one wasn't generated on next use of the changeset. The old code for installing a hacked up "rebase" command that preserves extras has been removed. MozReview-Commit-ID: 1WyO65ojxuv
autoland/tests/test-autoland-closed-tree.t
autoland/tests/test-autoland-merge.t
autoland/tests/test-post-autoland-job.t
git/tests/test-mozreview-push-basic.t
hgext/reviewboard/client.py
hgext/reviewboard/tests/test-auth.t
hgext/reviewboard/tests/test-bugzilla.t
hgext/reviewboard/tests/test-commitid.t
hgext/reviewboard/tests/test-commits-added.t
hgext/reviewboard/tests/test-commits-deleted-no-obsolescence.t
hgext/reviewboard/tests/test-commits-deleted-obsolescence.t
hgext/reviewboard/tests/test-errors.t
hgext/reviewboard/tests/test-fetchreviews.t
hgext/reviewboard/tests/test-folding-obsolescence.t
hgext/reviewboard/tests/test-ldap-association.t
hgext/reviewboard/tests/test-multiple-parents.t
hgext/reviewboard/tests/test-multiple-precursors.t
hgext/reviewboard/tests/test-obsolescence.t
hgext/reviewboard/tests/test-operation-prevention.t
hgext/reviewboard/tests/test-pulse-publishing.t
hgext/reviewboard/tests/test-push-http.t
hgext/reviewboard/tests/test-push.t
hgext/reviewboard/tests/test-remote-strip.t
hgext/reviewboard/tests/test-repo-discovery.t
hgext/reviewboard/tests/test-review-commit-rewrite.t
hgext/reviewboard/tests/test-review-request-approval.t
hgext/reviewboard/tests/test-review-request-closed-discarded.t
hgext/reviewboard/tests/test-review-request-closed-submitted.t
hgext/reviewboard/tests/test-review-request-delete-draft.t
hgext/reviewboard/tests/test-review-request-summary.t
hgext/reviewboard/tests/test-reviewer-flags.t
hgext/reviewboard/tests/test-specify-reviewers.t
hgext/reviewboard/tests/test-store.t
hgext/reviewboard/tests/test-unicode.t
pylib/mozreviewbots/tests/test-eslintbot-noop.t
pylib/mozreviewbots/tests/test-eslintbot.t
pylib/mozreviewbots/tests/test-pylintbot-diff-context.t
pylib/mozreviewbots/tests/test-pylintbot-line-adjustment.t
pylib/mozreviewbots/tests/test-pylintbot-noop.t
pylib/mozreviewbots/tests/test-pylintbot.t
pylib/mozreviewbots/tests/test-snarkbot.t
--- a/autoland/tests/test-autoland-closed-tree.t
+++ b/autoland/tests/test-autoland-closed-tree.t
@@ -27,17 +27,17 @@ Create a commit to test on Try
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  1:7194ef3a2eac
+  changeset:  1:f363e17530eb
   summary:    Bug 1 - some stuff
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -51,12 +51,12 @@ Post a job
   (200, u'{\n  "request_id": 1\n}')
   $ ottoland autoland-job-status $AUTOLAND_URL 1 --poll
   timed out
 
 Open the tree
 
   $ treestatus set-status $TREESTATUS_URL try open
   $ ottoland autoland-job-status $AUTOLAND_URL 1 --poll
-  (200, u'{\n  "commit_descriptions": "", \n  "destination": "try", \n  "error_msg": "", \n  "landed": true, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "", \n  "result": "*", \n  "rev": "7194ef3a2eac", \n  "tree": "test-repo", \n  "trysyntax": "stuff"\n}') (glob)
+  (200, u'{\n  "commit_descriptions": "", \n  "destination": "try", \n  "error_msg": "", \n  "landed": true, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "", \n  "result": "*", \n  "rev": "f363e17530eb", \n  "tree": "test-repo", \n  "trysyntax": "stuff"\n}') (glob)
 
   $ mozreview stop
   stopped 9 containers
--- a/autoland/tests/test-autoland-merge.t
+++ b/autoland/tests/test-autoland-merge.t
@@ -25,31 +25,31 @@ Create a commit to test on Try
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  1:b92ab6726259
+  changeset:  1:e2507be7827c
   summary:    Bug 1 - some stuff; r?cthulhu
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (visit review url to publish these review requests so others can see them)
 
 Post a job
 
   $ REV=`hg log -r . --template "{node|short}"`
   $ ottoland post-autoland-job $AUTOLAND_URL test-repo $REV inbound http://localhost:9898 --commit-descriptions "{\"$REV\": \"Bug 1 - some stuff; r=cthulhu\"}"
   (200, u'{\n  "request_id": 1\n}')
   $ ottoland autoland-job-status $AUTOLAND_URL 1 --poll
-  (200, u'{\n  "commit_descriptions": {\n    "b92ab6726259": "Bug 1 - some stuff; r=cthulhu"\n  }, \n  "destination": "inbound", \n  "error_msg": "", \n  "landed": true, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "", \n  "result": "9dc773c72939", \n  "rev": "b92ab6726259", \n  "tree": "test-repo", \n  "trysyntax": ""\n}')
+  (200, u'{\n  "commit_descriptions": {\n    "e2507be7827c": "Bug 1 - some stuff; r=cthulhu"\n  }, \n  "destination": "inbound", \n  "error_msg": "", \n  "landed": true, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "", \n  "result": "3bce87fd55d0", \n  "rev": "e2507be7827c", \n  "tree": "test-repo", \n  "trysyntax": ""\n}')
   $ mozreview exec autoland hg log /repos/inbound-test-repo/ --template '{rev}:{desc\|firstline}:{phase}\\n'
   0:Bug 1 - some stuff; r=cthulhu:public
 
 Post a job with a bad merge
 
   $ mozreview exec autoland "bash -c cd /repos/inbound-test-repo/ && echo foo2 > foo"
   $ mozreview exec autoland "bash -c cd /repos/inbound-test-repo/ && hg commit -m \"trouble\""
   $ echo foo3 > foo
@@ -59,35 +59,35 @@ Post a job with a bad merge
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 3 changesets for review
   
-  changeset:  1:b92ab6726259
+  changeset:  1:e2507be7827c
   summary:    Bug 1 - some stuff; r?cthulhu
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:c698e9b61b34
+  changeset:  2:7c1d49c8ea0e
   summary:    trouble
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
-  changeset:  3:b28c57a24a9e
+  changeset:  3:5d8686a5858e
   summary:    Bug 1 - more stuff; r?cthulhu
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   $ REV=`hg log -r . --template "{node|short}"`
   $ ottoland post-autoland-job $AUTOLAND_URL test-repo $REV inbound http://localhost:9898 --commit-descriptions "{\"$REV\": \"Bug 1 - more stuff; r=cthulhu\"}"
   (200, u'{\n  "request_id": 2\n}')
   $ ottoland autoland-job-status $AUTOLAND_URL 2 --poll
-  (200, u'{\n  "commit_descriptions": {\n    "b28c57a24a9e": "Bug 1 - more stuff; r=cthulhu"\n  }, \n  "destination": "inbound", \n  "error_msg": "We\'re sorry, Autoland could not rebase your commits for you automatically. Please manually rebase your commits and try again.\\n\\nhg error in cmd: hg rebase -s 8a6b70a9c3b6 -d 9dc773c72939: rebasing 4:8a6b70a9c3b6 \\"Bug 1 - more stuff; r=cthulhu\\" (tip)\\nmerging foo\\nwarning: conflicts while merging foo! (edit, then use \'hg resolve --mark\')\\nunresolved conflicts (see hg resolve, then hg rebase --continue)\\n", \n  "landed": false, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "", \n  "result": "", \n  "rev": "b28c57a24a9e", \n  "tree": "test-repo", \n  "trysyntax": ""\n}')
+  (200, u'{\n  "commit_descriptions": {\n    "5d8686a5858e": "Bug 1 - more stuff; r=cthulhu"\n  }, \n  "destination": "inbound", \n  "error_msg": "We\'re sorry, Autoland could not rebase your commits for you automatically. Please manually rebase your commits and try again.\\n\\nhg error in cmd: hg rewritecommitdescriptions --descriptions=/tmp/tmpgE0EJ7 5d8686a5858e: rebasing 4:1fa31b8c94db \\"Bug 1 - more stuff; r=cthulhu\\" (tip)\\nmerging foo\\nwarning: conflicts while merging foo! (edit, then use \'hg resolve --mark\')\\nunresolved conflicts (see hg resolve, then hg rebase --continue)\\n", \n  "landed": false, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "", \n  "result": "", \n  "rev": "5d8686a5858e", \n  "tree": "test-repo", \n  "trysyntax": ""\n}')
 
   $ mozreview exec autoland hg log /repos/inbound-test-repo/ --template '{rev}:{desc\|firstline}:{phase}\\n'
   0:Bug 1 - some stuff; r=cthulhu:public
 
   $ mozreview stop
   stopped 9 containers
--- a/autoland/tests/test-post-autoland-job.t
+++ b/autoland/tests/test-post-autoland-job.t
@@ -25,17 +25,17 @@ Create a commit to test on Try
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  1:b92ab6726259
+  changeset:  1:e2507be7827c
   summary:    Bug 1 - some stuff; r?cthulhu
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (visit review url to publish these review requests so others can see them)
 
 Ensure Autoland started without errors
@@ -61,26 +61,26 @@ Posting a job with an unknown revision s
   (200, u'{\n  "commit_descriptions": {\n    "42": "bad revision"\n  }, \n  "destination": "try", \n  "error_msg": "hg error in cmd: hg pull test-repo -r 42: pulling from http://hgrb/test-repo\\nabort: unknown revision \'42\'!\\n", \n  "landed": false, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "", \n  "result": "", \n  "rev": "42", \n  "tree": "test-repo", \n  "trysyntax": ""\n}')
 
 Post a job
 
   $ REV=`hg log -r . --template "{node|short}"`
   $ ottoland post-autoland-job $AUTOLAND_URL test-repo $REV inbound http://localhost:9898 --commit-descriptions "{\"$REV\": \"Bug 1 - some stuff; r=cthulhu\"}"
   (200, u'{\n  "request_id": 2\n}')
   $ ottoland autoland-job-status $AUTOLAND_URL 2 --poll
-  (200, u'{\n  "commit_descriptions": {\n    "b92ab6726259": "Bug 1 - some stuff; r=cthulhu"\n  }, \n  "destination": "inbound", \n  "error_msg": "", \n  "landed": true, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "", \n  "result": "9dc773c72939", \n  "rev": "b92ab6726259", \n  "tree": "test-repo", \n  "trysyntax": ""\n}')
+  (200, u'{\n  "commit_descriptions": {\n    "e2507be7827c": "Bug 1 - some stuff; r=cthulhu"\n  }, \n  "destination": "inbound", \n  "error_msg": "", \n  "landed": true, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "", \n  "result": "3bce87fd55d0", \n  "rev": "e2507be7827c", \n  "tree": "test-repo", \n  "trysyntax": ""\n}')
   $ mozreview exec autoland hg log /repos/inbound-test-repo/ --template '{rev}:{desc\|firstline}:{phase}\\n'
   0:Bug 1 - some stuff; r=cthulhu:public
 
 Post a job with try syntax
 
   $ ottoland post-autoland-job $AUTOLAND_URL test-repo `hg log -r . --template "{node|short}"` try http://localhost:9898 --trysyntax "stuff"
   (200, u'{\n  "request_id": 3\n}')
   $ ottoland autoland-job-status $AUTOLAND_URL 3 --poll
-  (200, u'{\n  "commit_descriptions": "", \n  "destination": "try", \n  "error_msg": "", \n  "landed": true, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "", \n  "result": "*", \n  "rev": "b92ab6726259", \n  "tree": "test-repo", \n  "trysyntax": "stuff"\n}') (glob)
+  (200, u'{\n  "commit_descriptions": "", \n  "destination": "try", \n  "error_msg": "", \n  "landed": true, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "", \n  "result": "*", \n  "rev": "e2507be7827c", \n  "tree": "test-repo", \n  "trysyntax": "stuff"\n}') (glob)
   $ mozreview exec autoland hg log /repos/try/ --template '{rev}:{desc\|firstline}:{phase}\\n'
   2:try: stuff:draft
   1:Bug 1 - some stuff; r?cthulhu:draft
   0:root commit:public
 
 Post a job using a bookmark
 
   $ echo foo2 > foo
@@ -90,33 +90,33 @@ Post a job using a bookmark
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  1:b92ab6726259
+  changeset:  1:e2507be7827c
   summary:    Bug 1 - some stuff; r?cthulhu
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:58bfdda6ffde
+  changeset:  2:373b6ff60965
   summary:    Bug 1 - more goodness; r?cthulhu
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (visit review url to publish these review requests so others can see them)
 
   $ REV=`hg log -r . --template "{node|short}"`
   $ ottoland post-autoland-job $AUTOLAND_URL test-repo $REV inbound http://localhost:9898 --push-bookmark "bookmark" --commit-descriptions "{\"$REV\": \"Bug 1 - more goodness; r=cthulhu\"}"
   (200, u'{\n  "request_id": 4\n}')
   $ ottoland autoland-job-status $AUTOLAND_URL 4 --poll
-  (200, u'{\n  "commit_descriptions": {\n    "58bfdda6ffde": "Bug 1 - more goodness; r=cthulhu"\n  }, \n  "destination": "inbound", \n  "error_msg": "", \n  "landed": true, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "bookmark", \n  "result": "7580c6c90ff2", \n  "rev": "58bfdda6ffde", \n  "tree": "test-repo", \n  "trysyntax": ""\n}')
+  (200, u'{\n  "commit_descriptions": {\n    "373b6ff60965": "Bug 1 - more goodness; r=cthulhu"\n  }, \n  "destination": "inbound", \n  "error_msg": "", \n  "landed": true, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "bookmark", \n  "result": "aba7cf08f2e4", \n  "rev": "373b6ff60965", \n  "tree": "test-repo", \n  "trysyntax": ""\n}')
   $ mozreview exec autoland hg log /repos/inbound-test-repo/ --template '{rev}:{desc\|firstline}:{phase}\\n'
   1:Bug 1 - more goodness; r=cthulhu:public
   0:Bug 1 - some stuff; r=cthulhu:public
 
 Post a job with unicode commit descriptions to be rewritten
 
   $ echo foo3 > foo
   $ hg commit --encoding utf-8 -m 'Bug 1 - こんにちは; r?cthulhu'
@@ -125,36 +125,36 @@ Post a job with unicode commit descripti
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: recorded push in pushlog
   submitting 3 changesets for review
   
-  changeset:  1:b92ab6726259
+  changeset:  1:e2507be7827c
   summary:    Bug 1 - some stuff; r?cthulhu
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:58bfdda6ffde
+  changeset:  2:373b6ff60965
   summary:    Bug 1 - more goodness; r?cthulhu
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
-  changeset:  3:e0c2a1307ae6
+  changeset:  3:e7f4a0f07be3
   summary:    Bug 1 - ?????; r?cthulhu
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (visit review url to publish these review requests so others can see them)
   $ REV=`hg log -r . --template "{node|short}"`
   $ ottoland post-autoland-job $AUTOLAND_URL test-repo $REV inbound http://localhost:9898 --commit-descriptions "{\"$REV\": \"Bug 1 - \\u3053\\u3093\\u306b\\u3061\\u306f; r=cthulhu\"}"
   (200, u'{\n  "request_id": 5\n}')
   $ ottoland autoland-job-status $AUTOLAND_URL 5 --poll
-  (200, u'{\n  "commit_descriptions": {\n    "e0c2a1307ae6": "Bug 1 - \\u3053\\u3093\\u306b\\u3061\\u306f; r=cthulhu"\n  }, \n  "destination": "inbound", \n  "error_msg": "", \n  "landed": true, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "", \n  "result": "23dfa19ab773", \n  "rev": "e0c2a1307ae6", \n  "tree": "test-repo", \n  "trysyntax": ""\n}')
+  (200, u'{\n  "commit_descriptions": {\n    "e7f4a0f07be3": "Bug 1 - \\u3053\\u3093\\u306b\\u3061\\u306f; r=cthulhu"\n  }, \n  "destination": "inbound", \n  "error_msg": "", \n  "landed": true, \n  "ldap_username": "autolanduser@example.com", \n  "push_bookmark": "", \n  "result": "8ec6d9d32147", \n  "rev": "e7f4a0f07be3", \n  "tree": "test-repo", \n  "trysyntax": ""\n}')
 
   $ mozreview exec autoland hg log --encoding=utf-8 /repos/inbound-test-repo/ --template '{rev}:{desc\|firstline}:{phase}\\n'
   2:Bug 1 - \xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf; r=cthulhu:public (esc)
   1:Bug 1 - more goodness; r=cthulhu:public
   0:Bug 1 - some stuff; r=cthulhu:public
 
 Getting status for an unknown job should return a 404
 
--- a/git/tests/test-mozreview-push-basic.t
+++ b/git/tests/test-mozreview-push-basic.t
@@ -158,31 +158,25 @@ Reviews should be published and Bugzilla
       text: ''
     - author: default@example.com
       id: 2
       tags: []
       text:
       - Created attachment 1
       - 'MozReview Request: Bug 1 - Foo 1'
       - ''
-      - 'MozReview-Commit-ID: 124Bxg'
-      - ''
-      - ''
       - 'Review commit: http://$DOCKER_HOSTNAME:$HGPORT1/r/2/diff/#index_header'
       - 'See other reviews: http://$DOCKER_HOSTNAME:$HGPORT1/r/2/'
     - author: default@example.com
       id: 3
       tags: []
       text:
       - Created attachment 2
       - 'MozReview Request: Bug 1 - Foo 2'
       - ''
-      - 'MozReview-Commit-ID: 5ijR9k'
-      - ''
-      - ''
       - 'Review commit: http://$DOCKER_HOSTNAME:$HGPORT1/r/3/diff/#index_header'
       - 'See other reviews: http://$DOCKER_HOSTNAME:$HGPORT1/r/3/'
     component: TestComponent
     depends_on: []
     platform: All
     product: TestProduct
     resolution: ''
     status: NEW
--- a/hgext/reviewboard/client.py
+++ b/hgext/reviewboard/client.py
@@ -18,25 +18,27 @@ This extension adds new options to the `
   * --reviewid The review identifier to use. Pushes using the same
     review ID will overwrite existing reviews for that ID.
   * -c Single changeset to review.
 """
 
 import errno
 import json
 import os
+import re
 import sys
 import urllib
 import urllib2
 
 from mercurial import (
     cmdutil,
     commands,
     context,
     demandimport,
+    encoding,
     error,
     exchange,
     extensions,
     hg,
     httppeer,
     localrepo,
     obsolete,
     phases,
@@ -57,17 +59,17 @@ try:
     import hgrb.proto
 except ImportError:
     sys.path.insert(0, OUR_DIR)
 
     import hgrb.proto
 demandimport.enable()
 
 from hgrb.util import (
-    genid,
+    addcommitid,
     ReviewID,
 )
 
 from mozautomation.commitparser import parse_bugs
 from mozhg.auth import (
     getbugzillaauth,
     configureautobmoapikeyauth,
 )
@@ -140,35 +142,16 @@ def getreviewcaps(remote):
 
     caps = remote.capable('mozreview')
     if isinstance(caps, bool):
         caps = ''
 
     return set(caps.split(','))
 
 
-def rebasecommand(orig, ui, repo, *args, **kwargs):
-    """Wraps rebase command to preserve commit id across rebases.
-
-    Mercurial doesn't preserve all "extra" fields from changectx during
-    rebase by default. However, the rebase command takes a hidden named
-    argument that specifies a function to be called to carry over extras.
-    We hook into this mechanism.
-    """
-    def extrafn(ctx, extra):
-        # Make sure to call original one, if defined.
-        if 'extrafn' in kwargs:
-            kwargs['extrafn'](ctx, extra)
-
-        if 'commitid' in ctx.extra():
-            extra['commitid'] = ctx.extra()['commitid']
-
-    return orig(ui, repo, extrafn=extrafn, *args, **kwargs)
-
-
 def pushcommand(orig, ui, repo, *args, **kwargs):
     """Wraps commands.push to read the --reviewid argument."""
 
     ReviewID(kwargs['reviewid'])
 
     if kwargs['rev'] and kwargs['changeset']:
         raise util.Abort(_('cannot specify both -r and -c'))
 
@@ -411,37 +394,37 @@ def wrappedpushdiscovery(orig, pushop):
             raise util.Abort(
                     _('cannot review empty changeset %s') % ctx.hex()[:12],
                     hint=_('add files to or remove changeset'))
 
     # Ensure all reviewed changesets have commit IDs.
     replacenodes = []
     for node in nodes:
         ctx = repo[node]
-        if 'commitid' not in ctx.extra():
+        if not re.search('^MozReview-Commit-ID: ', ctx.description(), re.MULTILINE):
             replacenodes.append(node)
 
-    def addcommitid(repo, ctx, revmap, copyfilectxfn):
+    def makememctx(repo, ctx, revmap, copyfilectxfn):
         parents = newparents(repo, ctx, revmap)
         # Need to make a copy otherwise modification is made on original,
         # which is just plain wrong.
-        extra = dict(ctx.extra())
-        assert 'commitid' not in extra
-        extra['commitid'] = genid(repo)
+        msg = encoding.fromlocal(ctx.description())
+        new_msg, changed = addcommitid(msg, repo=repo)
+
         memctx = context.memctx(repo, parents,
-                                ctx.description(), ctx.files(),
+                                encoding.tolocal(new_msg), ctx.files(),
                                 copyfilectxfn, user=ctx.user(),
-                                date=ctx.date(), extra=extra)
+                                date=ctx.date(), extra=dict(ctx.extra()))
 
         return memctx
 
     if replacenodes:
         ui.status(_('(adding commit id to %d changesets)\n') %
                   (len(replacenodes)))
-        nodemap = replacechangesets(repo, replacenodes, addcommitid,
+        nodemap = replacechangesets(repo, replacenodes, makememctx,
                                     backuptopic='addcommitid')
 
         # Since we're in the middle of an operation, update references
         # to rewritten nodes.
         nodes = [nodemap.get(node, node) for node in nodes]
         pushop.revs = [nodemap.get(node, node) for node in pushop.revs]
 
     pushop.reviewnodes = nodes
@@ -1005,34 +988,16 @@ def extsetup(ui):
     # Define some extra arguments on the push command.
     entry = extensions.wrapcommand(commands.table, 'push', pushcommand)
     entry[1].append(('', 'noreview', False,
                      _('Do not perform a review on push.')))
     entry[1].append(('', 'reviewid', '', _('Review identifier')))
     entry[1].append(('c', 'changeset', '',
                     _('Review this specific changeset only')))
 
-    # Value may be empty. So check config source to see if key is present.
-    if (ui.configsource('extensions', 'rebase') != 'none' and
-        ui.config('extensions', 'rebase') != '!'):
-        # The extensions.afterloaded mechanism is busted. So we can't
-        # reliably wrap the rebase command in case it hasn't loaded yet. So
-        # just load the rebase extension and wrap the function directly
-        # from its commands table.
-        try:
-            cmdutil.findcmd('rebase', commands.table, strict=True)
-        except error.UnknownCommand:
-            extensions.load(ui, 'rebase', '')
-
-        # Extensions' cmdtable entries aren't merged with commands.table.
-        # Instead, dispatch just looks at each module. So it is safe to wrap
-        # the command on the extension module.
-        rebase = extensions.find('rebase')
-        extensions.wrapcommand(rebase.cmdtable, 'rebase', rebasecommand)
-
     templatekw.keywords['reviews'] = template_reviews
 
 def reposetup(ui, repo):
     if not repo.local():
         return
 
     class reviewboardrepo(repo.__class__):
         @localrepo.repofilecache('reviews')
@@ -1041,30 +1006,27 @@ def reposetup(ui, repo):
 
         def commit(self, *args, **kwargs):
             """Override commit to generate a unique commit identifier.
 
             The commit identifier is used to track a logical commits across
             history rewrites, including grafting. This is used as an index
             of sorts in the review tool.
             """
-            # Some callers of commit() may not pass named arguments. Slurp
-            # extra from positional arguments.
-            if len(args) == 7:
-                assert 'extra' not in kwargs
-                kwargs['extra'] = args[6]
-                args = tuple(args[0:6])
+            msg = ''
+            if args:
+                msg = args[0]
+            elif kwargs and 'text' in kwargs:
+                msg = kwargs['text']
+                del kwargs['text']
 
-            if 'extra' not in kwargs or not kwargs['extra']:
-                kwargs['extra'] = {}
+            if self.reviews.remoteurl and msg:
+                msg, changed = addcommitid(msg, repo=self)
 
-            if 'commitid' not in kwargs['extra'] and self.reviews.remoteurl:
-                kwargs['extra']['commitid'] = genid(self)
-
-            return super(reviewboardrepo, self).commit(*args, **kwargs)
+            return super(reviewboardrepo, self).commit(msg, *args[1:], **kwargs)
 
     repo.__class__ = reviewboardrepo
     repo.noreviewboardpush = False
     repo.reviewid = None
 
     def prepushoutgoinghook(local, remote, outgoing):
         if 'pushreview' in getreviewcaps(remote):
             # We can't simply look at outgoing.missingheads here because
--- a/hgext/reviewboard/tests/test-auth.t
+++ b/hgext/reviewboard/tests/test-auth.t
@@ -160,17 +160,17 @@ Changing the IRC nickname in Bugzilla wi
 
   $ exportbzauth user2@example.com password2
   $ hg push --reviewid bz://1/user2newnick
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 1 changesets for review
   
-  changeset:  1:d97f9c20be62
+  changeset:  1:bb2efc8efdd7
   summary:    Bug 1 - Testing 1 2 3
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/user2newnick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
@@ -192,17 +192,17 @@ Changing the email address in Bugzilla w
   updated user 9
   $ exportbzauth user2-new@example.com password2
   $ SSH_KEYNAME=user2@example.com hg push --reviewid bz://1/user2newemail
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 1 changesets for review
   
-  changeset:  1:d97f9c20be62
+  changeset:  1:bb2efc8efdd7
   summary:    Bug 1 - Testing 1 2 3
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
   review id:  bz://1/user2newemail
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
@@ -240,17 +240,17 @@ Re-enabling a disabled user will allow t
   updated user 8
   $ exportbzauth user1@example.com password1
   $ hg push --config bugzilla.username=user1@example.com --config bugzilla.apikey=${user1key} --reviewid bz://1/undisableduser
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 1 changesets for review
   
-  changeset:  1:d97f9c20be62
+  changeset:  1:bb2efc8efdd7
   summary:    Bug 1 - Testing 1 2 3
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/6 (draft)
   
   review id:  bz://1/undisableduser
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/5 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
--- a/hgext/reviewboard/tests/test-bugzilla.t
+++ b/hgext/reviewboard/tests/test-bugzilla.t
@@ -23,17 +23,17 @@ Pushing a review should not touch Bugzil
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  1:a92d53c0ffc7
+  changeset:  1:98467d80785e
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -94,28 +94,28 @@ Publishing the review will add an attach
     status: NEW
     summary: bug1
 
 We should only display the full commit description the first time it is
 published.
 
   $ echo foo1 >> foo
   $ hg commit --amend
-  saved backup bundle to $TESTTMP/client/.hg/strip-backup/a92d53c0ffc7-1dd3de76-amend-backup.hg (glob)
+  saved backup bundle to $TESTTMP/client/.hg/strip-backup/98467d80785e-96ff1ede-amend-backup.hg (glob)
   $ hg push
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  1:ad7618cd44de
+  changeset:  1:c84f52fcaead
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
--- a/hgext/reviewboard/tests/test-commitid.t
+++ b/hgext/reviewboard/tests/test-commitid.t
@@ -9,113 +9,111 @@
   > EOF
 
   $ hg init repo1
   $ cd repo1
 
   $ touch foo
   $ hg -q commit -A -m initial
 
-We should not install the rebase extension if it is explicitly set to
-disabled
-
-  $ hg --config extensions.rebase=! rebase
-  hg: unknown command 'rebase'
-  'rebase' is provided by the following extension:
-  
-      rebase        command to move sets of revisions to a different ancestor
-  
-  (use "hg help extensions" for information on enabling extensions)
-  [255]
-
 Commit IDs are only added for repos known to be associated with
 MozReview. Install a dummy review URL to fake it out.
 
   $ cat >> .hg/reviews << EOF
   > u https://dummy1/
   > r https://dummy2/
   > EOF
 
 Commit ID should be present after review URL is defined.
 
   $ echo c1 > foo
   $ hg commit -m 'commit 1'
 
-  $ hg log -T '{rev}:{node|short} {get(extras, "commitid")} {desc}\n'
-  1:f649433beb75 124Bxg commit 1
-  0:96ee1d7354c4  initial
+  $ hg log -T '{rev}:{node|short} {desc}\n'
+  1:306d1563179b commit 1
+  
+  MozReview-Commit-ID: 124Bxg
+  0:96ee1d7354c4 initial
 
 Mercurial doesn't preserve extras on rebase by default. Verify our
 monkeypatch works.
 
   $ hg -q up -r 0
   $ touch bar
   $ hg -q commit -A -m 'head 2'
 
   $ hg rebase -s 1 -d 2
-  rebasing 1:f649433beb75 "commit 1"
+  rebasing 1:306d1563179b "commit 1"
   saved backup bundle to $TESTTMP/repo1/.hg/strip-backup/*-backup.hg (glob)
 
-  $ hg log -G -T '{rev}:{node|short} {get(extras, "commitid")} {desc}\n'
-  o  2:97e57e2cc32f 124Bxg commit 1
+  $ hg log -G -T '{rev}:{node|short} {desc}\n'
+  o  2:ae4a1eb0e7a0 commit 1
   |
-  @  1:b3e6f181008c 5ijR9k head 2
+  |  MozReview-Commit-ID: 124Bxg
+  @  1:8a14d300d449 head 2
   |
-  o  0:96ee1d7354c4  initial
+  |  MozReview-Commit-ID: 5ijR9k
+  o  0:96ee1d7354c4 initial
   
 
-Histedit should preserve commitids when changesets are updated
+Histedit should preserve commit ids when changesets are updated
 
   $ hg -q up -r 0
   $ echo 1 > bar
   $ hg commit -A -m histedit1
   adding bar
   created new head
   $ echo 2 > bar
   $ hg commit -m histedit2
   $ echo 3 > baz
   $ hg commit -A -m histedit3
   adding baz
 
-  $ hg log -G -T '{rev}:{node|short} {get(extras, "commitid")} {desc}\n' -r '::.'
-  @  5:bc98e6acc675 JmjAjw histedit3
+  $ hg log -G -T '{rev}:{node|short} {desc}\n' -r '::.'
+  @  5:0aa5a5b9a166 histedit3
+  |
+  |  MozReview-Commit-ID: JmjAjw
+  o  4:bb89e4592815 histedit2
   |
-  o  4:b7a2d48fe04e F63vXs histedit2
+  |  MozReview-Commit-ID: F63vXs
+  o  3:4a17019033eb histedit1
   |
-  o  3:5280b158e76d APOgLo histedit1
-  |
-  o  0:96ee1d7354c4  initial
+  |  MozReview-Commit-ID: APOgLo
+  o  0:96ee1d7354c4 initial
   
 
   $ cat >> commands << EOF
-  > p 5280b158e76d
-  > p bc98e6acc675
-  > p b7a2d48fe04e
+  > p 4a17019033eb
+  > p 0aa5a5b9a166
+  > p bb89e4592815
   > EOF
 
-  $ hg histedit -r 5280b158e76d --commands commands
+  $ hg histedit -r 4a17019033eb --commands commands
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to $TESTTMP/repo1/.hg/strip-backup/b7a2d48fe04e*-backup.hg (glob)
+  saved backup bundle to $TESTTMP/repo1/.hg/strip-backup/bb89e4592815-c4460a5c-backup.hg (glob)
 
-  $ hg log -G -T '{rev}:{node|short} {get(extras, "commitid")} {desc}\n' -r '::.'
-  @  5:880ef5832635 F63vXs histedit2
+  $ hg log -G -T '{rev}:{node|short} {desc}\n' -r '::.'
+  @  5:986c4bf069fe histedit2
   |
-  o  4:412f42129824 JmjAjw histedit3
+  |  MozReview-Commit-ID: F63vXs
+  o  4:84bc2f59c8ec histedit3
   |
-  o  3:5280b158e76d APOgLo histedit1
+  |  MozReview-Commit-ID: JmjAjw
+  o  3:4a17019033eb histedit1
   |
-  o  0:96ee1d7354c4  initial
+  |  MozReview-Commit-ID: APOgLo
+  o  0:96ee1d7354c4 initial
   
 
-Graft will preserve commitid.
-TODO this doesn't work as expected.
+Graft will preserve commit id.
 
   $ hg -q up -r 0
-  $ hg graft -r 412f42129824
-  grafting 4:412f42129824 "histedit3"
+  $ hg graft -r 84bc2f59c8ec
+  grafting 4:84bc2f59c8ec "histedit3"
 
-  $ hg log -G -T '{rev}:{node|short} {get(extras, "commitid")} {desc}\n' -r '::.'
-  @  6:8d7c35d9bfd2 OTOPw0 histedit3
+  $ hg log -G -T '{rev}:{node|short} {desc}\n' -r '::.'
+  @  6:7eb940c47356 histedit3
   |
-  o  0:96ee1d7354c4  initial
+  |  MozReview-Commit-ID: JmjAjw
+  o  0:96ee1d7354c4 initial
   
--- a/hgext/reviewboard/tests/test-commits-added.t
+++ b/hgext/reviewboard/tests/test-commits-added.t
@@ -29,21 +29,21 @@
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  1:a92d53c0ffc7
+  changeset:  1:98467d80785e
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:233b570e5356
+  changeset:  2:3a446ae43820
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -56,25 +56,25 @@ Adding commits to old reviews should cre
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: recorded push in pushlog
   submitting 3 changesets for review
   
-  changeset:  1:a92d53c0ffc7
+  changeset:  1:98467d80785e
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:233b570e5356
+  changeset:  2:3a446ae43820
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
-  changeset:  3:4cb601f74de5
+  changeset:  3:1ec9946fd47f
   summary:    Bug 1 - Foo 3
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -108,18 +108,18 @@ The parent review should have its descri
     summary: bz://1/mynick
     description: This is the parent review request
     target_people: []
     extra:
       p2rb.reviewer_map: '{"3": [], "2": []}'
     commit_extra_data:
       p2rb: true
       p2rb.base_commit: 7c5bdf0cec4a90edb36300f8f3679857f46db829
-      p2rb.commits: '[["a92d53c0ffc7df0517397a77980e62332552d812", 2], ["233b570e5356d0c84bcbf0633de446172012b3b3",
-        3], ["4cb601f74de529935048816623637fb0ca2812a4", 4]]'
+      p2rb.commits: '[["98467d80785ec84dd871f213c167ed704a6d974d", 2], ["3a446ae4382006c43cdfa5aa33c494f582736f35",
+        3], ["1ec9946fd47ff9b5cb07e9d9c8b4d393b688e01b", 4]]'
       p2rb.discard_on_publish_rids: '[]'
       p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
       p2rb.identifier: bz://1/mynick
       p2rb.is_squashed: true
       p2rb.unpublished_rids: '[]'
     diffs:
     - id: 4
       revision: 1
@@ -146,29 +146,29 @@ rids to be strings and then pushing a ne
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: recorded push in pushlog
   submitting 4 changesets for review
   
-  changeset:  1:a92d53c0ffc7
+  changeset:  1:98467d80785e
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:233b570e5356
+  changeset:  2:3a446ae43820
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
-  changeset:  3:4cb601f74de5
+  changeset:  3:1ec9946fd47f
   summary:    Bug 1 - Foo 3
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
-  changeset:  4:fea02e8114c8
+  changeset:  4:6b1149879047
   summary:    Bug 1 - Foo 4
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
--- a/hgext/reviewboard/tests/test-commits-deleted-no-obsolescence.t
+++ b/hgext/reviewboard/tests/test-commits-deleted-no-obsolescence.t
@@ -41,33 +41,33 @@
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 5 changesets with 5 changes to 5 files
   remote: recorded push in pushlog
   submitting 5 changesets for review
   
-  changeset:  1:6bd3fbee3dfa
+  changeset:  1:0b3e14fe3ff1
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:dfe48634934b
+  changeset:  2:bce658a3f6d6
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
-  changeset:  3:d751d4c04967
+  changeset:  3:713878e22d95
   summary:    Bug 1 - Foo 3
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
-  changeset:  4:98dd6a7335db
+  changeset:  4:4d0f846364eb
   summary:    Bug 1 - Foo 4
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5 (draft)
   
-  changeset:  5:76088734e3cb
+  changeset:  5:4e50148c492d
   summary:    Bug 1 - Foo 5
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/6 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -78,29 +78,29 @@ Popping the last commit truncates the re
   $ hg strip -r 5 --no-backup
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg push
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 4 changesets for review
   
-  changeset:  1:6bd3fbee3dfa
+  changeset:  1:0b3e14fe3ff1
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2
   
-  changeset:  2:dfe48634934b
+  changeset:  2:bce658a3f6d6
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3
   
-  changeset:  3:d751d4c04967
+  changeset:  3:713878e22d95
   summary:    Bug 1 - Foo 3
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4
   
-  changeset:  4:98dd6a7335db
+  changeset:  4:4d0f846364eb
   summary:    Bug 1 - Foo 4
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
@@ -119,19 +119,19 @@ Review request 6 should be added to the 
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
-    p2rb.commits: '[["6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e", 2], ["dfe48634934bd5d856a937479aadf54800c242c5",
-      3], ["d751d4c04967ba4ec08425f618ba8d2c1b9d161a", 4], ["98dd6a7335dbea4bd3d2f2d1662fd6db45f1ddfb",
-      5], ["76088734e3cba33be80930be14e7cd1e9ee474be", 6]]'
+    p2rb.commits: '[["0b3e14fe3ff19019110705e72dcf563c0ef551f6", 2], ["bce658a3f6d6aa04bf5c449e0e779e839de4690e",
+      3], ["713878e22d952d478e88bfdef897fdfc73060351", 4], ["4d0f846364eb509a1b6ae3294f05439101f6e7d3",
+      5], ["4e50148c492dde95397cd666f2d4e4ad4fd2176f", 6]]'
     p2rb.discard_on_publish_rids: '[6]'
     p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
     revision: 1
@@ -166,32 +166,32 @@ Review request 6 should be added to the 
     - diff --git a/foo5 b/foo5
     - new file mode 100644
     - '--- /dev/null'
     - +++ b/foo5
     - '@@ -0,0 +1,1 @@'
     - +foo5
     - ''
   approved: false
-  approval_failure: Commit 6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e is not approved.
+  approval_failure: Commit 0b3e14fe3ff19019110705e72dcf563c0ef551f6 is not approved.
   draft:
     bugs:
     - '1'
     commit: bz://1/mynick
     summary: bz://1/mynick
     description: This is the parent review request
     target_people: []
     extra:
       calculated_trophies: true
       p2rb.reviewer_map: '{}'
     commit_extra_data:
       p2rb: true
       p2rb.base_commit: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
-      p2rb.commits: '[["6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e", 2], ["dfe48634934bd5d856a937479aadf54800c242c5",
-        3], ["d751d4c04967ba4ec08425f618ba8d2c1b9d161a", 4], ["98dd6a7335dbea4bd3d2f2d1662fd6db45f1ddfb",
+      p2rb.commits: '[["0b3e14fe3ff19019110705e72dcf563c0ef551f6", 2], ["bce658a3f6d6aa04bf5c449e0e779e839de4690e",
+        3], ["713878e22d952d478e88bfdef897fdfc73060351", 4], ["4d0f846364eb509a1b6ae3294f05439101f6e7d3",
         5]]'
       p2rb.discard_on_publish_rids: '[]'
       p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
       p2rb.identifier: bz://1/mynick
       p2rb.is_squashed: true
       p2rb.unpublished_rids: '[]'
     diffs:
     - id: 7
@@ -234,30 +234,33 @@ Review 6 should be marked as discarded
   id: 6
   status: discarded
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 5
-  description: Bug 1 - Foo 5
+  description:
+  - Bug 1 - Foo 5
+  - ''
+  - 'MozReview-Commit-ID: JmjAjw'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 76088734e3cba33be80930be14e7cd1e9ee474be
+    p2rb.commit_id: 4e50148c492dde95397cd666f2d4e4ad4fd2176f
     p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 6
     revision: 1
-    base_commit_id: 98dd6a7335dbea4bd3d2f2d1662fd6db45f1ddfb
+    base_commit_id: 4d0f846364eb509a1b6ae3294f05439101f6e7d3
     name: diff
     extra: {}
     patch:
     - diff --git a/foo5 b/foo5
     - new file mode 100644
     - '--- /dev/null'
     - +++ b/foo5
     - '@@ -0,0 +1,1 @@'
@@ -277,25 +280,25 @@ likely gets invalidated.
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 3 changesets with 0 changes to 3 files (+1 heads)
   remote: recorded push in pushlog
   submitting 3 changesets for review
   
-  changeset:  1:7050183d97d5
+  changeset:  1:eeb6d49dcb09
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:d7a5827a584d
+  changeset:  2:607f375f35c0
   summary:    Bug 1 - Foo 3
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
-  changeset:  3:b5473ad606f4
+  changeset:  3:81ee86efd38f
   summary:    Bug 1 - Foo 4
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -305,23 +308,26 @@ The first commit was rewritten (we assum
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 1
-  description: Bug 1 - Foo 1
+  description:
+  - Bug 1 - Foo 1
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e
+    p2rb.commit_id: 0b3e14fe3ff19019110705e72dcf563c0ef551f6
     p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
     name: diff
@@ -336,23 +342,26 @@ The first commit was rewritten (we assum
     - ''
   approved: false
   approval_failure: A suitable reviewer has not given a "Ship It!"
   draft:
     bugs:
     - '1'
     commit: null
     summary: Bug 1 - Foo 2
-    description: Bug 1 - Foo 2
+    description:
+    - Bug 1 - Foo 2
+    - ''
+    - 'MozReview-Commit-ID: 5ijR9k'
     target_people: []
     extra:
       calculated_trophies: true
     commit_extra_data:
       p2rb: true
-      p2rb.commit_id: 7050183d97d5f601da86fb313dd8783ccf1ade18
+      p2rb.commit_id: eeb6d49dcb0950d771959358f662cf2e5ddc9dc1
       p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
       p2rb.identifier: bz://1/mynick
       p2rb.is_squashed: false
     diffs:
     - id: 9
       revision: 2
       base_commit_id: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
       name: diff
@@ -382,18 +391,18 @@ request is published.
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
-    p2rb.commits: '[["6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e", 2], ["dfe48634934bd5d856a937479aadf54800c242c5",
-      3], ["d751d4c04967ba4ec08425f618ba8d2c1b9d161a", 4], ["98dd6a7335dbea4bd3d2f2d1662fd6db45f1ddfb",
+    p2rb.commits: '[["0b3e14fe3ff19019110705e72dcf563c0ef551f6", 2], ["bce658a3f6d6aa04bf5c449e0e779e839de4690e",
+      3], ["713878e22d952d478e88bfdef897fdfc73060351", 4], ["4d0f846364eb509a1b6ae3294f05439101f6e7d3",
       5]]'
     p2rb.discard_on_publish_rids: '[5]'
     p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
@@ -460,32 +469,32 @@ request is published.
     - diff --git a/foo4 b/foo4
     - new file mode 100644
     - '--- /dev/null'
     - +++ b/foo4
     - '@@ -0,0 +1,1 @@'
     - +foo4
     - ''
   approved: false
-  approval_failure: Commit 6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e is not approved.
+  approval_failure: Commit 0b3e14fe3ff19019110705e72dcf563c0ef551f6 is not approved.
   draft:
     bugs:
     - '1'
     commit: bz://1/mynick
     summary: bz://1/mynick
     description: This is the parent review request
     target_people: []
     extra:
       calculated_trophies: true
       p2rb.reviewer_map: '{"3": [], "2": [], "5": [], "4": []}'
     commit_extra_data:
       p2rb: true
       p2rb.base_commit: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
-      p2rb.commits: '[["7050183d97d5f601da86fb313dd8783ccf1ade18", 2], ["d7a5827a584db609f6a9ca2bd3d43aa3afa6b86e",
-        3], ["b5473ad606f40840715d6b378dacc1a37f6263b1", 4]]'
+      p2rb.commits: '[["eeb6d49dcb0950d771959358f662cf2e5ddc9dc1", 2], ["607f375f35c0866a8e08bc1d6aaecc6ad259ed6e",
+        3], ["81ee86efd38ff60717aeeeff153292e84e58be0b", 4]]'
       p2rb.discard_on_publish_rids: '[]'
       p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
       p2rb.identifier: bz://1/mynick
       p2rb.is_squashed: true
       p2rb.unpublished_rids: '[]'
     diffs:
     - id: 8
       revision: 3
@@ -528,21 +537,21 @@ Try removing a commit in the middle.
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 0 changes to 1 files (+1 heads)
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  1:7050183d97d5
+  changeset:  1:eeb6d49dcb09
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2
   
-  changeset:  2:2fbc30f77859
+  changeset:  2:a27a94c54524
   summary:    Bug 1 - Foo 4
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
--- a/hgext/reviewboard/tests/test-commits-deleted-obsolescence.t
+++ b/hgext/reviewboard/tests/test-commits-deleted-obsolescence.t
@@ -46,66 +46,66 @@
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 5 changesets with 5 changes to 5 files
   remote: recorded push in pushlog
   submitting 5 changesets for review
   
-  changeset:  6:6bd3fbee3dfa
+  changeset:  6:0b3e14fe3ff1
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  7:dfe48634934b
+  changeset:  7:bce658a3f6d6
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
-  changeset:  8:d751d4c04967
+  changeset:  8:713878e22d95
   summary:    Bug 1 - Foo 3
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
-  changeset:  9:98dd6a7335db
+  changeset:  9:4d0f846364eb
   summary:    Bug 1 - Foo 4
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5 (draft)
   
-  changeset:  10:76088734e3cb
+  changeset:  10:4e50148c492d
   summary:    Bug 1 - Foo 5
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/6 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
   $ rbmanage publish 1
 
 Popping the last commit truncates the review set
 
-  $ hg strip -r 76088734e3cb --no-backup
+  $ hg strip -r 4e50148c492d --no-backup
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg push
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 4 changesets for review
   
-  changeset:  6:6bd3fbee3dfa
+  changeset:  6:0b3e14fe3ff1
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2
   
-  changeset:  7:dfe48634934b
+  changeset:  7:bce658a3f6d6
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3
   
-  changeset:  8:d751d4c04967
+  changeset:  8:713878e22d95
   summary:    Bug 1 - Foo 3
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4
   
-  changeset:  9:98dd6a7335db
+  changeset:  9:4d0f846364eb
   summary:    Bug 1 - Foo 4
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
@@ -125,19 +125,19 @@ on publish.
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
-    p2rb.commits: '[["6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e", 2], ["dfe48634934bd5d856a937479aadf54800c242c5",
-      3], ["d751d4c04967ba4ec08425f618ba8d2c1b9d161a", 4], ["98dd6a7335dbea4bd3d2f2d1662fd6db45f1ddfb",
-      5], ["76088734e3cba33be80930be14e7cd1e9ee474be", 6]]'
+    p2rb.commits: '[["0b3e14fe3ff19019110705e72dcf563c0ef551f6", 2], ["bce658a3f6d6aa04bf5c449e0e779e839de4690e",
+      3], ["713878e22d952d478e88bfdef897fdfc73060351", 4], ["4d0f846364eb509a1b6ae3294f05439101f6e7d3",
+      5], ["4e50148c492dde95397cd666f2d4e4ad4fd2176f", 6]]'
     p2rb.discard_on_publish_rids: '[6]'
     p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
     revision: 1
@@ -172,32 +172,32 @@ on publish.
     - diff --git a/foo5 b/foo5
     - new file mode 100644
     - '--- /dev/null'
     - +++ b/foo5
     - '@@ -0,0 +1,1 @@'
     - +foo5
     - ''
   approved: false
-  approval_failure: Commit 6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e is not approved.
+  approval_failure: Commit 0b3e14fe3ff19019110705e72dcf563c0ef551f6 is not approved.
   draft:
     bugs:
     - '1'
     commit: bz://1/mynick
     summary: bz://1/mynick
     description: This is the parent review request
     target_people: []
     extra:
       calculated_trophies: true
       p2rb.reviewer_map: '{}'
     commit_extra_data:
       p2rb: true
       p2rb.base_commit: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
-      p2rb.commits: '[["6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e", 2], ["dfe48634934bd5d856a937479aadf54800c242c5",
-        3], ["d751d4c04967ba4ec08425f618ba8d2c1b9d161a", 4], ["98dd6a7335dbea4bd3d2f2d1662fd6db45f1ddfb",
+      p2rb.commits: '[["0b3e14fe3ff19019110705e72dcf563c0ef551f6", 2], ["bce658a3f6d6aa04bf5c449e0e779e839de4690e",
+        3], ["713878e22d952d478e88bfdef897fdfc73060351", 4], ["4d0f846364eb509a1b6ae3294f05439101f6e7d3",
         5]]'
       p2rb.discard_on_publish_rids: '[]'
       p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
       p2rb.identifier: bz://1/mynick
       p2rb.is_squashed: true
       p2rb.unpublished_rids: '[]'
     diffs:
     - id: 7
@@ -248,18 +248,18 @@ The parent review should have dropped th
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
-    p2rb.commits: '[["6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e", 2], ["dfe48634934bd5d856a937479aadf54800c242c5",
-      3], ["d751d4c04967ba4ec08425f618ba8d2c1b9d161a", 4], ["98dd6a7335dbea4bd3d2f2d1662fd6db45f1ddfb",
+    p2rb.commits: '[["0b3e14fe3ff19019110705e72dcf563c0ef551f6", 2], ["bce658a3f6d6aa04bf5c449e0e779e839de4690e",
+      3], ["713878e22d952d478e88bfdef897fdfc73060351", 4], ["4d0f846364eb509a1b6ae3294f05439101f6e7d3",
       5]]'
     p2rb.discard_on_publish_rids: '[]'
     p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
@@ -326,79 +326,82 @@ The parent review should have dropped th
     - diff --git a/foo4 b/foo4
     - new file mode 100644
     - '--- /dev/null'
     - +++ b/foo4
     - '@@ -0,0 +1,1 @@'
     - +foo4
     - ''
   approved: false
-  approval_failure: Commit 6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e is not approved.
+  approval_failure: Commit 0b3e14fe3ff19019110705e72dcf563c0ef551f6 is not approved.
 
 Review 6 should be marked as discarded
 
   $ rbmanage dumpreview 6
   id: 6
   status: discarded
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 5
-  description: Bug 1 - Foo 5
+  description:
+  - Bug 1 - Foo 5
+  - ''
+  - 'MozReview-Commit-ID: JmjAjw'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 76088734e3cba33be80930be14e7cd1e9ee474be
+    p2rb.commit_id: 4e50148c492dde95397cd666f2d4e4ad4fd2176f
     p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 6
     revision: 1
-    base_commit_id: 98dd6a7335dbea4bd3d2f2d1662fd6db45f1ddfb
+    base_commit_id: 4d0f846364eb509a1b6ae3294f05439101f6e7d3
     name: diff
     extra: {}
     patch:
     - diff --git a/foo5 b/foo5
     - new file mode 100644
     - '--- /dev/null'
     - +++ b/foo5
     - '@@ -0,0 +1,1 @@'
     - +foo5
     - ''
   approved: false
   approval_failure: A suitable reviewer has not given a "Ship It!"
 
 Dropping the first commit should drop its review. Subsequent reviews should
 be preserved.
 
-  $ hg -q rebase -s dfe48634934b -d 0
+  $ hg -q rebase -s bce658a3f6d6 -d 0
   $ hg push
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 3 changesets with 0 changes to 3 files (+1 heads)
   remote: recorded push in pushlog
   submitting 3 changesets for review
   
-  changeset:  10:7050183d97d5
+  changeset:  10:eeb6d49dcb09
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
-  changeset:  11:d7a5827a584d
+  changeset:  11:607f375f35c0
   summary:    Bug 1 - Foo 3
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
-  changeset:  12:b5473ad606f4
+  changeset:  12:81ee86efd38f
   summary:    Bug 1 - Foo 4
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -417,18 +420,18 @@ on publish.
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
-    p2rb.commits: '[["6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e", 2], ["dfe48634934bd5d856a937479aadf54800c242c5",
-      3], ["d751d4c04967ba4ec08425f618ba8d2c1b9d161a", 4], ["98dd6a7335dbea4bd3d2f2d1662fd6db45f1ddfb",
+    p2rb.commits: '[["0b3e14fe3ff19019110705e72dcf563c0ef551f6", 2], ["bce658a3f6d6aa04bf5c449e0e779e839de4690e",
+      3], ["713878e22d952d478e88bfdef897fdfc73060351", 4], ["4d0f846364eb509a1b6ae3294f05439101f6e7d3",
       5]]'
     p2rb.discard_on_publish_rids: '[2]'
     p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
@@ -495,32 +498,32 @@ on publish.
     - diff --git a/foo4 b/foo4
     - new file mode 100644
     - '--- /dev/null'
     - +++ b/foo4
     - '@@ -0,0 +1,1 @@'
     - +foo4
     - ''
   approved: false
-  approval_failure: Commit 6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e is not approved.
+  approval_failure: Commit 0b3e14fe3ff19019110705e72dcf563c0ef551f6 is not approved.
   draft:
     bugs:
     - '1'
     commit: bz://1/mynick
     summary: bz://1/mynick
     description: This is the parent review request
     target_people: []
     extra:
       calculated_trophies: true
       p2rb.reviewer_map: '{"3": [], "2": [], "5": [], "4": []}'
     commit_extra_data:
       p2rb: true
       p2rb.base_commit: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
-      p2rb.commits: '[["7050183d97d5f601da86fb313dd8783ccf1ade18", 3], ["d7a5827a584db609f6a9ca2bd3d43aa3afa6b86e",
-        4], ["b5473ad606f40840715d6b378dacc1a37f6263b1", 5]]'
+      p2rb.commits: '[["eeb6d49dcb0950d771959358f662cf2e5ddc9dc1", 3], ["607f375f35c0866a8e08bc1d6aaecc6ad259ed6e",
+        4], ["81ee86efd38ff60717aeeeff153292e84e58be0b", 5]]'
       p2rb.discard_on_publish_rids: '[]'
       p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
       p2rb.identifier: bz://1/mynick
       p2rb.is_squashed: true
       p2rb.unpublished_rids: '[]'
     diffs:
     - id: 8
       revision: 3
@@ -556,23 +559,26 @@ The dropped commit should now be discard
   id: 2
   status: discarded
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 1
-  description: Bug 1 - Foo 1
+  description:
+  - Bug 1 - Foo 1
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 6bd3fbee3dfaa83a6fe253b5a9bdc625a5d0be0e
+    p2rb.commit_id: 0b3e14fe3ff19019110705e72dcf563c0ef551f6
     p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
     name: diff
@@ -585,32 +591,32 @@ The dropped commit should now be discard
     - '@@ -0,0 +1,1 @@'
     - +foo1
     - ''
   approved: false
   approval_failure: A suitable reviewer has not given a "Ship It!"
 
 Try removing a commit in the middle.
 
-  $ hg -q rebase -s b5473ad606f4 -d 7050183d97d5
+  $ hg -q rebase -s 81ee86efd38f -d eeb6d49dcb09
   $ hg push
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 0 changes to ? files (+1 heads) (glob)
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  10:7050183d97d5
+  changeset:  10:eeb6d49dcb09
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3
   
-  changeset:  13:2fbc30f77859
+  changeset:  13:a27a94c54524
   summary:    Bug 1 - Foo 4
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -630,17 +636,17 @@ The parent review should have been updat
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{"3": [], "5": [], "4": []}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
-    p2rb.commits: '[["7050183d97d5f601da86fb313dd8783ccf1ade18", 3], ["2fbc30f77859fa4be2e173866fa71c52d394f2c4",
+    p2rb.commits: '[["eeb6d49dcb0950d771959358f662cf2e5ddc9dc1", 3], ["a27a94c54524d4331dec2f92f647067bfd6dfbd4",
       5]]'
     p2rb.discard_on_publish_rids: '[]'
     p2rb.first_public_ancestor: 93d9429b41ecf0d2ad8c62b6ea26686dd20330f4
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
@@ -751,14 +757,14 @@ The parent review should have been updat
     - diff --git a/foo4 b/foo4
     - new file mode 100644
     - '--- /dev/null'
     - +++ b/foo4
     - '@@ -0,0 +1,1 @@'
     - +foo4
     - ''
   approved: false
-  approval_failure: Commit 7050183d97d5f601da86fb313dd8783ccf1ade18 is not approved.
+  approval_failure: Commit eeb6d49dcb0950d771959358f662cf2e5ddc9dc1 is not approved.
 
 Cleanup
 
   $ mozreview stop
   stopped 9 containers
--- a/hgext/reviewboard/tests/test-errors.t
+++ b/hgext/reviewboard/tests/test-errors.t
@@ -165,17 +165,17 @@ Pushing multiple heads is rejected
   $ hg up .^
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ echo 'head 2' > foo
   $ hg commit -m 'head 2'
   created new head
   $ hg push -r 0:tip --reviewid bz://784841 http://localhost:$HGPORT
   pushing to http://localhost:$HGPORT/
   (adding commit id to 1 changesets)
-  saved backup bundle to $TESTTMP/client/.hg/strip-backup/2e92ee1083e0*-addcommitid.hg (glob)
+  saved backup bundle to $TESTTMP/client/.hg/strip-backup/d7b7d7300bc6-3588c900-addcommitid.hg (glob)
   searching for changes
   abort: cannot push multiple heads to remote; limit pushed revisions using the -r argument.
   [255]
 
   $ cd ..
 
 Client failing to meet server capabilities is detected
 
--- a/hgext/reviewboard/tests/test-fetchreviews.t
+++ b/hgext/reviewboard/tests/test-fetchreviews.t
@@ -40,21 +40,21 @@ Seed the repo
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 2 files
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  1:3a9a9f9a418e
+  changeset:  1:195abc5f0958
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:f7237974e32c
+  changeset:  2:d7ee728aac75
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
--- a/hgext/reviewboard/tests/test-folding-obsolescence.t
+++ b/hgext/reviewboard/tests/test-folding-obsolescence.t
@@ -38,21 +38,21 @@
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 2 files
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  3:6bd3fbee3dfa
+  changeset:  3:0b3e14fe3ff1
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  4:dfe48634934b
+  changeset:  4:bce658a3f6d6
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -61,22 +61,22 @@
   adding foo3
   $ echo 'foo4' > foo4
   $ hg commit -A -m 'Bug 1 - Foo 4'
   adding foo4
   $ echo 'foo5' > foo5
   $ hg commit -A -m 'Bug 1 - Foo 5'
   adding foo5
 
-  $ hg histedit 6bd3fbee3dfa --commands - 2>&1 <<EOF
-  > pick 6bd3fbee3dfa Foo 1
-  > fold d751d4c04967 Foo 3
-  > pick dfe48634934b Foo 2
-  > fold 98dd6a7335db Foo 4
-  > pick 76088734e3cb Foo 5
+  $ hg histedit 0b3e14fe3ff1 --commands - 2>&1 <<EOF
+  > pick 0b3e14fe3ff1 Foo 1
+  > fold 713878e22d95 Foo 3
+  > pick bce658a3f6d6 Foo 2
+  > fold 4d0f846364eb Foo 4
+  > pick 4e50148c492d Foo 5
   > EOF
   0 files updated, 0 files merged, 4 files removed, 0 files unresolved
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -89,25 +89,25 @@
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 3 changesets with 3 changes to ? files (+1 heads) (glob)
   remote: recorded push in pushlog
   submitting 3 changesets for review
   
-  changeset:  9:dac4214a563a
+  changeset:  9:0a7aec47f105
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  12:5b936d238262
+  changeset:  12:88139569a7a8
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
-  changeset:  13:ae82743c8863
+  changeset:  13:6e19c778ea00
   summary:    Bug 1 - Foo 5
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
--- a/hgext/reviewboard/tests/test-ldap-association.t
+++ b/hgext/reviewboard/tests/test-ldap-association.t
@@ -41,17 +41,17 @@ Perform a push with the user
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  1:60479d07173e
+  changeset:  1:d5b7a3621249
   summary:    second commit
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
--- a/hgext/reviewboard/tests/test-multiple-parents.t
+++ b/hgext/reviewboard/tests/test-multiple-parents.t
@@ -25,52 +25,52 @@ Do the initial review
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  1:60479d07173e
+  changeset:  1:d5b7a3621249
   summary:    second commit
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
 Pushing with a different review ID will create a "duplicate" review
 
   $ hg push -r 1 --reviewid 2
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 1 changesets for review
   
-  changeset:  1:60479d07173e
+  changeset:  1:d5b7a3621249
   summary:    second commit
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
   review id:  bz://2/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
 
   $ cat .hg/reviews
   u http://$DOCKER_HOSTNAME:$HGPORT1
   r ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   p bz://1/mynick 1
   p bz://2/mynick 3
-  c 60479d07173e3914243bacd9b39aae7971a2f909 2
-  c 60479d07173e3914243bacd9b39aae7971a2f909 4
-  pc 60479d07173e3914243bacd9b39aae7971a2f909 1
-  pc 60479d07173e3914243bacd9b39aae7971a2f909 3
+  c d5b7a3621249b0f1973c0daf64248a4b77fe52e8 2
+  c d5b7a3621249b0f1973c0daf64248a4b77fe52e8 4
+  pc d5b7a3621249b0f1973c0daf64248a4b77fe52e8 1
+  pc d5b7a3621249b0f1973c0daf64248a4b77fe52e8 3
 
   $ hg log --template "{reviews % '{get(review, \"url\")}\n'}"
   http://$DOCKER_HOSTNAME:$HGPORT1/r/2
   http://$DOCKER_HOSTNAME:$HGPORT1/r/4
 
 Cleanup
 
   $ mozreview stop
--- a/hgext/reviewboard/tests/test-multiple-precursors.t
+++ b/hgext/reviewboard/tests/test-multiple-precursors.t
@@ -33,17 +33,17 @@
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  2:6bd3fbee3dfa
+  changeset:  2:0b3e14fe3ff1
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -53,34 +53,34 @@ Splitting the changeset results in multi
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ echo 'foo2' > foo2
   $ hg commit -A -m 'Bug 1 - Foo 2'
   adding foo2
   created new head
   $ echo 'foo3' > foo3
   $ hg commit -A -m 'Bug 1 - Foo 3'
   adding foo3
-  $ hg debugobsolete -d '0 0' c5b850e249510046906bcb24f774635c4521a4a9 05451502b94b2b05f1dd640074d4c0aa7985f52f 9d5db6367f324fad46508f44086ddbc7c79eda0e
+  $ hg debugobsolete -d '0 0' 0b3e14fe3ff19019110705e72dcf563c0ef551f6 8cfe623ffa827c2382e41f8cd479005984c94e76 02a9514408b763f7534d4f250046b513799ffe4c
 
   $ rbmanage publish 1
   $ hg push
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 2 files (+1 heads)
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  3:c5bd6809e957
+  changeset:  3:8cfe623ffa82
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  4:f142ef54f825
+  changeset:  4:02a9514408b7
   summary:    Bug 1 - Foo 3
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
--- a/hgext/reviewboard/tests/test-obsolescence.t
+++ b/hgext/reviewboard/tests/test-obsolescence.t
@@ -27,17 +27,17 @@ Set up the repo
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  2:da1efb6eb614
+  changeset:  2:0a5d4c4a7b76
   summary:    foo2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -59,21 +59,21 @@ Now create a new head and push a rebase
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 1 changes to 2 files (+1 heads)
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  3:850ce71e5f69
+  changeset:  3:696cdea118f5
   summary:    bar
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
-  changeset:  4:0bdd81f5fee5
+  changeset:  4:d699fd7a906a
   summary:    foo2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
--- a/hgext/reviewboard/tests/test-operation-prevention.t
+++ b/hgext/reviewboard/tests/test-operation-prevention.t
@@ -44,17 +44,17 @@ Publishing the parent should succeed.
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{"2": []}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 3a9f6899ef84c99841f546030b036d0124a863cf
-    p2rb.commits: '[["86a712c7f0187fed4c00b99131838610c76e6cc0", 2]]'
+    p2rb.commits: '[["4f4c73d9c6594a0a800a82758ceb6fb12a6b9f83", 2]]'
     p2rb.discard_on_publish_rids: '[]'
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
     revision: 1
@@ -65,34 +65,37 @@ Publishing the parent should succeed.
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo
     - +initial
     - ''
   approved: false
-  approval_failure: Commit 86a712c7f0187fed4c00b99131838610c76e6cc0 is not approved.
+  approval_failure: Commit 4f4c73d9c6594a0a800a82758ceb6fb12a6b9f83 is not approved.
 
   $ rbmanage dumpreview 2
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: author+6
   summary: Bug 1 - Initial commit to review
-  description: Bug 1 - Initial commit to review
+  description:
+  - Bug 1 - Initial commit to review
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 86a712c7f0187fed4c00b99131838610c76e6cc0
+    p2rb.commit_id: 4f4c73d9c6594a0a800a82758ceb6fb12a6b9f83
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
--- a/hgext/reviewboard/tests/test-pulse-publishing.t
+++ b/hgext/reviewboard/tests/test-pulse-publishing.t
@@ -24,21 +24,21 @@ Pushing a review should not publish to P
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  1:a92d53c0ffc7
+  changeset:  1:98467d80785e
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:233b570e5356
+  changeset:  2:3a446ae43820
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -50,20 +50,20 @@ details from the parent review request
 
   $ rbmanage publish 1
   $ pulse dump-messages exchange/mozreview/ all
   - _meta:
       exchange: exchange/mozreview/
       routing_key: mozreview.commits.published
     commits:
     - diffset_revision: 1
-      rev: a92d53c0ffc7df0517397a77980e62332552d812
+      rev: 98467d80785ec84dd871f213c167ed704a6d974d
       review_request_id: 2
     - diffset_revision: 1
-      rev: 233b570e5356d0c84bcbf0633de446172012b3b3
+      rev: 3a446ae4382006c43cdfa5aa33c494f582736f35
       review_request_id: 3
     landing_repository_url: null
     parent_diffset_revision: 1
     parent_review_request_id: 1
     repository_url: http://$DOCKER_HOSTNAME:$HGPORT/test-repo
     review_board_url: http://$DOCKER_HOSTNAME:$HGPORT1/
 
 Cleanup
--- a/hgext/reviewboard/tests/test-push-http.t
+++ b/hgext/reviewboard/tests/test-push-http.t
@@ -246,17 +246,17 @@ The Bugzilla user should have been recor
           "changesets": [
               "12ee4d2b76f57e27a8bcacd2063487a6bde7d7fd"
           ],
           "date": *, (glob)
           "user": "bmo:default@example.com"
       },
       "3": {
           "changesets": [
-              "7e2199dc77b02fc9b43dcf0a7faf18e6051025fc"
+              "6ab4007f52489a76cbff3f80e3d7baa5d99fbb3c"
           ],
           "date": *, (glob)
           "user": "bmo:default@example.com"
       }
   }
 
 Test with a second user, just so we are comprehensive
 
@@ -298,24 +298,24 @@ Test with a second user, just so we are 
           "changesets": [
               "12ee4d2b76f57e27a8bcacd2063487a6bde7d7fd"
           ],
           "date": *, (glob)
           "user": "bmo:default@example.com"
       },
       "3": {
           "changesets": [
-              "7e2199dc77b02fc9b43dcf0a7faf18e6051025fc"
+              "6ab4007f52489a76cbff3f80e3d7baa5d99fbb3c"
           ],
           "date": *, (glob)
           "user": "bmo:default@example.com"
       },
       "4": {
           "changesets": [
-              "6432ccd4579e0fdc337b6dc55b827cbcc7fee397"
+              "8d7f5c4152d8f67d67500d3b92903e365c0122f1"
           ],
           "date": *, (glob)
           "user": "bmo:user2@example.com"
       }
   }
 
 Test creating a review via HTTP
 
@@ -326,30 +326,30 @@ Test creating a review via HTTP
 
   $ bugzilla create-bug TestProduct TestComponent bug1
   $ mozreview create-user reviewer@example.com password 'Reviewer :reviewer'
   Created user 7
 
   $ hg --config bugzilla.username=user2@example.com --config bugzilla.apikey=${user2key} --config reviewboard.autopublish=true push ${MERCURIAL_URL}test-repo
   pushing to http://$DOCKER_HOSTNAME:$HGPORT/test-repo
   (adding commit id to 2 changesets)
-  saved backup bundle to $TESTTMP/client/.hg/strip-backup/e9bba109755f-920db7c0-addcommitid.hg (glob)
+  saved backup bundle to $TESTTMP/client/.hg/strip-backup/e528ead97c56-8d25fba9-addcommitid.hg (glob)
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  4:9a6457fbda8f
+  changeset:  4:9d326020e0dc
   summary:    Bug 1 - Review 1; r?reviewer
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  5:b41b3bd650cb
+  changeset:  5:c6548fe14585
   summary:    Bug 1 - Review 2; r?reviewer
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   
   publish these review requests now (Yn)? y
   (published review request 1)
@@ -366,40 +366,40 @@ Test creating a review via HTTP
   description: This is the parent review request
   target_people:
   - reviewer
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
-    p2rb.base_commit: 6432ccd4579e0fdc337b6dc55b827cbcc7fee397
-    p2rb.commits: '[["9a6457fbda8fb4e5afaa3e0ab831f34a3de285af", 2], ["b41b3bd650cb5b456e611e2eeb77705e4c41cb83",
+    p2rb.base_commit: 8d7f5c4152d8f67d67500d3b92903e365c0122f1
+    p2rb.commits: '[["9d326020e0dcd3e421680e4b78bf80c9e30df0e6", 2], ["c6548fe145857055779b23d94ef3f911e8d261b0",
       3]]'
     p2rb.discard_on_publish_rids: '[]'
-    p2rb.first_public_ancestor: 6432ccd4579e0fdc337b6dc55b827cbcc7fee397
+    p2rb.first_public_ancestor: 8d7f5c4152d8f67d67500d3b92903e365c0122f1
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
     revision: 1
-    base_commit_id: 6432ccd4579e0fdc337b6dc55b827cbcc7fee397
+    base_commit_id: 8d7f5c4152d8f67d67500d3b92903e365c0122f1
     name: diff
     extra: {}
     patch:
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -user2
     - +review2
     - ''
   approved: false
-  approval_failure: Commit 9a6457fbda8fb4e5afaa3e0ab831f34a3de285af is not approved.
+  approval_failure: Commit 9d326020e0dcd3e421680e4b78bf80c9e30df0e6 is not approved.
 
   $ rbmanage dump-user user2
   4:
     avatar_url: http://www.gravatar.com/avatar/* (glob)
     id: 4
     url: /users/user2/
     username: user2
 
--- a/hgext/reviewboard/tests/test-push.t
+++ b/hgext/reviewboard/tests/test-push.t
@@ -77,62 +77,62 @@ Pushing a single changeset will initiate
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  6:f422841a13f8
+  changeset:  6:6b33f0dbef02
   summary:    anonymous head
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
 {reviews} template works
 
-  $ hg log -r 0::f422841a13f8 --template "{node|short} {reviews % '{get(review, \"url\")} {get(review, \"status\")}'}\n"
+  $ hg log -r 0::6b33f0dbef02 --template "{node|short} {reviews % '{get(review, \"url\")} {get(review, \"status\")}'}\n"
   3a9f6899ef84 
-  f422841a13f8 http://$DOCKER_HOSTNAME:$HGPORT1/r/2 pending
+  6b33f0dbef02 http://$DOCKER_HOSTNAME:$HGPORT1/r/2 pending
 
 Pushing no changesets will do a re-review
 
-  $ hg push -r f422841a13f8 --reviewid 1
+  $ hg push -r 6b33f0dbef02 --reviewid 1
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 1 changesets for review
   
-  changeset:  6:f422841a13f8
+  changeset:  6:6b33f0dbef02
   summary:    anonymous head
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
 
 Pushing no changesets will do a re-review but will not reset a published
 review back to draft (See bugs 1096761 and 1179552).
 TODO the behavior here is not correct: a new parent draft should not be
 created if all the review requests didn't change
 
   $ rbmanage publish 1
-  $ hg push -r f422841a13f8 --reviewid 1
+  $ hg push -r 6b33f0dbef02 --reviewid 1
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 1 changesets for review
   
-  changeset:  6:f422841a13f8
+  changeset:  6:6b33f0dbef02
   summary:    anonymous head
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
@@ -147,38 +147,38 @@ Pushing patches from mq will result in a
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
   remote: recorded push in pushlog
   (You are using mq to develop patches. *) (glob)
   submitting 1 changesets for review
   
-  changeset:  7:42cfaa4019d9
+  changeset:  7:cccd43f18cec
   summary:    mq patch
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
   review id:  bz://2/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
   $ hg qpop
   popping patch1
   patch queue now empty
 
 Custom identifier will create a new review from same changesets.
 
-  $ hg push -r f422841a13f8 --reviewid 3
+  $ hg push -r 6b33f0dbef02 --reviewid 3
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 1 changesets for review
   
-  changeset:  6:f422841a13f8
+  changeset:  6:6b33f0dbef02
   summary:    anonymous head
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/6 (draft)
   
   review id:  bz://3/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/5 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
@@ -194,52 +194,52 @@ rest of the test.)
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  6:ec6438e4b8bc
+  changeset:  6:62eca46e88fb
   summary:    Bug 4 - Test identifier
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/8 (draft)
   
   review id:  bz://4/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/7 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
 Specifying multiple -r for the same head works
 
-  $ hg push -r 0 -r f422841a13f8 --reviewid 5
+  $ hg push -r 0 -r 6b33f0dbef02 --reviewid 5
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 1 changesets for review
   
-  changeset:  5:f422841a13f8
+  changeset:  5:6b33f0dbef02
   summary:    anonymous head
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/10 (draft)
   
   review id:  bz://5/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/9 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
 
 Specifying a revision range works
 
-  $ hg push -r 0::f422841a13f8 --reviewid 6
+  $ hg push -r 0::6b33f0dbef02 --reviewid 6
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 1 changesets for review
   
-  changeset:  5:f422841a13f8
+  changeset:  5:6b33f0dbef02
   summary:    anonymous head
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/12 (draft)
   
   review id:  bz://6/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/11 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
@@ -256,17 +256,17 @@ Prepare for multi changeset tests
   $ echo tip > foo
   $ hg commit -m 'Review tip'
   $ echo beyond > foo
   $ hg commit -m 'Beyond review tip'
   $ hg -q up -r .^
   $ echo newhead > foo
   $ hg commit -m 'Unrelated head'
   created new head
-  $ hg -q up -r 37f64667eaf5
+  $ hg -q up -r 946b2ccfbcc1
 
 A dirty working copy of a reviewed node will abort because of potential rewriting
 
   $ echo dirty > foo
   $ hg push -r 8::10 --reviewid 7
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   abort: uncommitted changes
   [255]
@@ -287,50 +287,50 @@ Specifying a base revision limits review
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 4 changesets with 4 changes to 1 files (+1 heads)
   remote: recorded push in pushlog
   submitting 3 changesets for review
   
-  changeset:  8:2e66eb2fd2ee
+  changeset:  8:29cc7959baba
   summary:    Review base
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/14 (draft)
   
-  changeset:  9:715e2dc94860
+  changeset:  9:6d5a65ca7a91
   summary:    Middle commit
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/15 (draft)
   
-  changeset:  10:37f64667eaf5
+  changeset:  10:946b2ccfbcc1
   summary:    Review tip
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/16 (draft)
   
   review id:  bz://7/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/13 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
 Specifying multiple -r arguments selects base and tip
 
   $ hg push -r 8 -r 10 --reviewid 8
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 3 changesets for review
   
-  changeset:  8:2e66eb2fd2ee
+  changeset:  8:29cc7959baba
   summary:    Review base
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/18 (draft)
   
-  changeset:  9:715e2dc94860
+  changeset:  9:6d5a65ca7a91
   summary:    Middle commit
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/19 (draft)
   
-  changeset:  10:37f64667eaf5
+  changeset:  10:946b2ccfbcc1
   summary:    Review tip
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/20 (draft)
   
   review id:  bz://8/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/17 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
@@ -338,25 +338,25 @@ Specifying multiple -r arguments selects
 Specifying multiple -r in reverse order still works
 
   $ hg push -r 10 -r 8 --reviewid 9
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 3 changesets for review
   
-  changeset:  8:2e66eb2fd2ee
+  changeset:  8:29cc7959baba
   summary:    Review base
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/22 (draft)
   
-  changeset:  9:715e2dc94860
+  changeset:  9:6d5a65ca7a91
   summary:    Middle commit
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/23 (draft)
   
-  changeset:  10:37f64667eaf5
+  changeset:  10:946b2ccfbcc1
   summary:    Review tip
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/24 (draft)
   
   review id:  bz://9/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/21 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
@@ -370,17 +370,17 @@ Specifying multiple -r in reverse order 
 -c can be used to select a single changeset to review
 
   $ hg push -c 9 --reviewid 11
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 1 changesets for review
   
-  changeset:  9:715e2dc94860
+  changeset:  9:6d5a65ca7a91
   summary:    Middle commit
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/26 (draft)
   
   review id:  bz://11/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/25 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
   [1]
@@ -390,50 +390,50 @@ Reviewing merge commits is rejected
   $ hg up -q -r 0
   $ echo merge1 > foo
   $ hg commit -m 'Bug 1 - Merge A'
   created new head
   $ hg up -q -r 0
   $ echo merge2 > foo
   $ hg commit -m 'Bug 1 - Merge B'
   created new head
-  $ hg merge --tool internal:other 2489f823cd25
+  $ hg merge --tool internal:other 47aed783df21
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
   $ hg commit -m 'Bug 1 - Do merge'
 
   $ hg push
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 3 changesets with 3 changes to 1 files (+1 heads)
   remote: recorded push in pushlog
   submitting 3 changesets for review
-  abort: cannot review merge commits (35ae0b8f2835)
+  abort: cannot review merge commits (abd430935a8b)
   [255]
 
 We disallow completely empty revisions.
 
   $ hg up -q -r 0
   $ hg qnew -m 'mq patch' -d '0 0' empty-patch
   $ hg push
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
-  abort: cannot review empty changeset 1bcdd587da6e
+  abort: cannot review empty changeset e3b1b495a7d2
   (add files to or remove changeset)
   [255]
 
 Check for empty commits not at the tip
 
   $ echo after-empty > foo
   $ hg qnew -m 'Bug 1 - after empty' -d '0 0' after-empty
   $ hg push
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
-  abort: cannot review empty changeset 1bcdd587da6e
+  abort: cannot review empty changeset e3b1b495a7d2
   (add files to or remove changeset)
   [255]
 
   $ hg qpop -a
   popping after-empty
   popping empty-patch
   patch queue now empty
 
--- a/hgext/reviewboard/tests/test-remote-strip.t
+++ b/hgext/reviewboard/tests/test-remote-strip.t
@@ -42,21 +42,21 @@ globally
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 3 changesets with 3 changes to 1 files
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  3:f5dc8e52d068
+  changeset:  3:51c15ef8210f
   summary:    h1c1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  4:ad01e35ad0d8
+  changeset:  4:b560312f6487
   summary:    h1c2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
   review id:  bz://1/mynick-1
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -67,21 +67,21 @@ globally
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files (+1 heads)
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  3:d03da7877f4b
+  changeset:  3:172c9543f80c
   summary:    h2c1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5 (draft)
   
-  changeset:  4:d9181bb0ade7
+  changeset:  4:e8c63e38a772
   summary:    h2c2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/6 (draft)
   
   review id:  bz://1/mynick-2
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -93,28 +93,28 @@ User can't remote strip unless allowed
   [1]
 
 User in whitelist can strip
 
   $ mozreview create-ldap-user adminuser@example.com adminuser 2002 'Admin User' --key-file ${MOZREVIEW_HOME}/keys/adminuser@example.com --scm-level 1
   $ export SSH_KEYNAME=adminuser@example.com
   $ mozreview exec hgrb /set-strip-users test-repo adminuser@example.com > /dev/null
 
-  $ hg debugpushkey ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo strip dummy '' f5dc8e52d06801d11b624f3bf4d742240ed200e9 
-  remote: saved backup bundle to /repo/hg/mozilla/test-repo/.hg/strip-backup/f5dc8e52d068*-remotestrip.hg (glob)
-  remote: changeset will be deleted from pushlog: f5dc8e52d06801d11b624f3bf4d742240ed200e9
-  remote: changeset will be deleted from pushlog: ad01e35ad0d8dad239748349dfe96c16914cc37b
-  remote: changeset rev will be updated in pushlog: d03da7877f4b0533ede2b5e2cc8a0d4816e6d9b1
-  remote: changeset rev will be updated in pushlog: d9181bb0ade7f2362db2f6a195642148c2d48820
+  $ hg debugpushkey ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo strip dummy '' 51c15ef8210ffd51361c9197c85d5a4aa1bdd4a5
+  remote: saved backup bundle to /repo/hg/mozilla/test-repo/.hg/strip-backup/51c15ef8210f-7eb5dc8a-remotestrip.hg
+  remote: changeset will be deleted from pushlog: 51c15ef8210ffd51361c9197c85d5a4aa1bdd4a5
+  remote: changeset will be deleted from pushlog: b560312f64877bf0f5261d9cd1d71e71637be899
+  remote: changeset rev will be updated in pushlog: 172c9543f80cfa7f85ad5a0a6ad9b005cd18825c
+  remote: changeset rev will be updated in pushlog: e8c63e38a772cd7da20caff013d5ec3f85a02fd5
   True
 
   $ hg -q clone ssh://${HGSSH_HOST}:${HGSSH_PORT}/test-repo new-repo
-  $ hg -R new-repo log -T '{node} {desc}\n'
-  d9181bb0ade7f2362db2f6a195642148c2d48820 h2c2
-  d03da7877f4b0533ede2b5e2cc8a0d4816e6d9b1 h2c1
+  $ hg -R new-repo log -T '{node} {desc|firstline}\n'
+  e8c63e38a772cd7da20caff013d5ec3f85a02fd5 h2c2
+  172c9543f80cfa7f85ad5a0a6ad9b005cd18825c h2c1
   55482a6fb4b1881fa8f746fd52cf6f096bb21c89 initial
 
 Stripping of public changesets is disallowed
 
   $ hg debugpushkey ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo strip dummy '' 55482a6fb4b1881fa8f746fd52cf6f096bb21c89
   remote: cannot strip public changeset: 55482a6fb4b1881fa8f746fd52cf6f096bb21c89
   False
   [1]
--- a/hgext/reviewboard/tests/test-repo-discovery.t
+++ b/hgext/reviewboard/tests/test-repo-discovery.t
@@ -139,17 +139,17 @@ Pushing to autodiscover repo should redi
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  1:daa176714e3a
+  changeset:  1:b8f5a5d75ffb
   summary:    Bug 1 - Testing discovery of a
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/dummy
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -183,26 +183,26 @@ Redirecting works when pushing over HTTP
   $ cd http-redirect
   $ echo http_redirect > foo
   $ hg commit -m 'Bug 1 - Testing discovery via HTTP pushes'
   $ hg --config mozilla.trustedbmoapikeyservices=${MERCURIAL_URL} push ${MERCURIAL_URL}autoreview -c .
   pushing to http://$DOCKER_HOSTNAME:$HGPORT/autoreview
   searching for appropriate review repository
   redirecting push to http://$DOCKER_HOSTNAME:$HGPORT/a
   (adding commit id to 1 changesets)
-  saved backup bundle to $TESTTMP/http-redirect/.hg/strip-backup/5f3de01b6263-bb45f39e-addcommitid.hg (glob)
+  saved backup bundle to $TESTTMP/http-redirect/.hg/strip-backup/30e798db0d86-dc510bb5-addcommitid.hg (glob)
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  2:e94691c71b1a
+  changeset:  2:e60ac86a2b70
   summary:    Bug 1 - Testing discovery via HTTP pushes
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/dummy
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
--- a/hgext/reviewboard/tests/test-review-commit-rewrite.t
+++ b/hgext/reviewboard/tests/test-review-commit-rewrite.t
@@ -29,17 +29,17 @@ Create bug and review
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  1:04d9ab193e26
+  changeset:  1:63c61970184b
   summary:    Bug 1 - Initial commit to review
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   
   publish these review requests now (Yn)? y
@@ -53,26 +53,32 @@ Create bug and review
   $ exportbzauth reviewer@example.com password
   $ rbmanage create-review 2 --body-top "Ship-it!" --public --ship-it
   created review 1
 
 Check for rewrite on parent
 
   $ rbmanage dump-rewrite-commit 1
   commits:
-  - commit: 04d9ab193e26da839c4addacfc5ce68f62696300
+  - commit: 63c61970184bac9e9ae1660344e26e98587b0103
     id: 2
     reviewers:
     - reviewer
-    summary: Bug 1 - Initial commit to review r=reviewer
+    summary:
+    - Bug 1 - Initial commit to review r=reviewer
+    - ''
+    - 'MozReview-Commit-ID: 124Bxg'
 
 Rewriting on a child should work against the parent
 
   $ rbmanage dump-rewrite-commit 2
   commits:
-  - commit: 04d9ab193e26da839c4addacfc5ce68f62696300
+  - commit: 63c61970184bac9e9ae1660344e26e98587b0103
     id: 2
     reviewers:
     - reviewer
-    summary: Bug 1 - Initial commit to review r=reviewer
+    summary:
+    - Bug 1 - Initial commit to review r=reviewer
+    - ''
+    - 'MozReview-Commit-ID: 124Bxg'
 
   $ mozreview stop
   stopped 9 containers
--- a/hgext/reviewboard/tests/test-review-request-approval.t
+++ b/hgext/reviewboard/tests/test-review-request-approval.t
@@ -44,25 +44,28 @@ Create a review request from an L1 user
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: level1a
   summary: Bug 1 - Initial commit to review
-  description: Bug 1 - Initial commit to review
+  description:
+  - Bug 1 - Initial commit to review
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people:
   - level1b
   - level3
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 86a712c7f0187fed4c00b99131838610c76e6cc0
+    p2rb.commit_id: 4f4c73d9c6594a0a800a82758ceb6fb12a6b9f83
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
@@ -87,25 +90,28 @@ Have an L1 user provide a ship it review
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: level1a
   summary: Bug 1 - Initial commit to review
-  description: Bug 1 - Initial commit to review
+  description:
+  - Bug 1 - Initial commit to review
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people:
   - level1b
   - level3
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 86a712c7f0187fed4c00b99131838610c76e6cc0
+    p2rb.commit_id: 4f4c73d9c6594a0a800a82758ceb6fb12a6b9f83
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
@@ -138,25 +144,28 @@ Have an L3 user provide a ship it review
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: level1a
   summary: Bug 1 - Initial commit to review
-  description: Bug 1 - Initial commit to review
+  description:
+  - Bug 1 - Initial commit to review
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people:
   - level1b
   - level3
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 86a712c7f0187fed4c00b99131838610c76e6cc0
+    p2rb.commit_id: 4f4c73d9c6594a0a800a82758ceb6fb12a6b9f83
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
@@ -193,25 +202,28 @@ Posting a new review without ship it sho
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: level1a
   summary: Bug 1 - Initial commit to review
-  description: Bug 1 - Initial commit to review
+  description:
+  - Bug 1 - Initial commit to review
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people:
   - level1b
   - level3
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 86a712c7f0187fed4c00b99131838610c76e6cc0
+    p2rb.commit_id: 4f4c73d9c6594a0a800a82758ceb6fb12a6b9f83
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
@@ -255,25 +267,28 @@ One more ship it should switch it back t
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: level1a
   summary: Bug 1 - Initial commit to review
-  description: Bug 1 - Initial commit to review
+  description:
+  - Bug 1 - Initial commit to review
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people:
   - level1b
   - level3
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 86a712c7f0187fed4c00b99131838610c76e6cc0
+    p2rb.commit_id: 4f4c73d9c6594a0a800a82758ceb6fb12a6b9f83
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
@@ -325,25 +340,28 @@ Even though the author is L1, adding a n
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: level1a
   summary: Bug 1 - Initial commit to review
-  description: Bug 1 - Initial commit to review
+  description:
+  - Bug 1 - Initial commit to review
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people:
   - level1b
   - level3
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 473206d1f704058758360f38c6fbf9c557bac746
+    p2rb.commit_id: f867b363f9fd58135c77672e3c34f222f16ff677
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
@@ -406,25 +424,28 @@ A new ship-it from L3 should give approv
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: level1a
   summary: Bug 1 - Initial commit to review
-  description: Bug 1 - Initial commit to review
+  description:
+  - Bug 1 - Initial commit to review
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people:
   - level1b
   - level3
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 473206d1f704058758360f38c6fbf9c557bac746
+    p2rb.commit_id: f867b363f9fd58135c77672e3c34f222f16ff677
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
@@ -498,25 +519,28 @@ Opening issues, even from an L1 user, sh
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: level1a
   summary: Bug 1 - Initial commit to review
-  description: Bug 1 - Initial commit to review
+  description:
+  - Bug 1 - Initial commit to review
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people:
   - level1b
   - level3
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 473206d1f704058758360f38c6fbf9c557bac746
+    p2rb.commit_id: f867b363f9fd58135c77672e3c34f222f16ff677
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
@@ -603,25 +627,28 @@ Fixing the issue should restore approval
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: level1a
   summary: Bug 1 - Initial commit to review
-  description: Bug 1 - Initial commit to review
+  description:
+  - Bug 1 - Initial commit to review
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people:
   - level1b
   - level3
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 473206d1f704058758360f38c6fbf9c557bac746
+    p2rb.commit_id: f867b363f9fd58135c77672e3c34f222f16ff677
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
@@ -716,25 +743,28 @@ Review requests created by L3 users
   id: 4
   status: pending
   public: true
   bugs:
   - '2'
   commit: null
   submitter: level3
   summary: Bug 2 - initial commit to review
-  description: Bug 2 - initial commit to review
+  description:
+  - Bug 2 - initial commit to review
+  - ''
+  - 'MozReview-Commit-ID: F63vXs'
   target_people:
   - level1a
   - level1b
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: c1ebcda638274d5217801b7f05e33b848ff39be1
+    p2rb.commit_id: b366ef9913208b4030857319aa20520f229a74f3
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://2/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 6
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
@@ -759,25 +789,28 @@ Even a ship-it from an L1 user will give
   id: 4
   status: pending
   public: true
   bugs:
   - '2'
   commit: null
   submitter: level3
   summary: Bug 2 - initial commit to review
-  description: Bug 2 - initial commit to review
+  description:
+  - Bug 2 - initial commit to review
+  - ''
+  - 'MozReview-Commit-ID: F63vXs'
   target_people:
   - level1a
   - level1b
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: c1ebcda638274d5217801b7f05e33b848ff39be1
+    p2rb.commit_id: b366ef9913208b4030857319aa20520f229a74f3
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://2/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 6
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
@@ -813,25 +846,28 @@ ship-its. Posting a new diff should not 
   id: 4
   status: pending
   public: true
   bugs:
   - '2'
   commit: null
   submitter: level3
   summary: Bug 2 - initial commit to review
-  description: Bug 2 - initial commit to review
+  description:
+  - Bug 2 - initial commit to review
+  - ''
+  - 'MozReview-Commit-ID: F63vXs'
   target_people:
   - level1a
   - level1b
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: bccc4c4e590eeefbb42491f1bb061143a49bdaf8
+    p2rb.commit_id: bedcf57f515ad540f582962e37ecd424d82424fd
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://2/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 6
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
--- a/hgext/reviewboard/tests/test-review-request-closed-discarded.t
+++ b/hgext/reviewboard/tests/test-review-request-closed-discarded.t
@@ -28,21 +28,21 @@
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  1:a92d53c0ffc7
+  changeset:  1:98467d80785e
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:233b570e5356
+  changeset:  2:3a446ae43820
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -123,17 +123,17 @@ no Commit ID set.
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 7c5bdf0cec4a90edb36300f8f3679857f46db829
-    p2rb.commits: '[["a92d53c0ffc7df0517397a77980e62332552d812", 2], ["233b570e5356d0c84bcbf0633de446172012b3b3",
+    p2rb.commits: '[["98467d80785ec84dd871f213c167ed704a6d974d", 2], ["3a446ae4382006c43cdfa5aa33c494f582736f35",
       3]]'
     p2rb.discard_on_publish_rids: '[]'
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
@@ -145,36 +145,39 @@ no Commit ID set.
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo0
     - +foo2
     - ''
   approved: false
-  approval_failure: Commit a92d53c0ffc7df0517397a77980e62332552d812 is not approved.
+  approval_failure: Commit 98467d80785ec84dd871f213c167ed704a6d974d is not approved.
 
 Child review request with ID 2 should be closed as discarded...
 
   $ rbmanage dumpreview 2
   id: 2
   status: discarded
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 1
-  description: Bug 1 - Foo 1
+  description:
+  - Bug 1 - Foo 1
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: a92d53c0ffc7df0517397a77980e62332552d812
+    p2rb.commit_id: 98467d80785ec84dd871f213c167ed704a6d974d
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     name: diff
@@ -196,30 +199,33 @@ Child review request with ID 3 should be
   id: 3
   status: discarded
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 2
-  description: Bug 1 - Foo 2
+  description:
+  - Bug 1 - Foo 2
+  - ''
+  - 'MozReview-Commit-ID: 5ijR9k'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 233b570e5356d0c84bcbf0633de446172012b3b3
+    p2rb.commit_id: 3a446ae4382006c43cdfa5aa33c494f582736f35
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 3
     revision: 1
-    base_commit_id: a92d53c0ffc7df0517397a77980e62332552d812
+    base_commit_id: 98467d80785ec84dd871f213c167ed704a6d974d
     name: diff
     extra: {}
     patch:
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo1
@@ -306,17 +312,17 @@ Commit ID re-instated.
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 7c5bdf0cec4a90edb36300f8f3679857f46db829
-    p2rb.commits: '[["a92d53c0ffc7df0517397a77980e62332552d812", 2], ["233b570e5356d0c84bcbf0633de446172012b3b3",
+    p2rb.commits: '[["98467d80785ec84dd871f213c167ed704a6d974d", 2], ["3a446ae4382006c43cdfa5aa33c494f582736f35",
       3]]'
     p2rb.discard_on_publish_rids: '[]'
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
@@ -342,17 +348,17 @@ Commit ID re-instated.
     description: This is the parent review request
     target_people: []
     extra:
       calculated_trophies: true
       p2rb.reviewer_map: '{}'
     commit_extra_data:
       p2rb: true
       p2rb.base_commit: 7c5bdf0cec4a90edb36300f8f3679857f46db829
-      p2rb.commits: '[["a92d53c0ffc7df0517397a77980e62332552d812", 2], ["233b570e5356d0c84bcbf0633de446172012b3b3",
+      p2rb.commits: '[["98467d80785ec84dd871f213c167ed704a6d974d", 2], ["3a446ae4382006c43cdfa5aa33c494f582736f35",
         3]]'
       p2rb.discard_on_publish_rids: '[]'
       p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
       p2rb.identifier: bz://1/mynick
       p2rb.is_squashed: true
       p2rb.unpublished_rids: '[]'
     diffs: []
 
@@ -362,23 +368,26 @@ Child review request with ID 2 should be
   id: 2
   status: pending
   public: false
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 1
-  description: Bug 1 - Foo 1
+  description:
+  - Bug 1 - Foo 1
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: a92d53c0ffc7df0517397a77980e62332552d812
+    p2rb.commit_id: 98467d80785ec84dd871f213c167ed704a6d974d
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     name: diff
@@ -393,53 +402,59 @@ Child review request with ID 2 should be
     - ''
   approved: false
   approval_failure: The review request is not public.
   draft:
     bugs:
     - '1'
     commit: null
     summary: Bug 1 - Foo 1
-    description: Bug 1 - Foo 1
+    description:
+    - Bug 1 - Foo 1
+    - ''
+    - 'MozReview-Commit-ID: 124Bxg'
     target_people: []
     extra:
       calculated_trophies: true
     commit_extra_data:
       p2rb: true
-      p2rb.commit_id: a92d53c0ffc7df0517397a77980e62332552d812
+      p2rb.commit_id: 98467d80785ec84dd871f213c167ed704a6d974d
       p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
       p2rb.identifier: bz://1/mynick
       p2rb.is_squashed: false
     diffs: []
 
 Child review request with ID 3 should be re-opened...
 
   $ rbmanage dumpreview 3
   id: 3
   status: pending
   public: false
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 2
-  description: Bug 1 - Foo 2
+  description:
+  - Bug 1 - Foo 2
+  - ''
+  - 'MozReview-Commit-ID: 5ijR9k'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 233b570e5356d0c84bcbf0633de446172012b3b3
+    p2rb.commit_id: 3a446ae4382006c43cdfa5aa33c494f582736f35
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 3
     revision: 1
-    base_commit_id: a92d53c0ffc7df0517397a77980e62332552d812
+    base_commit_id: 98467d80785ec84dd871f213c167ed704a6d974d
     name: diff
     extra: {}
     patch:
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo1
@@ -447,23 +462,26 @@ Child review request with ID 3 should be
     - ''
   approved: false
   approval_failure: The review request is not public.
   draft:
     bugs:
     - '1'
     commit: null
     summary: Bug 1 - Foo 2
-    description: Bug 1 - Foo 2
+    description:
+    - Bug 1 - Foo 2
+    - ''
+    - 'MozReview-Commit-ID: 5ijR9k'
     target_people: []
     extra:
       calculated_trophies: true
     commit_extra_data:
       p2rb: true
-      p2rb.commit_id: 233b570e5356d0c84bcbf0633de446172012b3b3
+      p2rb.commit_id: 3a446ae4382006c43cdfa5aa33c494f582736f35
       p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
       p2rb.identifier: bz://1/mynick
       p2rb.is_squashed: false
     diffs: []
 
 There should still not be a visible attachment on the bug
 
   $ bugzilla dump-bug 1
@@ -541,17 +559,17 @@ Squashed review request should be publis
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 7c5bdf0cec4a90edb36300f8f3679857f46db829
-    p2rb.commits: '[["a92d53c0ffc7df0517397a77980e62332552d812", 2], ["233b570e5356d0c84bcbf0633de446172012b3b3",
+    p2rb.commits: '[["98467d80785ec84dd871f213c167ed704a6d974d", 2], ["3a446ae4382006c43cdfa5aa33c494f582736f35",
       3]]'
     p2rb.discard_on_publish_rids: '[]'
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
@@ -563,36 +581,39 @@ Squashed review request should be publis
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo0
     - +foo2
     - ''
   approved: false
-  approval_failure: Commit a92d53c0ffc7df0517397a77980e62332552d812 is not approved.
+  approval_failure: Commit 98467d80785ec84dd871f213c167ed704a6d974d is not approved.
 
 Child review request with ID 2 should be published.
 
   $ rbmanage dumpreview 2
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 1
-  description: Bug 1 - Foo 1
+  description:
+  - Bug 1 - Foo 1
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: a92d53c0ffc7df0517397a77980e62332552d812
+    p2rb.commit_id: 98467d80785ec84dd871f213c167ed704a6d974d
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     name: diff
@@ -614,30 +635,33 @@ Child review request with ID 3 should be
   id: 3
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 2
-  description: Bug 1 - Foo 2
+  description:
+  - Bug 1 - Foo 2
+  - ''
+  - 'MozReview-Commit-ID: 5ijR9k'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 233b570e5356d0c84bcbf0633de446172012b3b3
+    p2rb.commit_id: 3a446ae4382006c43cdfa5aa33c494f582736f35
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 3
     revision: 1
-    base_commit_id: a92d53c0ffc7df0517397a77980e62332552d812
+    base_commit_id: 98467d80785ec84dd871f213c167ed704a6d974d
     name: diff
     extra: {}
     patch:
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo1
@@ -715,25 +739,25 @@ Pushing to a discarded review series wil
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: recorded push in pushlog
   submitting 3 changesets for review
   
-  changeset:  1:a92d53c0ffc7
+  changeset:  1:98467d80785e
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5 (draft)
   
-  changeset:  2:233b570e5356
+  changeset:  2:3a446ae43820
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/6 (draft)
   
-  changeset:  3:4cb601f74de5
+  changeset:  3:1ec9946fd47f
   summary:    Bug 1 - Foo 3
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/7 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -751,17 +775,17 @@ Pushing to a discarded review series wil
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 7c5bdf0cec4a90edb36300f8f3679857f46db829
-    p2rb.commits: '[["a92d53c0ffc7df0517397a77980e62332552d812", 2], ["233b570e5356d0c84bcbf0633de446172012b3b3",
+    p2rb.commits: '[["98467d80785ec84dd871f213c167ed704a6d974d", 2], ["3a446ae4382006c43cdfa5aa33c494f582736f35",
       3]]'
     p2rb.discard_on_publish_rids: '[]'
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
@@ -773,17 +797,17 @@ Pushing to a discarded review series wil
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo0
     - +foo2
     - ''
   approved: false
-  approval_failure: Commit a92d53c0ffc7df0517397a77980e62332552d812 is not approved.
+  approval_failure: Commit 98467d80785ec84dd871f213c167ed704a6d974d is not approved.
 
   $ rbmanage dumpreview 4
   id: 4
   status: pending
   public: true
   bugs:
   - '1'
   commit: bz://1/mynick
@@ -792,18 +816,18 @@ Pushing to a discarded review series wil
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 7c5bdf0cec4a90edb36300f8f3679857f46db829
-    p2rb.commits: '[["a92d53c0ffc7df0517397a77980e62332552d812", 5], ["233b570e5356d0c84bcbf0633de446172012b3b3",
-      6], ["4cb601f74de529935048816623637fb0ca2812a4", 7]]'
+    p2rb.commits: '[["98467d80785ec84dd871f213c167ed704a6d974d", 5], ["3a446ae4382006c43cdfa5aa33c494f582736f35",
+      6], ["1ec9946fd47ff9b5cb07e9d9c8b4d393b688e01b", 7]]'
     p2rb.discard_on_publish_rids: '[]'
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 4
     revision: 1
@@ -814,17 +838,17 @@ Pushing to a discarded review series wil
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo0
     - +foo3
     - ''
   approved: false
-  approval_failure: Commit a92d53c0ffc7df0517397a77980e62332552d812 is not approved.
+  approval_failure: Commit 98467d80785ec84dd871f213c167ed704a6d974d is not approved.
 
   $ bugzilla dump-bug 1
   Bug 1:
     attachments:
     - attacher: default@example.com
       content_type: text/x-review-board-request
       data: http://$DOCKER_HOSTNAME:$HGPORT1/r/2/diff/#index_header
       description: 'MozReview Request: Bug 1 - Foo 1'
--- a/hgext/reviewboard/tests/test-review-request-closed-submitted.t
+++ b/hgext/reviewboard/tests/test-review-request-closed-submitted.t
@@ -28,21 +28,21 @@
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  1:a92d53c0ffc7
+  changeset:  1:98467d80785e
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:233b570e5356
+  changeset:  2:3a446ae43820
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -67,17 +67,17 @@ Squashed review request with ID 1 should
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 7c5bdf0cec4a90edb36300f8f3679857f46db829
-    p2rb.commits: '[["a92d53c0ffc7df0517397a77980e62332552d812", 2], ["233b570e5356d0c84bcbf0633de446172012b3b3",
+    p2rb.commits: '[["98467d80785ec84dd871f213c167ed704a6d974d", 2], ["3a446ae4382006c43cdfa5aa33c494f582736f35",
       3]]'
     p2rb.discard_on_publish_rids: '[]'
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
@@ -89,36 +89,39 @@ Squashed review request with ID 1 should
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo0
     - +foo2
     - ''
   approved: false
-  approval_failure: Commit a92d53c0ffc7df0517397a77980e62332552d812 is not approved.
+  approval_failure: Commit 98467d80785ec84dd871f213c167ed704a6d974d is not approved.
 
 Child review request with ID 2 should be closed as submitted...
 
   $ rbmanage dumpreview 2
   id: 2
   status: submitted
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 1
-  description: Bug 1 - Foo 1
+  description:
+  - Bug 1 - Foo 1
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: a92d53c0ffc7df0517397a77980e62332552d812
+    p2rb.commit_id: 98467d80785ec84dd871f213c167ed704a6d974d
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     name: diff
@@ -138,30 +141,33 @@ Child review request with ID 2 should be
   id: 3
   status: submitted
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 2
-  description: Bug 1 - Foo 2
+  description:
+  - Bug 1 - Foo 2
+  - ''
+  - 'MozReview-Commit-ID: 5ijR9k'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 233b570e5356d0c84bcbf0633de446172012b3b3
+    p2rb.commit_id: 3a446ae4382006c43cdfa5aa33c494f582736f35
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 3
     revision: 1
-    base_commit_id: a92d53c0ffc7df0517397a77980e62332552d812
+    base_commit_id: 98467d80785ec84dd871f213c167ed704a6d974d
     name: diff
     extra: {}
     patch:
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo1
@@ -205,17 +211,17 @@ Squashed review request with ID 1 should
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 7c5bdf0cec4a90edb36300f8f3679857f46db829
-    p2rb.commits: '[["a92d53c0ffc7df0517397a77980e62332552d812", 2], ["233b570e5356d0c84bcbf0633de446172012b3b3",
+    p2rb.commits: '[["98467d80785ec84dd871f213c167ed704a6d974d", 2], ["3a446ae4382006c43cdfa5aa33c494f582736f35",
       3]]'
     p2rb.discard_on_publish_rids: '[]'
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
@@ -227,36 +233,39 @@ Squashed review request with ID 1 should
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo0
     - +foo2
     - ''
   approved: false
-  approval_failure: Commit a92d53c0ffc7df0517397a77980e62332552d812 is not approved.
+  approval_failure: Commit 98467d80785ec84dd871f213c167ed704a6d974d is not approved.
 
 Child review request with ID 2 should be re-opened...
 
   $ rbmanage dumpreview 2
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 1
-  description: Bug 1 - Foo 1
+  description:
+  - Bug 1 - Foo 1
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: a92d53c0ffc7df0517397a77980e62332552d812
+    p2rb.commit_id: 98467d80785ec84dd871f213c167ed704a6d974d
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     name: diff
@@ -278,30 +287,33 @@ Child review request with ID 3 should be
   id: 3
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 2
-  description: Bug 1 - Foo 2
+  description:
+  - Bug 1 - Foo 2
+  - ''
+  - 'MozReview-Commit-ID: 5ijR9k'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 233b570e5356d0c84bcbf0633de446172012b3b3
+    p2rb.commit_id: 3a446ae4382006c43cdfa5aa33c494f582736f35
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 3
     revision: 1
-    base_commit_id: a92d53c0ffc7df0517397a77980e62332552d812
+    base_commit_id: 98467d80785ec84dd871f213c167ed704a6d974d
     name: diff
     extra: {}
     patch:
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo1
--- a/hgext/reviewboard/tests/test-review-request-delete-draft.t
+++ b/hgext/reviewboard/tests/test-review-request-delete-draft.t
@@ -24,17 +24,17 @@
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  1:0aca5e441702
+  changeset:  1:65e5c536f9cc
   summary:    Bug 1 - Initial commit
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -48,17 +48,17 @@ Now publish the review and create a new 
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  1:b3be3d464d6b
+  changeset:  1:2c68bc327689
   summary:    Bug 1 - Initial commit
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -76,17 +76,17 @@ We should have a disagreement between pu
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 3a9f6899ef84c99841f546030b036d0124a863cf
-    p2rb.commits: '[["0aca5e4417025c80407d8f7f22864e8d09fbec50", 2]]'
+    p2rb.commits: '[["65e5c536f9cc5816ef28ebaff6a0db47b9af0fee", 2]]'
     p2rb.discard_on_publish_rids: '[]'
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
     revision: 1
@@ -97,31 +97,31 @@ We should have a disagreement between pu
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo
     - +foo1
     - ''
   approved: false
-  approval_failure: Commit 0aca5e4417025c80407d8f7f22864e8d09fbec50 is not approved.
+  approval_failure: Commit 65e5c536f9cc5816ef28ebaff6a0db47b9af0fee is not approved.
   draft:
     bugs:
     - '1'
     commit: bz://1/mynick
     summary: bz://1/mynick
     description: This is the parent review request
     target_people: []
     extra:
       calculated_trophies: true
       p2rb.reviewer_map: '{"2": []}'
     commit_extra_data:
       p2rb: true
       p2rb.base_commit: 3a9f6899ef84c99841f546030b036d0124a863cf
-      p2rb.commits: '[["b3be3d464d6b32130006cbdfa82f9f98a3c57a01", 2]]'
+      p2rb.commits: '[["2c68bc327689343c967bcb80b9a3fd8d9bc50eb4", 2]]'
       p2rb.discard_on_publish_rids: '[]'
       p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
       p2rb.identifier: bz://1/mynick
       p2rb.is_squashed: true
       p2rb.unpublished_rids: '[]'
     diffs:
     - id: 3
       revision: 2
@@ -141,23 +141,26 @@ We should have a disagreement between pu
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: submitter+6
   summary: Bug 1 - Initial commit
-  description: Bug 1 - Initial commit
+  description:
+  - Bug 1 - Initial commit
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 0aca5e4417025c80407d8f7f22864e8d09fbec50
+    p2rb.commit_id: 65e5c536f9cc5816ef28ebaff6a0db47b9af0fee
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
@@ -172,23 +175,26 @@ We should have a disagreement between pu
     - ''
   approved: false
   approval_failure: A suitable reviewer has not given a "Ship It!"
   draft:
     bugs:
     - '1'
     commit: null
     summary: Bug 1 - Initial commit
-    description: Bug 1 - Initial commit
+    description:
+    - Bug 1 - Initial commit
+    - ''
+    - 'MozReview-Commit-ID: 124Bxg'
     target_people: []
     extra:
       calculated_trophies: true
     commit_extra_data:
       p2rb: true
-      p2rb.commit_id: b3be3d464d6b32130006cbdfa82f9f98a3c57a01
+      p2rb.commit_id: 2c68bc327689343c967bcb80b9a3fd8d9bc50eb4
       p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
       p2rb.identifier: bz://1/mynick
       p2rb.is_squashed: false
     diffs:
     - id: 4
       revision: 2
       base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
       name: diff
@@ -219,17 +225,17 @@ Discarding the parent review request dra
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb.reviewer_map: '{}'
   commit_extra_data:
     p2rb: true
     p2rb.base_commit: 3a9f6899ef84c99841f546030b036d0124a863cf
-    p2rb.commits: '[["0aca5e4417025c80407d8f7f22864e8d09fbec50", 2]]'
+    p2rb.commits: '[["65e5c536f9cc5816ef28ebaff6a0db47b9af0fee", 2]]'
     p2rb.discard_on_publish_rids: '[]'
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: true
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 1
     revision: 1
@@ -240,34 +246,37 @@ Discarding the parent review request dra
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,1 +1,1 @@'
     - -foo
     - +foo1
     - ''
   approved: false
-  approval_failure: Commit 0aca5e4417025c80407d8f7f22864e8d09fbec50 is not approved.
+  approval_failure: Commit 65e5c536f9cc5816ef28ebaff6a0db47b9af0fee is not approved.
 
   $ rbmanage dumpreview 2
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: submitter+6
   summary: Bug 1 - Initial commit
-  description: Bug 1 - Initial commit
+  description:
+  - Bug 1 - Initial commit
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 0aca5e4417025c80407d8f7f22864e8d09fbec50
+    p2rb.commit_id: 65e5c536f9cc5816ef28ebaff6a0db47b9af0fee
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
--- a/hgext/reviewboard/tests/test-review-request-summary.t
+++ b/hgext/reviewboard/tests/test-review-request-summary.t
@@ -26,21 +26,21 @@
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  1:a92d53c0ffc7
+  changeset:  1:98467d80785e
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:233b570e5356
+  changeset:  2:3a446ae43820
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
@@ -55,28 +55,28 @@
     submitter: default+5
     issue_open_count: 0
     status: pending
     reviewers:
     - reviewer
   children:
   - summary: Bug 1 - Foo 1
     id: 2
-    commit: a92d53c0ffc7df0517397a77980e62332552d812
+    commit: 98467d80785ec84dd871f213c167ed704a6d974d
     submitter: default+5
     issue_open_count: 0
     status: pending
     reviewers:
     - reviewer
     reviewers_status:
       reviewer:
         ship_it: false
   - summary: Bug 1 - Foo 2
     id: 3
-    commit: 233b570e5356d0c84bcbf0633de446172012b3b3
+    commit: 3a446ae4382006c43cdfa5aa33c494f582736f35
     submitter: default+5
     issue_open_count: 0
     status: pending
     reviewers: []
     reviewers_status: {}
 
 Only parents have summaries.
 
@@ -101,28 +101,28 @@ Opening an issue should be reflected in 
     submitter: default+5
     issue_open_count: 0
     status: pending
     reviewers:
     - reviewer
   children:
   - summary: Bug 1 - Foo 1
     id: 2
-    commit: a92d53c0ffc7df0517397a77980e62332552d812
+    commit: 98467d80785ec84dd871f213c167ed704a6d974d
     submitter: default+5
     issue_open_count: 1
     status: pending
     reviewers:
     - reviewer
     reviewers_status:
       reviewer:
         ship_it: false
   - summary: Bug 1 - Foo 2
     id: 3
-    commit: 233b570e5356d0c84bcbf0633de446172012b3b3
+    commit: 3a446ae4382006c43cdfa5aa33c494f582736f35
     submitter: default+5
     issue_open_count: 0
     status: pending
     reviewers: []
     reviewers_status: {}
 
 Resolving an issue should decrement the issue count.
 
@@ -136,28 +136,28 @@ Resolving an issue should decrement the 
     submitter: default+5
     issue_open_count: 0
     status: pending
     reviewers:
     - reviewer
   children:
   - summary: Bug 1 - Foo 1
     id: 2
-    commit: a92d53c0ffc7df0517397a77980e62332552d812
+    commit: 98467d80785ec84dd871f213c167ed704a6d974d
     submitter: default+5
     issue_open_count: 0
     status: pending
     reviewers:
     - reviewer
     reviewers_status:
       reviewer:
         ship_it: false
   - summary: Bug 1 - Foo 2
     id: 3
-    commit: 233b570e5356d0c84bcbf0633de446172012b3b3
+    commit: 3a446ae4382006c43cdfa5aa33c494f582736f35
     submitter: default+5
     issue_open_count: 0
     status: pending
     reviewers: []
     reviewers_status: {}
 
 Giving a ship-it should result in a change in the reviewer status
 
@@ -172,28 +172,28 @@ Giving a ship-it should result in a chan
     submitter: default+5
     issue_open_count: 0
     status: pending
     reviewers:
     - reviewer
   children:
   - summary: Bug 1 - Foo 1
     id: 2
-    commit: a92d53c0ffc7df0517397a77980e62332552d812
+    commit: 98467d80785ec84dd871f213c167ed704a6d974d
     submitter: default+5
     issue_open_count: 0
     status: pending
     reviewers:
     - reviewer
     reviewers_status:
       reviewer:
         ship_it: true
   - summary: Bug 1 - Foo 2
     id: 3
-    commit: 233b570e5356d0c84bcbf0633de446172012b3b3
+    commit: 3a446ae4382006c43cdfa5aa33c494f582736f35
     submitter: default+5
     issue_open_count: 0
     status: pending
     reviewers: []
     reviewers_status: {}
 
   $ exportbzauth default@example.com password
 
@@ -208,28 +208,28 @@ Verify we can also get the summaries by 
       submitter: default+5
       issue_open_count: 0
       status: pending
       reviewers:
       - reviewer
     children:
     - summary: Bug 1 - Foo 1
       id: 2
-      commit: a92d53c0ffc7df0517397a77980e62332552d812
+      commit: 98467d80785ec84dd871f213c167ed704a6d974d
       submitter: default+5
       issue_open_count: 0
       status: submitted
       reviewers:
       - reviewer
       reviewers_status:
         reviewer:
           ship_it: true
     - summary: Bug 1 - Foo 2
       id: 3
-      commit: 233b570e5356d0c84bcbf0633de446172012b3b3
+      commit: 3a446ae4382006c43cdfa5aa33c494f582736f35
       submitter: default+5
       issue_open_count: 0
       status: pending
       reviewers: []
       reviewers_status: {}
 
 Verify that we get nothing from non-existent bugs.
 
--- a/hgext/reviewboard/tests/test-reviewer-flags.t
+++ b/hgext/reviewboard/tests/test-reviewer-flags.t
@@ -31,19 +31,19 @@ a shipit.
   saved backup bundle to $TESTTMP/client/.hg/strip-backup/165ec4a3fc81-1c3847cc-addcommitid.hg (glob)
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
-  commit message for 4b8b122bb501 has r=cthulhu but they have not granted a ship-it. review will be requested on your behalf
+  commit message for 9131d64aca84 has r=cthulhu but they have not granted a ship-it. review will be requested on your behalf
   
-  changeset:  1:4b8b122bb501
+  changeset:  1:9131d64aca84
   summary:    bug 1 - stuff; r=cthulhu
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   
   publish these review requests now (Yn)? y
   (published review request 1)
@@ -53,29 +53,33 @@ a shipit.
 
 There are no warnings for reviewers who haved granted a ship-it when using r=
 
   $ exportbzauth cthulhu@example.com password
   $ rbmanage create-review 2 --body-top "Ship-it!" --public --ship-it
   created review 1
   $ exportbzauth default@example.com password
   $ echo foo >> foo
-  $ hg commit --amend -m "bug 1 - serious changes; r=cthulhu"
-  saved backup bundle to $TESTTMP/client/.hg/strip-backup/4b8b122bb501-afed4b13-amend-backup.hg (glob)
+  $ hg commit --amend -l - << EOF
+  > bug 1 - serious changes; r=cthulhu
+  > 
+  > MozReview-Commit-ID: 124Bxg
+  > EOF
+  saved backup bundle to $TESTTMP/client/.hg/strip-backup/9131d64aca84-c977e83b-amend-backup.hg (glob)
   $ hg push --config reviewboard.autopublish=true
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  1:e47b87b1a589
+  changeset:  1:f6ca9a9341fc
   summary:    bug 1 - serious changes; r=cthulhu
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   
   publish these review requests now (Yn)? y
   (published review request 1)
@@ -88,30 +92,34 @@ There are warnings for reviewers who hav
 using r=.
 
   $ exportbzauth cthulhu@example.com password
   $ rbmanage create-review 2 --body-top "No way you should ship-it!" --public
   created review 2
 
   $ exportbzauth default@example.com password
   $ echo foo >> foo
-  $ hg commit --amend -m "bug 1 - even better stuff; r=cthulhu"
-  saved backup bundle to $TESTTMP/client/.hg/strip-backup/e47b87b1a589-8fe56fc5-amend-backup.hg (glob)
+  $ hg commit --amend -l - << EOF
+  > bug 1 - even better stuff; r=cthulhu
+  > 
+  > MozReview-Commit-ID: APOgLo
+  > EOF
+  saved backup bundle to $TESTTMP/client/.hg/strip-backup/f6ca9a9341fc-3ca96401-amend-backup.hg (glob)
   $ hg push --config reviewboard.autopublish=true
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
   remote: recorded push in pushlog
   submitting 1 changesets for review
-  commit message for b3fb18cc7421 has r=cthulhu but they have not granted a ship-it. review will be requested on your behalf
+  commit message for 3b546de1b11a has r=cthulhu but they have not granted a ship-it. review will be requested on your behalf
   
-  changeset:  1:b3fb18cc7421
+  changeset:  1:3b546de1b11a
   summary:    bug 1 - even better stuff; r=cthulhu
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   
   publish these review requests now (Yn)? y
   (published review request 1)
--- a/hgext/reviewboard/tests/test-specify-reviewers.t
+++ b/hgext/reviewboard/tests/test-specify-reviewers.t
@@ -66,53 +66,53 @@ Try a bunch of different ways of specify
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 11 changesets with 11 changes to 1 files
   remote: recorded push in pushlog
   submitting 10 changesets for review
   unrecognized reviewer: test-only
   
-  changeset:  11:fcf566e4c32a
+  changeset:  11:7122d7b3a455
   summary:    Bug 1 - some stuff; r?romulus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  12:c62a829e2f0a
+  changeset:  12:1cac575c1bc7
   summary:    Bug 1 - More stuff; r?romulus, r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
-  changeset:  13:955576a13e6c
+  changeset:  13:39c50951b7d1
   summary:    Bug 1 - More stuff; r?romulus,r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
-  changeset:  14:696e908c00aa
+  changeset:  14:b4ea260242b6
   summary:    Bug 1 - More stuff; r?romulus, remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5 (draft)
   
-  changeset:  15:92e037a5e92f
+  changeset:  15:a67020c63164
   summary:    Bug 1 - More stuff; r?romulus,remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/6 (draft)
   
-  changeset:  16:a7c3071c6b54
+  changeset:  16:9c52c338c619
   summary:    Bug 1 - More stuff; (r?romulus)
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/7 (draft)
   
-  changeset:  17:7b03b2560ab0
+  changeset:  17:b04b8d95503b
   summary:    Bug 1 - More stuff; (r?romulus,remus)
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/8 (draft)
   
-  changeset:  18:42c4d67a510e
+  changeset:  18:ccfcf9b70a65
   summary:    Bug 1 - More stuff; [r?romulus]
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/9 (draft)
   
-  changeset:  19:2bc874a070ce
+  changeset:  19:214fce360842
   summary:    Bug 1 - More stuff; [r?remus, r?romulus]
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/10 (draft)
   
-  changeset:  20:bb63798ced0f
+  changeset:  20:1bc0bf6f1f8b
   summary:    Bug 1 - More stuff; r?romulus, r=test-only
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/11 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (visit review url to publish these review requests so others can see them)
 
   $ rbmanage list-reviewers 2 --draft
@@ -155,53 +155,53 @@ The review state file should have review
 Publishing series during push works
 
   $ hg push --config reviewboard.autopublish=true
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 10 changesets for review
   
-  changeset:  11:fcf566e4c32a
+  changeset:  11:7122d7b3a455
   summary:    Bug 1 - some stuff; r?romulus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  12:c62a829e2f0a
+  changeset:  12:1cac575c1bc7
   summary:    Bug 1 - More stuff; r?romulus, r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
-  changeset:  13:955576a13e6c
+  changeset:  13:39c50951b7d1
   summary:    Bug 1 - More stuff; r?romulus,r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4 (draft)
   
-  changeset:  14:696e908c00aa
+  changeset:  14:b4ea260242b6
   summary:    Bug 1 - More stuff; r?romulus, remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5 (draft)
   
-  changeset:  15:92e037a5e92f
+  changeset:  15:a67020c63164
   summary:    Bug 1 - More stuff; r?romulus,remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/6 (draft)
   
-  changeset:  16:a7c3071c6b54
+  changeset:  16:9c52c338c619
   summary:    Bug 1 - More stuff; (r?romulus)
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/7 (draft)
   
-  changeset:  17:7b03b2560ab0
+  changeset:  17:b04b8d95503b
   summary:    Bug 1 - More stuff; (r?romulus,remus)
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/8 (draft)
   
-  changeset:  18:42c4d67a510e
+  changeset:  18:ccfcf9b70a65
   summary:    Bug 1 - More stuff; [r?romulus]
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/9 (draft)
   
-  changeset:  19:2bc874a070ce
+  changeset:  19:214fce360842
   summary:    Bug 1 - More stuff; [r?remus, r?romulus]
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/10 (draft)
   
-  changeset:  20:bb63798ced0f
+  changeset:  20:1bc0bf6f1f8b
   summary:    Bug 1 - More stuff; r?romulus, r=test-only
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/11 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   
   publish these review requests now (Yn)? y
   (published review request 1)
@@ -211,32 +211,35 @@ Publishing series during push works
   id: 10
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - More stuff; [r?remus, r?romulus]
-  description: Bug 1 - More stuff; [r?remus, r?romulus]
+  description:
+  - Bug 1 - More stuff; [r?remus, r?romulus]
+  - ''
+  - 'MozReview-Commit-ID: cXO9WC'
   target_people:
   - remus
   - romulus
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: 2bc874a070cef1ff62b63e28f3d40a81655fec77
+    p2rb.commit_id: 214fce3608426755a50ae60ae8645eb9bc1f7537
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 10
     revision: 1
-    base_commit_id: 42c4d67a510ecafa656b9410af8a274b7b9e2edb
+    base_commit_id: ccfcf9b70a65731d01240f24815edf0cf6b64739
     name: diff
     extra: {}
     patch:
     - diff --git a/foo b/foo
     - '--- a/foo'
     - +++ b/foo
     - '@@ -1,8 +1,9 @@'
     - ' initial'
@@ -251,64 +254,68 @@ Publishing series during push works
     - ''
   approved: false
   approval_failure: A suitable reviewer has not given a "Ship It!"
 
 Amending a commit should also work. This exercises the update_review_request
 code path.
 
   $ echo blah >> foo
-  $ hg commit --amend -m 'Bug 1 - Even more stuff; r?romulus, r?remus'
+  $ hg commit --amend -l - << EOF
+  > Bug 1 - Even more stuff; r?romulus, r?remus
+  > 
+  > MozReview-Commit-ID: hE3OiG
+  > EOF
   $ hg push --config reviewboard.autopublish=true
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
   remote: recorded push in pushlog
   submitting 10 changesets for review
   
-  changeset:  11:fcf566e4c32a
+  changeset:  11:7122d7b3a455
   summary:    Bug 1 - some stuff; r?romulus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2
   
-  changeset:  12:c62a829e2f0a
+  changeset:  12:1cac575c1bc7
   summary:    Bug 1 - More stuff; r?romulus, r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3
   
-  changeset:  13:955576a13e6c
+  changeset:  13:39c50951b7d1
   summary:    Bug 1 - More stuff; r?romulus,r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4
   
-  changeset:  14:696e908c00aa
+  changeset:  14:b4ea260242b6
   summary:    Bug 1 - More stuff; r?romulus, remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5
   
-  changeset:  15:92e037a5e92f
+  changeset:  15:a67020c63164
   summary:    Bug 1 - More stuff; r?romulus,remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/6
   
-  changeset:  16:a7c3071c6b54
+  changeset:  16:9c52c338c619
   summary:    Bug 1 - More stuff; (r?romulus)
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/7
   
-  changeset:  17:7b03b2560ab0
+  changeset:  17:b04b8d95503b
   summary:    Bug 1 - More stuff; (r?romulus,remus)
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/8
   
-  changeset:  18:42c4d67a510e
+  changeset:  18:ccfcf9b70a65
   summary:    Bug 1 - More stuff; [r?romulus]
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/9
   
-  changeset:  19:2bc874a070ce
+  changeset:  19:214fce360842
   summary:    Bug 1 - More stuff; [r?remus, r?romulus]
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/10
   
-  changeset:  22:4edf42122107
+  changeset:  22:47ac4d7af91f
   summary:    Bug 1 - Even more stuff; r?romulus, r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/11 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   
   publish these review requests now (Yn)? y
   (published review request 1)
@@ -324,53 +331,53 @@ again.
   $ rbmanage list-reviewers 11 --draft
   admin+1, remus, romulus
   $ hg push --config reviewboard.autopublish=true
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 10 changesets for review
   
-  changeset:  11:fcf566e4c32a
+  changeset:  11:7122d7b3a455
   summary:    Bug 1 - some stuff; r?romulus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2
   
-  changeset:  12:c62a829e2f0a
+  changeset:  12:1cac575c1bc7
   summary:    Bug 1 - More stuff; r?romulus, r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3
   
-  changeset:  13:955576a13e6c
+  changeset:  13:39c50951b7d1
   summary:    Bug 1 - More stuff; r?romulus,r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4
   
-  changeset:  14:696e908c00aa
+  changeset:  14:b4ea260242b6
   summary:    Bug 1 - More stuff; r?romulus, remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5
   
-  changeset:  15:92e037a5e92f
+  changeset:  15:a67020c63164
   summary:    Bug 1 - More stuff; r?romulus,remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/6
   
-  changeset:  16:a7c3071c6b54
+  changeset:  16:9c52c338c619
   summary:    Bug 1 - More stuff; (r?romulus)
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/7
   
-  changeset:  17:7b03b2560ab0
+  changeset:  17:b04b8d95503b
   summary:    Bug 1 - More stuff; (r?romulus,remus)
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/8
   
-  changeset:  18:42c4d67a510e
+  changeset:  18:ccfcf9b70a65
   summary:    Bug 1 - More stuff; [r?romulus]
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/9
   
-  changeset:  19:2bc874a070ce
+  changeset:  19:214fce360842
   summary:    Bug 1 - More stuff; [r?remus, r?romulus]
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/10
   
-  changeset:  22:4edf42122107
+  changeset:  22:47ac4d7af91f
   summary:    Bug 1 - Even more stuff; r?romulus, r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/11 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   
   publish these review requests now (Yn)? y
   (published review request 1)
@@ -379,128 +386,136 @@ again.
   admin+1, remus, romulus
 
 We should not overwrite manually added reviewers if the revision is amended
 and pushed with no reviewers specified.
 
   $ rbmanage list-reviewers 11
   admin+1, remus, romulus
   $ echo blah >> foo
-  $ hg commit --amend -m 'Bug 1 - Amended stuff'
+  $ hg commit --amend -l - << EOF
+  > Bug 1 - Amended stuff
+  > 
+  > MozReview-Commit-ID: hE3OiG
+  > EOF
   $ hg push --config reviewboard.autopublish=true
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
   remote: recorded push in pushlog
   submitting 10 changesets for review
   
-  changeset:  11:fcf566e4c32a
+  changeset:  11:7122d7b3a455
   summary:    Bug 1 - some stuff; r?romulus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2
   
-  changeset:  12:c62a829e2f0a
+  changeset:  12:1cac575c1bc7
   summary:    Bug 1 - More stuff; r?romulus, r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3
   
-  changeset:  13:955576a13e6c
+  changeset:  13:39c50951b7d1
   summary:    Bug 1 - More stuff; r?romulus,r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4
   
-  changeset:  14:696e908c00aa
+  changeset:  14:b4ea260242b6
   summary:    Bug 1 - More stuff; r?romulus, remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5
   
-  changeset:  15:92e037a5e92f
+  changeset:  15:a67020c63164
   summary:    Bug 1 - More stuff; r?romulus,remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/6
   
-  changeset:  16:a7c3071c6b54
+  changeset:  16:9c52c338c619
   summary:    Bug 1 - More stuff; (r?romulus)
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/7
   
-  changeset:  17:7b03b2560ab0
+  changeset:  17:b04b8d95503b
   summary:    Bug 1 - More stuff; (r?romulus,remus)
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/8
   
-  changeset:  18:42c4d67a510e
+  changeset:  18:ccfcf9b70a65
   summary:    Bug 1 - More stuff; [r?romulus]
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/9
   
-  changeset:  19:2bc874a070ce
+  changeset:  19:214fce360842
   summary:    Bug 1 - More stuff; [r?remus, r?romulus]
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/10
   
-  changeset:  24:6f4a14de0f3d
+  changeset:  24:cf273a4d0f27
   summary:    Bug 1 - Amended stuff
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/11 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   
   publish these review requests now (Yn)? y
   (published review request 1)
 
   $ rbmanage list-reviewers 11
   admin+1, remus, romulus
 
 Amending a commit with reviewers specified will reset the reviewers back to
 those specified in the commit summary.
 
   $ echo blah >> foo
-  $ hg commit --amend -m 'Bug 1 - Amended stuff; r?romulus, r?remus'
+  $ hg commit --amend -l - << EOF
+  > Bug 1 - Amended stuff; r?romulus, r?remus
+  > 
+  > MozReview-Commit-ID: vI38IS
+  > EOF
   $ hg push --config reviewboard.autopublish=true
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
   remote: recorded push in pushlog
   submitting 10 changesets for review
   
-  changeset:  11:fcf566e4c32a
+  changeset:  11:7122d7b3a455
   summary:    Bug 1 - some stuff; r?romulus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2
   
-  changeset:  12:c62a829e2f0a
+  changeset:  12:1cac575c1bc7
   summary:    Bug 1 - More stuff; r?romulus, r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3
   
-  changeset:  13:955576a13e6c
+  changeset:  13:39c50951b7d1
   summary:    Bug 1 - More stuff; r?romulus,r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/4
   
-  changeset:  14:696e908c00aa
+  changeset:  14:b4ea260242b6
   summary:    Bug 1 - More stuff; r?romulus, remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/5
   
-  changeset:  15:92e037a5e92f
+  changeset:  15:a67020c63164
   summary:    Bug 1 - More stuff; r?romulus,remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/6
   
-  changeset:  16:a7c3071c6b54
+  changeset:  16:9c52c338c619
   summary:    Bug 1 - More stuff; (r?romulus)
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/7
   
-  changeset:  17:7b03b2560ab0
+  changeset:  17:b04b8d95503b
   summary:    Bug 1 - More stuff; (r?romulus,remus)
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/8
   
-  changeset:  18:42c4d67a510e
+  changeset:  18:ccfcf9b70a65
   summary:    Bug 1 - More stuff; [r?romulus]
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/9
   
-  changeset:  19:2bc874a070ce
+  changeset:  19:214fce360842
   summary:    Bug 1 - More stuff; [r?remus, r?romulus]
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/10
   
-  changeset:  26:3d7e903b90b0
+  changeset:  26:7a590575b558
   summary:    Bug 1 - Amended stuff; r?romulus, r?remus
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/11 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   
   publish these review requests now (Yn)? y
   (published review request 1)
@@ -520,17 +535,17 @@ Unrecognized reviewers should be ignored
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   unrecognized reviewer: cthulhu
   
-  changeset:  27:3e01c2b3cff2
+  changeset:  27:e0c35a6f9fc6
   summary:    Bug 2 - different stuff; r?cthulhu
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/13 (draft)
   
   review id:  bz://2/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/12 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   
   publish these review requests now (Yn)? y
@@ -547,17 +562,17 @@ Reviewer identification should be case i
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  28:46d3dc1774f5
+  changeset:  28:dce90596f792
   summary:    Bug 2 - better stuff; r?ryanvm
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/13 (draft)
   
   review id:  bz://2/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/12 (draft)
   
   publish these review requests now (Yn)? y
   (published review request 12)
--- a/hgext/reviewboard/tests/test-store.t
+++ b/hgext/reviewboard/tests/test-store.t
@@ -21,31 +21,31 @@ Pushing a review will create the reviews
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 2 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
   
-  changeset:  1:00a4f82beb7c
+  changeset:  1:84e198ba06fc
   summary:    Bug 1 - second commit
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
   $ cat .hg/reviews
   u http://$DOCKER_HOSTNAME:$HGPORT1
   r ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   p bz://1/mynick 1
-  c 00a4f82beb7c11fa00dafd1d2e613d979171154f 2
-  pc 00a4f82beb7c11fa00dafd1d2e613d979171154f 1
+  c 84e198ba06fc92fb9912186d0e240593abe885f8 2
+  pc 84e198ba06fc92fb9912186d0e240593abe885f8 1
 
   $ ls .hg/reviewboard/review
   1.state
   2.state
 
   $ cat .hg/reviewboard/review/1.state
   public False
   status pending
--- a/hgext/reviewboard/tests/test-unicode.t
+++ b/hgext/reviewboard/tests/test-unicode.t
@@ -39,23 +39,26 @@ The globbing is patching over a bug in m
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: author+6
   summary: "Bug 1 - Initial commit to review \u2019 \u3053"
-  description: "Bug 1 - Initial commit to review \u2019 \u3053"
+  description:
+  - "Bug 1 - Initial commit to review \u2019 \u3053"
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
   commit_extra_data:
     p2rb: true
-    p2rb.commit_id: f03366314c7798387fcd3e367afaa6ba472feb5d
+    p2rb.commit_id: 86ab97a5dd61e8ec7ff3c23212db732e3531af01
     p2rb.first_public_ancestor: 3a9f6899ef84c99841f546030b036d0124a863cf
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3a9f6899ef84c99841f546030b036d0124a863cf
     name: diff
--- a/pylib/mozreviewbots/tests/test-eslintbot-noop.t
+++ b/pylib/mozreviewbots/tests/test-eslintbot-noop.t
@@ -32,34 +32,37 @@ Create a review request that doesn't tou
 
   $ bugzilla create-bug TestProduct TestComponent bug1
   $ echo irrelevant > foo
   $ hg commit -m 'Bug 1 - No Javascript changes'
   $ hg push > /dev/null
   $ rbmanage publish 1
 
   $ python -m eslintbot --config-path ../eslintbot.ini
-  INFO:mozreviewbot:reviewing revision: d69b315f2ab1 (review request: 2)
-  INFO:mozreviewbot:not reviewing revision: d69b315f2ab1fd46892adbebcadef52f09449906 no relevant Javascript changes in commit
+  INFO:mozreviewbot:reviewing revision: 27ed10e6e90a (review request: 2)
+  INFO:mozreviewbot:not reviewing revision: 27ed10e6e90a514ad461a5a7147a9134de0ca799 no relevant Javascript changes in commit
 
   $ rbmanage dumpreview 2
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - No Javascript changes
-  description: Bug 1 - No Javascript changes
+  description:
+  - Bug 1 - No Javascript changes
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb: true
-    p2rb.commit_id: d69b315f2ab1fd46892adbebcadef52f09449906
+    p2rb.commit_id: 27ed10e6e90a514ad461a5a7147a9134de0ca799
     p2rb.first_public_ancestor: dc42edca6edd9dd5a8346b1a881281263d3a10ad
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: dc42edca6edd9dd5a8346b1a881281263d3a10ad
     name: diff
--- a/pylib/mozreviewbots/tests/test-eslintbot.t
+++ b/pylib/mozreviewbots/tests/test-eslintbot.t
@@ -37,33 +37,36 @@ Create a review request with some busted
   $ hg commit -A -m 'Bug 1 - Some busted Javascript'
   adding .eslintrc
   adding mach
   adding test.js
   $ hg push > /dev/null
   $ rbmanage publish 1
 
   $ python -m eslintbot --config-path ../eslintbot.ini
-  INFO:mozreviewbot:reviewing revision: 265cd5106b1c (review request: 2)
+  INFO:mozreviewbot:reviewing revision: 719ed7ed9e3e (review request: 2)
 
   $ rbmanage dumpreview 2
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Some busted Javascript
-  description: Bug 1 - Some busted Javascript
+  description:
+  - Bug 1 - Some busted Javascript
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb: true
-    p2rb.commit_id: 265cd5106b1c8895cad7b3772214fca31619d65b
+    p2rb.commit_id: 719ed7ed9e3e1a340f443981aa91125b68598369
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     name: diff
--- a/pylib/mozreviewbots/tests/test-pylintbot-diff-context.t
+++ b/pylib/mozreviewbots/tests/test-pylintbot-diff-context.t
@@ -29,33 +29,36 @@ be ignored
   [1]
 
   $ hg commit -m 'Bug 1 - Verify diff context'
   $ bugzilla create-bug TestProduct TestComponent bug1
   $ hg push > /dev/null
   $ rbmanage publish 1
 
   $ python -m pylintbot --config-path ../pylintbot.ini
-  INFO:mozreviewbot:reviewing revision: a89ebf13fcac (review request: 2)
+  INFO:mozreviewbot:reviewing revision: 3a773b9e226c (review request: 2)
 
   $ rbmanage dumpreview 2
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Verify diff context
-  description: Bug 1 - Verify diff context
+  description:
+  - Bug 1 - Verify diff context
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb: true
-    p2rb.commit_id: a89ebf13fcac33a90fe92db070bc96cb56a0f9db
+    p2rb.commit_id: 3a773b9e226cc5486fdd724372938f77204ff12c
     p2rb.first_public_ancestor: 3edbb5ae6222fc9890db26538597a9b417cb7b94
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 3edbb5ae6222fc9890db26538597a9b417cb7b94
     name: diff
--- a/pylib/mozreviewbots/tests/test-pylintbot-line-adjustment.t
+++ b/pylib/mozreviewbots/tests/test-pylintbot-line-adjustment.t
@@ -76,33 +76,36 @@ Line numbers for these failures should b
 
   $ hg -q commit -A -m 'Bug 1 - Line adjustment minus 1'
   $ bugzilla create-bug TestProduct TestComponent bug1
 
   $ hg push > /dev/null
   $ rbmanage publish 1
 
   $ python -m pylintbot --config-path ../pylintbot.ini
-  INFO:mozreviewbot:reviewing revision: 5eedd6ade4e7 (review request: 2)
+  INFO:mozreviewbot:reviewing revision: c45aead0c4d6 (review request: 2)
 
   $ rbmanage dumpreview 2
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Line adjustment minus 1
-  description: Bug 1 - Line adjustment minus 1
+  description:
+  - Bug 1 - Line adjustment minus 1
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb: true
-    p2rb.commit_id: 5eedd6ade4e72a9bec6dd82ef5b566337a44adcf
+    p2rb.commit_id: c45aead0c4d66a05a22fce427658fba6f3e20f9c
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     name: diff
@@ -280,33 +283,36 @@ Create tests for line -= 2
   [1]
 
   $ hg -q commit -A -m 'Bug 2 - Line adjustment minus 2'
   $ bugzilla create-bug TestProduct TestComponent bug2
 
   $ hg push > /dev/null
   $ rbmanage publish 3
   $ python -m pylintbot --config-path ../pylintbot.ini
-  INFO:mozreviewbot:reviewing revision: 8da44ae24d46 (review request: 4)
+  INFO:mozreviewbot:reviewing revision: 51dfa0ded22a (review request: 4)
 
   $ rbmanage dumpreview 4
   id: 4
   status: pending
   public: true
   bugs:
   - '2'
   commit: null
   submitter: default+5
   summary: Bug 2 - Line adjustment minus 2
-  description: Bug 2 - Line adjustment minus 2
+  description:
+  - Bug 2 - Line adjustment minus 2
+  - ''
+  - 'MozReview-Commit-ID: 5ijR9k'
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb: true
-    p2rb.commit_id: 8da44ae24d4625e0339ed0287a6c61f7288ad5d5
+    p2rb.commit_id: 51dfa0ded22aa53d3e7c3d7b5342ba8734c4c6ce
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://2/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 4
     revision: 1
     base_commit_id: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     name: diff
--- a/pylib/mozreviewbots/tests/test-pylintbot-noop.t
+++ b/pylib/mozreviewbots/tests/test-pylintbot-noop.t
@@ -10,34 +10,37 @@ Create a review request that doesn't tou
   $ echo irrelevant > foo
   $ hg commit -m 'Bug 1 - No Python changes'
   $ hg push > /dev/null
   $ rbmanage publish 1
 
 No review should be left if no Python files were changed.
 
   $ python -m pylintbot --config-path ../pylintbot.ini
-  INFO:mozreviewbot:reviewing revision: 9408145328c3 (review request: 2)
-  INFO:mozreviewbot:not reviewing revision: 9408145328c39ed1fe384e35788b069524ca71a6 no relevant python changes in commit
+  INFO:mozreviewbot:reviewing revision: 97bc3c7259df (review request: 2)
+  INFO:mozreviewbot:not reviewing revision: 97bc3c7259dfe4c83e2d1ac3e6b252a5331da9cd no relevant python changes in commit
 
   $ rbmanage dumpreview 2
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - No Python changes
-  description: Bug 1 - No Python changes
+  description:
+  - Bug 1 - No Python changes
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb: true
-    p2rb.commit_id: 9408145328c39ed1fe384e35788b069524ca71a6
+    p2rb.commit_id: 97bc3c7259dfe4c83e2d1ac3e6b252a5331da9cd
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     name: diff
@@ -62,18 +65,18 @@ If only changes are deletions, then no r
   $ hg phase --public -r .
   $ hg rm test.py
   $ hg commit -m 'Bug 2 - Delete test.py'
 
   $ hg push > /dev/null
   $ rbmanage publish 3
 
   $ python -m pylintbot --config-path ../pylintbot.ini
-  INFO:mozreviewbot:reviewing revision: dddca45a4bed (review request: 4)
-  INFO:mozreviewbot:not reviewing revision: dddca45a4bedd629833af826c138bd7e302e5807 no relevant python changes in commit
+  INFO:mozreviewbot:reviewing revision: bbd1278082cf (review request: 4)
+  INFO:mozreviewbot:not reviewing revision: bbd1278082cfb76d7c5c4422748d5cf8679a5bcd no relevant python changes in commit
 
 Expecting 0 reviews
 
   $ rbmanage dumpreview 3
   id: 3
   status: pending
   public: true
   bugs:
@@ -81,37 +84,37 @@ Expecting 0 reviews
   commit: bz://2/mynick
   submitter: default+5
   summary: bz://2/mynick
   description: This is the parent review request
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb: true
-    p2rb.base_commit: f5e6079765d8be2554c86ef044e269f048871f1d
-    p2rb.commits: '[["dddca45a4bedd629833af826c138bd7e302e5807", 4]]'
+    p2rb.base_commit: 98dca3b6ee0c2e2bfa0921991abd87ed7abe7baf
+    p2rb.commits: '[["bbd1278082cfb76d7c5c4422748d5cf8679a5bcd", 4]]'
     p2rb.discard_on_publish_rids: '[]'
-    p2rb.first_public_ancestor: f5e6079765d8be2554c86ef044e269f048871f1d
+    p2rb.first_public_ancestor: 98dca3b6ee0c2e2bfa0921991abd87ed7abe7baf
     p2rb.identifier: bz://2/mynick
     p2rb.is_squashed: true
     p2rb.reviewer_map: '{}'
     p2rb.unpublished_rids: '[]'
   diffs:
   - id: 3
     revision: 1
-    base_commit_id: f5e6079765d8be2554c86ef044e269f048871f1d
+    base_commit_id: 98dca3b6ee0c2e2bfa0921991abd87ed7abe7baf
     name: diff
     extra: {}
     patch:
     - diff --git a/test.py b/test.py
     - deleted file mode 100644
     - '--- a/test.py'
     - +++ /dev/null
     - '@@ -1,1 +0,0 @@'
     - -dummy
     - ''
   approved: false
-  approval_failure: Commit dddca45a4bedd629833af826c138bd7e302e5807 is not approved.
+  approval_failure: Commit bbd1278082cfb76d7c5c4422748d5cf8679a5bcd is not approved.
 
 Cleanup
 
   $ mozreview stop
   stopped 9 containers
--- a/pylib/mozreviewbots/tests/test-pylintbot.t
+++ b/pylib/mozreviewbots/tests/test-pylintbot.t
@@ -15,33 +15,36 @@ Create a review with Python style violat
   > def b():
   >     foo = True
   > EOF
 
   $ hg -q commit -A -m 'Bug 1 - Bad Python'
   $ hg push > /dev/null
   $ rbmanage publish 1
   $ python -m pylintbot --config-path ../pylintbot.ini
-  INFO:mozreviewbot:reviewing revision: f3ef2e7e2bda (review request: 2)
+  INFO:mozreviewbot:reviewing revision: 1978e5417012 (review request: 2)
 
   $ rbmanage dumpreview 2
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Bad Python
-  description: Bug 1 - Bad Python
+  description:
+  - Bug 1 - Bad Python
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb: true
-    p2rb.commit_id: f3ef2e7e2bdab983cc9b20db210bc8a78d77c394
+    p2rb.commit_id: 1978e5417012a5f63128d09cfd52c52077c761cb
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     name: diff
@@ -119,33 +122,36 @@ Ensure pyflakes warnings are handled
 
   $ hg -q commit -A -m 'Bug 2 - pyflakes'
   $ bugzilla create-bug TestProduct TestComponent bug1
   $ hg push > /dev/null
 
   $ rbmanage publish 3
 
   $ python -m pylintbot --config-path ../pylintbot.ini
-  INFO:mozreviewbot:reviewing revision: ce8807640e8b (review request: 4)
+  INFO:mozreviewbot:reviewing revision: c768227fc261 (review request: 4)
 
   $ rbmanage dumpreview 4
   id: 4
   status: pending
   public: true
   bugs:
   - '2'
   commit: null
   submitter: default+5
   summary: Bug 2 - pyflakes
-  description: Bug 2 - pyflakes
+  description:
+  - Bug 2 - pyflakes
+  - ''
+  - 'MozReview-Commit-ID: 5ijR9k'
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb: true
-    p2rb.commit_id: ce8807640e8b7a4c42f18fd50f722f8443b92018
+    p2rb.commit_id: c768227fc261de5a93e0c813e0ba4a54e24d2697
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://2/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 4
     revision: 1
     base_commit_id: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     name: diff
--- a/pylib/mozreviewbots/tests/test-snarkbot.t
+++ b/pylib/mozreviewbots/tests/test-snarkbot.t
@@ -46,60 +46,63 @@ Create and publish a review for SnarkBot
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 2 changesets with 4 changes to 3 files
   remote: recorded push in pushlog
   submitting 2 changesets for review
   
-  changeset:  1:93b21e22593f
+  changeset:  1:729692c35796
   summary:    Bug 1 - Foo 1
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/2 (draft)
   
-  changeset:  2:10c6acff83c0
+  changeset:  2:fb16157e773b
   summary:    Bug 1 - Foo 2
   review:     http://$DOCKER_HOSTNAME:$HGPORT1/r/3 (draft)
   
   review id:  bz://1/mynick
   review url: http://$DOCKER_HOSTNAME:$HGPORT1/r/1 (draft)
   (review requests lack reviewers; visit review url to assign reviewers)
   (visit review url to publish these review requests so others can see them)
 
   $ rbmanage publish 1
   $ python -m snarkbot --config-path ../snarkbot.ini
-  INFO:mozreviewbot:reviewing commit: 93b21e22593f for review request: 2 diff_revision: 1
+  INFO:mozreviewbot:reviewing commit: 729692c35796 for review request: 2 diff_revision: 1
   INFO:mozreviewbot:looking at file: foo (foo)
   INFO:mozreviewbot:foo1
   
   INFO:mozreviewbot:looking at file: foo1 (foo1)
   INFO:mozreviewbot:foo1
   
-  INFO:mozreviewbot:reviewing commit: 10c6acff83c0 for review request: 3 diff_revision: 1
+  INFO:mozreviewbot:reviewing commit: fb16157e773b for review request: 3 diff_revision: 1
   INFO:mozreviewbot:looking at file: foo (foo)
   INFO:mozreviewbot:foo2
   
   INFO:mozreviewbot:looking at file: foo2 (foo2)
   INFO:mozreviewbot:foo2
   
   $ rbmanage dumpreview 2
   id: 2
   status: pending
   public: true
   bugs:
   - '1'
   commit: null
   submitter: default+5
   summary: Bug 1 - Foo 1
-  description: Bug 1 - Foo 1
+  description:
+  - Bug 1 - Foo 1
+  - ''
+  - 'MozReview-Commit-ID: 124Bxg'
   target_people: []
   extra_data:
     calculated_trophies: true
     p2rb: true
-    p2rb.commit_id: 93b21e22593fc0a96331d5357aa5835b7db407e3
+    p2rb.commit_id: 729692c35796d9cbd453ccef97ee0d14139c4a09
     p2rb.first_public_ancestor: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     p2rb.identifier: bz://1/mynick
     p2rb.is_squashed: false
   diffs:
   - id: 2
     revision: 1
     base_commit_id: 7c5bdf0cec4a90edb36300f8f3679857f46db829
     name: diff