<html>
<head>
    <base href="https://wiki.asterisk.org/wiki">
            <link rel="stylesheet" href="/wiki/s/2030/1/7/_/styles/combined.css?spaceKey=AST&amp;forWysiwyg=true" type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://wiki.asterisk.org/wiki/display/AST/Reviewboard+Usage">Reviewboard Usage</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://wiki.asterisk.org/wiki/display/~russell">Russell Bryant</a>
    </h4>
        <br/>
                         <h4>Changes (3)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >h3. Using post-review <br> <br></td></tr>
            <tr><td class="diff-changed-lines" >The easiest way to post a patch to reviewboard is by using the post-review tool. <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">We have post-review in our repotools svn repository.</span> <span class="diff-added-words"style="background-color: #dfd;">Install it using {{easy_install}}.</span> <br></td></tr>
            <tr><td class="diff-unchanged" >{code} <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">   $ svn co http://svn.digium.com/svn/repotools <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">   $ easy_install -U RBTools <br></td></tr>
            <tr><td class="diff-unchanged" >{code} <br> <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <h1><a name="ReviewboardUsage-UsageGuidelines"></a>Usage Guidelines</h1>

<p><a href="https://issues.asterisk.org" class="external-link" rel="nofollow">Mantis</a> and <a href="https://reviewboard.asterisk.org" class="external-link" rel="nofollow">Reviewboard</a> are both utilities that the Asterisk development community uses to help track and review code being written for Asterisk. Since both systems are used for posting patches, it is worth discussing when it is appropriate to use reviewboard and when not.</p>

<p>Here are the situations in which it is appropriate to post code to reviewboard:</p>

<ul>
        <li>A committer has a patch that they would like to get some feedback on before merging into one of the main branches.</li>
        <li>A committer or bug marshal has requested a contributor to post their patch from Mantis on reviewboard to aid in the review process. This typically happens with complex code contributions where reviewboard can help aid in providing feedback.</li>
</ul>


<p>We do encourage all interested parties to participate in the review process. However, aside from the cases mentioned above, we prefer that all code submissions first go through Mantis.</p>

<div class='panelMacro'><table class='noteMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/wiki/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>It is acceptable for a committer to post patches to reviewboard before they are complete to get some feedback on the approach being taken. However, if the code is not yet ready to be merged, it must be documented as such. A review request with a patch proposed for merging should have documented testing and should not have blatant coding guidelines violations. Lack of these things is careless and shows disrespect for those reviewing your code.</td></tr></table></div>

<h1><a name="ReviewboardUsage-PostingCodetoReviewboard"></a>Posting Code to Reviewboard</h1>

<h3><a name="ReviewboardUsage-Usingpostreview"></a>Using post-review</h3>

<p>The easiest way to post a patch to reviewboard is by using the post-review tool. Install it using <tt>easy_install</tt>.</p>
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<script type="syntaxhighlighter" class="toolbar: false; theme: Confluence; brush: java; gutter: false"><![CDATA[
   $ easy_install -U RBTools
]]></script>
</div></div>

<p>Essentially, post-review is a script that will take the output of "svn diff" and create a review request out of it for you. So, once you have a working copy with the changes you expect in the output of "svn diff", you just run the following command:</p>
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<script type="syntaxhighlighter" class="toolbar: false; theme: Confluence; brush: java; gutter: false"><![CDATA[
   $ post-review
]]></script>
</div></div>

<p>If it complains about not knowing which reviewboard server to use, add the server option:</p>
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<script type="syntaxhighlighter" class="toolbar: false; theme: Confluence; brush: java; gutter: false"><![CDATA[
   $ post-review --server=https://reviewboard.asterisk.org
]]></script>
</div></div>

<h3><a name="ReviewboardUsage-DealingwithNewFiles"></a>Dealing with New Files</h3>

<p>I have one final note about an oddity with using post-review. If you maintain your code in a team branch, and the new code includes new files, there are some additional steps you must take to get post-review to behave properly.</p>

<p>You would start by getting your changes applied to a trunk working copy:</p>
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<script type="syntaxhighlighter" class="toolbar: false; theme: Confluence; brush: java; gutter: false"><![CDATA[
   $ cd .../trunk
]]></script>
</div></div>

<p>Then, apply the changes from your branch:</p>
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<script type="syntaxhighlighter" class="toolbar: false; theme: Confluence; brush: java; gutter: false"><![CDATA[
   $ svn merge .../trunk .../team/group/my_new_code
]]></script>
</div></div>

<p>Now, the code is merged into your working copy. However, for a new file, subversion treats it as a copy of existing content and not new content, so new files don't show up in "svn diff" at this point. To get it to show up in the diff, use the following commands so svn treats it as new content and publishes it in the diff:</p>
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<script type="syntaxhighlighter" class="toolbar: false; theme: Confluence; brush: java; gutter: false"><![CDATA[
   $ svn revert my_new_file.c
   $ svn add my_new_file.c
]]></script>
</div></div>

<p>Now, it should work, and you can run "post-review" as usual.</p>

<h3><a name="ReviewboardUsage-UpdatingPatchonExistingReviewRequest"></a>Updating Patch on Existing Review Request</h3>

<p>Most of the time, a patch on reviewboard will require multiple iterations before other sign off on it being ready to be merged. To update the diff for an existing review request, you can use post-review and the &#45;r option. Apply the current version of the diff to a working copy as described above, and then run the following command:</p>
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<script type="syntaxhighlighter" class="toolbar: false; theme: Confluence; brush: java; gutter: false"><![CDATA[
   $ post-review -r &lt;review request number&gt;
]]></script>
</div></div>
    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;">
            <a href="https://wiki.asterisk.org/wiki/users/viewnotifications.action" class="grey">Change Notification Preferences</a>
        </div>
        <a href="https://wiki.asterisk.org/wiki/display/AST/Reviewboard+Usage">View Online</a>
        |
        <a href="https://wiki.asterisk.org/wiki/pages/diffpagesbyversion.action?pageId=4816917&revisedVersion=3&originalVersion=2">View Changes</a>
                |
        <a href="https://wiki.asterisk.org/wiki/display/AST/Reviewboard+Usage?showComments=true&amp;showCommentArea=true#addcomment">Add Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>