char text[]="<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n\
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n\
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n\
<head>\n\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n\
<meta name=\"generator\" content=\"Docutils 0.18.1: http://docutils.sourceforge.net/\" />\n\
<title>xxdiff documentation</title>\n\
<meta name=\"author\" content=\"Martin Blais\" />\n\
<meta name=\"date\" content=\"2003-12-25\" />\n\
<meta name=\"copyright\" content=\"Copyright (C) 1999-2004, Martin Blais.  All Rights Reserved.\" />\n\
<link rel=\"stylesheet\" href=\"/docutils-style.css\" type=\"text/css\" />\n\
</head>\n\
<body>\n\
<div class=\"document\" id=\"xxdiff-documentation\">\n\
<h1 class=\"title\">xxdiff documentation</h1>\n\
<table class=\"docinfo\" frame=\"void\" rules=\"none\">\n\
<col class=\"docinfo-name\" />\n\
<col class=\"docinfo-content\" />\n\
<tbody valign=\"top\">\n\
<tr><th class=\"docinfo-name\">Author:</th>\n\
<td>Martin Blais</td></tr>\n\
<tr><th class=\"docinfo-name\">Contact:</th>\n\
<td><a class=\"first last reference external\" href=\"mailto:blais&#64;furius.ca\">blais&#64;furius.ca</a></td></tr>\n\
<tr><th class=\"docinfo-name\">Date:</th>\n\
<td>2003-12-25</td></tr>\n\
<tr><th class=\"docinfo-name\">Copyright:</th>\n\
<td>Copyright (C) 1999-2004, Martin Blais.  All Rights Reserved.</td></tr>\n\
</tbody>\n\
</table>\n\
<div class=\"abstract topic\">\n\
<p class=\"topic-title\">Abstract</p>\n\
<p>User's manual for xxdiff.  The official location of xxdiff on the internet is\n\
<a class=\"reference external\" href=\"http://github.com/blais/xxdiff\">http://github.com/blais/xxdiff</a>.  If you're reading this page from the web, note\n\
that you can also access this document from the Help menu of xxdiff.</p>\n\
</div>\n\
<div class=\"contents topic\" id=\"table-of-contents\">\n\
<p class=\"topic-title\">Table of Contents</p>\n\
<ul class=\"auto-toc simple\">\n\
<li><a class=\"reference internal\" href=\"#introduction\" id=\"toc-entry-1\">1&nbsp;&nbsp;&nbsp;Introduction</a></li>\n\
<li><a class=\"reference internal\" href=\"#version\" id=\"toc-entry-2\">2&nbsp;&nbsp;&nbsp;Version</a></li>\n\
<li><a class=\"reference internal\" href=\"#invocation\" id=\"toc-entry-3\">3&nbsp;&nbsp;&nbsp;Invocation</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#return-value\" id=\"toc-entry-4\">3.1&nbsp;&nbsp;&nbsp;Return Value</a></li>\n\
<li><a class=\"reference internal\" href=\"#command-line-options\" id=\"toc-entry-5\">3.2&nbsp;&nbsp;&nbsp;Command-line Options</a></li>\n\
<li><a class=\"reference internal\" href=\"#using-xxdiff-as-a-short-lived-application\" id=\"toc-entry-6\">3.3&nbsp;&nbsp;&nbsp;Using xxdiff as a short-lived application</a></li>\n\
</ul>\n\
</li>\n\
<li><a class=\"reference internal\" href=\"#general-operation\" id=\"toc-entry-7\">4&nbsp;&nbsp;&nbsp;General operation</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#the-text-area\" id=\"toc-entry-8\">4.1&nbsp;&nbsp;&nbsp;The text area</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#horizontal-diffs\" id=\"toc-entry-9\">4.1.1&nbsp;&nbsp;&nbsp;Horizontal diffs</a></li>\n\
<li><a class=\"reference internal\" href=\"#per-hunk-ignore-whitespace\" id=\"toc-entry-10\">4.1.2&nbsp;&nbsp;&nbsp;Per-hunk ignore whitespace</a></li>\n\
<li><a class=\"reference internal\" href=\"#navigation\" id=\"toc-entry-11\">4.1.3&nbsp;&nbsp;&nbsp;Navigation</a></li>\n\
<li><a class=\"reference internal\" href=\"#pop-up-menu\" id=\"toc-entry-12\">4.1.4&nbsp;&nbsp;&nbsp;Pop-up menu</a></li>\n\
<li><a class=\"reference internal\" href=\"#searching\" id=\"toc-entry-13\">4.1.5&nbsp;&nbsp;&nbsp;Searching</a></li>\n\
<li><a class=\"reference internal\" href=\"#other-options\" id=\"toc-entry-14\">4.1.6&nbsp;&nbsp;&nbsp;Other options</a></li>\n\
<li><a class=\"reference internal\" href=\"#display-options\" id=\"toc-entry-15\">4.1.7&nbsp;&nbsp;&nbsp;Display options</a></li>\n\
</ul>\n\
</li>\n\
<li><a class=\"reference internal\" href=\"#redoing-the-diffs\" id=\"toc-entry-16\">4.2&nbsp;&nbsp;&nbsp;Redoing the diffs</a></li>\n\
<li><a class=\"reference internal\" href=\"#other-ui-elements\" id=\"toc-entry-17\">4.3&nbsp;&nbsp;&nbsp;Other UI elements</a></li>\n\
</ul>\n\
</li>\n\
<li><a class=\"reference internal\" href=\"#comparing-two-files\" id=\"toc-entry-18\">5&nbsp;&nbsp;&nbsp;Comparing two files</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#types-of-hunks\" id=\"toc-entry-19\">5.1&nbsp;&nbsp;&nbsp;Types of hunks</a></li>\n\
<li><a class=\"reference internal\" href=\"#options\" id=\"toc-entry-20\">5.2&nbsp;&nbsp;&nbsp;Options</a></li>\n\
</ul>\n\
</li>\n\
<li><a class=\"reference internal\" href=\"#comparing-three-files\" id=\"toc-entry-21\">6&nbsp;&nbsp;&nbsp;Comparing three files</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#types-of-hunks-1\" id=\"toc-entry-22\">6.1&nbsp;&nbsp;&nbsp;Types of hunks</a></li>\n\
<li><a class=\"reference internal\" href=\"#ignoring-one-file\" id=\"toc-entry-23\">6.2&nbsp;&nbsp;&nbsp;Ignoring one file</a></li>\n\
</ul>\n\
</li>\n\
<li><a class=\"reference internal\" href=\"#comparing-two-directories\" id=\"toc-entry-24\">7&nbsp;&nbsp;&nbsp;Comparing two directories</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#types-of-hunks-2\" id=\"toc-entry-25\">7.1&nbsp;&nbsp;&nbsp;Types of hunks</a></li>\n\
<li><a class=\"reference internal\" href=\"#options-1\" id=\"toc-entry-26\">7.2&nbsp;&nbsp;&nbsp;Options</a></li>\n\
<li><a class=\"reference internal\" href=\"#file-operations\" id=\"toc-entry-27\">7.3&nbsp;&nbsp;&nbsp;File operations</a></li>\n\
</ul>\n\
</li>\n\
<li><a class=\"reference internal\" href=\"#merging-files-and-resolving-conflicts\" id=\"toc-entry-28\">8&nbsp;&nbsp;&nbsp;Merging files and resolving conflicts</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#selecting-regions\" id=\"toc-entry-29\">8.1&nbsp;&nbsp;&nbsp;Selecting regions</a></li>\n\
<li><a class=\"reference internal\" href=\"#saving-the-resulting-file\" id=\"toc-entry-30\">8.2&nbsp;&nbsp;&nbsp;Saving the resulting file</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#forcing-output-of-a-merged-file-and-better-script-integration\" id=\"toc-entry-31\">8.2.1&nbsp;&nbsp;&nbsp;Forcing Output of a Merged File and Better Script Integration</a></li>\n\
</ul>\n\
</li>\n\
<li><a class=\"reference internal\" href=\"#rapid-sequential-merge-conflict-resolution\" id=\"toc-entry-32\">8.3&nbsp;&nbsp;&nbsp;Rapid, sequential merge conflict resolution</a></li>\n\
<li><a class=\"reference internal\" href=\"#automatic-merge\" id=\"toc-entry-33\">8.4&nbsp;&nbsp;&nbsp;Automatic merge</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#requiring-an-output-file\" id=\"toc-entry-34\">8.4.1&nbsp;&nbsp;&nbsp;Requiring an output file</a></li>\n\
</ul>\n\
</li>\n\
<li><a class=\"reference internal\" href=\"#merging-directories\" id=\"toc-entry-35\">8.5&nbsp;&nbsp;&nbsp;Merging directories</a></li>\n\
<li><a class=\"reference internal\" href=\"#merged-view\" id=\"toc-entry-36\">8.6&nbsp;&nbsp;&nbsp;Merged view</a></li>\n\
</ul>\n\
</li>\n\
<li><a class=\"reference internal\" href=\"#merge-review-features\" id=\"toc-entry-37\">9&nbsp;&nbsp;&nbsp;Merge review features</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#variable-text-selection\" id=\"toc-entry-38\">9.1&nbsp;&nbsp;&nbsp;Variable text selection</a></li>\n\
<li><a class=\"reference internal\" href=\"#per-hunk-ignore-whitespace-1\" id=\"toc-entry-39\">9.2&nbsp;&nbsp;&nbsp;Per-hunk ignore whitespace</a></li>\n\
</ul>\n\
</li>\n\
<li><a class=\"reference internal\" href=\"#unmerging-merge-conflicts\" id=\"toc-entry-40\">10&nbsp;&nbsp;&nbsp;Unmerging merge conflicts</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#unmerging-merge-conflicts-with-three-files\" id=\"toc-entry-41\">10.1&nbsp;&nbsp;&nbsp;Unmerging merge conflicts with three files</a></li>\n\
</ul>\n\
</li>\n\
<li><a class=\"reference internal\" href=\"#editing-files\" id=\"toc-entry-42\">11&nbsp;&nbsp;&nbsp;Editing files</a></li>\n\
<li><a class=\"reference internal\" href=\"#customization-using-resource-file\" id=\"toc-entry-43\">12&nbsp;&nbsp;&nbsp;Customization using resource file</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#automatic-generation-of-the-resource-file\" id=\"toc-entry-44\">12.1&nbsp;&nbsp;&nbsp;Automatic generation of the resource file</a></li>\n\
</ul>\n\
</li>\n\
<li><a class=\"reference internal\" href=\"#resource-reference\" id=\"toc-entry-45\">13&nbsp;&nbsp;&nbsp;Resource reference</a></li>\n\
<li><a class=\"reference internal\" href=\"#frequently-asked-questions-faq\" id=\"toc-entry-46\">14&nbsp;&nbsp;&nbsp;Frequently Asked Questions (FAQ)</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#can-i-diff-files-with-crlf-dos-characters-in-them\" id=\"toc-entry-47\">14.1&nbsp;&nbsp;&nbsp;Can I diff files with CRLF DOS characters in them?</a></li>\n\
<li><a class=\"reference internal\" href=\"#how-do-i-make-xxdiff-display-the-revision-number-of-a-file\" id=\"toc-entry-48\">14.2&nbsp;&nbsp;&nbsp;How do I make xxdiff display the revision number of a file?</a></li>\n\
</ul>\n\
</li>\n\
<li><a class=\"reference internal\" href=\"#author\" id=\"toc-entry-49\">15&nbsp;&nbsp;&nbsp;Author</a></li>\n\
<li><a class=\"reference internal\" href=\"#reporting-bugs\" id=\"toc-entry-50\">16&nbsp;&nbsp;&nbsp;Reporting bugs</a></li>\n\
<li><a class=\"reference internal\" href=\"#project-history\" id=\"toc-entry-51\">17&nbsp;&nbsp;&nbsp;Project history</a><ul class=\"auto-toc\">\n\
<li><a class=\"reference internal\" href=\"#licensing\" id=\"toc-entry-52\">17.1&nbsp;&nbsp;&nbsp;Licensing</a></li>\n\
<li><a class=\"reference internal\" href=\"#dependencies\" id=\"toc-entry-53\">17.2&nbsp;&nbsp;&nbsp;Dependencies</a></li>\n\
<li><a class=\"reference internal\" href=\"#acknowledgements\" id=\"toc-entry-54\">17.3&nbsp;&nbsp;&nbsp;Acknowledgements</a></li>\n\
</ul>\n\
</li>\n\
</ul>\n\
</div>\n\
<!-- 1   Introduction\n\
2   Version\n\
3   Invocation\n\
  3.1  Return Value\n\
  3.2  Command-line Options\n\
  3.3  Using xxdiff as a short-lived application\n\
4   General operation\n\
  4.1  The text area\n\
    4.1.1  Horizontal diffs\n\
    4.1.2  Per-hunk ignore whitespace\n\
    4.1.3  Navigation\n\
    4.1.4  Pop-up menu\n\
    4.1.5  Searching\n\
    4.1.6  Other options\n\
    4.1.7  Display options\n\
  4.2  Redoing the diffs\n\
  4.3  Other UI elements\n\
5   Comparing two files\n\
  5.1  Types of hunks\n\
  5.2  Options\n\
6   Comparing three files\n\
  6.1  Types of hunks\n\
  6.2  Ignoring one file\n\
7   Comparing two directories\n\
  7.1  Types of hunks\n\
  7.2  Options\n\
  7.3  File operations\n\
8   Merging files and resolving conflicts\n\
  8.1  Selecting regions\n\
  8.2  Saving the resulting file\n\
    8.2.1  Forcing Output of a Merged File and Better Script Integration\n\
  8.3  Rapid, sequential merge conflict resolution\n\
  8.4  Automatic merge\n\
    8.4.1  Requiring an output file\n\
  8.5  Merging directories\n\
  8.6  Merged view\n\
9   Merge review features\n\
  9.1  Variable text selection\n\
  9.2  Per-hunk ignore whitespace\n\
10  Unmerging merge conflicts\n\
  10.1  Unmerging merge conflicts with three files\n\
11  Editing files\n\
12  Customization using resource file\n\
  12.1  Automatic generation of the resource file\n\
13  Resource reference\n\
14  Frequently Asked Questions (FAQ)\n\
  14.1  Can I diff files with CRLF DOS characters in them?\n\
  14.2  How do I make xxdiff display the revision number of a file?\n\
15  Author\n\
16  Reporting bugs\n\
17  Project history\n\
  17.1  Licensing\n\
  17.2  Dependencies\n\
  17.3  Acknowledgements -->\n\
<div class=\"section\" id=\"introduction\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-1\">1&nbsp;&nbsp;&nbsp;Introduction</a></h1>\n\
<p>xxdiff is a <em>graphical file and directories comparison and merge\n\
tool</em>. This program is an essential software development tool that can be\n\
used to</p>\n\
<ul class=\"simple\">\n\
<li>visualize the differences between files or directories;</li>\n\
<li>merge files with differences, resolving conflicts and saving output to a\n\
new file or patch;</li>\n\
<li>assist file changes reviewing and comment production (e.g. approving source\n\
code changes before they get merged into a source tree).</li>\n\
</ul>\n\
<p>xxdiff doesn't itself compute the differences between files, it just displays\n\
them graphically (the rationale behind this is that you can use different tools\n\
to compute the actual diffs (for example using Rational ClearCase's cleardiff,\n\
which gives more sensible results than GNU diff in certain cases),\n\
there is a relatively standard format for difference output (POSIX diff),\n\
so it is easy and efficient to parse diff output from different programs,\n\
under the UNIX dataflow paradigm, it is common for graphical tools to be\n\
built on top of text tools. There are already many good tools to perform diffs,\n\
so there's no need to rewrite them.</p>\n\
</div>\n\
<div class=\"section\" id=\"version\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-2\">2&nbsp;&nbsp;&nbsp;Version</a></h1>\n\
<p>This documentation was generated for version:</p>\n\
<div id=\"version\">\n\
  <version/>\n\
</div></div>\n\
<div class=\"section\" id=\"invocation\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-3\">3&nbsp;&nbsp;&nbsp;Invocation</a></h1>\n\
<p>Usage:</p>\n\
<pre class=\"literal-block\">\n\
xxdiff [OPTIONS] &lt;file1&gt; &lt;file2&gt; [&lt;file3&gt;]\n\
</pre>\n\
<p>You can specify either two files (two-way diff), three files (three-way diff),\n\
or two directories (directory diff).</p>\n\
<p>You can also specify a mix of regular files and directories.  If at least one of\n\
the paths specified on the cmdline is a regular file, all other paths that are\n\
directories will have the basename of the regular filename appended to them.\n\
For example, if you specify:</p>\n\
<pre class=\"literal-block\">\n\
xxdiff dir1/bn1 dir2/bn2 dir3\n\
</pre>\n\
<p>xxdiff will be run on <tt class=\"docutils literal\">dir1/bn1</tt>, <tt class=\"docutils literal\">dir2/bn2</tt>, and <tt class=\"docutils literal\">dir3/bn1</tt>.</p>\n\
<p>xxdiff can accept one of its inputs from stdin. You must replace the relevant\n\
filename by '<tt class=\"docutils literal\">-</tt>' (a dash) to instruct xxdiff to use stdin for that file,\n\
e.g.:</p>\n\
<pre class=\"literal-block\">\n\
cat file2 | sort | xxdiff file1 - file3\n\
</pre>\n\
<p>If all the file paths are directories, a directory diff is invoked.  Note that\n\
xxdiff doesn't do three-way directory diffs.</p>\n\
<p>If the &quot;unmerge&quot; option is given, then xxdiff can only be invoked with a single\n\
file containing the conflicts.</p>\n\
<div class=\"section\" id=\"return-value\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-4\">3.1&nbsp;&nbsp;&nbsp;Return Value</a></h2>\n\
<p>xxdiff returns the same values that diff(1) or diff3(1) return. See the\n\
respective man pages of those utilities for details.</p>\n\
</div>\n\
<div class=\"section\" id=\"command-line-options\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-5\">3.2&nbsp;&nbsp;&nbsp;Command-line Options</a></h2>\n\
<div id=\"invocation\">\n\
<invocation/>\n\
</div><p>Note that the last few options are provided compatible with common GNU diff\n\
options that the user might want to use, as a mere convenience.  Note also that\n\
xxdiff options are a superset of the original xdiff options, so that xxdiff is\n\
compatible with old SGI scripts that use xdiff.  xxdiff options follow the GNU\n\
conventions for command-line options.</p>\n\
</div>\n\
<div class=\"section\" id=\"using-xxdiff-as-a-short-lived-application\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-6\">3.3&nbsp;&nbsp;&nbsp;Using xxdiff as a short-lived application</a></h2>\n\
<p>xxdiff has not been designed with the intent of being used over multiple sets of\n\
files over the course of one execution---that is, it has been built around the\n\
idea that you would execute it once over a single set of inputs, use it, then\n\
exit, rather than to open new files again using the 'file' menu features without\n\
exiting.  The 'file' menu features are provided as a convenience, to allow one\n\
to occasionally replace one of the files during an execution.  That is the\n\
reason why you can't open xxdiff with just one file.  It is just not useful that\n\
way.</p>\n\
</div>\n\
</div>\n\
<div class=\"section\" id=\"general-operation\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-7\">4&nbsp;&nbsp;&nbsp;General operation</a></h1>\n\
<p>This section describes general features and operation of xxdiff.</p>\n\
<div class=\"section\" id=\"the-text-area\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-8\">4.1&nbsp;&nbsp;&nbsp;The text area</a></h2>\n\
<p>xxdiff shows up with two or three text regions that display the text of the\n\
files to compare, with color-coded blocks that indicate regions of text (lines)\n\
that have changes (specific sections contain a list and descriptions on what\n\
types of change can appear).  Each of these regions of text is called a &quot;hunk&quot;\n\
in diff terminology (for more about this, see the GNU diff manual).  The text\n\
area can be scrolled vertically and horizontally, when necessary.</p>\n\
<p>Corresponding regions of text are aligned between the files.  Since changed\n\
regions do not necessarily contains the same number of lines, empty alignment\n\
lines are appended to the shorter regions in order to keep the corresponding\n\
lines aligned (this is a simple way of solving the alignment problem; an\n\
alternate solution would have been to implement a smart type of scrolling with\n\
lines indicating correspondence of regions between them).</p>\n\
<p>All the colors can be individually configured using the display options dialog\n\
or resources.  The display dialog contains a legend of all the colors.  Note\n\
that the default colors for different regions are often set to be the same to\n\
other types of lines when it is not necessary to dissociate them, to avoid\n\
visual clutter.  You could however, customize every region to be of a different\n\
color, for example, perhaps you would want to have the dummy lines drawn of a\n\
special color to indicate that they are not really part of the text.</p>\n\
<p>In the text area, there is a cursor that in indicates the current line of text\n\
being worked on.  This cursor can be optionally hidden.</p>\n\
<div class=\"section\" id=\"horizontal-diffs\">\n\
<h3><a class=\"toc-backref\" href=\"#toc-entry-9\">4.1.1&nbsp;&nbsp;&nbsp;Horizontal diffs</a></h3>\n\
<p>Each of the diff hunks is normally displayed in one color, but if horizontal\n\
diffs is enabled, for each line, xxdiff find the smallest differing part of the\n\
line that differs and displays that in a different, highlighted color.  This\n\
allows the user to more quickly visualize exactly what has changed between the\n\
two lines of text.  No need to mention, this is highly addictive and is now\n\
enabled by default.  This is the &quot;single horizontal diffs&quot; mode.</p>\n\
<p>When there are no more than two pieces of text on a single line, if the\n\
differing parts of the lines are not too long (e.g. less than 100 chars), the\n\
horizontal diffs can isolate the differences within the line.  This is the\n\
&quot;multiple horizontal diffs&quot; mode.  In this mode, we require that between\n\
horizontal changes, inserts or deletes, there be a minimal number of common\n\
context characters, so that the eye can make out what has change between the\n\
lines.  This value is configurable (see resources section).</p>\n\
<p>When computing horizontal diffs, <strong>changes</strong> in whitespace can be optionally\n\
ignored.  However, if whitespace has been added in the middle of a word, it will\n\
still be highlighted.</p>\n\
</div>\n\
<div class=\"section\" id=\"per-hunk-ignore-whitespace\">\n\
<h3><a class=\"toc-backref\" href=\"#toc-entry-10\">4.1.2&nbsp;&nbsp;&nbsp;Per-hunk ignore whitespace</a></h3>\n\
<p>Diff Hunks with text on all sides but with just whitespace or line break\n\
differences will be detected by xxdiff and marked with a special flag. If the\n\
feature is enabled, those hunks will be drawn of a different color, thus\n\
enabling the reviewer to quickly ignore those hunks. See the merge review\n\
features section for more details.</p>\n\
</div>\n\
<div class=\"section\" id=\"navigation\">\n\
<h3><a class=\"toc-backref\" href=\"#toc-entry-11\">4.1.3&nbsp;&nbsp;&nbsp;Navigation</a></h3>\n\
<p>xxdiff supports a subset of the emacs bindings, as well as support for most of\n\
the standard keys found on AT keyboards (PgUp, PgDown, arrow keys, Home, End).</p>\n\
<p>Default bindings include:</p>\n\
<ul class=\"simple\">\n\
<li>Ctrl-V, Alt-V: scroll up/down;</li>\n\
<li>Ctrl-N, Ctrl-P: move cursor one line up/down;</li>\n\
<li>Home, End: move cursor to beginning/end of files;</li>\n\
<li>N, P: move to next/previous diff hunk;</li>\n\
<li>B, O: mov the next/previous <strong>unselected</strong> diff hunk.</li>\n\
</ul>\n\
<p>Explore the menus to find out about the other default bindings.  You can\n\
customize all the key bindings using the resources.</p>\n\
</div>\n\
<div class=\"section\" id=\"pop-up-menu\">\n\
<h3><a class=\"toc-backref\" href=\"#toc-entry-12\">4.1.4&nbsp;&nbsp;&nbsp;Pop-up menu</a></h3>\n\
<p>Using the third mouse button in the text area brings a popup menu that contains\n\
cursor-sensitive commands, as well as the common commands to navigate between\n\
hunks.</p>\n\
</div>\n\
<div class=\"section\" id=\"searching\">\n\
<h3><a class=\"toc-backref\" href=\"#toc-entry-13\">4.1.5&nbsp;&nbsp;&nbsp;Searching</a></h3>\n\
<p>You can search the text by bringing up the search dialog.  Type your search\n\
query and press enter, which will apply the search and display diamond shaped\n\
match locations in the overview area. You can then navigate the search results\n\
using Ctrl-F and Ctrl-B.  Searching will occur in all files simultaneously.  You\n\
have to reapply the search to search for something else.</p>\n\
<p>You can also move the cursor and display to a particular line from the search\n\
dialog.</p>\n\
</div>\n\
<div class=\"section\" id=\"other-options\">\n\
<h3><a class=\"toc-backref\" href=\"#toc-entry-14\">4.1.6&nbsp;&nbsp;&nbsp;Other options</a></h3>\n\
<p>Carriage returns (CR) characters in DOS files can be hidden in the text area.</p>\n\
<p>Tabs by default are rendered aligned at each 8 characters, but can be set to any\n\
value by changing the tab width option.</p>\n\
</div>\n\
<div class=\"section\" id=\"display-options\">\n\
<h3><a class=\"toc-backref\" href=\"#toc-entry-15\">4.1.7&nbsp;&nbsp;&nbsp;Display options</a></h3>\n\
<p>The display options can be fully customized by bringing up the options dialog\n\
with the &quot;Display -&gt; Display Options...&quot; menu item.  From that dialog you can\n\
also customize the colors and fonts.</p>\n\
</div>\n\
</div>\n\
<div class=\"section\" id=\"redoing-the-diffs\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-16\">4.2&nbsp;&nbsp;&nbsp;Redoing the diffs</a></h2>\n\
<p>If a file has changed while xxdiff is up, and there is need to recompute the\n\
diffs, invoke the &quot;redo diff&quot; command from the edit menu.  The arguments used\n\
with the surrogate diff command can be changed by using the dialog provided by\n\
the &quot;diff arguments&quot; command.  One can also replace a loaded file with a\n\
different one by using the &quot;open&quot; commands from the &quot;file&quot; menu.</p>\n\
</div>\n\
<div class=\"section\" id=\"other-ui-elements\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-17\">4.3&nbsp;&nbsp;&nbsp;Other UI elements</a></h2>\n\
<p>The following other UI elements can be optionally hidden or displayed from the\n\
Windows menu or Display menu (use the resource file to display or hide them on\n\
startup):</p>\n\
<ul class=\"simple\">\n\
<li><strong>Overview area.</strong> On the right side, an area that shows a color-coded\n\
pictorial rendering of the diff hunks for the whole files, with\n\
correspondences.  This area also shows the as a rectangle the currently\n\
visible portion of text for each of the files.  This rectangle can also be\n\
used as a scrollbar.  In addition, a marker indicates the location of the line\n\
cursor.</li>\n\
<li><strong>Remaining Unselected Hunks.</strong> Just above the overview area is a label that\n\
indicates the number of remaining unselected diff hunks between the files.  In\n\
addition, if that number is zero, and if the files are identical\n\
byte-for-byte, it display a &quot;(=)&quot; string next to the number, so that you can\n\
figure out quickly if the files have any ignored whitespace changes or not\n\
(this can be important during merge review).</li>\n\
<li><strong>Toolbar.</strong> A toolbar that gives access to the common motion and selection\n\
commands.</li>\n\
<li><strong>Filenames.</strong> For each file, a region at the top that displays the filename.\n\
You can customize what shows up in this region from the command-line.\n\
Clicking on the filename puts it in the clipboard for cut-n-paste.  (This\n\
label will intelligently display the end part of the filename if it is too\n\
long to fit.)  This region also display the text line that the line cursor is\n\
in, for each file.  You can customize what gets displayed in this labeled by\n\
using a command-line option.</li>\n\
<li><strong>Line numbers.</strong> For each file, a thin window that display the number of each\n\
line (dummy alignment lines don't have any number).</li>\n\
<li><strong>Vertical line.</strong> A vertical line can be drawn in the text area, at a\n\
specified column.  This can be used for alignment purposes or for verifying\n\
that a line doesn't extend beyond a specified number of characters (many\n\
people like to limit their source code to fit in e.g. 80 characters).</li>\n\
<li><strong>Merged view</strong>. A view of the file resulting from the currently selected\n\
regions (see section on <a class=\"reference internal\" href=\"#merged-view\">Merged view</a> below).</li>\n\
</ul>\n\
</div>\n\
</div>\n\
<div class=\"section\" id=\"comparing-two-files\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-18\">5&nbsp;&nbsp;&nbsp;Comparing two files</a></h1>\n\
<p>When invoking xxdiff with two files, we normally think of an old and a new file,\n\
where:</p>\n\
<pre class=\"literal-block\">\n\
xxdiff old new\n\
</pre>\n\
<p>The default colors used here are symmetrical, so invoking the files in a\n\
different order will result in regions being assigned the same colors.</p>\n\
<div class=\"section\" id=\"types-of-hunks\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-19\">5.1&nbsp;&nbsp;&nbsp;Types of hunks</a></h2>\n\
<p>The following hunk types can appear when comparing two files:</p>\n\
<ul class=\"simple\">\n\
<li><strong>Same</strong>: no change in that region;</li>\n\
<li><strong>Insert</strong>: text has been added to the new file;</li>\n\
<li><strong>Delete</strong>: text has been deleted from the new file;</li>\n\
<li><strong>Diff</strong>: text has changed between the files.</li>\n\
</ul>\n\
<p>Note that each Diff or Insert hunk is always separated by a Same hunk (if it was\n\
not the case, then two different contiguous hunks would necessarily get merged\n\
into a single Diff hunk).</p>\n\
</div>\n\
<div class=\"section\" id=\"options\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-20\">5.2&nbsp;&nbsp;&nbsp;Options</a></h2>\n\
<p>You can ignore trailing blanks, whitespace, or case for two-way diffs.  See GNU\n\
diff(1) manual for information these features.  xxdiff provides menu items to\n\
access these diff options. Those items simply add or remove switches to the diff\n\
program command-line and call the diff program again to regenerate the diffs.</p>\n\
<p>Switches for GNU diff algorithm quality are also provided in the UI as a\n\
convenience.</p>\n\
</div>\n\
</div>\n\
<div class=\"section\" id=\"comparing-three-files\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-21\">6&nbsp;&nbsp;&nbsp;Comparing three files</a></h1>\n\
<p>When invoking xxdiff with three files, we think of an ancestor file, a &quot;mine&quot;\n\
file, which the current user has been working on, and a &quot;yours&quot; file which\n\
someone else has merged in the main tree.  They are normally specified in the\n\
following order:</p>\n\
<pre class=\"literal-block\">\n\
xxdiff mine older yours\n\
</pre>\n\
<p>The default colors used here are symmetrical, so invoking the files in a\n\
different order will result in regions being assigned the same colors.</p>\n\
<div class=\"section\" id=\"types-of-hunks-1\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-22\">6.1&nbsp;&nbsp;&nbsp;Types of hunks</a></h2>\n\
<p>The following hunk types can appear when comparing two files:</p>\n\
<ul class=\"simple\">\n\
<li><strong>Same</strong>: no change in that region;</li>\n\
<li><strong>Insert</strong>: text has been added one of the files;</li>\n\
<li><strong>Delete</strong>: text has been deleted from one of the files;</li>\n\
<li><strong>DiffOne</strong>: text is different in one of the three files but the two\n\
other files are the same.</li>\n\
<li><strong>DiffAll</strong>: text is different in all of the three files.</li>\n\
<li><strong>DiffDel</strong>: text is different in two files and is absent in the\n\
third.</li>\n\
</ul>\n\
</div>\n\
<div class=\"section\" id=\"ignoring-one-file\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-23\">6.2&nbsp;&nbsp;&nbsp;Ignoring one file</a></h2>\n\
<p>In three-way mode, it can be useful to temporarily ignore one of the three files\n\
to concentrate on the differences between the other two.  This feature is\n\
available from the Display menu and is performed by simply remapping colors at\n\
display time and doesn't require xxdiff to recompute the differences.  The\n\
ignored file will be displayed as grayed out.</p>\n\
</div>\n\
</div>\n\
<div class=\"section\" id=\"comparing-two-directories\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-24\">7&nbsp;&nbsp;&nbsp;Comparing two directories</a></h1>\n\
<p>When invoking xxdiff with two directories, we normally think of an old and a new\n\
directory, where:</p>\n\
<pre class=\"literal-block\">\n\
xxdiff olddir newdir\n\
</pre>\n\
<p>The default colors used here are symmetrical, so invoking the files in a\n\
different order will result in regions being assigned the same colors.</p>\n\
<div class=\"admonition note\">\n\
<p class=\"first admonition-title\">Note</p>\n\
<p class=\"last\">If you want to compare the files within directories all at once, use\n\
the <tt class=\"docutils literal\"><span class=\"pre\">--recursive</span></tt> option and you will get a single xxdiff with\n\
all the file differences.  xxdiff accomplishes that by passing on\n\
the option to the subordinate diff program (e.g., GNU diff).</p>\n\
</div>\n\
<div class=\"section\" id=\"types-of-hunks-2\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-25\">7.1&nbsp;&nbsp;&nbsp;Types of hunks</a></h2>\n\
<p>The following hunk types can appear when comparing two directories:</p>\n\
<ul class=\"simple\">\n\
<li><strong>Same</strong>: files are present in both directories and have no\n\
differences;</li>\n\
<li><strong>Insert</strong>: file has been added to directory;</li>\n\
<li><strong>Delete</strong>: file has been removed from directory;</li>\n\
<li><strong>Diff</strong>: files are present in both directories and have\n\
differences;</li>\n\
<li><strong>Directories</strong>: directories are present in both directories but we\n\
don't know if they differ;</li>\n\
</ul>\n\
</div>\n\
<div class=\"section\" id=\"options-1\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-26\">7.2&nbsp;&nbsp;&nbsp;Options</a></h2>\n\
<p>The directories can be compared recursively, in which case no directories will\n\
be shown. You can activate this from the command-line or from the ui.</p>\n\
<p>You can also instruct xxdiff not to display the files that haved changed, just\n\
the insertions and deletions.</p>\n\
</div>\n\
<div class=\"section\" id=\"file-operations\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-27\">7.3&nbsp;&nbsp;&nbsp;File operations</a></h2>\n\
<p>In directory diffs mode, you can invoke an xxdiff on the pair of files or\n\
directories under the line cursor.  This allows you to start xxdiff on a pair of\n\
directories, and then to examine the pairs of files that have changed, all from\n\
that directory diff.  That functionality is available from the popup menu in the\n\
text area (right-click).</p>\n\
<p>You can also copy and remove files from that menu, see\n\
<a class=\"reference internal\" href=\"#merging-files-and-resolving-conflicts\">Merging files and resolving conflicts</a> section for details.</p>\n\
</div>\n\
</div>\n\
<div class=\"section\" id=\"merging-files-and-resolving-conflicts\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-28\">8&nbsp;&nbsp;&nbsp;Merging files and resolving conflicts</a></h1>\n\
<p>Merging files is the process of manually resolving conflicts when two files\n\
cannot be merged automatically.  This is a common problem when doing parallel\n\
software development where multiple developers could be working on the same\n\
files.</p>\n\
<p>Most of the merging can be handled automatically, because if the changes were\n\
applied to fairly independent parts of the files, most of the changes will be\n\
insertions or deletions.  However, when overlapping changes occur, no automatic\n\
decision can be taken.</p>\n\
<p>xxdiff can be used to resolve conflicts by letting the user &quot;select&quot; which side\n\
of a diff hunk should be killed and what side should be kept.  The user can take\n\
this decision on a line-by-line basis, and can decide to keep both sides as\n\
well, in any order.  xxdiff then allows the user to save the resulting file.</p>\n\
<div class=\"section\" id=\"selecting-regions\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-29\">8.1&nbsp;&nbsp;&nbsp;Selecting regions</a></h2>\n\
<p>Selecting a diff hunk can be carried out by clicking on it.  The colors update\n\
to display which side is selected for output. You can select individual lines\n\
with the second button.  There are three types of selection that you can carry\n\
out:</p>\n\
<ul class=\"simple\">\n\
<li>select clicked file;</li>\n\
<li>select no file (take the decision that nothing will be output);</li>\n\
<li>leave the line/hunk unselected.</li>\n\
</ul>\n\
<p>If you want to select more than one side, you have to invoke the split-swap-join\n\
command (default is on 'S' key), which will split the current diff hunk if it's\n\
a Diff hunk so you can select the pieces you want from both sides.  Further\n\
invocations of this command will cause swapping the regions, looping through all\n\
the different ordering possibilities, and finally joining the regions again\n\
(preserving selections where it is possible).</p>\n\
<p>If you want to select individual lines, use the second button of the mouse on\n\
the lines that you want to select.</p>\n\
</div>\n\
<div class=\"section\" id=\"saving-the-resulting-file\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-30\">8.2&nbsp;&nbsp;&nbsp;Saving the resulting file</a></h2>\n\
<p>The resulting file can be saved under one of the input filenames, under a\n\
computed &quot;merged&quot; filename, or under a new filename (from the File menu). The\n\
intended &quot;merged&quot; filename can be built from the input filenames and it's format\n\
can be specified through the resources file or the command line.</p>\n\
<p>If some regions are left unselected, the save\n\
dialog will have some widgets that allows you to decide how you want to save the\n\
unselected hunks:</p>\n\
<ul class=\"simple\">\n\
<li><strong>Save as merge conflicts:</strong> save all sides, separating them with merge\n\
conflict markers similar to those inserted by CVS;</li>\n\
<li><strong>Save with conditionals:</strong> save all sides, separating them with C\n\
pre-processor directives, so that you could then use a #define directive to\n\
have one set of changes or another be active if compiling.</li>\n\
</ul>\n\
<p>The markers and pre-processor directives can be customized through the resources\n\
file.</p>\n\
<p>There is a customization flag that lets you specify that xxdiff should warn you\n\
when trying to save with some regions unselected.  It will bring the cursor to\n\
the first remaining unselected region and ask for confirmation. This can be used\n\
to insure that the user has made all the required decisions before saving and\n\
that no text will be forgotten.</p>\n\
<p>You could also decide to save only the selected regions, from the File menu.\n\
This can be useful for making comments when reviewing merges.</p>\n\
<div class=\"section\" id=\"forcing-output-of-a-merged-file-and-better-script-integration\">\n\
<h3><a class=\"toc-backref\" href=\"#toc-entry-31\">8.2.1&nbsp;&nbsp;&nbsp;Forcing Output of a Merged File and Better Script Integration</a></h3>\n\
<p>xxdiff is often used for merging conflicts, replacing some of the tools that are\n\
provided with popular configuration management systems. Sometime it is\n\
&quot;required&quot; that the conflict resolution tool output the merged file. To that\n\
extent, xxdiff has a special mode triggered with the option <tt class=\"docutils literal\"><span class=\"pre\">--decision</span></tt> to\n\
address specifically that need. When specified, the exit functionality is\n\
replaced with three functions:</p>\n\
<ul class=\"simple\">\n\
<li>exit with ACCEPT: the string &quot;ACCEPT&quot; is printed on stdout.  The left file is\n\
automatically saved into the merged file;</li>\n\
<li>exit with REJECT: the string &quot;REJECT&quot; is printed on stdout.  The right file is\n\
automatically saved into the merged file;</li>\n\
<li>exit with MERGED: the string &quot;MERGED&quot; is printed on stdout.  If there are\n\
remaining conflictual hunks when exiting, a popup will ask how to deal with\n\
them, you are forced to make a selection on all the hunks.</li>\n\
</ul>\n\
<p>We want to allow for a fast process where the user is presented with a series of\n\
xxdiffs and has to make decisions on each. The calling script can then do\n\
whatever is required to integrate the resulting file into its workflow.</p>\n\
<p>If the window is killed, the merge file is not saved and NODECISION is output\n\
(the script that calls xxdiff must be prepared to deal with that somehow).\n\
Also, note that you are responsible for deleting the merged file.  Also in this\n\
mode, if the merged file already exists, it gets overwritten without warning.</p>\n\
</div>\n\
</div>\n\
<div class=\"section\" id=\"rapid-sequential-merge-conflict-resolution\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-32\">8.3&nbsp;&nbsp;&nbsp;Rapid, sequential merge conflict resolution</a></h2>\n\
<p>Some people like to merge files within a guided process, where the visual diff\n\
program asks for a merge decision for each conflictual hunk one-by-one and then\n\
asks for a filename to use for saving the merged output.  For example, that is\n\
how ClearCase's xcleardiff works when querying the user to resolve conflicts.</p>\n\
<p>There are a set of commands under the Region menu that allows one to rapidly\n\
take decisions on merge conflicts.  These commands perform a selection and then\n\
automatically move the cursor to the next unselected region.  If there are no\n\
more unselected regions, the save dialog is brought up automatically.</p>\n\
</div>\n\
<div class=\"section\" id=\"automatic-merge\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-33\">8.4&nbsp;&nbsp;&nbsp;Automatic merge</a></h2>\n\
<p>By default, xxdiff doesn't perform any selections.  You can instruct xxdiff to\n\
perform the initial selection of the non-conflictual regions automatically.\n\
This can be specified from the command-line or from the Global menu.</p>\n\
<p>Just like xxdiff can be instructed not to show up if there aren't any\n\
differences between the files, xxdiff can also be instructed not to show up if\n\
after the automatic merge there remains no conflictual regions. You can use the\n\
return value to find out.</p>\n\
<p>(Note that we do not want to add a feature to xxdiff to allow it to output to\n\
the merged file if there are no conflics, because that would amount to make\n\
xxdiff a non-graphical tool, while its mandate is to use such tools underneath\n\
and display their output. Besides, that would be the single case where xxdiff\n\
writes to a file without a file dialog.  You can very easily implement this from\n\
within a script using the return value of either diff or xxdiff.)</p>\n\
<div class=\"section\" id=\"requiring-an-output-file\">\n\
<h3><a class=\"toc-backref\" href=\"#toc-entry-34\">8.4.1&nbsp;&nbsp;&nbsp;Requiring an output file</a></h3>\n\
<p>Sometimes we want to force the user into producing a merged output file (when\n\
calling xxdiff from an update script, for example). Thus there is a feature to\n\
put xxdiff in this mode (see resources or invocation section). In this mode, the\n\
user must save before exiting xxdiff (exiting will prompt for save filename).</p>\n\
</div>\n\
</div>\n\
<div class=\"section\" id=\"merging-directories\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-35\">8.5&nbsp;&nbsp;&nbsp;Merging directories</a></h2>\n\
<p>Selecting is disable in directory diffs mode, where the concept of &quot;saving&quot; a\n\
directory does not really make sense.  However, you can apply changes to a\n\
directory from xxdiff, such as copying and removing files under the line cursor.\n\
This can be invoked from the popup menu in the text area.</p>\n\
</div>\n\
<div class=\"section\" id=\"merged-view\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-36\">8.6&nbsp;&nbsp;&nbsp;Merged view</a></h2>\n\
<p>During selection or before saving the selected regions into the result file, you\n\
might want to visualize what it would look like with the current selections.\n\
You can display the &quot;merged view&quot; for this purpose, an dedicated window\n\
showing the merge output, that updates interactively as you make selections.</p>\n\
<p>This view will scroll to match the main display.  Unselected regions are shown\n\
in this view with oblique lines (&quot;in construction&quot; style), and merge decisions\n\
are slightly highlighted as well.  This output allows you to review the merge\n\
decisions before committing the file to output.</p>\n\
</div>\n\
</div>\n\
<div class=\"section\" id=\"merge-review-features\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-37\">9&nbsp;&nbsp;&nbsp;Merge review features</a></h1>\n\
<p>One of the most important uses of xxdiff is to assist the merge review process,\n\
where one developer visualizes the file changes of another and approves or\n\
rejects those changes, making comments along the way.</p>\n\
<p>For this purpose, xxdiff puts selected text (i.e. when you click on a diff hunk)\n\
in the clipboard text buffer when you select it.  Thus, the merge cop can select\n\
a region, and paste the results in a neighboring editor window.</p>\n\
<p>These snippets of code will typically be interspersed with comments.  xxdiff can\n\
be format the line contents before they are copied to the clipboard, to make\n\
them distinct from the merge comments.  This can be enabled using the &quot;format\n\
clipboard text&quot; option.  The clipboard line format is a string that contains\n\
format specifiers similar to printf for each line to be formatted prior to being\n\
put on the clipboard.  The following specifiers are allowed:</p>\n\
<dl class=\"docutils\">\n\
<dt><tt class=\"docutils literal\">%N</tt></dt>\n\
<dd>file line (0 is leftmost file)</dd>\n\
<dt><tt class=\"docutils literal\">%L</tt></dt>\n\
<dd>line number</dd>\n\
<dt><tt class=\"docutils literal\">%F</tt></dt>\n\
<dd>filename</dd>\n\
<dt><tt class=\"docutils literal\">%s</tt></dt>\n\
<dd>line contents</dd>\n\
</dl>\n\
<p>There is also a &quot;clipboard header format&quot; resource for adding the filename at\n\
the top of the copied text. This is useful for quickly pasting into a merge\n\
comments file.</p>\n\
<p>Also note that clicking on the filename labels will put the filenames in the\n\
clipboard for similar cut-n-paste action.  This can be useful when reviewing\n\
ClearCase revision files, which often have very long p-names.</p>\n\
<div class=\"section\" id=\"variable-text-selection\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-38\">9.1&nbsp;&nbsp;&nbsp;Variable text selection</a></h2>\n\
<p>You can press ALT and Button1 to select an arbitrary number of lines.  The\n\
selected lines will be marked with a special border to show what gets put in the\n\
clipboard. This is very useful when you don't want to quote an entire diff hunk,\n\
or a section of text that straddles hunks.</p>\n\
</div>\n\
<div class=\"section\" id=\"per-hunk-ignore-whitespace-1\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-39\">9.2&nbsp;&nbsp;&nbsp;Per-hunk ignore whitespace</a></h2>\n\
<p>Many source code changes often just reindent or reorganize blocks of code, and\n\
result in many isolated hunks with no relevant changes to look at (for languages\n\
that don't use whitespace semantics anyway). For merge police duties, this can\n\
lead to more work to review changes, and typically, programmers (and groups,\n\
sometimes) will explicitly choose not to allow code beautification because of\n\
that very reason (...and the directed anger of merge cops themselves). xxdiff\n\
now has a new feature that alleviates this problem greatly: it will scan each\n\
diff hunk for non-whitespace changes, and if the only changes are of whitespace,\n\
it will mark the hunk with a special flag. The &quot;ignore per-hunk whitespace&quot;\n\
feature will draw these hunks with a different color, by default, a color very\n\
similar to the &quot;same&quot; hunks. The hunks are not ignored, however, as skipping\n\
from hunk to hunk will still stop at these hunks, but they can be very quickly\n\
ignored by the merge police. So go on ahead now, and reindent that code without\n\
fear.</p>\n\
</div>\n\
</div>\n\
<div class=\"section\" id=\"unmerging-merge-conflicts\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-40\">10&nbsp;&nbsp;&nbsp;Unmerging merge conflicts</a></h1>\n\
<p>Unmerging merge conflicts is a special input mode of xxdiff where a single file\n\
containing the result of an automatic merge of two files is split into two files\n\
and displayed as such.</p>\n\
<p>This may sound like a &quot;trava lengua&quot;, but unmerging merge conflicts can be a\n\
very useful feature, if you like to let your source code management system\n\
automatically perform merges and save the output without user intervention, such\n\
as the way CVS is normally used. Typical use of the CVS update command will\n\
merge the main branch changes into your local copy files. When there are\n\
conflicts, your files are modified to contain both your changes and the main\n\
branch changes in the regions that conflict. CVS inserts text markers such as\n\
the following to indicate the conflictual regions:</p>\n\
<pre class=\"literal-block\">\n\
Some merged text.\n\
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; MYFILE\n\
I added this.\n\
========\n\
This line added in main branch.\n\
&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; 1.1\n\
Some finetext.\n\
</pre>\n\
<p>Then, the user is notified of the conflictual files, and has to go inspect the\n\
conflicts and resolve them by editing the file accordingly. The problem is that\n\
it is often quite difficult (and unpleasant) to figure out exactly what happened\n\
during the automated merge process, without the original files (note that CVS\n\
does make a backup copy of your file before writing it over with the merged\n\
output, see CVS manual for details).</p>\n\
<p>To help in figuring out what happened during merge and in performing the\n\
user-directed selections, xxdiff can be invoked in &quot;unmerge mode&quot; with the file\n\
containing the merge conflicts. It parses the file and generates two files from\n\
it, displaying them with differences. You can then perform selections as usual\n\
to produce the final merged file.</p>\n\
<p>Note that we think that this is not the best way of resolving conflicts, rather\n\
just a useful feature for people who like to work this way. A better way to\n\
merge would be to use your source code management system to fetch the common\n\
ancestor revision, the latest/head of the main branch and to invoke xxdiff with\n\
your file, the ancestor and the latest/head. You can also tell xxdiff to\n\
initially perform all non-conflictual selections automatically.</p>\n\
<div class=\"section\" id=\"unmerging-merge-conflicts-with-three-files\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-41\">10.1&nbsp;&nbsp;&nbsp;Unmerging merge conflicts with three files</a></h2>\n\
<p>diff3 can be used to produce a merged file in which all the three files' regions\n\
are shown if there is a conflict. xxdiff can also parse these files and display\n\
them as a three-way diff. You then have to invoke xxdiff with the 'unmerge3'\n\
command-line argument to let it know you want the file split in three.</p>\n\
</div>\n\
</div>\n\
<div class=\"section\" id=\"editing-files\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-42\">11&nbsp;&nbsp;&nbsp;Editing files</a></h1>\n\
<p>There has been a conscious decision NOT to develop xxdiff into a fully-featured\n\
editing program.  Sometimes it could be handy to be able to edit a few lines of\n\
a difficult conflict.  However, that is a task best left to your own favorite\n\
editing program.  Saving with merge conflicts will allow you to resolve those\n\
few remaining conflicts by hand.</p>\n\
<p>However, a few commands have been provided under the File menu to spawn an\n\
editor on the input files.  You can then redo the diff after your input file has\n\
changed.</p>\n\
</div>\n\
<div class=\"section\" id=\"customization-using-resource-file\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-43\">12&nbsp;&nbsp;&nbsp;Customization using resource file</a></h1>\n\
<p>Much of the state of xxdiff can be customized through a resource file (actually,\n\
some of the features can only be changed through resource customization).\n\
By default, xxdiff looks for the file <tt class=\"docutils literal\">.xxdiffrc</tt> located in the user's\n\
home directory (this file location can be overridden by setting the environment\n\
variable XXDIFFRC), and reads that file for resource definition.</p>\n\
<p>The format of the resource file is a fairly simple list of colon-separated\n\
resource name/value pairs, one per line:</p>\n\
<pre class=\"literal-block\">\n\
resourceName: &quot;value&quot;\n\
</pre>\n\
<p>Any text after &quot;#&quot; on a line is considered a comment and ignored.</p>\n\
<p>Some resources may require string delimiters (double-quotes) around their value\n\
specification, but not all (see below).</p>\n\
<p>You can also specify additional resources on the command-line, which take\n\
precedence over the resources specified in the resource file.  To get a\n\
complete list of the available resources, use the <tt class=\"docutils literal\"><span class=\"pre\">--list-resources</span></tt>\n\
command-line option (see Options section).</p>\n\
<p>Trick: you can use different resources files by invoking xxdiff like this in\n\
most shells:</p>\n\
<pre class=\"literal-block\">\n\
XXDIFFRC=myrcfile xxdiff file1 file2\n\
</pre>\n\
<div class=\"section\" id=\"automatic-generation-of-the-resource-file\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-44\">12.1&nbsp;&nbsp;&nbsp;Automatic generation of the resource file</a></h2>\n\
<p>You can generate a resource file containing only the differences from the\n\
defaults from the &quot;File -&gt; Save Option...&quot; menu command.  This can be\n\
used to &quot;save&quot; the current customizable options into <tt class=\"docutils literal\"><span class=\"pre\">~/.xxdiffrc</span></tt>.</p>\n\
</div>\n\
</div>\n\
<div class=\"section\" id=\"resource-reference\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-45\">13&nbsp;&nbsp;&nbsp;Resource reference</a></h1>\n\
<p>This section contains a reference of the all the currently supported\n\
customizable resources in this version of xxdiff.</p>\n\
<div id=\"invocation\">\n\
<resourceref/>\n\
</div></div>\n\
<div class=\"section\" id=\"frequently-asked-questions-faq\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-46\">14&nbsp;&nbsp;&nbsp;Frequently Asked Questions (FAQ)</a></h1>\n\
<div class=\"section\" id=\"can-i-diff-files-with-crlf-dos-characters-in-them\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-47\">14.1&nbsp;&nbsp;&nbsp;Can I diff files with CRLF DOS characters in them?</a></h2>\n\
<p>If you want to diff files with CRLF characters in them, you can use the 'ignore\n\
whitespace option to GNU diff, which will work, even if only one of the files\n\
has the DOS characters in it.</p>\n\
</div>\n\
<div class=\"section\" id=\"how-do-i-make-xxdiff-display-the-revision-number-of-a-file\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-48\">14.2&nbsp;&nbsp;&nbsp;How do I make xxdiff display the revision number of a file?</a></h2>\n\
<p>By default, the filenames window display the filename.  From the command-line,\n\
however, you can set it to display an arbitrary string, which could include your\n\
current revision number.</p>\n\
</div>\n\
</div>\n\
<div class=\"section\" id=\"author\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-49\">15&nbsp;&nbsp;&nbsp;Author</a></h1>\n\
<p>This program has been written from scratch and is being actively maintained by\n\
<strong>Martin Blais</strong> (<a class=\"reference external\" href=\"mailto:blais&#64;furius.ca\">blais&#64;furius.ca</a>).</p>\n\
</div>\n\
<div class=\"section\" id=\"reporting-bugs\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-50\">16&nbsp;&nbsp;&nbsp;Reporting bugs</a></h1>\n\
<p>All bug reports and feature requests should be submitted through the Github bug\n\
tracking system at the following URL <a class=\"reference external\" href=\"http://github.com/blais/xxdiff/issues\">http://github.com/blais/xxdiff/issues</a>.\n\
Please avoid sending the author email about xxdiff bugs. Please use this bug\n\
tracking system, it is extremely fast and simple to use.</p>\n\
</div>\n\
<div class=\"section\" id=\"project-history\">\n\
<h1><a class=\"toc-backref\" href=\"#toc-entry-51\">17&nbsp;&nbsp;&nbsp;Project history</a></h1>\n\
<p>This program has been written and inspired after gdiff, mgdiff, and Rudy\n\
Wortel's xdiff under SGI. xxdiff aims to provide a lasting open-source\n\
replacement to these programs.  Writing this tool from scratch was originally\n\
motivated by the need to have horizontal diffs, which turned out to be an\n\
essential feature of this program.</p>\n\
<p>This program is being extensively tested by several software development\n\
engineers at discreet, that use it daily in their merge reviewing activities.\n\
It has reached a stable state.</p>\n\
<div class=\"section\" id=\"licensing\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-52\">17.1&nbsp;&nbsp;&nbsp;Licensing</a></h2>\n\
<p>This program is distributed under the GNU General Public License. See the\n\
<a class=\"reference external\" href=\"http://www.gnu.org\">GNU project website</a> for full details.</p>\n\
</div>\n\
<div class=\"section\" id=\"dependencies\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-53\">17.2&nbsp;&nbsp;&nbsp;Dependencies</a></h2>\n\
<p>This program depends on the availability of a textual diff program (such as GNU\n\
diff) and the Qt UI toolkit (available at <a class=\"reference external\" href=\"http://trolltech.com\">http://trolltech.com</a>).</p>\n\
</div>\n\
<div class=\"section\" id=\"acknowledgements\">\n\
<h2><a class=\"toc-backref\" href=\"#toc-entry-54\">17.3&nbsp;&nbsp;&nbsp;Acknowledgements</a></h2>\n\
<p>Thanks go to discreet, for letting me deploy my program there, and for not\n\
bothering me with the occasional bug fix that I did on the job.  Many more\n\
thanks to all the many engineers who tested it there and reported problems with\n\
it, as well as providing invaluable suggestions.</p>\n\
<p>SourceForge used to host my web site. Tomas Pospisek (tpo at sourcepole.ch) has\n\
provided a Debian package. Dan Weeks has packaged it for one of the BSD variants\n\
(danimal at danimal.org). Not sure, but I think that Christian Savard (savardc\n\
at pobox.com) provided the original Gentoo port (xxdiff is now supported in\n\
Gentoo).</p>\n\
</div>\n\
</div>\n\
</div>\n\
</body>\n\
</html>\n";
