CINXE.COM
Patch Review Help
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta property="og:type" content="website"> <meta property="og:title" content="Patch Review Help"> <meta name="viewport" content="width=1024"> <meta name="color-scheme" content="dark light"> <meta name="generator" content=" 20241119.1"> <meta name="bugzilla-global" content="dummy" id="bugzilla-global" data-bugzilla="{"api_token":"","config":{"basepath":"\/"},"constant":{"COMMENT_COLS":80},"param":{"maxattachmentsize":"10240","maxusermatches":"50","splinter_base":"\/page.cgi?id=splinter.html&ignore=\/","use_markdown":"1"},"string":{"bug":"","bug_type_required":"You must select a Type for this ","component_required":"You must select a Component for this ","description_required":"You must enter a Description for this ","short_desc_required":"You must enter a Summary for this ","version_required":"You must select a Version for this "},"user":{"is_new":true,"login":""}}"> <meta name="google-site-verification" content="JYXIuR9cAlV7fLmglSrc_4UaJS6Wzh5Mdxiorqu5AQc" /> <title>Patch Review Help</title> <link href="/static/v20241119.1/skins/standard/global.css" rel="stylesheet" type="text/css"><link href="/static/v20241119.1/js/jquery/ui/jquery-ui-min.css" rel="stylesheet" type="text/css"><link href="/static/v20241119.1/js/jquery/ui/jquery-ui-structure-min.css" rel="stylesheet" type="text/css"><link href="/static/v20241119.1/js/jquery/ui/jquery-ui-theme-min.css" rel="stylesheet" type="text/css"><link href="/static/v20241119.1/skins/lib/prism.css" rel="stylesheet" type="text/css"><link href="/static/v20241119.1/extensions/Review/web/styles/badge.css" rel="stylesheet" type="text/css"> <script nonce="ts4DlzRh8LzPOP7Md8AlrNbpsLZVtB8XWMR7BYS2v0zmUg2B" src="/static/v20241119.1/js/jquery/jquery-min.js"></script><script nonce="ts4DlzRh8LzPOP7Md8AlrNbpsLZVtB8XWMR7BYS2v0zmUg2B" src="/static/v20241119.1/js/jquery/ui/jquery-ui-min.js"></script><script nonce="ts4DlzRh8LzPOP7Md8AlrNbpsLZVtB8XWMR7BYS2v0zmUg2B" src="/static/v20241119.1/js/jquery/plugins/devbridgeAutocomplete/devbridgeAutocomplete-min.js"></script><script nonce="ts4DlzRh8LzPOP7Md8AlrNbpsLZVtB8XWMR7BYS2v0zmUg2B" src="/static/v20241119.1/js/global.js"></script><script nonce="ts4DlzRh8LzPOP7Md8AlrNbpsLZVtB8XWMR7BYS2v0zmUg2B" src="/static/v20241119.1/js/util.js"></script><script nonce="ts4DlzRh8LzPOP7Md8AlrNbpsLZVtB8XWMR7BYS2v0zmUg2B" src="/static/v20241119.1/js/widgets.js"></script> <script nonce="ts4DlzRh8LzPOP7Md8AlrNbpsLZVtB8XWMR7BYS2v0zmUg2B">BUGZILLA.value_descs = JSON.parse('{\"bug_status\":{},\"resolution\":{\"\":\"---\"}}'); </script> <script nonce="ts4DlzRh8LzPOP7Md8AlrNbpsLZVtB8XWMR7BYS2v0zmUg2B" src="/static/v20241119.1/js/lib/prism.js"></script><script nonce="ts4DlzRh8LzPOP7Md8AlrNbpsLZVtB8XWMR7BYS2v0zmUg2B" src="/static/v20241119.1/extensions/GoogleAnalytics/web/js/analytics.js"></script><script nonce="ts4DlzRh8LzPOP7Md8AlrNbpsLZVtB8XWMR7BYS2v0zmUg2B" src="/static/v20241119.1/js/lib/md5.min.js"></script><script nonce="ts4DlzRh8LzPOP7Md8AlrNbpsLZVtB8XWMR7BYS2v0zmUg2B" src="/static/v20241119.1/extensions/Review/web/js/badge.js"></script> <link href="/static/v20241119.1/skins/lib/fontawesome.min.css" rel="stylesheet" type="text/css"> <link href="/static/v20241119.1/skins/lib/fontawesome-brands.min.css" rel="stylesheet" type="text/css"> <link href="/static/v20241119.1/skins/lib/fontawesome-solid.min.css" rel="stylesheet" type="text/css"> <link rel="search" type="application/opensearchdescription+xml" title="Bugzilla@Mozilla" href="/search_plugin.cgi"><link rel="shortcut icon" href="/extensions/BMO/web/images/favicon.ico"><meta name="google-analytics" content="UA-36116321-3" data-location="https://bugzilla.mozilla.org/pages/splinter/help" data-title="Patch Review Help"> <script async src="https://www.google-analytics.com/analytics.js"></script><meta name="robots" content="noarchive"> </head> <body class="bugzilla-mozilla-org skin-standard"> <div id="wrapper"> <header id="header" role="banner" aria-label="Global Header"> <div class="inner" role="none"> <button type="button" class="iconic ghost" id="open-menu-drawer" aria-label="Open Site Menu"> <span class="icon" aria-hidden="true" data-icon="menu"></span> </button><div id="header-external-links" class="dropdown" role="none"> <button type="button" id="header-external-menu-button" class="dropdown-button minor" aria-label="Show Mozilla Menu" aria-expanded="false" aria-haspopup="true" aria-controls="header-external-menu"> <img src="/static/v20241119.1/extensions/BMO/web/images/moz-fav-one-color-white-rgb.svg" width="32" height="32" alt=""> </button> <ul class="dropdown-content right" id="header-external-menu" role="menu" aria-label="Mozilla Menu" style="display:none;"> <li role="none"> <a href="https://www.mozilla.org/" role="menuitem"> <span class="label" role="none">Mozilla Home</span> </a> </li> <li role="separator"></li> <li role="none"> <a href="https://www.mozilla.org/privacy/websites/" role="menuitem"> <span class="label" role="none">Privacy</span> </a> </li> <li role="none"> <a href="https://www.mozilla.org/privacy/websites/#cookies" role="menuitem"> <span class="label" role="none">Cookies</span> </a> </li> <li role="none"> <a href="https://www.mozilla.org/about/legal/" role="menuitem"> <span class="label" role="none">Legal</span> </a> </li> </ul> </div> <h1 id="header-title" class="title" role="none"> <a class="header-button" href="https://bugzilla.mozilla.org/home" title="Go to home page"> <span aria-label="Go to Bugzilla Home Page">Bugzilla</span> </a> </h1> <form id="header-search" class="quicksearch" action="/buglist.cgi" data-no-csrf role="search" aria-label="Search Bugs"> <button type="button" class="iconic ghost" id="show-searchbox" aria-label="Search Bugs"> <span class="icon" aria-hidden="true" data-icon="search"></span> </button> <div class="searchbox-outer dropdown" role="combobox" aria-label="Quick Search" aria-haspopup="listbox" aria-owns="header-search-dropdown" aria-expanded="false"> <span class="icon" aria-hidden="true" data-icon="search"></span> <input id="quicksearch_top" class="dropdown-button" name="quicksearch" autocomplete="off" value="" accesskey="s" placeholder="Search Bugs" title="Enter a bug number or some search terms" role="searchbox" aria-controls="header-search-dropdown" aria-label="Search Terms"><div id="header-search-dropdown" class="dropdown-content dropdown-panel right" role="listbox" style="display: none;"> <div id="header-search-dropdown-wrapper" role="none"> <section id="header-search-dropdown-help" role="group" aria-label="Help"> <footer role="none"> <a href="/page.cgi?id=quicksearch.html">Quick Search Tips</a> <a href="/query.cgi?format=advanced">Advanced Search</a> </footer> </section> </div> </div> </div> </form> <nav id="header-nav" role="menubar" aria-label="Site Links"> <ul class="links" role="none"><li role="none"> <a class="header-button" href="/describecomponents.cgi" title="Browse bugs by component" role="menuitem"> <span class="icon" aria-hidden="true" data-icon="category"></span> <span class="label" role="none">Browse</span> </a> </li> <li role="none"> <a class="header-button" href="/query.cgi?format=advanced" title="Search bugs using various criteria" role="menuitem"> <span class="icon" aria-hidden="true" data-icon="pageview"></span> <span class="label" role="none">Advanced Search</span> </a> </li> <li role="none"> <a class="header-button" href="/enter_bug.cgi" title="File a new bug" role="menuitem"> <span class="icon" aria-hidden="true" data-icon="add_box"></span> <span class="label" role="none">New Bug</span> </a> </li> </ul> <div class="dropdown" role="none"> <button type="button" id="header-tools-menu-button" class="header-button dropdown-button minor" title="More tools…" role="menuitem" aria-label="Show More Tools Menu" aria-expanded="false" aria-haspopup="true" aria-controls="header-tools-menu"> <span class="icon" aria-hidden="true" data-icon="more_horiz"></span> </button> <ul class="dropdown-content left" id="header-tools-menu" role="menu" aria-label="More Tools Menu" style="display:none;"><li role="none"> <a href="/report.cgi" role="menuitem"> <span class="icon" aria-hidden="true" data-icon="analytics"></span> <span class="label" role="none">Reports</span> </a> </li> <li role="separator"></li> <li role="none"> <a href="https://bmo.readthedocs.io/en/latest/" target="_blank" role="menuitem"> <span class="icon" aria-hidden="true" data-icon="help"></span> <span class="label" role="none">Documentation</span> </a> </li> </ul> </div> </nav> <ul id="header-login" class="links" role="none"><li id="mini_login_container_top" role="none"> <a id="login_link_top" href="/index.cgi?GoAheadAndLogIn=1" class='show_mini_login_form header-button' data-qs-suffix="_top" role="button"> <span class="icon" aria-hidden="true" data-icon="login"></span> <span class="label" role="none">Log In</span> </a> <div id="mini_login_top" class="mini-popup mini_login bz_default_hidden"> <form method="post" action="/github.cgi"> <input type="hidden" name="github_token" value="Q0vE38tGAjCZ60oGtHOY7O5I2FFHL2YnuqErp5xSJ0CThcY73vvDoWxSL2BBIr2n27PXRcpdHQl1xMF0r0Y8UiiTFVfEgkBRty8L53qlVU3M0O2XF7XPhZCxRNPSCUhlN3AASfKZjhrtxmAaalwzqqQ3v06EPbVsAynzfM30dtdgkEGw2Po2LStzJYlFvJLaLPVeK0ZKjl5x9wgWbj9UgFJkbagBhykHt1YhdABRQxufkqiMzsaE1jOBHWzTBA4W"> <input type="hidden" name="target_uri" value="https://bugzilla.mozilla.org/page.cgi"> <button type="submit"> <i class="fab fa-github"></i> Log In with GitHub </button> </form> <div class="method-separator">or</div> <form action="/page.cgi?id=splinter%2Fhelp.html" method="POST" data-qs-suffix="_top"> <input id="Bugzilla_login_top" class="bz_login" name="Bugzilla_login" title="Login" placeholder="Email" aria-label="Email" type="email" required > <input class="bz_password" id="Bugzilla_password_top" name="Bugzilla_password" type="password" title="Password" placeholder="Password" aria-label="Password" required > <input class="bz_password bz_default_hidden bz_mini_login_help" type="text" id="Bugzilla_password_dummy_top" value="password" title="Password" > <span class="remember-outer"> <input type="checkbox" id="Bugzilla_remember_top" name="Bugzilla_remember" value="on" class="bz_remember" checked> <label for="Bugzilla_remember_top">Remember me</label> </span> <input type="hidden" name="Bugzilla_login_token" value="1732391679-ZEwx51lKO3fuVMuVd1AxclMbVO_XihxVG1K6pKC_HAQ"> <input type="submit" name="GoAheadAndLogIn" value="Log In" id="log_in_top" class="check_mini_login_fields" data-qs-suffix="_top"> <a href="#" id="hide_mini_login_top" aria-label="Close" class="close-button hide_mini_login_form" data-qs-suffix="_top"> <span class="icon" aria-hidden="true"></span> </a> </form> <div class="footer"> <a href="/createaccount.cgi">Create an Account</a> · <a id="forgot_link_top" href="/index.cgi?GoAheadAndLogIn=1#forgot" class='show_forgot_form' data-qs-suffix="_top">Forgot Password</a> </div> </div> <div id="forgot_form_top" class="mini-popup mini_forgot bz_default_hidden"> <form action="/token.cgi" method="post"> <input type="email" name="loginname" size="20" placeholder="Email" aria-label="Email" required> <input id="forgot_button_top" value="Reset Password" type="submit"> <input type="hidden" name="a" value="reqpw"> <input type="hidden" id="token_top" name="token" value="1732391679-tcDsjolkqhHlKbI4DLoo5PRaPaGBEQkCdRBKVnuVsSg"> <a href="#" class="close-button hide_forgot_form" aria-label="Close" data-qs-suffix="_top"> <span class="icon" aria-hidden="true"></span> </a> </form> </div> </li> </ul> </div> <dialog id="menu-drawer" inert aria-label="Site Menu"> <div class="drawer-inner" role="none"> <div class="header" role="none"> <button type="button" class="iconic ghost" id="close-menu-drawer" aria-label="Close Site Menu"> <span class="icon" aria-hidden="true" data-icon="close"></span> </button> </div> <ul role="menu" aria-label="Site Links"><li role="none"> <a class="header-button" href="/describecomponents.cgi" title="Browse bugs by component" role="menuitem"> <span class="icon" aria-hidden="true" data-icon="category"></span> <span class="label" role="none">Browse</span> </a> </li> <li role="none"> <a class="header-button" href="/query.cgi?format=advanced" title="Search bugs using various criteria" role="menuitem"> <span class="icon" aria-hidden="true" data-icon="pageview"></span> <span class="label" role="none">Advanced Search</span> </a> </li> <li role="none"> <a class="header-button" href="/enter_bug.cgi" title="File a new bug" role="menuitem"> <span class="icon" aria-hidden="true" data-icon="add_box"></span> <span class="label" role="none">New Bug</span> </a> </li><li role="none"> <a href="/report.cgi" role="menuitem"> <span class="icon" aria-hidden="true" data-icon="analytics"></span> <span class="label" role="none">Reports</span> </a> </li> <li role="separator"></li> <li role="none"> <a href="https://bmo.readthedocs.io/en/latest/" target="_blank" role="menuitem"> <span class="icon" aria-hidden="true" data-icon="help"></span> <span class="label" role="none">Documentation</span> </a> </li> </ul> </div> </dialog> </header> <main id="bugzilla-body" tabindex="-1"> <aside id="message-container" role="complementary"> <noscript> <div class="noscript"> <div class="inner"> <p>Please enable JavaScript in your browser to use all the features on this site.</p> </div> </div> </noscript> </aside> <div id="main-inner"> <h2>Splinter Patch Review</h2> <p> Splinter is an add-on for Bugzilla to allow conveniently reviewing patches that people have attached to Bugzilla. <a href="http://fishsoup.net/software/splinter">More information about Splinter</a>. </p> <h3>The patch review view</h3> <p> If you get to Splinter by clicking on a link next to an attachment in Bugzilla, you are presented with the patch review view. This view has a number of different pages that can be switched between with the links at the top of the screen. The first page is the Overview page, the other pages correspond to individual files changed by the review. </p> <p> On the Overview page, from top to bottom are shown: </p> <ul> <li>Introductory text to the patch. For a patch that was created using 'git format-patch' this will be the Git commit message.</li> <li>Controls for creating a new review</li> <li>Previous reviews that other people have written.</li> </ul> <p> The pages for each file show a two-column view of the changes. The left column is the previous contents of the file, the right column is the new contents of the file. (If the file is an entirely new file or an entirely deleted file, only one column will be shown.) Red indicates lines that have been removed, green lines that have been added, and blue lines that were modified. </p> <p> If people have previously made comments on individual lines of the patch, they will show up both summarized on the Overview page and also inline when looking at the files of the patch. </p> <h3>Reviewing an existing patch</h3> <p> There are three components to a review: </p> <ul> <li> An overall comment. The text area on the first page allows you to enter your overall thoughts on the bug. </li> <li> Detailed comments on changes within the files. To comment on a line in a patch, double click on it, and a text area will open beneath that comment. When you are done, click the Save button to save your comment or the Cancel button to throw your comment away. You can double-click on a saved comment to start editing it again and make further changes. </li> <li> A change to the attachment status. (This is specific to Bugzilla instances that have attachment status, which is a non-upstream patch. It's somewhat similar to attachment flags, which splinter doesn't currently support displaying or changing.) This allows you to mark a patch as read to commit or needing additional work. This is done by changing the drop-down next to the Publish button. </li> </ul> <p> Once you are done writing your review, go back to Overview page and click the "Publish" button to submit it as a comment on the bug. The comment will have a link back to the review page so that people can see your comments with the full context. </p> <h3>Saved drafts</h3> <p> Whenever you start making changes, a draft is automatically saved. If you come back to the patch review page for the same attachment, that draft will automatically be resumed. Drafts are not visible to anybody else until published. </p> <p> Note that saving drafts requires the your browser to have support for the "DOM Storage" standard. At time of writing, this is available only in a few very recent browsers, like Firefox 3.5. Strict privacy protections like disabling cookies may also disable DOM Storage, since it provides another mechanism for sites to track information about their users. </p> <h3>Responding to someone's review</h3> <p> A response is treated just like any other review and created the same way. A couple of features are helpful when responding: you can double-click on an inline comment to respond to it. And on the overview page, when you click on a detailed comment, you are taken directly to the original location of the comment. </p> <h3>Uploading patches for review</h3> <p> Splinter doesn't really care how patches are provided to Bugzilla, as long as they are well-formatted patches. If you are using Git for version control, you can either format changes as patches using <a href="https://www.kernel.org/pub/software/scm/git/docs/git-format-patch.html">'git format-patch</a> and attach them manually to the bug, or you can use <a href="http://fishsoup.net/software/git-bz">git-bz</a>. git-bz is highly recommended; it automates most of the steps that Splinter can't handle: it files new bugs, attaches updated attachments to existing bugs, and closes bugs when you push the corresponding git commits to your central repository. </p> <h3>The bug review view</h3> <p> Splinter also has a view where it shows all patches attached to the bug with their status and links to review them. You are taken to this page after publishing a review. You can also get to this page with the bug link in the upper-right corner of the patch review view. </p> <h3>Your reviews</h3> <p> Splinter can also show you a list of all your draft and published reviews. Access this page with the "Your reviews" link at the bottom of the bug review view. In-progress drafts are shown in bold. </p> </div> </main> </div> </body> </html>