Mercurial > hg > easyhg-kdiff3
comparison kdiff3/doc/en/index.docbook @ 66:efe33e938730
0.9.86
author | joachim99 |
---|---|
date | Thu, 16 Sep 2004 02:40:08 +0000 |
parents | c59d5a3a8ff3 |
children | d7cafcda8c99 |
comparison
equal
deleted
inserted
replaced
65:8ea11c8efeb5 | 66:efe33e938730 |
---|---|
20 <!--<personname>--> | 20 <!--<personname>--> |
21 <firstname>Joachim</firstname> | 21 <firstname>Joachim</firstname> |
22 <surname>Eibl</surname> | 22 <surname>Eibl</surname> |
23 <!--</personname>--> | 23 <!--</personname>--> |
24 <affiliation><address> | 24 <affiliation><address> |
25 <email>joachim.eibl@gmx.de</email> | 25 <email>joachim.eibl at gmx.de</email> |
26 </address></affiliation> | 26 </address></affiliation> |
27 </author> | 27 </author> |
28 </authorgroup> | 28 </authorgroup> |
29 | 29 |
30 <!-- TRANS:ROLES_OF_TRANSLATORS --> | 30 <!-- TRANS:ROLES_OF_TRANSLATORS --> |
31 | 31 |
32 <copyright> | 32 <copyright> |
33 <year>2002-2003</year> | 33 <year>2002-2004</year> |
34 <holder>Joachim Eibl</holder> | 34 <holder>Joachim Eibl</holder> |
35 </copyright> | 35 </copyright> |
36 <!-- Translators: put here the copyright notice of the translation --> | 36 <!-- Translators: put here the copyright notice of the translation --> |
37 <!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook | 37 <!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook |
38 and in the FDL itself on how to use it. --> | 38 and in the FDL itself on how to use it. --> |
43 need them for translation coordination ! | 43 need them for translation coordination ! |
44 Please respect the format of the date (YYYY-MM-DD) and of the version | 44 Please respect the format of the date (YYYY-MM-DD) and of the version |
45 (V.MM.LL), it could be used by automation scripts. | 45 (V.MM.LL), it could be used by automation scripts. |
46 Do NOT change these in the translation. --> | 46 Do NOT change these in the translation. --> |
47 | 47 |
48 <date>2003-12-07</date> | 48 <date>2004-05-29</date> |
49 <releaseinfo>0.9.80</releaseinfo> | 49 <releaseinfo>0.9.84</releaseinfo> |
50 | 50 |
51 | 51 |
52 <abstract> | 52 <abstract> |
53 <para></para> | 53 <para></para> |
54 <para> | 54 <para> |
60 <listitem><para>has an editor for comfortable solving of merge-conflicts,</para></listitem> | 60 <listitem><para>has an editor for comfortable solving of merge-conflicts,</para></listitem> |
61 <listitem><para>provides networktransparency via KIO,</para></listitem> | 61 <listitem><para>provides networktransparency via KIO,</para></listitem> |
62 <listitem><para>has options to highlight or hide changes in white-space or comments.</para></listitem> | 62 <listitem><para>has options to highlight or hide changes in white-space or comments.</para></listitem> |
63 </itemizedlist> | 63 </itemizedlist> |
64 </para><para> | 64 </para><para> |
65 This document describes KDiff3-version 0.9.80. | 65 This document describes KDiff3-version 0.9.84. |
66 </para> | 66 </para> |
67 </abstract> | 67 </abstract> |
68 | 68 |
69 <!-- This is a set of Keywords for indexing by search engines. | 69 <!-- This is a set of Keywords for indexing by search engines. |
70 Please at least include KDE, the KDE package it is in, the name | 70 Please at least include KDE, the KDE package it is in, the name |
203 editor even conflicts which need further corrections can be solved here without | 203 editor even conflicts which need further corrections can be solved here without |
204 requiring another tool. | 204 requiring another tool. |
205 </para> | 205 </para> |
206 </sect2> | 206 </sect2> |
207 | 207 |
208 <sect2><title> And ...</title> | 208 <sect2><title>And ...</title> |
209 <itemizedlist> | 209 <itemizedlist> |
210 <listitem><para> Fast navigation via buttons.</para></listitem> | 210 <listitem><para>Fast navigation via buttons.</para></listitem> |
211 <listitem><para> A mouse-click into a summary column sync's all windows to show the same position.</para></listitem> | 211 <listitem><para>A mouse-click into a summary column sync's all windows to show the same position.</para></listitem> |
212 <listitem><para> Select and copy from any window and paste into the merge result window.</para></listitem> | 212 <listitem><para>Select and copy from any window and paste into the merge result window.</para></listitem> |
213 <listitem><para> Overview column that shows where the changes and conflicts are.</para></listitem> | 213 <listitem><para>Overview column that shows where the changes and conflicts are.</para></listitem> |
214 <listitem><para> The colors are adjustable to your specific preferences.</para></listitem> | 214 <listitem><para>The colors are adjustable to your specific preferences.</para></listitem> |
215 <listitem><para> Adjustable Tab size.</para></listitem> | 215 <listitem><para>Adjustable Tab size.</para></listitem> |
216 <listitem><para> Option to insert spaces instead of tabs.</para></listitem> | 216 <listitem><para>Option to insert spaces instead of tabs.</para></listitem> |
217 <listitem><para> Open files comfortably via dialog or specify files on the command line.</para></listitem> | 217 <listitem><para>Open files comfortably via dialog or specify files on the command line.</para></listitem> |
218 <listitem><para> Search for strings in all text windows. Find (Ctrl-F) and Find Next (F3)</para></listitem> | 218 <listitem><para>Search for strings in all text windows. Find (Ctrl-F) and Find Next (F3)</para></listitem> |
219 <listitem><para> Show the line numbers for each line. </para></listitem> | 219 <listitem><para>Show the line numbers for each line. </para></listitem> |
220 <listitem><para> Paste clipboard or drag text into a diff input window.</para></listitem> | 220 <listitem><para>Paste clipboard or drag text into a diff input window.</para></listitem> |
221 <listitem><para> Networktransparency via KIO.</para></listitem> | 221 <listitem><para>Networktransparency via KIO.</para></listitem> |
222 <listitem><para> Can be used as diff-viewer in KDevelop 3.</para></listitem> | 222 <listitem><para>Can be used as diff-viewer in KDevelop 3.</para></listitem> |
223 <listitem><para> ...</para></listitem> | 223 <listitem><para>Word-wrap for long lines.</para></listitem> |
224 <listitem><para>...</para></listitem> | |
224 </itemizedlist> | 225 </itemizedlist> |
225 </sect2> | 226 </sect2> |
226 </sect1> | 227 </sect1> |
227 </chapter> | 228 </chapter> |
228 | 229 |
283 </sect2> | 284 </sect2> |
284 | 285 |
285 <sect2><title>For more information on command line options use: </title> | 286 <sect2><title>For more information on command line options use: </title> |
286 <screen> | 287 <screen> |
287 <command>kdiff3</command> --help | 288 <command>kdiff3</command> --help |
289 Options: | |
290 -m, --merge Merge the input. | |
291 -b, --base file Explicit base file. For compatibility with certain tools. | |
292 -o, --output file Output file. Implies -m. E.g.: -o newfile.txt | |
293 --out file Output file, again. (For compatibility with certain tools.) | |
294 --auto No GUI if all conflicts are auto-solvable. (Needs -o file) | |
295 --qall Don't solve conflicts automatically. (For compatibility...) | |
296 --L1 alias1 Visible name replacement for input file 1 (base). | |
297 --L2 alias2 Visible name replacement for input file 2. | |
298 --L3 alias3 Visible name replacement for input file 3. | |
299 -L, --fname alias Alternative visible name replacement. Supply this once for every input. | |
300 -u Has no effect. For compatibility with certain tools. | |
288 </screen> | 301 </screen> |
289 </sect2> | 302 </sect2> |
290 | 303 |
291 </sect1> | 304 </sect1> |
292 | 305 |
369 space is not so important this is useful to see at one glance if anything | 382 space is not so important this is useful to see at one glance if anything |
370 of importance was modified. (In C/C++ white space is only interesting within | 383 of importance was modified. (In C/C++ white space is only interesting within |
371 strings, comments, for the preprocessor, and some only very esoteric situations.) | 384 strings, comments, for the preprocessor, and some only very esoteric situations.) |
372 </para><para> | 385 </para><para> |
373 The vertical line separating the summary column and the text is interrupted | 386 The vertical line separating the summary column and the text is interrupted |
374 if the input file had no lines there. | 387 if the input file had no lines there. When word-wrap is enabled then this vertical |
388 line appears dotted for wrapped lines. | |
375 </para><para> | 389 </para><para> |
376 On the right side a "overview"-column is visible left of the vertical scrollbar. | 390 On the right side a "overview"-column is visible left of the vertical scrollbar. |
377 It shows the compressed summary column of input "A". All the differences | 391 It shows the compressed summary column of input "A". All the differences |
378 and conflicts are visible at one glance. When only two input windows are | 392 and conflicts are visible at one glance. When only two input windows are |
379 used, then all differences appear red here because every difference is | 393 used, then all differences appear red here because every difference is |
601 <varlistentry><term><emphasis> Tab size:</emphasis></term><listitem><para> Can be adjusted for your specific needs. Default is 8. </para></listitem></varlistentry> | 615 <varlistentry><term><emphasis> Tab size:</emphasis></term><listitem><para> Can be adjusted for your specific needs. Default is 8. </para></listitem></varlistentry> |
602 <varlistentry><term><emphasis> Auto indentation:</emphasis></term><listitem><para> When pressing Enter or Return the indentation | 616 <varlistentry><term><emphasis> Auto indentation:</emphasis></term><listitem><para> When pressing Enter or Return the indentation |
603 of the previous line is used for the new line. </para></listitem></varlistentry> | 617 of the previous line is used for the new line. </para></listitem></varlistentry> |
604 <varlistentry><term><emphasis> Auto copy selection:</emphasis></term><listitem><para> Every selection is immediately copied | 618 <varlistentry><term><emphasis> Auto copy selection:</emphasis></term><listitem><para> Every selection is immediately copied |
605 to the clipboard when active and you needn't explicitely copy it. </para></listitem></varlistentry> | 619 to the clipboard when active and you needn't explicitely copy it. </para></listitem></varlistentry> |
620 <varlistentry><term><emphasis> Line end style:</emphasis></term><listitem><para> When saving you can select what line | |
621 end style you prefer. The default setting is the common choice for the used operating system. </para></listitem></varlistentry> | |
606 <varlistentry><term><emphasis> Use locale encoding:</emphasis></term><listitem><para> For displaying foreign characters. | 622 <varlistentry><term><emphasis> Use locale encoding:</emphasis></term><listitem><para> For displaying foreign characters. |
607 Try changing this if some characters of your language aren't displayed correctly. </para></listitem></varlistentry> | 623 Try changing this if some characters of your language aren't displayed correctly. </para></listitem></varlistentry> |
608 </variablelist> | 624 </variablelist> |
609 </sect2> | 625 </sect2> |
610 | 626 |
630 as white space. | 646 as white space. |
631 </para></listitem></varlistentry> | 647 </para></listitem></varlistentry> |
632 <varlistentry><term><emphasis>Ignore C/C++ comments:</emphasis></term><listitem><para> Default is off. | 648 <varlistentry><term><emphasis>Ignore C/C++ comments:</emphasis></term><listitem><para> Default is off. |
633 Changes in comments will be treated like changes in white space. | 649 Changes in comments will be treated like changes in white space. |
634 </para></listitem></varlistentry> | 650 </para></listitem></varlistentry> |
635 <varlistentry><term><emphasis>Convert to Upper Case:</emphasis></term><listitem><para> Default is off. Converts the input to upper case | 651 <varlistentry><term><emphasis>Ignore case:</emphasis></term><listitem><para> Default is off. |
636 while reading. Hence the comparison is not case sensitive. Take care during merging | 652 Case-differences of characters (like 'A' vs. 'a') will be treated like changes in white space. |
637 because the case information will be lost in the merge-result too. | |
638 </para></listitem></varlistentry> | 653 </para></listitem></varlistentry> |
639 <varlistentry><term><emphasis>Preprocessor-Command:</emphasis></term><listitem><para> | 654 <varlistentry><term><emphasis>Preprocessor-Command:</emphasis></term><listitem><para> |
640 When any file is read, it will be piped through this external command. | 655 See <link linkend="preprocessors">next section</link>. |
641 The output of this command will be visible instead of the original file. | |
642 You can write your own preprocessor that fulfills your specific needs. | |
643 Use this to cut away disturbing parts of the file, or to automatically | |
644 correct the indentation etc. | |
645 </para></listitem></varlistentry> | 656 </para></listitem></varlistentry> |
646 <varlistentry><term><emphasis>Line-Matching Preprocessor-Command:</emphasis></term><listitem><para> | 657 <varlistentry><term><emphasis>Line-Matching Preprocessor-Command:</emphasis></term><listitem><para> |
647 When any file is read, it will be piped through this external command. If | 658 See <link linkend="preprocessors">next section</link>. |
648 a preprocessor-command (see above) is also specified, then the output of the | |
649 preprocessor is the input of the line-matching preprocessor. | |
650 The output will only be used during the line matching phase of the analysis. | |
651 You can write your own preprocessor that fulfills your specific needs. | |
652 Each input line must have a corresponding output line. | |
653 </para></listitem></varlistentry> | 659 </para></listitem></varlistentry> |
654 <varlistentry><term><emphasis>Try Hard:</emphasis></term><listitem><para> | 660 <varlistentry><term><emphasis>Try Hard:</emphasis></term><listitem><para> |
655 Try hard to find an even smaller delta. (Default is on.) This will probably | 661 Try hard to find an even smaller delta. (Default is on.) This will probably |
656 be effective for complicated and big files. And slow for very big files. | 662 be effective for complicated and big files. And slow for very big files. |
657 </para></listitem></varlistentry> | 663 </para></listitem></varlistentry> |
696 the visible spaces and tabs are disturbing. You can turn this off.</para></listitem></varlistentry> | 702 the visible spaces and tabs are disturbing. You can turn this off.</para></listitem></varlistentry> |
697 <varlistentry><term><emphasis>Show white space:</emphasis></term><listitem><para> Turn this off to suppress | 703 <varlistentry><term><emphasis>Show white space:</emphasis></term><listitem><para> Turn this off to suppress |
698 any highlighting of white-space-only changes in the text or overview-columns. | 704 any highlighting of white-space-only changes in the text or overview-columns. |
699 (Note that this also applies to changes in numbers or comments if the options "Ignore numbers" | 705 (Note that this also applies to changes in numbers or comments if the options "Ignore numbers" |
700 or "Ignore C/C++ comments" are active.)</para></listitem></varlistentry> | 706 or "Ignore C/C++ comments" are active.)</para></listitem></varlistentry> |
707 <varlistentry><term><emphasis>Overview options:</emphasis></term><listitem><para> | |
708 These choices are only available when you compare three files. In normal mode all | |
709 differences are shown in one color-coded overview-column. But sometimes you are | |
710 especially interested in the differences between only two of these three files. | |
711 Selecting "A vs. B", "A vs. C" or "B vs. C"-overview will show a second overview | |
712 column with the required information next to the normal overview. | |
713 </para></listitem></varlistentry> | |
714 <varlistentry><term><emphasis>Word wrap diff windows:</emphasis></term><listitem><para> | |
715 Wrap lines when their length would exceed the width of a window. | |
716 </para></listitem></varlistentry> | |
701 <varlistentry><term><emphasis>Show Window A/B/C:</emphasis></term><listitem><para> Sometimes you want to use the space on | 717 <varlistentry><term><emphasis>Show Window A/B/C:</emphasis></term><listitem><para> Sometimes you want to use the space on |
702 the screen better for long lines. Hide the windows that are not important. | 718 the screen better for long lines. Hide the windows that are not important. |
703 (In the Windows-menu.)</para></listitem></varlistentry> | 719 (In the Windows-menu.)</para></listitem></varlistentry> |
704 <varlistentry><term><emphasis>Toggle Split Orientation:</emphasis></term><listitem><para> | 720 <varlistentry><term><emphasis>Toggle Split Orientation:</emphasis></term><listitem><para> |
705 Switch between diff windows shown next to each other (A left of B left of C) or above | 721 Switch between diff windows shown next to each other (A left of B left of C) or above |
717 | 733 |
718 <sect2 id="shortcuts"><title>Configuring Keyboard-Shortcuts</title> | 734 <sect2 id="shortcuts"><title>Configuring Keyboard-Shortcuts</title> |
719 <para> | 735 <para> |
720 Currently only the KDE-version supports user-configurable keyboard-shortcuts. | 736 Currently only the KDE-version supports user-configurable keyboard-shortcuts. |
721 (Menu Settings->Configure Shortcuts...) | 737 (Menu Settings->Configure Shortcuts...) |
738 </para> | |
739 </sect2> | |
740 </sect1> | |
741 | |
742 <sect1 id="preprocessors"><title>Preprocessor Commands</title> | |
743 <para> | |
744 KDiff3 supports two preprocessor options. | |
745 </para><para> | |
746 <variablelist> | |
747 <varlistentry><term><emphasis>Preprocessor-Command:</emphasis></term><listitem><para> | |
748 When any file is read, it will be piped through this external command. | |
749 The output of this command will be visible instead of the original file. | |
750 You can write your own preprocessor that fulfills your specific needs. | |
751 Use this to cut away disturbing parts of the file, or to automatically | |
752 correct the indentation etc. | |
753 </para></listitem></varlistentry> | |
754 <varlistentry><term><emphasis>Line-Matching Preprocessor-Command:</emphasis></term><listitem><para> | |
755 When any file is read, it will be piped through this external command. If | |
756 a preprocessor-command (see above) is also specified, then the output of the | |
757 preprocessor is the input of the line-matching preprocessor. | |
758 The output will only be used during the line matching phase of the analysis. | |
759 You can write your own preprocessor that fulfills your specific needs. | |
760 Each input line must have a corresponding output line. | |
761 </para></listitem></varlistentry> | |
762 </variablelist> | |
763 </para> | |
764 <para> | |
765 The idea is to allow the user greater flexibility while configuring the diff-result. | |
766 But this requires an external program, and many users don't want to write one themselves. | |
767 The good news is that very often <command>sed</command> or <command>perl</command> | |
768 will do the job. | |
769 </para> | |
770 <para>Example: Simple testcase: Consider file a.txt (6 lines): | |
771 <screen> | |
772 aa | |
773 ba | |
774 ca | |
775 da | |
776 ea | |
777 fa | |
778 </screen> | |
779 And file b.txt (3 lines): | |
780 <screen> | |
781 cg | |
782 dg | |
783 eg | |
784 </screen> | |
785 Without a preprocessor the following lines would be placed next to each other: | |
786 <screen> | |
787 aa - cg | |
788 ba - dg | |
789 ca - eg | |
790 da | |
791 ea | |
792 fa | |
793 </screen> | |
794 This is probably not wanted since the first letter contains the actually interesting information. | |
795 To help the matching algorithm to ignore the second letter we can use a line matching preprocessor | |
796 command, that replaces 'g' with 'a': | |
797 <screen> | |
798 <command>sed</command> 's/g/a/' | |
799 </screen> | |
800 With this command the result of the comparison would be: | |
801 <screen> | |
802 aa | |
803 ba | |
804 ca - cg | |
805 da - dg | |
806 ea - eg | |
807 fa | |
808 </screen> | |
809 Internally the matching algorithm sees the files after running the line matching preprocessor, | |
810 but on the screen the file is unchanged. (The normal preprocessor would change the data also on | |
811 the screen.) | |
812 </para> | |
813 | |
814 <sect2 id="sedbasics"><title><command>sed</command> Basics</title> | |
815 <para> | |
816 This section only introduces some very basic features of <command>sed</command>. For more | |
817 information see <ulink url="info:/sed">info:/sed</ulink> or | |
818 <ulink url="http://www.gnu.org/software/sed/manual/html_mono/sed.html"> | |
819 http://www.gnu.org/software/sed/manual/html_mono/sed.html</ulink>. | |
820 A precompiled version for Windows can be found at <ulink url="http://unxutils.sourceforge.net"> | |
821 http://unxutils.sourceforge.net</ulink>. | |
822 Note that the following examples assume that the <command>sed</command>-command is in some | |
823 directory in the PATH-environment variable. If this is not the case, you have to specify the full absolute | |
824 path for the command. Also note that the following examples use the single quotation mark (') which won't work for Windows. | |
825 On Windows you should use the double quotation marks (") instead. | |
826 </para> | |
827 <para> | |
828 In this context only the <command>sed</command>-substitute-command is used: | |
829 <screen> | |
830 <command>sed</command> 's/<replaceable>REGEXP</replaceable>/<replaceable>REPLACEMENT</replaceable>/<replaceable>FLAGS</replaceable>' | |
831 </screen> | |
832 Before you use a new command within KDiff3, you should first test it in a console. | |
833 Here the <command>echo</command>-command is useful. Example: | |
834 <screen> | |
835 <command>echo</command> abrakadabra | <command>sed</command> 's/a/o/' | |
836 -> obrakadabra | |
837 </screen> | |
838 This example shows a very simple sed-command that replaces the first occurance | |
839 of "a" with "o". If you want to replace all occurances then you need the "g"-flag: | |
840 <screen> | |
841 <command>echo</command> abrakadabra | <command>sed</command> 's/a/o/g' | |
842 -> obrokodobro | |
843 </screen> | |
844 The "|"-symbol is the pipe-command that transfers the output of the previous | |
845 command to the input of the following command. If you want to test with a longer file | |
846 then you can use <command>cat</command> on Unix-like systems or <command>type</command> | |
847 on Windows-like systems. <command>sed</command> will do the substitution for each line. | |
848 <screen> | |
849 <command>cat</command> <replaceable>filename</replaceable> | <command>sed</command> <replaceable>options</replaceable> | |
850 </screen> | |
851 </para> | |
852 </sect2> | |
853 <sect2 id="sedforkdiff3"><title>Examples For <command>sed</command>-Use In KDiff3</title> | |
854 <sect3><title>Ignoring Other Types Of Comments</title> | |
855 <para> | |
856 Currently KDiff3 understands only C/C++ comments. Using the | |
857 Line-Matching-Preprocessor-Command you can also ignore | |
858 other types of comments, by converting them into C/C++-comments. | |
859 | |
860 Example: To ignore comments starting with "#", you would like to convert them | |
861 to "//". Note that you also must enable the "Ignore C/C++-Comments" option to get | |
862 an effect. An appropriate Line-Matching-Preprocessor-Command would be: | |
863 | |
864 <screen> | |
865 <command>sed</command> 's/#/\/\//' | |
866 </screen> | |
867 Since for <command>sed</command> the "/"-character has a special meaning, it is necessary to place the | |
868 "\"-character before each "/" in the replacement-string. Sometimes the "\" is required | |
869 to add or remove a special meaning of certain characters. The single quotation marks (') before | |
870 and after the substitution-command are important now, because otherwise the shell will | |
871 try to interpret some special characters like '#', '$' or '\' before passing them to | |
872 <command>sed</command>. Note that on Windows you will need the double quotation marks (") here. Windows | |
873 substitutes other characters like '%', so you might have to experiment a little bit. | |
874 </para> | |
875 </sect3> | |
876 <sect3><title>Caseinsensitive Diff</title> | |
877 <para> | |
878 Use the following Line-Matching-Preprocessor-Command to convert all input to uppercase: | |
879 <screen> | |
880 <command>sed</command> 's/\(.*\)/\U\1/' | |
881 </screen> | |
882 Here the ".*" is a regular expression that matches any string and in this context matches | |
883 all characters in the line. | |
884 The "\1" in the replacement string refers to the matched text within the first pair of "\(" and "\)". | |
885 The "\U" converts the inserted text to uppercase. | |
886 </para> | |
887 </sect3> | |
888 | |
889 <sect3><title>Ignoring Version Control Keywords</title> | |
890 <para> | |
891 CVS and other version control systems use several keywords to insert automatically | |
892 generated strings (<ulink url="info:/cvs/Keyword substitution">info:/cvs/Keyword substitution</ulink>). | |
893 All of them follow the pattern "$KEYWORD generated text$". We now need a | |
894 Line-Matching-Preprocessor-Command that removes only the generated text: | |
895 <screen> | |
896 <command>sed</command> 's/\$\(Revision\|Author\|Log\|Header\|Date\).*\$/\$\1\$/' | |
897 </screen> | |
898 The "\|" separates the possible keywords. You might want to modify this list | |
899 according to your needs. | |
900 The "\" before the "$" is necessary because otherwise the "$" matches the end of the line. | |
901 </para> | |
902 <para> | |
903 While experimenting with <command>sed</command> you might come to understand and even like | |
904 these regular expressions. They are useful because there are many other programs that also | |
905 support similar things. | |
906 </para> | |
907 </sect3> | |
908 | |
909 <sect3><title>Ignoring Numbers</title> | |
910 <para> | |
911 Ignoring numbers actually is a built-in option. But as another example, this is how | |
912 it would look as a Line-Matching-Preprocessor-command. | |
913 <screen> | |
914 <command>sed</command> 's/[0123456789.-]//g' | |
915 </screen> | |
916 Any character within '[' and ']' is a match and will be replaced with nothing. | |
917 </para> | |
918 </sect3> | |
919 | |
920 <sect3><title>Ignoring Certain Columns</title> | |
921 <para> | |
922 Sometimes a text is very strictly formatted, and contains columns that you always want to ignore, while there are | |
923 other columns you want to preserve for analysis. In the following example the first five columns (characters) are | |
924 ignored, the next ten columns are preserved, then again five columns are ignored and the rest of the line is preserved. | |
925 <screen> | |
926 <command>sed</command> 's/.....\(..........\).....\(.*\)/\1\2/' | |
927 </screen> | |
928 Each dot '.' matches any single character. The "\1" and "\2" in the replacement string refer to the matched text within the first | |
929 and second pair of "\(" and "\)" denoting the text to be preserved. | |
930 </para> | |
931 </sect3> | |
932 | |
933 <sect3><title>Combining Several Substitutions</title> | |
934 <para> | |
935 Sometimes you want to apply several substitutions at once. You can then use the | |
936 semicolon ';' to separate these from each other. Example: | |
937 <screen> | |
938 <command>echo</command> abrakadabra | <command>sed</command> 's/a/o/g;s/\(.*\)/\U\1/' | |
939 -> OBROKODOBRO | |
940 </screen> | |
941 </para> | |
942 </sect3> | |
943 | |
944 <sect3><title>Using <command>perl</command> instead of <command>sed</command></title> | |
945 <para> | |
946 Instead of <command>sed</command> you might want to use something else like | |
947 <command>perl</command>. | |
948 <screen> | |
949 <command>perl</command> -p -e 's/<replaceable>REGEXP</replaceable>/<replaceable>REPLACEMENT</replaceable>/<replaceable>FLAGS</replaceable>' | |
950 </screen> | |
951 But some details are different in <command>perl</command>. Note that where | |
952 <command>sed</command> needed "\(" and "\)" <command>perl</command> | |
953 requires the simpler "(" and ")" without preceding '\'. Example: | |
954 <screen> | |
955 <command>sed</command> 's/\(.*\)/\U\1/' | |
956 <command>perl</command> -p -e 's/(.*)/\U\1/' | |
957 </screen> | |
958 </para> | |
959 </sect3> | |
960 </sect2> | |
961 | |
962 <sect2><title>Order Of Preprocessor Execution</title> | |
963 <para> | |
964 The data is piped through all internal and external preprocessors in the | |
965 following order: | |
966 </para> | |
967 <itemizedlist> | |
968 <listitem><para>Normal preprocessor,</para></listitem> | |
969 <listitem><para>Line-Matching-Preprocessor,</para></listitem> | |
970 <listitem><para>Ignore case (conversion to uppercase),</para></listitem> | |
971 <listitem><para>Detection of C/C++ comments,</para></listitem> | |
972 <listitem><para>Ignore numbers,</para></listitem> | |
973 <listitem><para>Ignore white space</para></listitem> | |
974 </itemizedlist> | |
975 <para> | |
976 The data after the normal preprocessor will be preserved for display and merging. The | |
977 other operations only modify the data that the line-matching-diff-algorithm sees. | |
978 </para><para> | |
979 In the rare cases where you use a normal preprocessor note that | |
980 the line-matching-preprocessor sees the output of the normal preprocessor as input. | |
981 </para> | |
982 </sect2> | |
983 | |
984 <sect2><title>Warning</title> | |
985 <para> | |
986 The preprocessor-commands are often very useful, but as with any option that modifies | |
987 your texts or hides away certain differences automatically, you might accidently overlook | |
988 certain differences and in the worst case destroy important data. | |
989 </para><para> | |
990 For this reason during a merge if a normal preprocessor-command is being used KDiff3 | |
991 will tell you so and ask you if it should be disabled or not. | |
992 But it won't warn you if a Line-Matching-Preprocessor-command is active. The merge will not complete until | |
993 all conflicts are solved. If you disabled "Show White Space" then the differences that | |
994 were removed with the Line-Matching-Preprocessor-command will also be invisible. If the | |
995 Save-button remains disabled during a merge (because of remaining conflicts), make sure to enable | |
996 "Show White Space". If you don't wan't to merge these less important differences manually | |
997 you can select "Choose [A|B|C] For All Unsolved Whitespace Conflicts" in the Merge-menu. | |
722 </para> | 998 </para> |
723 </sect2> | 999 </sect2> |
724 </sect1> | 1000 </sect1> |
725 </chapter> | 1001 </chapter> |
726 | 1002 |
960 and other texts if something unexpected happened. When a merge is complete, | 1236 and other texts if something unexpected happened. When a merge is complete, |
961 then you should make a last check to see if the status for all items is | 1237 then you should make a last check to see if the status for all items is |
962 agreeable. | 1238 agreeable. |
963 </para> | 1239 </para> |
964 </sect2> | 1240 </sect2> |
1241 | |
1242 <sect2 id="statisticscolulmns"><title>Statistics Columns</title> | |
1243 <para> | |
1244 When the file comparison mode "Full Analysis" is enabled in the options, then | |
1245 KDiff3 will show extra columns containing the numbers of unsolved, solved, nonwhite and whitespace | |
1246 conflicts. (The solved-column will only show when comparing or merging three directories.) | |
1247 </para> | |
1248 </sect2> | |
1249 | |
965 </sect1> | 1250 </sect1> |
966 | 1251 |
967 | 1252 |
968 <sect1 id="dothemerge"><title>Doing A Merge</title> | 1253 <sect1 id="dothemerge"><title>Doing A Merge</title> |
969 <para> | 1254 <para> |
1071 then the symbolic links will be compared. When enabled then the link will | 1356 then the symbolic links will be compared. When enabled then the link will |
1072 be treated like a directory and it will be scanned recursively. (Note that | 1357 be treated like a directory and it will be scanned recursively. (Note that |
1073 the program doesn't check if the link is "recursive". So for example a directory | 1358 the program doesn't check if the link is "recursive". So for example a directory |
1074 that contains a link to the directory would cause an infinite loop, and after | 1359 that contains a link to the directory would cause an infinite loop, and after |
1075 some time when the stack overflows or all memory is used up, crash the program.) | 1360 some time when the stack overflows or all memory is used up, crash the program.) |
1076 Default is off.</para></listitem></varlistentry> | 1361 Default is off.</para></listitem></varlistentry> |
1077 <varlistentry><term><emphasis>List only deltas:</emphasis></term><listitem><para> Only items that are not equal in all input | 1362 <varlistentry><term><emphasis>List only deltas:</emphasis></term><listitem><para> Only items that are not equal in all input |
1078 directories will be listed and only the changed files are visible. Hence | 1363 directories will be listed and only the changed files are visible. Hence |
1079 files that are equal in all directories won't be copied during a merge and | 1364 files that are equal in all directories won't be copied during a merge and |
1080 if the destination dir does not contain the files before the merge, you might | 1365 if the destination dir does not contain the files before the merge, you might |
1081 miss some files later. (This option is likely to be changed in a later version.) | 1366 miss some files later. (This option is likely to be changed in a later version.) |
1082 Default is off.</para></listitem></varlistentry> | 1367 Default is off.</para></listitem></varlistentry> |
1368 | |
1369 <varlistentry><term><emphasis>File Comparison Mode:</emphasis></term><listitem><para> | |
1370 <variablelist> | |
1371 <varlistentry><term><emphasis>Binary Comparison:</emphasis></term><listitem><para> | |
1372 This is the default file comparison mode. | |
1373 </para></listitem></varlistentry> | |
1374 <varlistentry><term><emphasis>Full Analysis:</emphasis></term><listitem><para> | |
1375 Do a full analysis of each file and show the statistics information columns. | |
1376 (Number of solved, unsolved, nonwhite and white conflicts.) | |
1377 The full analysis is slower than a simple binary analysis, and much | |
1378 slower when used on files that don't contain text. | |
1379 (Specify the appropriate file-antipatterns.) | |
1380 </para></listitem></varlistentry> | |
1083 <varlistentry><term><emphasis>Trust the modification date:</emphasis></term><listitem><para> If you compare big directories | 1381 <varlistentry><term><emphasis>Trust the modification date:</emphasis></term><listitem><para> If you compare big directories |
1084 over a slow network, it might be faster to compare the modification dates | 1382 over a slow network, it might be faster to compare the modification dates |
1085 and file length alone. But this speed improvement comes with the price of | 1383 and file length alone. But this speed improvement comes with the price of |
1086 a little uncertainty. Use this option with care. Default is off.</para></listitem></varlistentry> | 1384 a little uncertainty. Use this option with care. Default is off.</para></listitem></varlistentry> |
1087 <varlistentry><term><emphasis>Trust the size:</emphasis></term><listitem><para> | 1385 <varlistentry><term><emphasis>Trust the size:</emphasis></term><listitem><para> |
1088 Similar to trusting the modification date. No real comparison happens. Two | 1386 Similar to trusting the modification date. No real comparison happens. Two |
1089 files are considered equal if their file-sizes are equal. This is useful | 1387 files are considered equal if their file-sizes are equal. This is useful |
1090 when the file-copy operation didn't preserve the modification date. | 1388 when the file-copy operation didn't preserve the modification date. |
1091 Use this option with care. Default is off.</para></listitem></varlistentry> | 1389 Use this option with care. Default is off.</para></listitem></varlistentry> |
1390 </variablelist></para></listitem></varlistentry> | |
1391 | |
1092 <varlistentry><term><emphasis>Synchronize Directories:</emphasis></term><listitem><para> Activates "Sync-Mode" when two directories | 1392 <varlistentry><term><emphasis>Synchronize Directories:</emphasis></term><listitem><para> Activates "Sync-Mode" when two directories |
1093 are compared and no explicit destination directory was specified. In this | 1393 are compared and no explicit destination directory was specified. In this |
1094 mode the proposed operations will be chosen so that both source directories | 1394 mode the proposed operations will be chosen so that both source directories |
1095 are equal afterwards. Also the merge result will be written to both directories. | 1395 are equal afterwards. Also the merge result will be written to both directories. |
1096 Default is off.</para></listitem></varlistentry> | 1396 Default is off.</para></listitem></varlistentry> |
1209 </para></listitem><listitem><para> | 1509 </para></listitem><listitem><para> |
1210 Limited support for permissions. | 1510 Limited support for permissions. |
1211 </para></listitem><listitem><para> | 1511 </para></listitem><listitem><para> |
1212 No possibility to modify permissions or modification time, so permissions or time | 1512 No possibility to modify permissions or modification time, so permissions or time |
1213 of a copy will differ from the original. (See the option "Trust the size".) | 1513 of a copy will differ from the original. (See the option "Trust the size".) |
1214 (Only possible for local files.) | 1514 (Modifying permissions or modification time is only possible for local files.) |
1215 </para></listitem> | 1515 </para></listitem> |
1216 </itemizedlist> | 1516 </itemizedlist> |
1217 </sect2> | 1517 </sect2> |
1218 </sect1> | 1518 </sect1> |
1219 | 1519 |
1340 | 1640 |
1341 <para> | 1641 <para> |
1342 &kdiff3; - File and Directory Comparison and Merge Tool | 1642 &kdiff3; - File and Directory Comparison and Merge Tool |
1343 </para> | 1643 </para> |
1344 <para> | 1644 <para> |
1345 Program copyright 2002-2003 Joachim Eibl <email>joachim.eibl@gmx.de</email> | 1645 Program copyright 2002-2004 Joachim Eibl <email>joachim.eibl at gmx.de</email> |
1346 </para> | 1646 </para> |
1347 <para> | 1647 <para> |
1348 Several cool ideas and bugreports came from colleagues and many people out in the Wild Wild Web. Thank you! | 1648 Several cool ideas and bugreports came from colleagues and many people out in the Wild Wild Web. Thank you! |
1349 </para> | 1649 </para> |
1350 | 1650 |
1351 <para> | 1651 <para> |
1352 Documentation Copyright © 2002-2003 Joachim Eibl <email>joachim.eibl@gmx.de</email> | 1652 Documentation Copyright © 2002-2004 Joachim Eibl <email>joachim.eibl at gmx.de</email> |
1353 </para> | 1653 </para> |
1354 | 1654 |
1355 <!-- TRANS:CREDIT_FOR_TRANSLATORS --> | 1655 <!-- TRANS:CREDIT_FOR_TRANSLATORS --> |
1356 | 1656 |
1357 &underFDL; <!-- FDL: do not remove --> | 1657 &underFDL; <!-- FDL: do not remove --> |
1378 | 1678 |
1379 <sect1 id="requirements"> | 1679 <sect1 id="requirements"> |
1380 <title>Requirements</title> | 1680 <title>Requirements</title> |
1381 | 1681 |
1382 <para> | 1682 <para> |
1383 In order to successfully use all features of &kdiff3;, you need &kde; >3.1. The | 1683 In order to successfully use all features of &kdiff3;, you need &kde; >3.1. |
1384 diff-tool from the <ulink url="http://www.gnu.org/software/diffutils/diffutils.html">GNU-diff-utils</ulink> | |
1385 is recommended for best results. | |
1386 </para><para> | 1684 </para><para> |
1387 For information about how to run KDiff3 on other platforms without KDE please see the | 1685 For information about how to run KDiff3 on other platforms without KDE please see the |
1388 <ulink url="http://kdiff3.sourceforge.net">homepage</ulink>. | 1686 <ulink url="http://kdiff3.sourceforge.net">homepage</ulink>. |
1389 </para><para> | 1687 </para><para> |
1390 You can find a list of changes at <ulink | 1688 You can find a list of changes at <ulink |