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.
Patch viewer allows you to:
- View patches in color, with side-by-side view rather than trying
to interpret the contents of the patch
- See the difference between two patches
- Get more context in a patch
- Collapse and expand sections of a patch for easy reading
- Link to a particular section of a patch for discussion or review
- Go to Bonsai or LXR to see more context, blame, and
cross-references for the part of the patch you are looking at
- Create a rawtext unified format diff out of any patch, no matter
what format it came from
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
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
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.