Patch Viewer

There has been some difficulty viewing and reviewing patches in Bugzilla due to lack of context and difficulty of reading the patches.  Patch Viewer is an enhancement to Bugzilla designed to fix that by offering increased context, linking to sections, and integrationg with Bonsai, LXR and CVS.

Features

Patch viewer allows you to:

Usage

Viewing Patches in Patch Viewer

The main way to view a patch in patch viewer is to click the "Diff" link next to a patch in the Attachments list on a bug.  You may also do this within the edit window by clicking the "View Attachment As Diff" button in the Edit Attachment screen.

Seeing the Difference Between Two Patches

To see the difference between two patches, you first view the newer patch in Patch Viewer, and then select the older patch from the dropdown at the top of the page ("Differences between [dropdown] and this patch") and click the "Diff" button.  This will show you what is new or changed in the newer patch.

Getting More Context in a Patch

To get more context in a patch, you put a number in the textbox at the top of Patch Viewer ("Patch / File / [textbox]) and hit enter.  This will give you that many lines of context before and after each change.  Alternatively, you can click the "File" link there and it will show each change in the full context of the file.  This feature only works against files that were diffed using "cvs diff".

Collapsing and Expanding Sections of a Patch

To view only a certain set of files in a patch (for example, if a patch is absolutely huge and you want to only review part of it at a time), you can click the "(+)" and "(-)" links next to each file (to expand it or collapse it).  If you want to collapse all files or expand all files, you can click the Collapse All and Expand All links at the top of the page.

Linking to a Section of a Patch

To link to a section of a patch, for example if you want to be able to give someone a URL to show them which part you are talking about, you simply click the "Link Here" link on the section header.  The resulting URL can be copied and used in discussion.  (Copy Link Location in Mozilla works as well.)

Going to Bonsai and LXR

To go to Bonsai to get blame for the lines you are interested in, you can click the "Lines XX-YY" link on the section header you are interested in.  This works even if the patch is against an old version of the file since Bonsai stores all versions of the file.  To go to LXR, you click on the filename on the file header (unfortunately, since LXR only does the most recent version, line numbers are likely to rot).

Create a Unified Diff

If the patch is not in a format that you like, you can turn it into a unified diff format by clicking the "Raw Unified" link at the top of the page.

Setting Up Patch Viewer

For admins who want to set up Patch Viewer, there is only one required prerequisite.  You must untar the PatchIterator module into the bugzilla/ directory or untar it intoa Perl library directory so that the libraries can be accessed.  You can find a proper version of this .tar.gz at http://bugzilla.mozilla.org/attachment.cgi?id=126322&action=view (it will soon be on CPAN, but not yet).

A summary of the optional features you can enable (and how to enable them) follows.

Difference Between Two Patches: you need to install patchutils for this and point the localconfig variable interdiffbin to the "interdiff" program from patchutils and the variable diffpath to the path to diff (not including "diff" itself; for example, /usr/bin).

Patch Context: you need a CVS repository for this, and you need to set the Bugzilla parameters cvsroot and cvsroot_get to it.  See their documentation for more information.  Also, you need to set localconfig variable cvsbin to the cvs binary.

Bonsai and LXR: you need to set the bonsai_url, lxr_url, and lxr_root Bugzilla parameters (see documentation on the parameters page for more information).

Copyleft (C) 2003 John Keiser.  Redistribute freely, please link to canonical source.