* Capitalize the first letter of all sentences
* Add an example for GNU diff(1) 'context diff' mode.
* Explain the requirement for separate cmd.xxx and opts.xxx
options in .hgrc, which hopefully will guard against users
trying to add:
[extdiff]
# Add a new Mercurial command called `cdiff', which calls
# GNU diff(1) in 'context diff' mode.
cmd.cdiff = diff -Nprc5
which fails for recent crew builds with:
$ hg cdiff .
making snapshot of 1 files from rev 07dc4a569f4e
making snapshot of 1 files from working dir
diff -Nprc5: not found
The correct way to do this is by separating the cmd.cdiff and
opts.cdiff parts like this:
[extdiff]
# Add a new Mercurial command called `cdiff', which calls
# GNU diff(1) in 'context diff' mode.
cmd.cdiff = diff
opts.cdiff = -Nprc5
so add it as a new example and explicitly describe it in the
extdiff comments.
diff-like tools usually return 1 if differences are found.
Currently the extdiff returns 256, but that's a different topic
(consolidating return code handling in hg).
The change from self.repo.ui.diffopts() to ui.diffopts() causes a
traceback when the diff of a changeset should be displayed in the
web interface. Revert to self.repo.ui.diffopts() for now.
rename commands.dodiff to patch.diff.
rename commands.doexport to patch.export.
move some functions from commands to new mercurial.cmdutil module.
turn list of diff options into mdiff.diffopts class.
patch.diff and patch.export now has clean api for call from 3rd party
python code.
Also handle multiple occurrences of the same line by storing
linestates in an array instead of a dict, and using difflib
to compute the difference between linestates.
Vanilla patch chokes on git patches that include files that are copied
or renamed, then modified. So this code detects that case and rewrites
the patch if necessary.