Development:Tools

From Camino Wiki
Jump to navigation Jump to search
DRAFT
This page is not complete.

This page contains descriptions of various webtools that help with coding, regression hunting, checking in, crash management, and other Camino activities.

link to tools and explanations; currently links are all to explanations of some degree of usefulness

MXR

MXR is a source cross-reference, or an advanced, web-based Spotlight for source code. It contains a browseable, searchable copy of the current source code, complete with syntax highlighting, hyperlinks for functions and various identifiers, and more. Once you’ve found a piece of code you’re interested in, you can also use MXR to find when the code last changed (“blame”) and the changelog for the file. Using these linked tools (bonsai and hgweb, depending on the version of Camino and the MXR “root”), you can also travel back in time and see what your code or file looked like at various points in the past.

  • For Camino 2.1 based on Mozilla 1.9.2, you want the camino root for Camino code (updated daily) and the mozilla1.9.2 root for Gecko.
  • For Camino 2.1 based on cvs trunk, you want the seamonkey root (updated hourly).
  • For Camino 2.0, there is no discrete root. However, you can access the current CAMINO_2_0_BRANCH version of a file by finding the file in the seamonkey root, choosing the “CVS Graph” link (in the box at the top right of the page), and then selecting the revision for the CAMINO_2_0_BRANCH from the graph. For Core checkins related to Camino 2.0.x (aside from client.mk), use the seamonkey root.
  • For Camino 1.6.x (MOZILLA_1_8_BRANCH), you want the mozilla1.8 root.
  • For Camino 1.5, as with Camino 2.0, there is no MXR root. For Core checkins to Camino 1.5.x, you want the mozilla1.8 root; for Camino code on the CAMINO_1_5_BRANCH, you can use the method described for the CAMINO_2_0_BRANCH above to find CAMINO_1_5_BRANCH files.
  • For Camino 1.0.x (MOZILLA_1_8_0_BRANCH), you want the mozilla1.8.0 root.
  • For Camino 0.8 (MOZILLA_1_7_BRANCH) and some access to really old files that may have been renamed with history loss (e.g., to track additions to the project over time, from Project Builder to Xcode 1.x to Xcode 2.x), you want the mozilla1.7 root.

N.B. Non-seamonkey roots are only updated daily and might be out-of-date if there were lots of checkins since the last update.

pushloghtml and Bonsai

Before Mercurial, Mozilla had sophisticated, interconnected tree-management tools known as Bonsai.

Bonsai offered a way to query for checkins (by file, author, or time), show the code changes in a checkin, show what checkins touched a file, and figure out who or what was responsible for a given line of code. Bonsai also integrated with Tinderbox to show what checkins were present in a given build and integrated with MXR to allow MXR to show blame and historical versions of source code files. An example Bonsai query is http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&module=Camino&sortby=Date&hours=2&date=day (cvs trunk checkins to most, but not all, code that Camino pulls).

CVS log (checkins that touched a file), CVS blame (who or what was responsible for a given line of code), and CVS graph (a visual representation of CVS log, across all CVS branches where a file existed) were generally accessed via MXR. For example, see the links in the box on the inside upper right of main.m’s MXR page.

CVS query was usually accessed via checkin and guilty links on Tinderbox, or via the query page, but it could also be accessed via MXR, as illustrated by the links in the box on the inside upper right of main.m’s MXR page.

Bonsai’s replacement for Mercurial repositories is a series of tools from multiple systems, held together with baling wire.

  • To see which checkins occurred between a given time, use pushloghtml (and the corresponding pushloghtml for the appropriate Gecko repository). If you’re regression-hunting and have the changesets of two builds, pushloghtml has a hidden changeset mode you can access by using URLs like http://hg.mozilla.org/camino/pushloghtml?fromchange=tip&tochange=tip. pushloghtml is a Mozilla-specific Hg customization.
  • To see which checkin was responsible for a particular line of code (blame), use hgweb’s “annotate” link (or “HG Blame” from MXR): http://hg.mozilla.org/camino/annotate/tip/src/application/main.m
    Note that if the last change on a particular line is not relevant (e.g., whitespace) or not the change you are looking for, you can go back to previous revision of the file (repository) and see the blame for the most recent change before that.

Tinderbox

Crash Reporting

Assorted Tools

  • Linkzilla plug-in for Colloquy, which translates bug 377248 or bug 377248 comment 28 into live links (written by encro).