.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "App::ccdiff 3pm" .TH App::ccdiff 3pm "2023-11-09" "perl v5.36.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" ccdiff \- Colored Character diff .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& ccdiff [options] file1|\- file2|\- \& ccdiff [options] dir1 dir2 \& \& ccdiff \-\-help \& ccdiff \-\-man \& ccdiff \-\-info .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Show the diff between two files on a character by character base. In contrast to the standard diff tools, this tool uses the diff algorithm horizontally for each line in the vertical diff, highlighting the changes. This is very handy in hard to spot changes like \f(CW\*(C`O\*(C'\fR to \f(CW0\fR, \f(CW\*(C`I\*(C'\fR to \f(CW\*(C`l\*(C'\fR or \f(CW1\fR and whitespace. .PP If there are two argument, and both are a folder/directory, a recursive diff is executed. This is not available whan used as a (sub)class. .SH "OPTIONS" .IX Header "OPTIONS" .SS "Command line options" .IX Subsection "Command line options" .IP "\-\-help \-?" 2 .IX Item "--help -?" Show a summary of the available command-line options and exit. .IP "\-\-version \-V" 2 .IX Item "--version -V" Show the version and exit. .IP "\-\-man" 2 .IX Item "--man" Show this manual using pod2man and nroff. .IP "\-\-info" 2 .IX Item "--info" Show this manual using pod2text. .IP "\-\-utf\-8 \-U" 2 .IX Item "--utf-8 -U" All I/O (streams to compare and standard out) are in \s-1UTF\-8.\s0 .IP "\-\-diff\-class=C \-\-dc=C" 2 .IX Item "--diff-class=C --dc=C" Select the class used to execute the diff. By default \f(CW\*(C`ccdiff\*(C'\fR will select the first available out of \f(CW\*(C`Algorithm::Diff::XS\*(C'\fR or \f(CW\*(C`Algorithm::Diff\*(C'\fR. .Sp Sometime the \f(CW\*(C`XS\*(C'\fR version fails on encoding and the pure-perl version will work just fine. You can force \f(CW\*(C`ccdiff\*(C'\fR to use either .Sp Select the pure-perl version with any of \f(CW\*(C`PP\*(C'\fR, \f(CW\*(C`AD\*(C'\fR, \f(CW\*(C`Algorthm::Diff\*(C'\fR, \&\f(CW\*(C`Algorithm\-Diff\*(C'\fR, or \f(CW\*(C`Algorithm::Diff::PP\*(C'\fR (case insensitive) .Sp .Vb 3 \& \-\-dc=pp \& \-\-dc=algorithm\-diff \& \-\-diff\-class=Algorithm::Diff::PP .Ve .Sp Select the \s-1XS\s0 version with any of \f(CW\*(C`XS\*(C'\fR, \f(CW\*(C`ADX\*(C'\fR, \f(CW\*(C`Algorthm::Diff::XS\*(C'\fR, or \&\f(CW\*(C`Algorithm\-Diff\-XS\*(C'\fR (case insensitive) .Sp .Vb 3 \& \-\-dc=xs \& \-\-dc=algorithm\-diff\-xs \& \-\-diff\-class=Algorithm::Diff::XS .Ve .IP "\-\-unified[=3] \-u [3]" 2 .IX Item "--unified[=3] -u [3]" Generate a unified diff. The number of context lines is optional. When omitted it defaults to 3. Currently there is no provision of dealing with overlapping diff chunks. If the common part between two diff chunks is shorter than twice the number of context lines, some lines may show twice. .Sp The default is to use traditional diff: .Sp .Vb 4 \& 5,5c5,5 \& < Sat Dec 18 07:00:33 1993,I.O.D.U.,,756194433,1442539 \& \-\-\- \& > Sat Dec 18 07:08:33 1998,I.O.D.U.,,756194433,1442539 .Ve .Sp a unified diff (\-u1) would be .Sp .Vb 5 \& 5,5c5,5 \& Tue Sep 6 05:43:59 2005,B.O.Q.S.,,1125978239,1943341 \& \-Sat Dec 18 07:00:33 1993,I.O.D.U.,,756194433,1442539 \& +Sat Dec 18 07:08:33 1998,I.O.D.U.,,756194433,1442539 \& Mon Feb 23 10:37:02 2004,R.X.K.S.,van,1077529022,1654127 .Ve .IP "\-\-verbose[=1] \-v[1]" 2 .IX Item "--verbose[=1] -v[1]" Show an additional line for each old or new section in a change chunk (not for added or deleted lines) that shows the hexadecimal value of each character. If \&\f(CW\*(C`\-\-utf\-8\*(C'\fR is in effect, it will show the Unicode character name(s). .Sp This is a debugging option, so invisible characters can still be \*(L"seen\*(R". .Sp \&\f(CW\*(C`\-\-verbose\*(C'\fR accepts an optional verbosity-level. On level 2 and up, all horizontal changes get left-and-right markers inserted to enable seeing the location of the \s-1ZERO WIDTH\s0 or invisible characters. With level 3 and up and Unicode enabled, the changed characters will also show the codepoint in hex. .Sp An example of this: .Sp With \-Uu0v0: .Sp .Vb 3 \& 1,1c1,1 \& \- A BCDE Fg \& + A BcdE​Fg .Ve .Sp With \-Uu0v1: .Sp .Vb 5 \& 1,1c1,1 \& \- A BCDE Fg \& \- \-\- verbose : SPACE, LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER D, SPACE \& + A BcdE​Fg \& + \-\- verbose : LATIN SMALL LETTER C, LATIN SMALL LETTER D, ZERO WIDTH SPACE .Ve .Sp With \-Uu0v2: .Sp .Vb 5 \& 1,1c1,1 \& \- A ↱ ↰B↱CD↰E↱ ↰Fg \& \- \-\- verbose : SPACE, LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER D, SPACE \& + A B↱cd↰E↱​↰Fg \& + \-\- verbose : LATIN SMALL LETTER C, LATIN SMALL LETTER D, ZERO WIDTH SPACE .Ve .Sp With \-Uu0v3: .Sp .Vb 5 \& 1,1c1,1 \& \- A ↱ ↰B↱CD↰E↱ ↰Fg \& \- \-\- verbose : SPACE (U+000020), LATIN CAPITAL LETTER C (U+000043), LATIN CAPITAL LETTER D (U+000044), SPACE (U+000020) \& + A B↱cd↰E↱​↰Fg \& + \-\- verbose : LATIN SMALL LETTER C (U+000063), LATIN SMALL LETTER D (U+000064), ZERO WIDTH SPACE (U+00200B) .Ve .Sp With \-Uu0v2 \-\-ascii: .Sp .Vb 5 \& 1,1c1,1 \& \- A > CD cd