joachim99@11
|
1 <?xml version="1.0" ?>
|
joachim99@11
|
2 <!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
joachim99@11
|
3 <!ENTITY kdiff3 "<application>KDiff3</application>">
|
joachim99@11
|
4 <!ENTITY kappname "&kdiff3;">
|
joachim99@11
|
5 <!ENTITY package "kdeextragear-1">
|
joachim99@11
|
6 <!ENTITY % addindex "IGNORE">
|
joachim99@11
|
7 <!ENTITY % English "INCLUDE">
|
joachim99@11
|
8 ]>
|
joachim99@11
|
9
|
joachim99@11
|
10 <book lang="&language;">
|
joachim99@11
|
11
|
joachim99@11
|
12 <!-- This header contains all of the meta-information for the document such
|
joachim99@11
|
13 as Authors, publish date, the abstract, and Keywords -->
|
joachim99@11
|
14
|
joachim99@11
|
15 <bookinfo>
|
joachim99@11
|
16 <title>The &kdiff3; Handbook</title>
|
joachim99@11
|
17
|
joachim99@11
|
18 <authorgroup>
|
joachim99@11
|
19 <author>
|
joachim99@11
|
20 <!--<personname>-->
|
joachim99@11
|
21 <firstname>Joachim</firstname>
|
joachim99@11
|
22 <surname>Eibl</surname>
|
joachim99@11
|
23 <!--</personname>-->
|
joachim99@11
|
24 <affiliation><address>
|
joachim99@66
|
25 <email>joachim.eibl at gmx.de</email>
|
joachim99@11
|
26 </address></affiliation>
|
joachim99@11
|
27 </author>
|
joachim99@11
|
28 </authorgroup>
|
joachim99@11
|
29
|
joachim99@11
|
30 <!-- TRANS:ROLES_OF_TRANSLATORS -->
|
joachim99@11
|
31
|
joachim99@11
|
32 <copyright>
|
joachim99@68
|
33 <year>2002-2005</year>
|
joachim99@11
|
34 <holder>Joachim Eibl</holder>
|
joachim99@11
|
35 </copyright>
|
joachim99@11
|
36 <!-- Translators: put here the copyright notice of the translation -->
|
joachim99@11
|
37 <!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook
|
joachim99@11
|
38 and in the FDL itself on how to use it. -->
|
joachim99@11
|
39 <legalnotice>&FDLNotice;</legalnotice>
|
joachim99@11
|
40
|
joachim99@11
|
41 <!-- Date and version information of the documentation
|
joachim99@11
|
42 Don't forget to include this last date and this last revision number, we
|
joachim99@11
|
43 need them for translation coordination !
|
joachim99@11
|
44 Please respect the format of the date (YYYY-MM-DD) and of the version
|
joachim99@11
|
45 (V.MM.LL), it could be used by automation scripts.
|
joachim99@11
|
46 Do NOT change these in the translation. -->
|
joachim99@11
|
47
|
joachim99@68
|
48 <date>2005-01-30</date>
|
joachim99@68
|
49 <releaseinfo>0.9.87</releaseinfo>
|
joachim99@11
|
50
|
joachim99@11
|
51
|
joachim99@11
|
52 <abstract>
|
joachim99@11
|
53 <para></para>
|
joachim99@11
|
54 <para>
|
joachim99@11
|
55 &kdiff3; is a file and directory diff and merge tool which
|
joachim99@11
|
56 <itemizedlist>
|
joachim99@11
|
57 <listitem><para>compares and merges two or three text input files or directories,</para></listitem>
|
joachim99@11
|
58 <listitem><para>shows the differences line by line and character by character(!),</para></listitem>
|
joachim99@11
|
59 <listitem><para>provides an automatic merge-facility,</para></listitem>
|
joachim99@11
|
60 <listitem><para>has an editor for comfortable solving of merge-conflicts,</para></listitem>
|
joachim99@11
|
61 <listitem><para>provides networktransparency via KIO,</para></listitem>
|
joachim99@68
|
62 <listitem><para>has options to highlight or hide changes in white-space or comments,</para></listitem>
|
joachim99@68
|
63 <listitem><para>supports Unicode, UTF-8 and other file encodings.</para></listitem>
|
joachim99@11
|
64 </itemizedlist>
|
joachim99@11
|
65 </para><para>
|
joachim99@68
|
66 This document describes KDiff3-version 0.9.87.
|
joachim99@11
|
67 </para>
|
joachim99@11
|
68 </abstract>
|
joachim99@11
|
69
|
joachim99@11
|
70 <!-- This is a set of Keywords for indexing by search engines.
|
joachim99@11
|
71 Please at least include KDE, the KDE package it is in, the name
|
joachim99@11
|
72 of your application, and a few relevant keywords. -->
|
joachim99@11
|
73
|
joachim99@11
|
74 <keywordset>
|
joachim99@11
|
75 <keyword>KDE</keyword>
|
joachim99@11
|
76 <keyword>kdeextragear</keyword>
|
joachim99@11
|
77 <keyword>kdiff3</keyword>
|
joachim99@11
|
78 <keyword>diff</keyword>
|
joachim99@11
|
79 <keyword>merge</keyword>
|
joachim99@11
|
80 <keyword>CVS</keyword>
|
joachim99@11
|
81 <keyword>triplediff</keyword>
|
joachim99@11
|
82 <keyword>compare</keyword>
|
joachim99@11
|
83 <keyword>files</keyword>
|
joachim99@11
|
84 <keyword>directories</keyword>
|
joachim99@11
|
85 <keyword>version control</keyword>
|
joachim99@11
|
86 <keyword>three-way-merge</keyword>
|
joachim99@11
|
87 <keyword>in-line-differences</keyword>
|
joachim99@11
|
88 <keyword>synchronise</keyword>
|
joachim99@11
|
89 <keyword>kpart</keyword>
|
joachim99@11
|
90 <keyword>kio</keyword>
|
joachim99@11
|
91 <keyword>networktransparent</keyword>
|
joachim99@11
|
92 <keyword>editor</keyword>
|
joachim99@51
|
93 <keyword>white space</keyword>
|
joachim99@51
|
94 <keyword>comments</keyword>
|
joachim99@11
|
95 </keywordset>
|
joachim99@11
|
96
|
joachim99@11
|
97 </bookinfo>
|
joachim99@11
|
98
|
joachim99@11
|
99 <chapter id="introduction"><title>Introduction</title>
|
joachim99@11
|
100 <sect1 id="why"><title>Yet Another Diff Frontend?</title>
|
joachim99@11
|
101 <para>
|
joachim99@11
|
102 Several graphical diff tools exist. Why choose KDiff3? Let me say, why I wrote it.
|
joachim99@11
|
103 </para><para>
|
joachim99@11
|
104 KDiff3 started because I had to do a difficult merge. Merging is necessary when several
|
joachim99@11
|
105 people work on the same files in a project. A merge can be somewhat automated, when the
|
joachim99@11
|
106 merge-tool not only has the new modified files (called "branches"), but also the original file
|
joachim99@11
|
107 (called "base"). The merge tool will automatically choose any modification that was only
|
joachim99@11
|
108 done in one branch. When several contributors change the same lines, then the merge tool
|
joachim99@11
|
109 detects a conflict which must be solved manually.
|
joachim99@11
|
110 </para><para>
|
joachim99@11
|
111 The merge then was difficult because one contributor had changed many things and corrected
|
joachim99@11
|
112 the indentation in many places. Another contributor also had changed much text in the same file,
|
joachim99@11
|
113 which resulted in several merge conflicts.
|
joachim99@11
|
114 </para><para>
|
joachim99@11
|
115 The tool I used then, only showed the changed lines, but not what had changed within these
|
joachim99@11
|
116 lines. And there was no information about where only the indentation was changed. The merge
|
joachim99@11
|
117 was a little nightmare.
|
joachim99@11
|
118 </para><para>
|
joachim99@11
|
119 So this was the start. The first version could show differences within a line and showed white space differences.
|
joachim99@11
|
120 Later many other features were added to increase the usefulness.
|
joachim99@11
|
121 </para><para>
|
joachim99@11
|
122 For example if you want to compare some text quickly, then you can copy it to the clipboard and
|
joachim99@11
|
123 paste it into either diff window.
|
joachim99@11
|
124 </para><para>
|
joachim99@11
|
125 A feature that required a big effort was the directory comparison and merge facility, which turned
|
joachim99@11
|
126 the program almost into a full file browser.
|
joachim99@11
|
127 </para><para>
|
joachim99@11
|
128 I hope KDiff3 works for you too. Have fun!
|
joachim99@11
|
129 </para><para>
|
joachim99@11
|
130 Joachim Eibl (2003)
|
joachim99@11
|
131 </para>
|
joachim99@11
|
132 </sect1>
|
joachim99@11
|
133
|
joachim99@11
|
134 <sect1 id="screenshots"><title>Screenshots and Features</title>
|
joachim99@11
|
135 <para>This screenshot shows the difference between two text files</para>
|
joachim99@11
|
136 <para>(Using an early version of KDiff3):</para>
|
joachim99@11
|
137 <screenshot><mediaobject>
|
joachim99@11
|
138 <imageobject><imagedata fileref="screenshot_diff.png" format="PNG"/></imageobject>
|
joachim99@11
|
139 </mediaobject></screenshot>
|
joachim99@11
|
140
|
joachim99@11
|
141 <para>
|
joachim99@11
|
142 3-way-merging is fully supported. This is useful if two people change code independently.
|
joachim99@11
|
143 The original file (the base) is used to help KDiff3 to automatically select the correct
|
joachim99@11
|
144 changes.
|
joachim99@11
|
145 The merge-editor below the diff-windows allows you to solve conflicts, while showing you the output you will get.
|
joachim99@11
|
146 You can even edit the output.
|
joachim99@11
|
147 This screenshot shows three input files being merged:
|
joachim99@11
|
148 </para><para>
|
joachim99@11
|
149 <screenshot><mediaobject>
|
joachim99@11
|
150 <imageobject><imagedata fileref="screenshot_merge.png" format="PNG"/></imageobject>
|
joachim99@11
|
151 </mediaobject></screenshot>
|
joachim99@11
|
152 </para>
|
joachim99@11
|
153
|
joachim99@11
|
154 <para id="dirmergebigscreenshot">KDiff3 also helps you to compare and merge complete directories.
|
joachim99@11
|
155 This screenshot shows KDiff3 during a directory merge:
|
joachim99@11
|
156 </para><para>
|
joachim99@11
|
157 <screenshot><mediaobject>
|
joachim99@11
|
158 <imageobject><imagedata fileref="dirmergebig.png" format="PNG"/></imageobject>
|
joachim99@11
|
159 </mediaobject></screenshot>
|
joachim99@11
|
160 </para>
|
joachim99@11
|
161 </sect1>
|
joachim99@11
|
162
|
joachim99@11
|
163 <sect1 id="features"><title>More Features</title>
|
joachim99@11
|
164 <sect2><title> Line-By-Line And Char-By-Char Diff-Viewer</title>
|
joachim99@11
|
165 <para>By using the possiblities of a graphical color display KDiff3 shows
|
joachim99@11
|
166 exactly what the difference is. When you have to do many code-reviews, you will like this.
|
joachim99@11
|
167 </para>
|
joachim99@11
|
168 <screenshot><mediaobject>
|
joachim99@11
|
169 <imageobject><imagedata fileref="letter_by_letter.png" format="PNG"/></imageobject>
|
joachim99@11
|
170 </mediaobject></screenshot>
|
joachim99@11
|
171 </sect2>
|
joachim99@11
|
172
|
joachim99@11
|
173 <sect2><title> See White-Space Differences At One Glance</title>
|
joachim99@11
|
174 <para>Spaces and tabs that differ appear visibly. When lines differ only
|
joachim99@11
|
175 in the amount of white space this can be seen at one look in the summary
|
joachim99@11
|
176 column on the left side. (No more worries when people change the indentation.)
|
joachim99@11
|
177 </para>
|
joachim99@11
|
178 <screenshot><mediaobject>
|
joachim99@11
|
179 <imageobject><imagedata fileref="white_space.png" format="PNG"/></imageobject>
|
joachim99@11
|
180 </mediaobject></screenshot>
|
joachim99@11
|
181 </sect2>
|
joachim99@11
|
182
|
joachim99@11
|
183 <sect2><title> Triple-Diff</title>
|
joachim99@11
|
184 <para> Analyze three files and see where they differ.
|
joachim99@11
|
185 </para><para>
|
joachim99@11
|
186 The left/middle/right windows are named A/B/C and have the blue/green/magenta
|
joachim99@11
|
187 color respectively.
|
joachim99@11
|
188 </para><para>
|
joachim99@11
|
189 If one file is the same and one file is different on a line then the
|
joachim99@11
|
190 color shows which file is different. The red color means that both other
|
joachim99@11
|
191 files are different.
|
joachim99@11
|
192 </para>
|
joachim99@11
|
193 <screenshot><mediaobject>
|
joachim99@11
|
194 <imageobject><imagedata fileref="triple_diff.png" format="PNG"/></imageobject>
|
joachim99@11
|
195 </mediaobject></screenshot>
|
joachim99@11
|
196 </sect2>
|
joachim99@11
|
197
|
joachim99@11
|
198 <sect2><title> Comfortable Merge Of Two Or Three Input Files</title>
|
joachim99@11
|
199 <para> KDiff3 can be used to merge two or three input files and automatically
|
joachim99@11
|
200 merges as much as possible. The result is presented in an editable window
|
joachim99@11
|
201 where most conflicts can be solved with a single mouseclick: Select the
|
joachim99@11
|
202 buttons A/B/C from the button-bar to select the source that should be used.
|
joachim99@11
|
203 You can also select more than one source. Since this output window is an
|
joachim99@11
|
204 editor even conflicts which need further corrections can be solved here without
|
joachim99@11
|
205 requiring another tool.
|
joachim99@11
|
206 </para>
|
joachim99@11
|
207 </sect2>
|
joachim99@11
|
208
|
joachim99@66
|
209 <sect2><title>And ...</title>
|
joachim99@11
|
210 <itemizedlist>
|
joachim99@66
|
211 <listitem><para>Fast navigation via buttons.</para></listitem>
|
joachim99@66
|
212 <listitem><para>A mouse-click into a summary column sync's all windows to show the same position.</para></listitem>
|
joachim99@66
|
213 <listitem><para>Select and copy from any window and paste into the merge result window.</para></listitem>
|
joachim99@66
|
214 <listitem><para>Overview column that shows where the changes and conflicts are.</para></listitem>
|
joachim99@66
|
215 <listitem><para>The colors are adjustable to your specific preferences.</para></listitem>
|
joachim99@66
|
216 <listitem><para>Adjustable Tab size.</para></listitem>
|
joachim99@66
|
217 <listitem><para>Option to insert spaces instead of tabs.</para></listitem>
|
joachim99@66
|
218 <listitem><para>Open files comfortably via dialog or specify files on the command line.</para></listitem>
|
joachim99@66
|
219 <listitem><para>Search for strings in all text windows. Find (Ctrl-F) and Find Next (F3)</para></listitem>
|
joachim99@66
|
220 <listitem><para>Show the line numbers for each line. </para></listitem>
|
joachim99@66
|
221 <listitem><para>Paste clipboard or drag text into a diff input window.</para></listitem>
|
joachim99@66
|
222 <listitem><para>Networktransparency via KIO.</para></listitem>
|
joachim99@66
|
223 <listitem><para>Can be used as diff-viewer in KDevelop 3.</para></listitem>
|
joachim99@66
|
224 <listitem><para>Word-wrap for long lines.</para></listitem>
|
joachim99@68
|
225 <listitem><para>Support for Unicode, UTF-8 and other codecs.</para></listitem>
|
joachim99@68
|
226 <listitem><para>Support for right to left languages.</para></listitem>
|
joachim99@66
|
227 <listitem><para>...</para></listitem>
|
joachim99@11
|
228 </itemizedlist>
|
joachim99@11
|
229 </sect2>
|
joachim99@11
|
230 </sect1>
|
joachim99@11
|
231 </chapter>
|
joachim99@11
|
232
|
joachim99@11
|
233 <chapter id="documentation"><title>Documentation of File Comparison And Merge</title>
|
joachim99@11
|
234
|
joachim99@11
|
235 <sect1 id="commandline"><title>Command-Line Options</title>
|
joachim99@11
|
236
|
joachim99@11
|
237 <sect2><title>Comparing 2 files: </title>
|
joachim99@11
|
238 <screen>
|
joachim99@11
|
239 <command>kdiff3</command> <replaceable>file1 file2</replaceable>
|
joachim99@11
|
240 </screen>
|
joachim99@11
|
241 </sect2>
|
joachim99@11
|
242
|
joachim99@11
|
243 <sect2><title>Merging 2 files: </title>
|
joachim99@11
|
244 <screen>
|
joachim99@11
|
245 <command>kdiff3</command> <replaceable>file1 file2</replaceable> -m
|
joachim99@11
|
246 <command>kdiff3</command> <replaceable>file1 file2</replaceable> -o <replaceable>outputfile</replaceable>
|
joachim99@11
|
247 </screen>
|
joachim99@11
|
248 </sect2>
|
joachim99@11
|
249
|
joachim99@11
|
250 <sect2><title>Comparing 3 files: </title>
|
joachim99@11
|
251 <screen>
|
joachim99@11
|
252 <command>kdiff3</command> <replaceable>file1 file2 file3</replaceable>
|
joachim99@11
|
253 </screen>
|
joachim99@11
|
254 </sect2>
|
joachim99@11
|
255
|
joachim99@11
|
256 <sect2><title>Merging 3 files: </title>
|
joachim99@11
|
257 <screen>
|
joachim99@11
|
258 <command>kdiff3</command> <replaceable>file1 file2 file3</replaceable> -m
|
joachim99@11
|
259 <command>kdiff3</command> <replaceable>file1 file2 file3</replaceable> -o <replaceable>outputfile</replaceable>
|
joachim99@11
|
260 </screen>
|
joachim99@11
|
261 <para>
|
joachim99@11
|
262 Note that <replaceable>file1</replaceable> will be treated as
|
joachim99@11
|
263 base of <replaceable>file2</replaceable> and
|
joachim99@11
|
264 <replaceable>file3</replaceable>.
|
joachim99@11
|
265 </para>
|
joachim99@11
|
266 </sect2>
|
joachim99@11
|
267
|
joachim99@11
|
268 <sect2><title>Special case: Files with the same name </title>
|
joachim99@11
|
269 <para>
|
joachim99@11
|
270 If all files have the same name but are in different directories, you can
|
joachim99@11
|
271 reduce typework by specifying the filename only for the first file. E.g.:
|
joachim99@11
|
272 </para>
|
joachim99@11
|
273 <screen>
|
joachim99@11
|
274 <command>kdiff3</command> <replaceable>dir1/filename dir2 dir3</replaceable>
|
joachim99@11
|
275 </screen>
|
joachim99@11
|
276 </sect2>
|
joachim99@11
|
277
|
joachim99@11
|
278 <sect2><title>Commandline for starting a directory comparison or merge: </title>
|
joachim99@11
|
279 <para>This is very similar, but now it's about directories.</para>
|
joachim99@11
|
280 <screen>
|
joachim99@11
|
281 <command>kdiff3</command> <replaceable>dir1 dir2</replaceable>
|
joachim99@11
|
282 <command>kdiff3</command> <replaceable>dir1 dir2</replaceable> -o <replaceable>destdir</replaceable>
|
joachim99@11
|
283 <command>kdiff3</command> <replaceable>dir1 dir2 dir3</replaceable>
|
joachim99@11
|
284 <command>kdiff3</command> <replaceable>dir1 dir2 dir3</replaceable> -o <replaceable>destdir</replaceable>
|
joachim99@11
|
285 </screen>
|
joachim99@11
|
286 <para>For directory comparison and merge you can continue to read <link linkend="dirmerge">here</link>.</para>
|
joachim99@11
|
287 </sect2>
|
joachim99@11
|
288
|
joachim99@11
|
289 <sect2><title>For more information on command line options use: </title>
|
joachim99@11
|
290 <screen>
|
joachim99@11
|
291 <command>kdiff3</command> --help
|
joachim99@66
|
292 Options:
|
joachim99@66
|
293 -m, --merge Merge the input.
|
joachim99@66
|
294 -b, --base file Explicit base file. For compatibility with certain tools.
|
joachim99@66
|
295 -o, --output file Output file. Implies -m. E.g.: -o newfile.txt
|
joachim99@66
|
296 --out file Output file, again. (For compatibility with certain tools.)
|
joachim99@66
|
297 --auto No GUI if all conflicts are auto-solvable. (Needs -o file)
|
joachim99@66
|
298 --qall Don't solve conflicts automatically. (For compatibility...)
|
joachim99@66
|
299 --L1 alias1 Visible name replacement for input file 1 (base).
|
joachim99@66
|
300 --L2 alias2 Visible name replacement for input file 2.
|
joachim99@66
|
301 --L3 alias3 Visible name replacement for input file 3.
|
joachim99@66
|
302 -L, --fname alias Alternative visible name replacement. Supply this once for every input.
|
joachim99@66
|
303 -u Has no effect. For compatibility with certain tools.
|
joachim99@11
|
304 </screen>
|
joachim99@11
|
305 </sect2>
|
joachim99@11
|
306
|
joachim99@11
|
307 </sect1>
|
joachim99@11
|
308
|
joachim99@11
|
309 <sect1 id="opendialog"><title>Open-Dialog</title>
|
joachim99@11
|
310 <para>
|
joachim99@11
|
311 Since many input files must be selectable, the program has a special open dialog:
|
joachim99@11
|
312 </para>
|
joachim99@11
|
313 <screenshot><mediaobject>
|
joachim99@11
|
314 <imageobject><imagedata fileref="open_dialog.png" format="PNG"/></imageobject>
|
joachim99@11
|
315 </mediaobject></screenshot>
|
joachim99@11
|
316 <para>
|
joachim99@11
|
317 The open dialog allows to edit the filenames by hand, selecting a file
|
joachim99@11
|
318 via the file-browser ("File...") or allows to choose recent files from
|
joachim99@11
|
319 the drop-down lists. If you open the dialog again, then the current names
|
joachim99@11
|
320 still remain there. The third input file is not required. If the
|
joachim99@11
|
321 entry for "C" remains empty, then only a two file diff analysis will be
|
joachim99@11
|
322 done.
|
joachim99@11
|
323 </para><para>
|
joachim99@11
|
324 You can also select a directory via "Dir...". If for A a directory is specified
|
joachim99@11
|
325 then a directory-comparison/merge starts. If A specifies a file but B, C or
|
joachim99@11
|
326 the output specify a directory, then KDiff3 uses the filename from A in the
|
joachim99@11
|
327 specified directories.
|
joachim99@11
|
328 </para><para>
|
joachim99@11
|
329 If "Merge" is selected, then the "Output"-line becomes editable. But it
|
joachim99@11
|
330 is not required to specify the output filename immediately. You can also
|
joachim99@11
|
331 postpone this until saving.
|
joachim99@11
|
332 </para><para>
|
joachim99@11
|
333 The "Configure..."-button opens the options-dialog, so that you can set
|
joachim99@11
|
334 the options before running the analysis.
|
joachim99@11
|
335 </para>
|
joachim99@11
|
336 </sect1>
|
joachim99@11
|
337
|
joachim99@11
|
338 <sect1 id="pasteinput"><title>Paste and Drop Input</title>
|
joachim99@11
|
339 <para>
|
joachim99@11
|
340 Sometimes you want to compare parts of a text that is not an own file. KDiff3 also
|
joachim99@11
|
341 allows you to paste text from the clipboard into the diff input window that has the focus.
|
joachim99@11
|
342 The diff analysis happens immediately then.
|
joachim99@11
|
343 In the open dialog you need not specify files then, but just close it via "Cancel".
|
joachim99@11
|
344 </para><para>
|
joachim99@11
|
345 You can also use drag and drop: Drag a file from a file manager
|
joachim99@11
|
346 or selected text from an editor and drop it onto a diff input window.
|
joachim99@11
|
347 </para><para>
|
joachim99@11
|
348 What's the idea? Sometimes a file contains two similar functions, but checking how similar
|
joachim99@11
|
349 they really are is a big effort if you first must create two files and then load them. Now
|
joachim99@11
|
350 you can simply copy, paste and compare the relevant sections.
|
joachim99@11
|
351 </para><para>
|
joachim99@11
|
352 Note: Currently you can't drag anything from KDiff3. Only dropping in the diff input
|
joachim99@11
|
353 is supported.
|
joachim99@11
|
354 </para><para>
|
joachim99@11
|
355 Warning: Some editors still interpret the drag and drop into another program like cut
|
joachim99@11
|
356 (instead of copy) and paste. Your original data might be lost then.
|
joachim99@11
|
357 </para>
|
joachim99@11
|
358 </sect1>
|
joachim99@11
|
359
|
joachim99@11
|
360 <sect1 id="interpretinginformation"><title>Interpreting The Information In The Input Windows</title>
|
joachim99@11
|
361 <screenshot><mediaobject>
|
joachim99@11
|
362 <imageobject><imagedata fileref="screenshot_diff.png" format="PNG"/></imageobject>
|
joachim99@11
|
363 </mediaobject></screenshot>
|
joachim99@11
|
364 <para>
|
joachim99@11
|
365 At the top of each text window is its "info line". The info lines of
|
joachim99@11
|
366 the input windows contain a letter "A", "B" or "C", the filename and the
|
joachim99@11
|
367 line number of the first visible line in the window. (Note that window
|
joachim99@11
|
368 "C" is optional.) Each info line appears in a different color. (If the paths
|
joachim99@11
|
369 are too long to fit, then you can move the mouse onto the info line and
|
joachim99@11
|
370 a tooltip will show the complete name.)
|
joachim99@11
|
371 </para><para>
|
joachim99@11
|
372 The three input windows are assigned the letters "A", "B" and "C".
|
joachim99@11
|
373 "A" has color blue, "B" has green and "C" has magenta. (These are the
|
joachim99@11
|
374 defaults, but can be changed in the Settings-Menu.)
|
joachim99@11
|
375 </para><para>
|
joachim99@11
|
376 When a difference is detected then the color shows which input file
|
joachim99@11
|
377 differs. When both other input files differ then the color used to express
|
joachim99@11
|
378 this is red by default ("Conflict color" in the Settings).
|
joachim99@11
|
379 This colorscheme is especially useful in the case of three input files, which will be
|
joachim99@11
|
380 seen in the next section (<link linkend="merging">Merging</link>).
|
joachim99@11
|
381 </para><para>
|
joachim99@11
|
382 Left of each text is the "summary column". If differences occurred on a
|
joachim99@11
|
383 line then the summary column shows the respective color. For a white-space-only
|
joachim99@11
|
384 difference the summary is chequered. For programming languages where white
|
joachim99@11
|
385 space is not so important this is useful to see at one glance if anything
|
joachim99@11
|
386 of importance was modified. (In C/C++ white space is only interesting within
|
joachim99@11
|
387 strings, comments, for the preprocessor, and some only very esoteric situations.)
|
joachim99@11
|
388 </para><para>
|
joachim99@11
|
389 The vertical line separating the summary column and the text is interrupted
|
joachim99@66
|
390 if the input file had no lines there. When word-wrap is enabled then this vertical
|
joachim99@66
|
391 line appears dotted for wrapped lines.
|
joachim99@11
|
392 </para><para>
|
joachim99@11
|
393 On the right side a "overview"-column is visible left of the vertical scrollbar.
|
joachim99@11
|
394 It shows the compressed summary column of input "A". All the differences
|
joachim99@11
|
395 and conflicts are visible at one glance. When only two input windows are
|
joachim99@11
|
396 used, then all differences appear red here because every difference is
|
joachim99@11
|
397 also a conflict. A black rectangle frames the visible part of the inputs.
|
joachim99@11
|
398 For very long input files, when the number of input lines is bigger than
|
joachim99@11
|
399 the height of the overview column in pixels, then several input lines share
|
joachim99@11
|
400 one overview line. A conflict then has top priority over simple differences,
|
joachim99@11
|
401 which have priority over no change, so that no difference or conflict is
|
joachim99@11
|
402 lost here. By clicking into this overview column the corresponding text
|
joachim99@11
|
403 will be shown.
|
joachim99@11
|
404 </para>
|
joachim99@11
|
405 </sect1>
|
joachim99@11
|
406
|
joachim99@11
|
407
|
joachim99@11
|
408 <sect1 id="merging"><title>Merging And The Merge Output Editor Window</title>
|
joachim99@11
|
409 <screenshot><mediaobject>
|
joachim99@11
|
410 <imageobject><imagedata fileref="screenshot_merge.png" format="PNG"/></imageobject>
|
joachim99@11
|
411 </mediaobject></screenshot>
|
joachim99@11
|
412 <para>
|
joachim99@11
|
413 The merge output editor window (below the diff input windows) also has an info line at the top showing "Output:", the
|
joachim99@11
|
414 filename and "[Modified]" if you edited something. Usually it will contain
|
joachim99@11
|
415 some text through the automatic merge facilities, but often it will also
|
joachim99@11
|
416 contain conflicts.
|
joachim99@11
|
417 </para><para>
|
joachim99@11
|
418 !!! Saving is disabled until all conflicts are resolved !!! (Use the "Go
|
joachim99@11
|
419 to prev/next unsolved conflicts"-buttons to find the remaining conflicts.)
|
joachim99@11
|
420 </para><para>
|
joachim99@11
|
421 With only two input files every difference is also a conflict that must
|
joachim99@11
|
422 be solved manually.
|
joachim99@11
|
423 </para><para>
|
joachim99@11
|
424 With three input files the first file is treated as base, while the
|
joachim99@11
|
425 second and third input files contain modifications. When at any line only
|
joachim99@11
|
426 either input B or input C have changed but not both then the changed source
|
joachim99@11
|
427 will automatically be selected. Only when B and C have changed on the same
|
joachim99@11
|
428 lines, then the tool detects a conflict that must be solved manually.
|
joachim99@11
|
429 When B and C are the same, but not the same as A, then C is selected.
|
joachim99@11
|
430 </para><para>
|
joachim99@11
|
431 The merge output editor window also has a summary column on the left. It shows the
|
joachim99@11
|
432 letter of the input from which a line was selected or nothing if all three
|
joachim99@11
|
433 sources where equal on a line. For conflicts it shows a questionmark "?"
|
joachim99@11
|
434 and the line shows "<Merge Conflict>", all in red. Because solving
|
joachim99@11
|
435 conflicts line by line would take very long, the lines are grouped into
|
joachim99@11
|
436 groups that have the same difference and conflict characteristics.
|
joachim99@11
|
437 But only-white-space-conflicts are separated from non-white-space-conflicts
|
joachim99@11
|
438 in order to ease the merging of files were the indentation changed for many
|
joachim99@11
|
439 lines.
|
joachim99@11
|
440 </para><para>
|
joachim99@11
|
441 When clicking into the summary column with the left mouse button in either
|
joachim99@11
|
442 window then the group belonging to that line will be selected in all windows
|
joachim99@11
|
443 and the beginning of that group will be shown. (This might involve an automatic
|
joachim99@11
|
444 position jump in the windows if the beginning of a group is not visible.)
|
joachim99@11
|
445 This group then becomes the "current group". It is highlighted with the
|
joachim99@11
|
446 "Current range (diff) background color" and
|
joachim99@11
|
447 a black bar appears on the left side of the text.
|
joachim99@11
|
448 </para><para>
|
joachim99@11
|
449 Note the input selector buttons containing the letters "A", "B" and
|
joachim99@11
|
450 "C" in the button bar below the menu bar. When clicking on either input
|
joachim99@11
|
451 selector button, the lines from that input will be added at the end of the
|
joachim99@11
|
452 selected group if that group didn't contain that source before. Otherwise
|
joachim99@11
|
453 the lines from that input will be removed.
|
joachim99@11
|
454 </para><para>
|
joachim99@11
|
455 Besides, you can directly edit any line. The summary column will show "m"
|
joachim99@11
|
456 for every line that was modified.
|
joachim99@11
|
457 </para><para>
|
joachim99@11
|
458 Sometimes, when a line is removed either by automatic merge or by editing
|
joachim99@11
|
459 and no other lines remain in that group, then the text <No src line>
|
joachim99@11
|
460 will appear in that line. This is just a placeholder for the group for
|
joachim99@11
|
461 when you might change your mind and select some source again. This text won't
|
joachim99@11
|
462 appear in the saved file or in any selections you want to copy and paste.
|
joachim99@11
|
463 </para><para>
|
joachim99@11
|
464 The text "<Merge Conflict>" will appear in the clipboard if you
|
joachim99@11
|
465 copy and paste some text containing such a line. But still be careful to
|
joachim99@11
|
466 do so.
|
joachim99@11
|
467 </para><para>
|
joachim99@51
|
468 The normal merge will start by solving simple conflicts automatically.
|
joachim99@51
|
469 But the "Merge"-menu provides some actions for other common needs.
|
joachim99@51
|
470 If you have to select the same source for most conflicts, then you can
|
joachim99@51
|
471 choose "A", "B" or "C" everywhere, or only for the remaining unsolved
|
joachim99@51
|
472 conflicts, or for unsolved whitespace conflicts. If you want to decide every
|
joachim99@51
|
473 single delta yourself, you can "Set deltas to conflicts". Or if you want to
|
joachim99@51
|
474 return to the automatic choices of KDiff3 then select
|
joachim99@51
|
475 "Automatically solve simple conflicts". KDiff3 then restarts the merge.
|
joachim99@51
|
476 For actions that change your previous modifications KDiff3 will ask for your
|
joachim99@51
|
477 confirmation before proceeding.
|
joachim99@51
|
478 </para><para>
|
joachim99@51
|
479 Note: When choosing either source for unsolved whitespace conflicts and
|
joachim99@51
|
480 the options "Ignore Numbers" or "Ignore C/C++ Comments" are used then changes in
|
joachim99@51
|
481 numbers or comments will be treated like whitespace too.
|
joachim99@11
|
482 </para>
|
joachim99@11
|
483 </sect1>
|
joachim99@11
|
484
|
joachim99@11
|
485 <sect1 id="navigation"><title>Navigation And Editing</title>
|
joachim99@11
|
486 <para>
|
joachim99@11
|
487 Much navigation will be done with the scroll bars and the mouse but
|
joachim99@11
|
488 you can also navigate with the keys. If you click into either window then
|
joachim99@11
|
489 you can use the cursor buttons left, right, up, down, page up, page down,
|
joachim99@11
|
490 home, end, ctrl-home, ctrl-end as you would in other programs. The overview-column
|
joachim99@11
|
491 next to the vertical scroll bar of the input files can also be used for
|
joachim99@11
|
492 navigating by clicking into it.
|
joachim99@11
|
493 </para><para>
|
joachim99@11
|
494 You can also use the wheel mouse to scroll up and down.
|
joachim99@11
|
495 </para><para>
|
joachim99@11
|
496 In the merge output editor you can also use the other keys for editing.
|
joachim99@11
|
497 You can toggle between insert and overwrite mode with the insert key. (Default
|
joachim99@11
|
498 is insert-mode.)
|
joachim99@11
|
499 </para><para>
|
joachim99@11
|
500 A left-mouse-button-click into any summary column will synchronise all
|
joachim99@11
|
501 windows to show the beginning of the same group of lines (as explained
|
joachim99@11
|
502 in section <link linkend="merging">"Merging"</link>).
|
joachim99@11
|
503 </para><para>
|
joachim99@11
|
504 The button bar also contains seven navigation buttons with which you can
|
joachim99@11
|
505 jump to the current/first/last difference, to the next/previous difference
|
joachim99@11
|
506 (ctrl-down/ctrl-up), to the next/previous conflict (ctrl-pgdown/ctrl-pgup),
|
joachim99@11
|
507 or to the next/previous unsolved conflict. Note that for KDiff3 a "conflict"
|
joachim99@11
|
508 that was not automatically solved at the start of the merge stays a "conflict"
|
joachim99@11
|
509 even if it is solved. Hence the necessity to distinguish "unsolved conflicts".
|
joachim99@11
|
510 </para><para>
|
joachim99@11
|
511 There also is a button "Automatically go to next unsolved conflict after
|
joachim99@11
|
512 source selection" (Auto-Advance). If you enable this, then, when one source
|
joachim99@11
|
513 is selected, then KDiff3 will jump to and select the next unsolved conflict
|
joachim99@11
|
514 automatically. This can help when you always want to choose one source only.
|
joachim99@11
|
515 When you need both sources, or you want to edit after selecting, then you
|
joachim99@11
|
516 probably want to switch this off. Before proceeding to the next unsolved conflict
|
joachim99@11
|
517 KDiff3 shows you the effect of your choice for a short time. This delay is
|
joachim99@11
|
518 adjustable in the Diff- & Merge-Settings: You can
|
joachim99@11
|
519 specify the "Auto-Advance delay" in milli seconds between 0 and 2000. Hint:
|
joachim99@11
|
520 Tired of many clicks? - Use a small Auto-Advance-delay and the shortcuts
|
joachim99@11
|
521 Ctrl-1/2/3 to select A/B/C for many conflicts.
|
joachim99@11
|
522 </para>
|
joachim99@11
|
523 </sect1>
|
joachim99@11
|
524
|
joachim99@11
|
525 <sect1 id="selections"><title>Select, Copy And Paste</title>
|
joachim99@11
|
526 <para>
|
joachim99@11
|
527 The input windows don't show a cursor, so selections must be made
|
joachim99@11
|
528 with the mouse by clicking with the left mouse button at the start, holding
|
joachim99@11
|
529 down the mousebutton and moving to the end, where you release the mouse
|
joachim99@11
|
530 button again. You can also select a word by double clicking it. In the merge
|
joachim99@11
|
531 output editor you can also select via the keyboard by holding the "shift"-button
|
joachim99@11
|
532 and navigation with the cursor keys.
|
joachim99@11
|
533 </para><para>
|
joachim99@11
|
534 To copy to the clipboard you must press the "Copy"-button (Ctrl-C or Ctrl-Insert).
|
joachim99@11
|
535 But there exists an option "Auto Copy Selection". If this is enabled,
|
joachim99@11
|
536 then whatever you select is copied immediately and you don't need to explicitely
|
joachim99@11
|
537 copy. But pay attention when using this because the contents of the clipboard
|
joachim99@11
|
538 might then be destroyed accidentally.
|
joachim99@11
|
539 </para><para>
|
joachim99@11
|
540 "Cut" (Ctrl-X or Shift-Delete) copies to the clipboard and deletes the
|
joachim99@11
|
541 selected text and "Paste" (Ctrl-V or Shift-Insert) inserts the text in
|
joachim99@11
|
542 the clipboard at the cursorposition or over the current selection.
|
joachim99@11
|
543 </para>
|
joachim99@11
|
544 </sect1>
|
joachim99@11
|
545
|
joachim99@11
|
546 <sect1 id="saving"><title>Saving</title>
|
joachim99@11
|
547 <para>
|
joachim99@11
|
548 Saving will only be allowed, when all conflicts were solved. If the file
|
joachim99@11
|
549 already exists and the "Backup files"-option is enabled then the existing
|
joachim99@11
|
550 file will be renamed with an ".orig"-extension, but if such a file exists
|
joachim99@11
|
551 it will be deleted. When you exit or start another diff-analysis and data
|
joachim99@11
|
552 wasn't saved yet, then KDiff3 will ask if you want to save, cancel or proceed
|
joachim99@11
|
553 without saving. (KDiff3 does not catch any signals. So if you "kill" KDiff3
|
joachim99@11
|
554 then your data will be lost.)
|
joachim99@11
|
555 </para><para>
|
joachim99@11
|
556 Line endings are saved according to the normal method on the underlying
|
joachim99@11
|
557 operating system. For Unices each line ends with an linefeed-character "\n",
|
joachim99@11
|
558 while for Win32-based systems each line ends with a carriage-return + a linefeed
|
joachim99@11
|
559 "\r\n". KDiff3 does not preserve the line-endings of the input files, which
|
joachim99@11
|
560 also means that you shouldn't use KDiff3 with binary files.
|
joachim99@11
|
561 </para>
|
joachim99@11
|
562 </sect1>
|
joachim99@11
|
563
|
joachim99@11
|
564 <sect1 id="find"><title>Finding Strings</title>
|
joachim99@11
|
565 <para>
|
joachim99@11
|
566 You can search for a string in any text-window of KDiff3. The "Find ..."-command
|
joachim99@11
|
567 (Ctrl-F) in the Edit-menu opens a dialog that lets you specify the string
|
joachim99@11
|
568 to search for. You can also select the windows which should be searched.
|
joachim99@11
|
569 Searching will always start at the top. Use the "Find Next"-command (F3)
|
joachim99@11
|
570 to proceed to the next occurance. If you select to search several windows then the first
|
joachim99@11
|
571 window will be searched from top to bottom before the search starts in the next
|
joachim99@11
|
572 window at the top again, etc.
|
joachim99@11
|
573 </para>
|
joachim99@11
|
574 </sect1>
|
joachim99@11
|
575
|
joachim99@11
|
576
|
joachim99@11
|
577 <sect1 id="options"><title>Options</title>
|
joachim99@11
|
578 <para>
|
joachim99@11
|
579 Options and the recent-file-list will be saved when you exit the program,
|
joachim99@11
|
580 and reloaded when you start it. (Menu Settings->Configure KDiff3 ...)
|
joachim99@11
|
581 </para>
|
joachim99@11
|
582 <sect2><title>Font</title>
|
joachim99@11
|
583 <para>
|
joachim99@11
|
584 Select a fixed width font. (On some systems this dialog will also
|
joachim99@11
|
585 present variable width fonts, but you should not use them.)
|
joachim99@11
|
586 </para>
|
joachim99@11
|
587 <variablelist>
|
joachim99@11
|
588 <varlistentry><term><emphasis>Italic Font for Deltas:</emphasis></term><listitem><para> If you select this, then text differences
|
joachim99@11
|
589 will be drawn with the italic version of the selected font. If the font
|
joachim99@11
|
590 doesn't support italic, then this does nothing.</para>
|
joachim99@11
|
591 </listitem></varlistentry>
|
joachim99@11
|
592 </variablelist>
|
joachim99@11
|
593 </sect2>
|
joachim99@11
|
594
|
joachim99@11
|
595 <sect2><title>Colors</title>
|
joachim99@11
|
596 <variablelist>
|
joachim99@11
|
597 <varlistentry><term><emphasis>Foreground color:</emphasis></term><listitem><para> Usually black. </para></listitem></varlistentry>
|
joachim99@11
|
598 <varlistentry><term><emphasis>Background color:</emphasis></term><listitem><para> Usually white. </para></listitem></varlistentry>
|
joachim99@11
|
599 <varlistentry><term><emphasis>Diff Background color:</emphasis></term><listitem><para> Usually light gray. </para></listitem></varlistentry>
|
joachim99@11
|
600 <varlistentry><term><emphasis>Color A:</emphasis></term><listitem><para> Usually dark blue. </para></listitem></varlistentry>
|
joachim99@11
|
601 <varlistentry><term><emphasis>Color B:</emphasis></term><listitem><para> Usually dark green. </para></listitem></varlistentry>
|
joachim99@11
|
602 <varlistentry><term><emphasis>Color C:</emphasis></term><listitem><para> Usually dark magenta. </para></listitem></varlistentry>
|
joachim99@11
|
603 <varlistentry><term><emphasis>Conflict Color:</emphasis></term><listitem><para> Usually red.</para></listitem></varlistentry>
|
joachim99@11
|
604 <varlistentry><term><emphasis>Current range background color:</emphasis></term><listitem><para> Usually light yellow.</para></listitem></varlistentry>
|
joachim99@11
|
605 <varlistentry><term><emphasis>Current range diff background color:</emphasis></term><listitem><para> Usually dark yellow.</para></listitem></varlistentry>
|
joachim99@11
|
606 </variablelist>
|
joachim99@11
|
607 <para>
|
joachim99@11
|
608 On systems with only 16 or 256 colors some colors are not available in pure
|
joachim99@11
|
609 form. On such systems the "Defaults"-button will choose a pure color.
|
joachim99@11
|
610 </para>
|
joachim99@11
|
611 </sect2>
|
joachim99@11
|
612
|
joachim99@11
|
613 <sect2><title>Editor Settings</title>
|
joachim99@11
|
614 <variablelist>
|
joachim99@11
|
615 <varlistentry><term><emphasis>Tab inserts spaces:</emphasis></term><listitem><para> If this is disabled and you press the
|
joachim99@11
|
616 tabulator key, a tab-character is inserted, otherwise the appropriate
|
joachim99@11
|
617 amount of characters is inserted.</para></listitem></varlistentry>
|
joachim99@11
|
618 <varlistentry><term><emphasis> Tab size:</emphasis></term><listitem><para> Can be adjusted for your specific needs. Default is 8. </para></listitem></varlistentry>
|
joachim99@11
|
619 <varlistentry><term><emphasis> Auto indentation:</emphasis></term><listitem><para> When pressing Enter or Return the indentation
|
joachim99@11
|
620 of the previous line is used for the new line. </para></listitem></varlistentry>
|
joachim99@11
|
621 <varlistentry><term><emphasis> Auto copy selection:</emphasis></term><listitem><para> Every selection is immediately copied
|
joachim99@11
|
622 to the clipboard when active and you needn't explicitely copy it. </para></listitem></varlistentry>
|
joachim99@66
|
623 <varlistentry><term><emphasis> Line end style:</emphasis></term><listitem><para> When saving you can select what line
|
joachim99@66
|
624 end style you prefer. The default setting is the common choice for the used operating system. </para></listitem></varlistentry>
|
joachim99@51
|
625 <varlistentry><term><emphasis> Use locale encoding:</emphasis></term><listitem><para> For displaying foreign characters.
|
joachim99@51
|
626 Try changing this if some characters of your language aren't displayed correctly. </para></listitem></varlistentry>
|
joachim99@11
|
627 </variablelist>
|
joachim99@11
|
628 </sect2>
|
joachim99@11
|
629
|
joachim99@11
|
630 <sect2><title>Diff & Merge Settings</title>
|
joachim99@11
|
631 <para>
|
joachim99@11
|
632 When comparing files, KDiff3 first it tries to match lines that are equal
|
joachim99@11
|
633 in all input files. Only during this step it might ignore white space. The
|
joachim99@11
|
634 second step compares each line. In this step white space will not be ignored.
|
joachim99@11
|
635 Also during the merge white space will not be ignored.
|
joachim99@11
|
636 </para>
|
joachim99@11
|
637
|
joachim99@11
|
638 <variablelist>
|
joachim99@11
|
639 <varlistentry><term><emphasis>Preserve Carriage Return:</emphasis></term><listitem><para> Some editors (on some systems) save
|
joachim99@11
|
640 carriage return '\r' and linefeed '\n'-characters at the end of line, while
|
joachim99@11
|
641 others will only save the linefeed '\n'. Usually KDiff3 ignores the carriage
|
joachim99@11
|
642 return, but then files that don't have equal sizes, look equal in side by
|
joachim99@11
|
643 side comparison. When this option is on, then the carriage return characters
|
joachim99@11
|
644 are made visible but are treated as white space. This option must be off
|
joachim99@11
|
645 during a merge. Default is off.</para></listitem></varlistentry>
|
joachim99@11
|
646 <varlistentry><term><emphasis>Ignore numbers:</emphasis></term><listitem><para> Default is off. Number characters ('0'-'9', '.', '-')
|
joachim99@11
|
647 will be ignored in the first part of the analysis in which the line matching is
|
joachim99@11
|
648 done. In the result the differences will be shown nevertheless, but they are treated
|
joachim99@11
|
649 as white space.
|
joachim99@11
|
650 </para></listitem></varlistentry>
|
joachim99@51
|
651 <varlistentry><term><emphasis>Ignore C/C++ comments:</emphasis></term><listitem><para> Default is off.
|
joachim99@51
|
652 Changes in comments will be treated like changes in white space.
|
joachim99@51
|
653 </para></listitem></varlistentry>
|
joachim99@66
|
654 <varlistentry><term><emphasis>Ignore case:</emphasis></term><listitem><para> Default is off.
|
joachim99@66
|
655 Case-differences of characters (like 'A' vs. 'a') will be treated like changes in white space.
|
joachim99@11
|
656 </para></listitem></varlistentry>
|
joachim99@11
|
657 <varlistentry><term><emphasis>Preprocessor-Command:</emphasis></term><listitem><para>
|
joachim99@66
|
658 See <link linkend="preprocessors">next section</link>.
|
joachim99@11
|
659 </para></listitem></varlistentry>
|
joachim99@11
|
660 <varlistentry><term><emphasis>Line-Matching Preprocessor-Command:</emphasis></term><listitem><para>
|
joachim99@66
|
661 See <link linkend="preprocessors">next section</link>.
|
joachim99@11
|
662 </para></listitem></varlistentry>
|
joachim99@51
|
663 <varlistentry><term><emphasis>Try Hard:</emphasis></term><listitem><para>
|
joachim99@51
|
664 Try hard to find an even smaller delta. (Default is on.) This will probably
|
joachim99@11
|
665 be effective for complicated and big files. And slow for very big files.
|
joachim99@11
|
666 </para></listitem></varlistentry>
|
joachim99@11
|
667 <varlistentry><term><emphasis>Auto Advance Delay (ms):</emphasis></term><listitem><para> When in auto-advance-mode this setting specifies
|
joachim99@11
|
668 how long to show the result of the selection before jumping to the next unsolved
|
joachim99@11
|
669 conflict.
|
joachim99@11
|
670 </para></listitem></varlistentry>
|
joachim99@51
|
671 <varlistentry><term><emphasis>White space 2/3-file merge default:</emphasis></term><listitem><para>
|
joachim99@51
|
672 Automatically solve all white-space conflict by choosing the specified file.
|
joachim99@51
|
673 (Default is manual choice.) Useful if white-space really isn't important in many files.
|
joachim99@51
|
674 If you need this only occasionally better use "Choose A/B/C For All Unsolved Whitespace Conflicts"
|
joachim99@51
|
675 in the merge menu. Note that if you enable either "Ignore numbers" or "Ignore C/C++ comments"
|
joachim99@51
|
676 then this auto-choice also applies for conflicts in numbers or comments.
|
joachim99@51
|
677 </para></listitem></varlistentry>
|
joachim99@11
|
678 </variablelist>
|
joachim99@11
|
679
|
joachim99@11
|
680 </sect2>
|
joachim99@11
|
681
|
joachim99@11
|
682 <sect2><title>Directory Merge</title>
|
joachim99@11
|
683 <para>
|
joachim99@11
|
684 These options are concerned with scanning the directory and handling the
|
joachim99@11
|
685 merge: See the <link linkend="dirmergeoptions">Directory Comparison/Merge
|
joachim99@11
|
686 Docs</link> for details.
|
joachim99@11
|
687 </para><para>
|
joachim99@11
|
688 Yet there is one option here that is also relevant for saving single files:
|
joachim99@11
|
689 </para>
|
joachim99@11
|
690 <variablelist>
|
joachim99@11
|
691 <varlistentry><term><emphasis>Backup files:</emphasis></term><listitem><para> When a file is saved and an older version already
|
joachim99@11
|
692 exists, then the original version will be renamed with an ".orig" extension.
|
joachim99@11
|
693 If an old backup file with ".orig" extension already exists then this will
|
joachim99@11
|
694 be deleted without backup.
|
joachim99@11
|
695 </para></listitem></varlistentry>
|
joachim99@11
|
696 </variablelist>
|
joachim99@11
|
697 </sect2>
|
joachim99@11
|
698
|
joachim99@68
|
699 <sect2><title>Regional and Language Options</title>
|
joachim99@68
|
700 <variablelist>
|
joachim99@68
|
701 <varlistentry><term><emphasis>Language:</emphasis></term><listitem><para>Adjust the language of the user interface. Changing this option doesn't affect the running program. You have to exit and restart KDiff3 so that the language is changed. (This option is not available in the KDE version of KDiff3 because the language is adjustable in the global KDE settings.)
|
joachim99@68
|
702 </para></listitem></varlistentry>
|
joachim99@68
|
703 <varlistentry><term><emphasis>Use the same encoding for everything:</emphasis></term><listitem><para> The following encoding options can be adjusted separately for each item or if this option is true, all values will take the first value.
|
joachim99@68
|
704 </para></listitem></varlistentry>
|
joachim99@68
|
705 <varlistentry><term><emphasis>Local Encoding:</emphasis></term><listitem><para>Above the codec-selectors appears a note that tells you what the local encoding is. (This is not adjustable but for your information just in case you don't know your local encoding, but need to select it.)
|
joachim99@68
|
706 </para></listitem></varlistentry>
|
joachim99@68
|
707 <varlistentry><term><emphasis>File Encoding for A/B/C:</emphasis></term><listitem><para> Adjust the file encoding for input files. This has an effect on how the special characters are interpreted. Since you can adjust each codec separately you can even compare and merge files that were saved using different codecs.
|
joachim99@68
|
708 </para></listitem></varlistentry>
|
joachim99@68
|
709 <varlistentry><term><emphasis>File Encoding for Merge Output and Saving:</emphasis></term><listitem><para> When you have edited a file, then you can adjust which encoding will be used when saving to disk.
|
joachim99@68
|
710 </para></listitem></varlistentry>
|
joachim99@68
|
711 <varlistentry><term><emphasis>File Encoding for Preprocessor Files:</emphasis></term><listitem><para>When you define preprocessors then they might not be able to operate on your codec. (e.g.: Your files are 16-bit-unicode and your preprocessor can only take 8-bit-ascii.) With this option you can define the encoding of preprocessor output.
|
joachim99@68
|
712 </para></listitem></varlistentry>
|
joachim99@68
|
713 <varlistentry><term><emphasis>Right To Left Language:</emphasis></term><listitem><para>Some languages are written right to left. When this option is enabled, KDiff3 draws the text from right to left in the diff input windows and in the merge output window. Note that if you start KDiff3 with the command line option "--reverse" then all layouting will be done right to left too. (This is a feature provided by Qt.) This documentation was written assuming that "Right To Left Language" or reverse layout are disabled. So some references to "left" or "right" must be replaced by their respective counterpart if you use these options.
|
joachim99@68
|
714 </para></listitem></varlistentry>
|
joachim99@68
|
715
|
joachim99@68
|
716 </variablelist>
|
joachim99@68
|
717 </sect2>
|
joachim99@68
|
718
|
joachim99@11
|
719 <sect2><title>Miscellaneous</title>
|
joachim99@11
|
720 <para>(These options and actions are available in menus or the buttonbar.)</para>
|
joachim99@11
|
721 <variablelist>
|
joachim99@11
|
722 <varlistentry><term><emphasis>Show line numbers:</emphasis></term><listitem><para> You can select if line numbers should be
|
joachim99@11
|
723 shown for the input files.</para></listitem></varlistentry>
|
joachim99@11
|
724 <varlistentry><term><emphasis>Show space and tabulator characters for differences:</emphasis></term><listitem><para> Sometimes
|
joachim99@11
|
725 the visible spaces and tabs are disturbing. You can turn this off.</para></listitem></varlistentry>
|
joachim99@51
|
726 <varlistentry><term><emphasis>Show white space:</emphasis></term><listitem><para> Turn this off to suppress
|
joachim99@51
|
727 any highlighting of white-space-only changes in the text or overview-columns.
|
joachim99@51
|
728 (Note that this also applies to changes in numbers or comments if the options "Ignore numbers"
|
joachim99@51
|
729 or "Ignore C/C++ comments" are active.)</para></listitem></varlistentry>
|
joachim99@66
|
730 <varlistentry><term><emphasis>Overview options:</emphasis></term><listitem><para>
|
joachim99@66
|
731 These choices are only available when you compare three files. In normal mode all
|
joachim99@66
|
732 differences are shown in one color-coded overview-column. But sometimes you are
|
joachim99@66
|
733 especially interested in the differences between only two of these three files.
|
joachim99@66
|
734 Selecting "A vs. B", "A vs. C" or "B vs. C"-overview will show a second overview
|
joachim99@66
|
735 column with the required information next to the normal overview.
|
joachim99@66
|
736 </para></listitem></varlistentry>
|
joachim99@66
|
737 <varlistentry><term><emphasis>Word wrap diff windows:</emphasis></term><listitem><para>
|
joachim99@66
|
738 Wrap lines when their length would exceed the width of a window.
|
joachim99@66
|
739 </para></listitem></varlistentry>
|
joachim99@11
|
740 <varlistentry><term><emphasis>Show Window A/B/C:</emphasis></term><listitem><para> Sometimes you want to use the space on
|
joachim99@11
|
741 the screen better for long lines. Hide the windows that are not important.
|
joachim99@11
|
742 (In the Windows-menu.)</para></listitem></varlistentry>
|
joachim99@11
|
743 <varlistentry><term><emphasis>Toggle Split Orientation:</emphasis></term><listitem><para>
|
joachim99@11
|
744 Switch between diff windows shown next to each other (A left of B left of C) or above
|
joachim99@11
|
745 each other (A above B above C). This should also help for long lines. (In the Windows-menu.)
|
joachim99@11
|
746 </para></listitem></varlistentry>
|
joachim99@51
|
747 <varlistentry><term><emphasis>Start a merge quickly:</emphasis></term><listitem><para>
|
joachim99@51
|
748 Sometimes you are viewing the deltas and decide to merge.
|
joachim99@51
|
749 <inlinemediaobject><imageobject><imagedata fileref="merge_current.png" format="PNG"/></imageobject></inlinemediaobject>
|
joachim99@11
|
750 "Merge current file" in the Directory-menu also works if you only compare
|
joachim99@11
|
751 two files. A single click starts the merge and uses the filename of the last
|
joachim99@11
|
752 input-file as the default output filename. (When this is used to restart
|
joachim99@11
|
753 a merge, then the output filename will be preserved.)</para></listitem></varlistentry>
|
joachim99@11
|
754 </variablelist>
|
joachim99@11
|
755 </sect2>
|
joachim99@11
|
756
|
joachim99@11
|
757 <sect2 id="shortcuts"><title>Configuring Keyboard-Shortcuts</title>
|
joachim99@11
|
758 <para>
|
joachim99@11
|
759 Currently only the KDE-version supports user-configurable keyboard-shortcuts.
|
joachim99@11
|
760 (Menu Settings->Configure Shortcuts...)
|
joachim99@11
|
761 </para>
|
joachim99@11
|
762 </sect2>
|
joachim99@11
|
763 </sect1>
|
joachim99@66
|
764
|
joachim99@66
|
765 <sect1 id="preprocessors"><title>Preprocessor Commands</title>
|
joachim99@66
|
766 <para>
|
joachim99@66
|
767 KDiff3 supports two preprocessor options.
|
joachim99@66
|
768 </para><para>
|
joachim99@66
|
769 <variablelist>
|
joachim99@66
|
770 <varlistentry><term><emphasis>Preprocessor-Command:</emphasis></term><listitem><para>
|
joachim99@66
|
771 When any file is read, it will be piped through this external command.
|
joachim99@66
|
772 The output of this command will be visible instead of the original file.
|
joachim99@66
|
773 You can write your own preprocessor that fulfills your specific needs.
|
joachim99@66
|
774 Use this to cut away disturbing parts of the file, or to automatically
|
joachim99@66
|
775 correct the indentation etc.
|
joachim99@66
|
776 </para></listitem></varlistentry>
|
joachim99@66
|
777 <varlistentry><term><emphasis>Line-Matching Preprocessor-Command:</emphasis></term><listitem><para>
|
joachim99@66
|
778 When any file is read, it will be piped through this external command. If
|
joachim99@66
|
779 a preprocessor-command (see above) is also specified, then the output of the
|
joachim99@66
|
780 preprocessor is the input of the line-matching preprocessor.
|
joachim99@66
|
781 The output will only be used during the line matching phase of the analysis.
|
joachim99@66
|
782 You can write your own preprocessor that fulfills your specific needs.
|
joachim99@66
|
783 Each input line must have a corresponding output line.
|
joachim99@66
|
784 </para></listitem></varlistentry>
|
joachim99@66
|
785 </variablelist>
|
joachim99@66
|
786 </para>
|
joachim99@66
|
787 <para>
|
joachim99@66
|
788 The idea is to allow the user greater flexibility while configuring the diff-result.
|
joachim99@66
|
789 But this requires an external program, and many users don't want to write one themselves.
|
joachim99@66
|
790 The good news is that very often <command>sed</command> or <command>perl</command>
|
joachim99@66
|
791 will do the job.
|
joachim99@66
|
792 </para>
|
joachim99@66
|
793 <para>Example: Simple testcase: Consider file a.txt (6 lines):
|
joachim99@66
|
794 <screen>
|
joachim99@66
|
795 aa
|
joachim99@66
|
796 ba
|
joachim99@66
|
797 ca
|
joachim99@66
|
798 da
|
joachim99@66
|
799 ea
|
joachim99@66
|
800 fa
|
joachim99@66
|
801 </screen>
|
joachim99@66
|
802 And file b.txt (3 lines):
|
joachim99@66
|
803 <screen>
|
joachim99@66
|
804 cg
|
joachim99@66
|
805 dg
|
joachim99@66
|
806 eg
|
joachim99@66
|
807 </screen>
|
joachim99@66
|
808 Without a preprocessor the following lines would be placed next to each other:
|
joachim99@66
|
809 <screen>
|
joachim99@66
|
810 aa - cg
|
joachim99@66
|
811 ba - dg
|
joachim99@66
|
812 ca - eg
|
joachim99@66
|
813 da
|
joachim99@66
|
814 ea
|
joachim99@66
|
815 fa
|
joachim99@66
|
816 </screen>
|
joachim99@66
|
817 This is probably not wanted since the first letter contains the actually interesting information.
|
joachim99@66
|
818 To help the matching algorithm to ignore the second letter we can use a line matching preprocessor
|
joachim99@66
|
819 command, that replaces 'g' with 'a':
|
joachim99@66
|
820 <screen>
|
joachim99@66
|
821 <command>sed</command> 's/g/a/'
|
joachim99@66
|
822 </screen>
|
joachim99@66
|
823 With this command the result of the comparison would be:
|
joachim99@66
|
824 <screen>
|
joachim99@66
|
825 aa
|
joachim99@66
|
826 ba
|
joachim99@66
|
827 ca - cg
|
joachim99@66
|
828 da - dg
|
joachim99@66
|
829 ea - eg
|
joachim99@66
|
830 fa
|
joachim99@66
|
831 </screen>
|
joachim99@66
|
832 Internally the matching algorithm sees the files after running the line matching preprocessor,
|
joachim99@66
|
833 but on the screen the file is unchanged. (The normal preprocessor would change the data also on
|
joachim99@66
|
834 the screen.)
|
joachim99@66
|
835 </para>
|
joachim99@66
|
836
|
joachim99@66
|
837 <sect2 id="sedbasics"><title><command>sed</command> Basics</title>
|
joachim99@66
|
838 <para>
|
joachim99@66
|
839 This section only introduces some very basic features of <command>sed</command>. For more
|
joachim99@66
|
840 information see <ulink url="info:/sed">info:/sed</ulink> or
|
joachim99@66
|
841 <ulink url="http://www.gnu.org/software/sed/manual/html_mono/sed.html">
|
joachim99@66
|
842 http://www.gnu.org/software/sed/manual/html_mono/sed.html</ulink>.
|
joachim99@66
|
843 A precompiled version for Windows can be found at <ulink url="http://unxutils.sourceforge.net">
|
joachim99@66
|
844 http://unxutils.sourceforge.net</ulink>.
|
joachim99@66
|
845 Note that the following examples assume that the <command>sed</command>-command is in some
|
joachim99@66
|
846 directory in the PATH-environment variable. If this is not the case, you have to specify the full absolute
|
joachim99@66
|
847 path for the command. Also note that the following examples use the single quotation mark (') which won't work for Windows.
|
joachim99@66
|
848 On Windows you should use the double quotation marks (") instead.
|
joachim99@66
|
849 </para>
|
joachim99@66
|
850 <para>
|
joachim99@66
|
851 In this context only the <command>sed</command>-substitute-command is used:
|
joachim99@66
|
852 <screen>
|
joachim99@66
|
853 <command>sed</command> 's/<replaceable>REGEXP</replaceable>/<replaceable>REPLACEMENT</replaceable>/<replaceable>FLAGS</replaceable>'
|
joachim99@66
|
854 </screen>
|
joachim99@66
|
855 Before you use a new command within KDiff3, you should first test it in a console.
|
joachim99@66
|
856 Here the <command>echo</command>-command is useful. Example:
|
joachim99@66
|
857 <screen>
|
joachim99@66
|
858 <command>echo</command> abrakadabra | <command>sed</command> 's/a/o/'
|
joachim99@66
|
859 -> obrakadabra
|
joachim99@66
|
860 </screen>
|
joachim99@66
|
861 This example shows a very simple sed-command that replaces the first occurance
|
joachim99@66
|
862 of "a" with "o". If you want to replace all occurances then you need the "g"-flag:
|
joachim99@66
|
863 <screen>
|
joachim99@66
|
864 <command>echo</command> abrakadabra | <command>sed</command> 's/a/o/g'
|
joachim99@66
|
865 -> obrokodobro
|
joachim99@66
|
866 </screen>
|
joachim99@66
|
867 The "|"-symbol is the pipe-command that transfers the output of the previous
|
joachim99@66
|
868 command to the input of the following command. If you want to test with a longer file
|
joachim99@66
|
869 then you can use <command>cat</command> on Unix-like systems or <command>type</command>
|
joachim99@66
|
870 on Windows-like systems. <command>sed</command> will do the substitution for each line.
|
joachim99@66
|
871 <screen>
|
joachim99@66
|
872 <command>cat</command> <replaceable>filename</replaceable> | <command>sed</command> <replaceable>options</replaceable>
|
joachim99@66
|
873 </screen>
|
joachim99@66
|
874 </para>
|
joachim99@66
|
875 </sect2>
|
joachim99@66
|
876 <sect2 id="sedforkdiff3"><title>Examples For <command>sed</command>-Use In KDiff3</title>
|
joachim99@66
|
877 <sect3><title>Ignoring Other Types Of Comments</title>
|
joachim99@66
|
878 <para>
|
joachim99@66
|
879 Currently KDiff3 understands only C/C++ comments. Using the
|
joachim99@66
|
880 Line-Matching-Preprocessor-Command you can also ignore
|
joachim99@66
|
881 other types of comments, by converting them into C/C++-comments.
|
joachim99@66
|
882
|
joachim99@66
|
883 Example: To ignore comments starting with "#", you would like to convert them
|
joachim99@66
|
884 to "//". Note that you also must enable the "Ignore C/C++-Comments" option to get
|
joachim99@66
|
885 an effect. An appropriate Line-Matching-Preprocessor-Command would be:
|
joachim99@66
|
886
|
joachim99@66
|
887 <screen>
|
joachim99@66
|
888 <command>sed</command> 's/#/\/\//'
|
joachim99@66
|
889 </screen>
|
joachim99@66
|
890 Since for <command>sed</command> the "/"-character has a special meaning, it is necessary to place the
|
joachim99@66
|
891 "\"-character before each "/" in the replacement-string. Sometimes the "\" is required
|
joachim99@66
|
892 to add or remove a special meaning of certain characters. The single quotation marks (') before
|
joachim99@66
|
893 and after the substitution-command are important now, because otherwise the shell will
|
joachim99@66
|
894 try to interpret some special characters like '#', '$' or '\' before passing them to
|
joachim99@66
|
895 <command>sed</command>. Note that on Windows you will need the double quotation marks (") here. Windows
|
joachim99@66
|
896 substitutes other characters like '%', so you might have to experiment a little bit.
|
joachim99@66
|
897 </para>
|
joachim99@66
|
898 </sect3>
|
joachim99@66
|
899 <sect3><title>Caseinsensitive Diff</title>
|
joachim99@66
|
900 <para>
|
joachim99@66
|
901 Use the following Line-Matching-Preprocessor-Command to convert all input to uppercase:
|
joachim99@66
|
902 <screen>
|
joachim99@66
|
903 <command>sed</command> 's/\(.*\)/\U\1/'
|
joachim99@66
|
904 </screen>
|
joachim99@66
|
905 Here the ".*" is a regular expression that matches any string and in this context matches
|
joachim99@66
|
906 all characters in the line.
|
joachim99@66
|
907 The "\1" in the replacement string refers to the matched text within the first pair of "\(" and "\)".
|
joachim99@66
|
908 The "\U" converts the inserted text to uppercase.
|
joachim99@66
|
909 </para>
|
joachim99@66
|
910 </sect3>
|
joachim99@66
|
911
|
joachim99@66
|
912 <sect3><title>Ignoring Version Control Keywords</title>
|
joachim99@66
|
913 <para>
|
joachim99@66
|
914 CVS and other version control systems use several keywords to insert automatically
|
joachim99@66
|
915 generated strings (<ulink url="info:/cvs/Keyword substitution">info:/cvs/Keyword substitution</ulink>).
|
joachim99@66
|
916 All of them follow the pattern "$KEYWORD generated text$". We now need a
|
joachim99@66
|
917 Line-Matching-Preprocessor-Command that removes only the generated text:
|
joachim99@66
|
918 <screen>
|
joachim99@66
|
919 <command>sed</command> 's/\$\(Revision\|Author\|Log\|Header\|Date\).*\$/\$\1\$/'
|
joachim99@66
|
920 </screen>
|
joachim99@66
|
921 The "\|" separates the possible keywords. You might want to modify this list
|
joachim99@66
|
922 according to your needs.
|
joachim99@66
|
923 The "\" before the "$" is necessary because otherwise the "$" matches the end of the line.
|
joachim99@66
|
924 </para>
|
joachim99@66
|
925 <para>
|
joachim99@66
|
926 While experimenting with <command>sed</command> you might come to understand and even like
|
joachim99@66
|
927 these regular expressions. They are useful because there are many other programs that also
|
joachim99@66
|
928 support similar things.
|
joachim99@66
|
929 </para>
|
joachim99@66
|
930 </sect3>
|
joachim99@66
|
931
|
joachim99@66
|
932 <sect3><title>Ignoring Numbers</title>
|
joachim99@66
|
933 <para>
|
joachim99@66
|
934 Ignoring numbers actually is a built-in option. But as another example, this is how
|
joachim99@66
|
935 it would look as a Line-Matching-Preprocessor-command.
|
joachim99@66
|
936 <screen>
|
joachim99@66
|
937 <command>sed</command> 's/[0123456789.-]//g'
|
joachim99@66
|
938 </screen>
|
joachim99@66
|
939 Any character within '[' and ']' is a match and will be replaced with nothing.
|
joachim99@66
|
940 </para>
|
joachim99@66
|
941 </sect3>
|
joachim99@66
|
942
|
joachim99@66
|
943 <sect3><title>Ignoring Certain Columns</title>
|
joachim99@66
|
944 <para>
|
joachim99@66
|
945 Sometimes a text is very strictly formatted, and contains columns that you always want to ignore, while there are
|
joachim99@66
|
946 other columns you want to preserve for analysis. In the following example the first five columns (characters) are
|
joachim99@66
|
947 ignored, the next ten columns are preserved, then again five columns are ignored and the rest of the line is preserved.
|
joachim99@66
|
948 <screen>
|
joachim99@66
|
949 <command>sed</command> 's/.....\(..........\).....\(.*\)/\1\2/'
|
joachim99@66
|
950 </screen>
|
joachim99@66
|
951 Each dot '.' matches any single character. The "\1" and "\2" in the replacement string refer to the matched text within the first
|
joachim99@66
|
952 and second pair of "\(" and "\)" denoting the text to be preserved.
|
joachim99@66
|
953 </para>
|
joachim99@66
|
954 </sect3>
|
joachim99@66
|
955
|
joachim99@66
|
956 <sect3><title>Combining Several Substitutions</title>
|
joachim99@66
|
957 <para>
|
joachim99@66
|
958 Sometimes you want to apply several substitutions at once. You can then use the
|
joachim99@66
|
959 semicolon ';' to separate these from each other. Example:
|
joachim99@66
|
960 <screen>
|
joachim99@66
|
961 <command>echo</command> abrakadabra | <command>sed</command> 's/a/o/g;s/\(.*\)/\U\1/'
|
joachim99@66
|
962 -> OBROKODOBRO
|
joachim99@66
|
963 </screen>
|
joachim99@66
|
964 </para>
|
joachim99@66
|
965 </sect3>
|
joachim99@66
|
966
|
joachim99@66
|
967 <sect3><title>Using <command>perl</command> instead of <command>sed</command></title>
|
joachim99@66
|
968 <para>
|
joachim99@66
|
969 Instead of <command>sed</command> you might want to use something else like
|
joachim99@66
|
970 <command>perl</command>.
|
joachim99@66
|
971 <screen>
|
joachim99@66
|
972 <command>perl</command> -p -e 's/<replaceable>REGEXP</replaceable>/<replaceable>REPLACEMENT</replaceable>/<replaceable>FLAGS</replaceable>'
|
joachim99@66
|
973 </screen>
|
joachim99@66
|
974 But some details are different in <command>perl</command>. Note that where
|
joachim99@66
|
975 <command>sed</command> needed "\(" and "\)" <command>perl</command>
|
joachim99@66
|
976 requires the simpler "(" and ")" without preceding '\'. Example:
|
joachim99@66
|
977 <screen>
|
joachim99@66
|
978 <command>sed</command> 's/\(.*\)/\U\1/'
|
joachim99@66
|
979 <command>perl</command> -p -e 's/(.*)/\U\1/'
|
joachim99@66
|
980 </screen>
|
joachim99@66
|
981 </para>
|
joachim99@66
|
982 </sect3>
|
joachim99@66
|
983 </sect2>
|
joachim99@66
|
984
|
joachim99@66
|
985 <sect2><title>Order Of Preprocessor Execution</title>
|
joachim99@66
|
986 <para>
|
joachim99@66
|
987 The data is piped through all internal and external preprocessors in the
|
joachim99@66
|
988 following order:
|
joachim99@66
|
989 </para>
|
joachim99@66
|
990 <itemizedlist>
|
joachim99@66
|
991 <listitem><para>Normal preprocessor,</para></listitem>
|
joachim99@66
|
992 <listitem><para>Line-Matching-Preprocessor,</para></listitem>
|
joachim99@66
|
993 <listitem><para>Ignore case (conversion to uppercase),</para></listitem>
|
joachim99@66
|
994 <listitem><para>Detection of C/C++ comments,</para></listitem>
|
joachim99@66
|
995 <listitem><para>Ignore numbers,</para></listitem>
|
joachim99@66
|
996 <listitem><para>Ignore white space</para></listitem>
|
joachim99@66
|
997 </itemizedlist>
|
joachim99@66
|
998 <para>
|
joachim99@66
|
999 The data after the normal preprocessor will be preserved for display and merging. The
|
joachim99@66
|
1000 other operations only modify the data that the line-matching-diff-algorithm sees.
|
joachim99@66
|
1001 </para><para>
|
joachim99@66
|
1002 In the rare cases where you use a normal preprocessor note that
|
joachim99@66
|
1003 the line-matching-preprocessor sees the output of the normal preprocessor as input.
|
joachim99@66
|
1004 </para>
|
joachim99@66
|
1005 </sect2>
|
joachim99@66
|
1006
|
joachim99@66
|
1007 <sect2><title>Warning</title>
|
joachim99@66
|
1008 <para>
|
joachim99@66
|
1009 The preprocessor-commands are often very useful, but as with any option that modifies
|
joachim99@66
|
1010 your texts or hides away certain differences automatically, you might accidently overlook
|
joachim99@66
|
1011 certain differences and in the worst case destroy important data.
|
joachim99@66
|
1012 </para><para>
|
joachim99@66
|
1013 For this reason during a merge if a normal preprocessor-command is being used KDiff3
|
joachim99@66
|
1014 will tell you so and ask you if it should be disabled or not.
|
joachim99@66
|
1015 But it won't warn you if a Line-Matching-Preprocessor-command is active. The merge will not complete until
|
joachim99@66
|
1016 all conflicts are solved. If you disabled "Show White Space" then the differences that
|
joachim99@66
|
1017 were removed with the Line-Matching-Preprocessor-command will also be invisible. If the
|
joachim99@66
|
1018 Save-button remains disabled during a merge (because of remaining conflicts), make sure to enable
|
joachim99@66
|
1019 "Show White Space". If you don't wan't to merge these less important differences manually
|
joachim99@66
|
1020 you can select "Choose [A|B|C] For All Unsolved Whitespace Conflicts" in the Merge-menu.
|
joachim99@66
|
1021 </para>
|
joachim99@66
|
1022 </sect2>
|
joachim99@66
|
1023 </sect1>
|
joachim99@11
|
1024 </chapter>
|
joachim99@11
|
1025
|
joachim99@11
|
1026
|
joachim99@11
|
1027 <chapter id="dirmerge"><title>Directory Comparison and Merge with KDiff3</title>
|
joachim99@11
|
1028 <sect1 id="dirmergeintro"><title>Introduction</title>
|
joachim99@11
|
1029 <para>
|
joachim99@11
|
1030 Often programmers must modify many files in a directory to achieve their
|
joachim99@11
|
1031 purpose. For this KDiff3 also lets you compare and merge complete directories
|
joachim99@11
|
1032 recursively!
|
joachim99@11
|
1033 </para><para>
|
joachim99@11
|
1034 Even though comparing and merging directories seems to be quite obvious,
|
joachim99@11
|
1035 there are several details that you should know about. Most important is of
|
joachim99@11
|
1036 course the fact that now many files might be affected by each operation.
|
joachim99@11
|
1037 If you don't have backups of your original data, then it can be very hard
|
joachim99@11
|
1038 or even impossible to return to the original state. So before starting a merge,
|
joachim99@11
|
1039 make sure that your data is safe, and going back is possible. If you make
|
joachim99@11
|
1040 an archive or use some version control system is your decision, but even
|
joachim99@11
|
1041 experienced programmers and integrators need the old sources now and then.
|
joachim99@11
|
1042 And note that even though I (the author of KDiff3) try to do my best, I can't
|
joachim99@11
|
1043 guarantee that there are no bugs. According to the GNU-GPL there is NO WARRANTY
|
joachim99@11
|
1044 whatsoever for this program. So be humble and always keep in mind:
|
joachim99@11
|
1045 </para>
|
joachim99@11
|
1046 <blockquote><para>
|
joachim99@11
|
1047 <emphasis>To err is human, but to really mess things up you need a computer.</emphasis>
|
joachim99@11
|
1048 </para></blockquote>
|
joachim99@11
|
1049 <para>
|
joachim99@11
|
1050 So this is what this program can do for you: KDiff3 ...
|
joachim99@11
|
1051 </para>
|
joachim99@11
|
1052 <itemizedlist>
|
joachim99@11
|
1053 <listitem><para>... reads and compares two or three directories recursively,</para></listitem>
|
joachim99@11
|
1054 <listitem><para>... takes special care of symbolic links,</para></listitem>
|
joachim99@11
|
1055 <listitem><para>... lets you browse files on mouse double click,</para></listitem>
|
joachim99@11
|
1056 <listitem><para>... for each item proposes a merge operation, which you can change
|
joachim99@11
|
1057 before starting the directory merge,</para></listitem>
|
joachim99@11
|
1058 <listitem><para>... lets you simulate the merge and lists the actions that would
|
joachim99@11
|
1059 take place, without actually doing them,</para></listitem>
|
joachim99@11
|
1060 <listitem><para>... lets you really do the merge, and lets you interact whenever
|
joachim99@11
|
1061 manual interaction is needed,</para></listitem>
|
joachim99@51
|
1062 <listitem><para>... lets you run the selected operation for all items (key F7) or the selected item (key F6),</para></listitem>
|
joachim99@51
|
1063 <listitem><para>... lets you continue the merge after manual interaction with key F7,</para></listitem>
|
joachim99@11
|
1064 <listitem><para>... optionally creates backups, with the ".orig" extension,</para></listitem>
|
joachim99@11
|
1065 <listitem><para>...</para></listitem>
|
joachim99@11
|
1066 </itemizedlist>
|
joachim99@11
|
1067 </sect1>
|
joachim99@11
|
1068
|
joachim99@11
|
1069 <sect1 id="startingdirmerge"><title>Starting Directory Comparison Or Merge</title>
|
joachim99@11
|
1070 <para>
|
joachim99@11
|
1071 This is very similar to the single file merge and comparison. You just
|
joachim99@11
|
1072 have to specify directories on the command line or in the file-open
|
joachim99@11
|
1073 dialog.
|
joachim99@11
|
1074 </para>
|
joachim99@11
|
1075 <sect2><title>Compare/Merge two directories: </title>
|
joachim99@11
|
1076 <screen>
|
joachim99@11
|
1077 <command>kdiff3</command> <replaceable>dir1 dir2</replaceable>
|
joachim99@11
|
1078 <command>kdiff3</command> <replaceable>dir1 dir2</replaceable> -o <replaceable>destdir</replaceable>
|
joachim99@11
|
1079 </screen>
|
joachim99@11
|
1080 <para>
|
joachim99@11
|
1081 If no destination directory is specified, then KDiff3 will use <replaceable>dir2</replaceable>.
|
joachim99@11
|
1082 </para>
|
joachim99@11
|
1083 </sect2>
|
joachim99@11
|
1084
|
joachim99@11
|
1085 <sect2><title>Compare/Merge three directories: </title>
|
joachim99@11
|
1086 <screen>
|
joachim99@11
|
1087 <command>kdiff3</command> <replaceable>dir1 dir2 dir3</replaceable>
|
joachim99@11
|
1088 <command>kdiff3</command> <replaceable>dir1 dir2 dir3</replaceable> -o <replaceable>destdir</replaceable>
|
joachim99@11
|
1089 </screen>
|
joachim99@11
|
1090 <para>
|
joachim99@11
|
1091 When three directories are merged then <replaceable>dir1</replaceable>
|
joachim99@11
|
1092 is used as the base for the merge.
|
joachim99@11
|
1093 If no destination directory is specified, then KDiff3 will use <replaceable>dir3</replaceable>
|
joachim99@11
|
1094 as the destination directory for the merge.
|
joachim99@11
|
1095 </para>
|
joachim99@11
|
1096
|
joachim99@11
|
1097 <para>
|
joachim99@11
|
1098 Note that only the comparison starts automatically, not the merge. For this you first must
|
joachim99@51
|
1099 select a menu entry or the key F7. (More details later.)
|
joachim99@11
|
1100 </para>
|
joachim99@11
|
1101 </sect2>
|
joachim99@11
|
1102 </sect1>
|
joachim99@11
|
1103
|
joachim99@11
|
1104 <sect1 id="dirmergevisible"><title>Visible Information</title>
|
joachim99@11
|
1105 <para>
|
joachim99@11
|
1106 While reading the directories a message-box appears that informs you of
|
joachim99@11
|
1107 the progress. If you abort the directory scan, then only files that have
|
joachim99@11
|
1108 been compared until then will be listed.
|
joachim99@11
|
1109 </para><para>
|
joachim99@11
|
1110 When the directory scan is complete then KDiff3 will show a listbox with
|
joachim99@11
|
1111 the results left, ...
|
joachim99@11
|
1112 </para>
|
joachim99@11
|
1113 <screenshot><mediaobject>
|
joachim99@11
|
1114 <imageobject><imagedata fileref="dirbrowser.png" format="PNG"/></imageobject> <!--alt="Image of the directory browser."-->
|
joachim99@11
|
1115 </mediaobject></screenshot>
|
joachim99@11
|
1116 <para>
|
joachim99@11
|
1117 ... and details about the currently selected item on the right:
|
joachim99@11
|
1118 </para>
|
joachim99@11
|
1119 <screenshot><mediaobject>
|
joachim99@11
|
1120 <imageobject><imagedata fileref="iteminfo.png" format="PNG"/></imageobject>
|
joachim99@11
|
1121 <!--alt="Image with information about the selected item."-->
|
joachim99@11
|
1122 </mediaobject></screenshot>
|
joachim99@11
|
1123
|
joachim99@11
|
1124 <sect2 id="name"><title>The Name Column</title>
|
joachim99@11
|
1125 <para>
|
joachim99@11
|
1126 Each file and directory that was found during the scan is shown here in
|
joachim99@11
|
1127 a tree. You can select an item by clicking it with the mouse once.
|
joachim99@11
|
1128 </para><para>
|
joachim99@11
|
1129 The directories are collapsed by default. You can expand and collapse
|
joachim99@11
|
1130 them by clicking on the "+"/"-" or by double-clicking the item or
|
joachim99@11
|
1131 by using the left/right-arrow-keys. The "Directory"-menu also contains two
|
joachim99@11
|
1132 actions "Fold all subdirs" and "Unfold all subdirs" with which you can
|
joachim99@11
|
1133 collapse or expand all directories at once.
|
joachim99@11
|
1134 </para><para>
|
joachim99@11
|
1135 If you double-click a file item then the file comparison starts and the
|
joachim99@11
|
1136 file-diff-window will appear.
|
joachim99@11
|
1137 </para>
|
joachim99@11
|
1138 <para>
|
joachim99@11
|
1139 The image in the name column reflects the file type in the first
|
joachim99@11
|
1140 directory ("A"). It can be one of these:
|
joachim99@11
|
1141 </para>
|
joachim99@11
|
1142 <itemizedlist>
|
joachim99@11
|
1143 <listitem><para>Normal file</para></listitem>
|
joachim99@11
|
1144 <listitem><para>Normal directory (directory-image)</para></listitem>
|
joachim99@11
|
1145 <listitem><para>Link to a file (file-image with a link arrow)</para></listitem>
|
joachim99@11
|
1146 <listitem><para>Link to a directory (directory-image with a link arrow)</para></listitem>
|
joachim99@11
|
1147 </itemizedlist>
|
joachim99@11
|
1148 <para>
|
joachim99@11
|
1149 If the file type is different in the other directories, then this is visible
|
joachim99@11
|
1150 in the columns A/B/C and in the window that shows the details about the selected
|
joachim99@11
|
1151 item. Note that for such a case no merge operation can be selected automatically.
|
joachim99@11
|
1152 When starting the merge, then the user will be informed of problems of that
|
joachim99@11
|
1153 kind.
|
joachim99@11
|
1154 </para>
|
joachim99@11
|
1155 </sect2>
|
joachim99@11
|
1156
|
joachim99@11
|
1157 <sect2 id="coloring"><title>The Columns A/B/C and the Coloring Scheme</title>
|
joachim99@11
|
1158 <para>
|
joachim99@11
|
1159 As can be seen in the image above the colors red, green, yellow and black
|
joachim99@11
|
1160 are used in the columns A/B/C.
|
joachim99@11
|
1161 </para>
|
joachim99@11
|
1162 <itemizedlist>
|
joachim99@11
|
1163 <listitem><para>Black: This item doesn't exist in this directory.</para></listitem>
|
joachim99@11
|
1164 <listitem><para>Green: Newest item.</para></listitem>
|
joachim99@11
|
1165 <listitem><para>Yellow: Older than green, newer than red.</para></listitem>
|
joachim99@11
|
1166 <listitem><para>Red: Oldest item.</para></listitem>
|
joachim99@11
|
1167 </itemizedlist>
|
joachim99@11
|
1168 <para>
|
joachim99@11
|
1169 But for items that were identical in the comparison their color also is
|
joachim99@11
|
1170 identical even if the age is not.
|
joachim99@11
|
1171 </para><para>
|
joachim99@11
|
1172 Directories are considered equal if all items they contain are identical.
|
joachim99@11
|
1173 Then they also will have the same color. But the age of a directory is not
|
joachim99@11
|
1174 considered for its color.
|
joachim99@11
|
1175 </para><para>
|
joachim99@11
|
1176 The idea for this coloring scheme I came upon in
|
joachim99@11
|
1177 <ulink url="http://samba.org/cgi-bin/cvsweb/dirdiff">dirdiff</ulink>. The colors
|
joachim99@11
|
1178 resemble the colors of a leaf that is green when new, turns yellow later and red
|
joachim99@11
|
1179 when old.
|
joachim99@11
|
1180 </para>
|
joachim99@11
|
1181
|
joachim99@11
|
1182 </sect2><sect2 id="operation"><title>The Operation Column</title>
|
joachim99@11
|
1183 <para>
|
joachim99@11
|
1184 After comparing the directories KDiff3 also evaluates a proposal for a
|
joachim99@11
|
1185 merge operation. This is shown in the "Operation" column. You can modify
|
joachim99@11
|
1186 the operation by clicking on the operation you want to change. A small menu
|
joachim99@51
|
1187 will popup and allows you to select an operation for that item. (You can also
|
joachim99@51
|
1188 select the most needed operations via keyboard.
|
joachim99@51
|
1189 Ctrl+1/2/3/4/Del will select A/B/C/Merge/Delete respectively if available.)
|
joachim99@51
|
1190 This operation will be executed during the merge. It depends on the item and
|
joachim99@51
|
1191 on the merge-mode you are in, what operations are available. The merge-mode is one of
|
joachim99@11
|
1192 </para>
|
joachim99@11
|
1193 <itemizedlist>
|
joachim99@51
|
1194 <listitem><para>Three directory-merge ("A" is treated as older base of both).</para></listitem>
|
joachim99@11
|
1195 <listitem><para>Two directory-merge.</para></listitem>
|
joachim99@11
|
1196 <listitem><para>Two directory-sync-mode (activate via option "Synchronize Directories").</para></listitem>
|
joachim99@11
|
1197 </itemizedlist>
|
joachim99@11
|
1198 <para>
|
joachim99@11
|
1199 In three directory merge the operation proposal will be: If for an item ...
|
joachim99@11
|
1200 </para>
|
joachim99@11
|
1201 <itemizedlist>
|
joachim99@11
|
1202 <listitem><para>... all three directories are equal: Copy from C</para></listitem>
|
joachim99@11
|
1203 <listitem><para>... A and C are equal but B is not: Copy from B (or if B does not
|
joachim99@11
|
1204 exist, delete the destination if exists)</para></listitem>
|
joachim99@11
|
1205 <listitem><para>... A and B are equal but C is not: Copy from C (or if C does not
|
joachim99@11
|
1206 exist, delete the destination if exists)</para></listitem>
|
joachim99@11
|
1207 <listitem><para>... B and C are equal but A is not: Copy from C (or if C does not
|
joachim99@11
|
1208 exist, delete the destination if exists)</para></listitem>
|
joachim99@11
|
1209 <listitem><para>... only A exists: Delete the destination (if exists)</para></listitem>
|
joachim99@11
|
1210 <listitem><para>... only B exists: Copy from B</para></listitem>
|
joachim99@11
|
1211 <listitem><para>... only C exists: Copy from C</para></listitem>
|
joachim99@11
|
1212 <listitem><para>... A, B and C are not equal: Merge</para></listitem>
|
joachim99@11
|
1213 <listitem><para>... A, B and C don't have the same file type (e.g. A is a directory,
|
joachim99@11
|
1214 B is a file): "Error: Conflicting File Types". While such items exist the
|
joachim99@11
|
1215 directory merge cannot start.</para></listitem>
|
joachim99@11
|
1216 </itemizedlist>
|
joachim99@11
|
1217 <para>
|
joachim99@11
|
1218 In two directory merge the operation proposal will be: If for an item ...
|
joachim99@11
|
1219 </para>
|
joachim99@11
|
1220 <itemizedlist>
|
joachim99@11
|
1221 <listitem><para>... both directories are equal: Copy from B</para></listitem>
|
joachim99@11
|
1222 <listitem><para>... A exists, but not B: Copy from A</para></listitem>
|
joachim99@11
|
1223 <listitem><para>... B exists, but not A: Copy from B</para></listitem>
|
joachim99@11
|
1224 <listitem><para>... A and B exist but are not equal: Merge</para></listitem>
|
joachim99@11
|
1225 <listitem><para>... A and B don't have the same file type (e.g. A is a directory,
|
joachim99@11
|
1226 B is a file): "Error: Conflicting File Types". While such items exist the
|
joachim99@11
|
1227 directory merge cannot start.</para></listitem>
|
joachim99@11
|
1228 </itemizedlist>
|
joachim99@11
|
1229 <para>
|
joachim99@11
|
1230 Sync-mode is active if only two directories and no explicit destination
|
joachim99@11
|
1231 were specified and if the option "Synchronize directories" is active. KDiff3
|
joachim99@11
|
1232 then selects a default operation so that both directories are the same afterwards.
|
joachim99@11
|
1233 If for an item ...
|
joachim99@11
|
1234 </para>
|
joachim99@11
|
1235 <itemizedlist>
|
joachim99@11
|
1236 <listitem><para>... both directories are equal: Nothing will be done.</para></listitem>
|
joachim99@11
|
1237 <listitem><para>... A exists, but not B: Copy A to B</para></listitem>
|
joachim99@11
|
1238 <listitem><para>... B exists, but not A: Copy B to A</para></listitem>
|
joachim99@11
|
1239 <listitem><para>... A and B exist, but are not equal: Merge and store the result
|
joachim99@11
|
1240 in both directories. (For the user the visible save-filename is B,
|
joachim99@11
|
1241 but then KDiff3 copies B also to A.)</para></listitem>
|
joachim99@11
|
1242 <listitem><para>... A and B don't have the same file type (e.g. A is a directory,
|
joachim99@11
|
1243 B is a file): "Error: Conflicting File Types". While such items exist the
|
joachim99@11
|
1244 directory merge cannot start.</para></listitem>
|
joachim99@11
|
1245 </itemizedlist>
|
joachim99@11
|
1246 <para>
|
joachim99@11
|
1247 When two directories are merged and the option "Copy newer instead of merging" is selected,
|
joachim99@11
|
1248 then KDiff3 looks at the dates and proposes to choose the newer file. If the files are not
|
joachim99@11
|
1249 equal but have equal dates, then the operation will contain
|
joachim99@11
|
1250 "Error: Dates are equal but files are not." While such items exist the
|
joachim99@11
|
1251 directory merge cannot start.
|
joachim99@11
|
1252 </para>
|
joachim99@11
|
1253 </sect2>
|
joachim99@11
|
1254
|
joachim99@11
|
1255 <sect2 id="status"><title>The Status Column</title>
|
joachim99@11
|
1256 <para>
|
joachim99@11
|
1257 During the merge one file after the other will be processed. The status
|
joachim99@11
|
1258 column will show "Done" for items where the merge operation has succeeded,
|
joachim99@11
|
1259 and other texts if something unexpected happened. When a merge is complete,
|
joachim99@11
|
1260 then you should make a last check to see if the status for all items is
|
joachim99@11
|
1261 agreeable.
|
joachim99@11
|
1262 </para>
|
joachim99@11
|
1263 </sect2>
|
joachim99@66
|
1264
|
joachim99@66
|
1265 <sect2 id="statisticscolulmns"><title>Statistics Columns</title>
|
joachim99@66
|
1266 <para>
|
joachim99@66
|
1267 When the file comparison mode "Full Analysis" is enabled in the options, then
|
joachim99@66
|
1268 KDiff3 will show extra columns containing the numbers of unsolved, solved, nonwhite and whitespace
|
joachim99@66
|
1269 conflicts. (The solved-column will only show when comparing or merging three directories.)
|
joachim99@66
|
1270 </para>
|
joachim99@66
|
1271 </sect2>
|
joachim99@66
|
1272
|
joachim99@11
|
1273 </sect1>
|
joachim99@11
|
1274
|
joachim99@11
|
1275
|
joachim99@11
|
1276 <sect1 id="dothemerge"><title>Doing A Merge</title>
|
joachim99@11
|
1277 <para>
|
joachim99@51
|
1278 You can either merge the currently selected item (file or directory), or all items.
|
joachim99@11
|
1279 When you have made all your operation choices (in all subdirectories too)
|
joachim99@11
|
1280 then you can start the merge.
|
joachim99@11
|
1281 </para><para>
|
joachim99@11
|
1282 Be aware that if you didn't specify a destination directory explicitely,
|
joachim99@11
|
1283 then the destination will be "C" in three directory mode, "B" in two directory
|
joachim99@11
|
1284 merge mode, and in sync-mode it will be "A" or/and "B".
|
joachim99@11
|
1285 </para><para>
|
joachim99@11
|
1286 If you have specified a destination directory also check that all items
|
joachim99@11
|
1287 that should be in the output, are in the tree. There are some options that
|
joachim99@11
|
1288 cause certain items to be omitted from the directory comparison and merge.
|
joachim99@11
|
1289 Check these options to avoid unpleasant surprises:
|
joachim99@11
|
1290 </para>
|
joachim99@11
|
1291 <itemizedlist>
|
joachim99@11
|
1292 <listitem><para>"Recursive Directories": If this is off, then items in subdirectories
|
joachim99@11
|
1293 will not be found.</para></listitem>
|
joachim99@11
|
1294 <listitem><para>"Pattern"/"Anti-Pattern": Include/exclude items that match</para></listitem>
|
joachim99@11
|
1295 <listitem><para>"Exclude Hidden Files"</para></listitem>
|
joachim99@11
|
1296 <listitem><para>"List only Deltas": Files that match in all directories don't appear
|
joachim99@11
|
1297 in the tree, and hence also not in the destination.</para></listitem>
|
joachim99@11
|
1298 </itemizedlist>
|
joachim99@11
|
1299 <para>
|
joachim99@51
|
1300 (In the current version, you must do a rescan via menu "Directory"->"Rescan"
|
joachim99@51
|
1301 yourself, after changing options affecting the directory scan.)
|
joachim99@11
|
1302 </para><para>
|
joachim99@11
|
1303 If you are satisfied so far, the rest is easy.
|
joachim99@11
|
1304 </para><para>
|
joachim99@51
|
1305 To merge all items: Select "Start/Continue directory merge" in the "Directory"-menu
|
joachim99@51
|
1306 or press F7 (which is the shortcut).
|
joachim99@51
|
1307 To merge only the current item: Select "Run Operation For Current Item"
|
joachim99@51
|
1308 or press F6.
|
joachim99@11
|
1309 </para><para>
|
joachim99@11
|
1310 If due to conflicting filetypes still some items with invalid operations
|
joachim99@11
|
1311 exist, then a messagebox will appear and these items will be pointed out,
|
joachim99@11
|
1312 so you can select a valid operation for the item.
|
joachim99@11
|
1313 </para><para>
|
joachim99@51
|
1314 If you merge all items a dialog will appear giving you the options "Do it", "Simulate
|
joachim99@11
|
1315 it" and "Cancel".
|
joachim99@11
|
1316 </para>
|
joachim99@11
|
1317 <itemizedlist>
|
joachim99@11
|
1318 <listitem><para>Select "Simulate it" if you want to see what would be done without
|
joachim99@11
|
1319 actually doing it. A verbose list of all operations will be shown.</para></listitem>
|
joachim99@11
|
1320 <listitem><para>Otherwise select "Do it" to really start merging.</para></listitem>
|
joachim99@11
|
1321 </itemizedlist>
|
joachim99@11
|
1322 <para>
|
joachim99@11
|
1323 Then KDiff3 will run the specified operation for all items. If manual
|
joachim99@11
|
1324 interaction is required (single file merge), then a merge window will open
|
joachim99@11
|
1325 (<link linkend="dirmergebigscreenshot">see the big screenshot</link>).
|
joachim99@11
|
1326 </para><para>
|
joachim99@11
|
1327 When you have finished with a file, again select "Start/Continue directory
|
joachim99@51
|
1328 merge" or the key F7. If you haven't saved yet, a dialog will ask you to
|
joachim99@11
|
1329 do so. Then KDiff3 will continue with the next item.
|
joachim99@11
|
1330 </para><para>
|
joachim99@11
|
1331 When KDiff3 encounters an error, it will tell you so and will show the
|
joachim99@51
|
1332 verbose-status-information. At the bottom of this list, there will be some
|
joachim99@51
|
1333 error messages which should help you to understand the cause of the problem.
|
joachim99@51
|
1334 When you continue merging (F7 key) KDiff3 will give you the choice to retry
|
joachim99@51
|
1335 or skip the item that caused the problem. This means that before continuing
|
joachim99@51
|
1336 you can choose another operation or solve the problem by other means.
|
joachim99@11
|
1337 </para><para>
|
joachim99@11
|
1338 When the merge is complete, then KDiff3 will inform you via a message
|
joachim99@11
|
1339 box.
|
joachim99@51
|
1340 </para><para>
|
joachim99@51
|
1341 If some items were merged individually then KDiff3 remembers this (while this
|
joachim99@51
|
1342 merge-session goes on), and doesn't merge them again when later the merge for
|
joachim99@51
|
1343 all items is run. Even when the merge was skipped or nothing was saved these
|
joachim99@51
|
1344 items count as completed. Only when you change the merge operation the item
|
joachim99@51
|
1345 will be merged again.
|
joachim99@11
|
1346 </para>
|
joachim99@11
|
1347 </sect1>
|
joachim99@11
|
1348
|
joachim99@11
|
1349 <sect1 id="dirmergeoptions"><title>Options for Comparing and Merging Directories</title>
|
joachim99@11
|
1350 <para>
|
joachim99@11
|
1351 The KDiff3-preferences (menu "Settings"->"Configure KDiff3") now has
|
joachim99@11
|
1352 a section called "Directory Merge" with these options:
|
joachim99@11
|
1353 </para>
|
joachim99@11
|
1354
|
joachim99@11
|
1355 <variablelist>
|
joachim99@11
|
1356 <varlistentry><term><emphasis>Recursive Directories:</emphasis></term><listitem><para> Select whether to search directories
|
joachim99@11
|
1357 recursively.</para></listitem></varlistentry>
|
joachim99@11
|
1358 <varlistentry><term><emphasis>File Pattern(s):</emphasis></term><listitem><para> Only files that match any pattern here will
|
joachim99@11
|
1359 be put in the tree. More than one pattern may be specified here via using
|
joachim99@11
|
1360 the semicolon ";" as separator. Valid wildcards: '*' and '?'. (e.g. "*.cpp;*.h").
|
joachim99@11
|
1361 Default is "*". Directories need not match this pattern.</para></listitem></varlistentry>
|
joachim99@11
|
1362 <varlistentry><term><emphasis>Anti-Pattern(s):</emphasis></term><listitem><para> Files and directories that match this pattern
|
joachim99@11
|
1363 will be excluded from the tree. More than one pattern may be specified here
|
joachim99@11
|
1364 via using the semicolon ";" as separator. Valid wildcards: '*' and '?'. Default
|
joachim99@11
|
1365 is "*.orig;*.o".</para></listitem></varlistentry>
|
joachim99@11
|
1366 <varlistentry><term><emphasis>Use CVS-Ignore:</emphasis></term><listitem><para>
|
joachim99@11
|
1367 Ignore files and directories that would also be ignored by CVS.
|
joachim99@11
|
1368 Many automatically generated files are ignored by CVS.
|
joachim99@11
|
1369 The big advantage is that this can be directory specific via a local ".cvsignore"-file.
|
joachim99@11
|
1370 (See <ulink url="info:/cvs/cvsignore">info:/cvs/cvsignore</ulink>.)</para></listitem></varlistentry>
|
joachim99@11
|
1371 <varlistentry><term><emphasis>Find Hidden Files and Directories:</emphasis></term><listitem><para> On some filesystems files
|
joachim99@11
|
1372 have an "Hidden"-attribute. On other systems a filename starting with a dot
|
joachim99@11
|
1373 "." causes it to be hidden. This option allows you to decide whether to
|
joachim99@11
|
1374 include these files in the tree or not. Default is on.</para></listitem></varlistentry>
|
joachim99@11
|
1375 <varlistentry><term><emphasis>Follow File Links:</emphasis></term><listitem><para> For links to files: When disabled, then
|
joachim99@11
|
1376 the symbolic links are compared. When enabled, then the files behind the
|
joachim99@11
|
1377 links are compared. Default is off.</para></listitem></varlistentry>
|
joachim99@11
|
1378 <varlistentry><term><emphasis>Follow Directory Links:</emphasis></term><listitem><para> For links to directories: When disabled,
|
joachim99@11
|
1379 then the symbolic links will be compared. When enabled then the link will
|
joachim99@11
|
1380 be treated like a directory and it will be scanned recursively. (Note that
|
joachim99@11
|
1381 the program doesn't check if the link is "recursive". So for example a directory
|
joachim99@11
|
1382 that contains a link to the directory would cause an infinite loop, and after
|
joachim99@11
|
1383 some time when the stack overflows or all memory is used up, crash the program.)
|
joachim99@66
|
1384 Default is off.</para></listitem></varlistentry>
|
joachim99@11
|
1385 <varlistentry><term><emphasis>List only deltas:</emphasis></term><listitem><para> Only items that are not equal in all input
|
joachim99@11
|
1386 directories will be listed and only the changed files are visible. Hence
|
joachim99@11
|
1387 files that are equal in all directories won't be copied during a merge and
|
joachim99@11
|
1388 if the destination dir does not contain the files before the merge, you might
|
joachim99@11
|
1389 miss some files later. (This option is likely to be changed in a later version.)
|
joachim99@11
|
1390 Default is off.</para></listitem></varlistentry>
|
joachim99@66
|
1391
|
joachim99@66
|
1392 <varlistentry><term><emphasis>File Comparison Mode:</emphasis></term><listitem><para>
|
joachim99@66
|
1393 <variablelist>
|
joachim99@66
|
1394 <varlistentry><term><emphasis>Binary Comparison:</emphasis></term><listitem><para>
|
joachim99@66
|
1395 This is the default file comparison mode.
|
joachim99@66
|
1396 </para></listitem></varlistentry>
|
joachim99@66
|
1397 <varlistentry><term><emphasis>Full Analysis:</emphasis></term><listitem><para>
|
joachim99@66
|
1398 Do a full analysis of each file and show the statistics information columns.
|
joachim99@66
|
1399 (Number of solved, unsolved, nonwhite and white conflicts.)
|
joachim99@66
|
1400 The full analysis is slower than a simple binary analysis, and much
|
joachim99@66
|
1401 slower when used on files that don't contain text.
|
joachim99@66
|
1402 (Specify the appropriate file-antipatterns.)
|
joachim99@66
|
1403 </para></listitem></varlistentry>
|
joachim99@11
|
1404 <varlistentry><term><emphasis>Trust the modification date:</emphasis></term><listitem><para> If you compare big directories
|
joachim99@11
|
1405 over a slow network, it might be faster to compare the modification dates
|
joachim99@11
|
1406 and file length alone. But this speed improvement comes with the price of
|
joachim99@11
|
1407 a little uncertainty. Use this option with care. Default is off.</para></listitem></varlistentry>
|
joachim99@51
|
1408 <varlistentry><term><emphasis>Trust the size:</emphasis></term><listitem><para>
|
joachim99@51
|
1409 Similar to trusting the modification date. No real comparison happens. Two
|
joachim99@51
|
1410 files are considered equal if their file-sizes are equal. This is useful
|
joachim99@51
|
1411 when the file-copy operation didn't preserve the modification date.
|
joachim99@51
|
1412 Use this option with care. Default is off.</para></listitem></varlistentry>
|
joachim99@66
|
1413 </variablelist></para></listitem></varlistentry>
|
joachim99@66
|
1414
|
joachim99@11
|
1415 <varlistentry><term><emphasis>Synchronize Directories:</emphasis></term><listitem><para> Activates "Sync-Mode" when two directories
|
joachim99@11
|
1416 are compared and no explicit destination directory was specified. In this
|
joachim99@11
|
1417 mode the proposed operations will be chosen so that both source directories
|
joachim99@11
|
1418 are equal afterwards. Also the merge result will be written to both directories.
|
joachim99@11
|
1419 Default is off.</para></listitem></varlistentry>
|
joachim99@11
|
1420 <varlistentry><term><emphasis>Copy newer instead of merging:</emphasis></term><listitem><para> Instead of merging the proposed
|
joachim99@11
|
1421 operation will copy the newer source if changes happened. (Considered unsafe,
|
joachim99@11
|
1422 because it implies that the knowledge, that the other file hasn't been edited
|
joachim99@11
|
1423 too. Check to make sure in every case.) Default is off.</para></listitem></varlistentry>
|
joachim99@11
|
1424 <varlistentry><term><emphasis>Backup files:</emphasis></term><listitem><para> If a file or complete directory is replaced
|
joachim99@11
|
1425 by another or is deleted then the original version will be renamed with an
|
joachim99@11
|
1426 ".orig" extension. If an old backup file with ".orig" extension already exists
|
joachim99@11
|
1427 then this will be deleted without backup. This also affects the normal merging
|
joachim99@11
|
1428 of single files, not only in directory-merge mode. Default is on.</para></listitem></varlistentry>
|
joachim99@11
|
1429 </variablelist>
|
joachim99@11
|
1430 </sect1>
|
joachim99@11
|
1431
|
joachim99@11
|
1432 <sect1 id="other"><title>Other Functions</title>
|
joachim99@11
|
1433 <sect2><title>Split/Full Screen Mode</title>
|
joachim99@11
|
1434 <para>
|
joachim99@11
|
1435 Usually the directory merge list view remains visible while a single file
|
joachim99@11
|
1436 is compared or merged. With the mouse you can move the the splitter bar that
|
joachim99@11
|
1437 separates the file list from the text-diff windows. If you don't want this,
|
joachim99@11
|
1438 you can disable "Split Screen View" in the "Directory"-menu. Then you can
|
joachim99@11
|
1439 use "Toggle View" in the "Directory"-menu to switch between the file list
|
joachim99@11
|
1440 and the text-diff view that then occupy the full screen.
|
joachim99@11
|
1441 </para>
|
joachim99@11
|
1442 </sect2>
|
joachim99@11
|
1443 <sect2><title>Comparing or Merging a Single File</title>
|
joachim99@11
|
1444 <para>
|
joachim99@11
|
1445 Probably you will prefer a simple double mouse click on a file in order
|
joachim99@11
|
1446 to compare it. Nevertheless there also exists an entry in the "Directory"-menu.
|
joachim99@11
|
1447 You can also directly merge a single file, without starting the directory
|
joachim99@11
|
1448 merge via the "Merge single file" in the "Directory"-Menu. On saving the
|
joachim99@11
|
1449 result, the status will be set to done, and the file will not be merged again
|
joachim99@11
|
1450 if a directory merge is started.
|
joachim99@11
|
1451 </para><para>
|
joachim99@11
|
1452 But note that this status information will be lost when you rerun a directory
|
joachim99@11
|
1453 scan: "Directory"-menu: "Rescan"
|
joachim99@11
|
1454 </para>
|
joachim99@11
|
1455 </sect2>
|
joachim99@11
|
1456 </sect1>
|
joachim99@11
|
1457 </chapter>
|
joachim99@11
|
1458
|
joachim99@11
|
1459 <chapter id="misc">
|
joachim99@11
|
1460 <title>Miscellaneous Topics</title>
|
joachim99@11
|
1461 <sect1 id="networktransparency">
|
joachim99@11
|
1462 <title>Networktransparency via KIO</title>
|
joachim99@11
|
1463 <sect2><title>KIO-Slaves</title>
|
joachim99@11
|
1464 <para>
|
joachim99@11
|
1465 KDE supports networktransparency via KIO-slaves. KDiff3 uses this
|
joachim99@11
|
1466 for reading input files and for scanning directories.
|
joachim99@11
|
1467 This means that you can specify files and directories on local and
|
joachim99@11
|
1468 remote ressources via URLs.
|
joachim99@11
|
1469 </para><para>
|
joachim99@11
|
1470 Example:
|
joachim99@11
|
1471 </para><para>
|
joachim99@11
|
1472 <screen>
|
joachim99@11
|
1473 <command>kdiff3</command> test.cpp ftp://ftp.faraway.org/test.cpp
|
joachim99@11
|
1474 <command>kdiff3</command> tar:/home/hacker/archive.tar.gz/dir ./dir
|
joachim99@11
|
1475 </screen>
|
joachim99@11
|
1476 </para>
|
joachim99@11
|
1477 <para>The first line compares a local file with a file on an FTP-server. The second line
|
joachim99@11
|
1478 compares a directory within an compressed archive with a local directory.
|
joachim99@11
|
1479 </para><para>
|
joachim99@11
|
1480 Other KIO-slaves that are interesting are:
|
joachim99@11
|
1481 </para>
|
joachim99@11
|
1482 <itemizedlist>
|
joachim99@11
|
1483 <listitem><para>Files from the WWW (http:),</para></listitem>
|
joachim99@11
|
1484 <listitem><para>Files from the FTP (ftp:),</para></listitem>
|
joachim99@11
|
1485 <listitem><para>Encrypted file transfer (fish:, sftp:),</para></listitem>
|
joachim99@11
|
1486 <listitem><para>Windows-ressources (smb:),</para></listitem>
|
joachim99@11
|
1487 <listitem><para>Local files (file:),</para></listitem>
|
joachim99@11
|
1488 </itemizedlist>
|
joachim99@11
|
1489 <para>
|
joachim99@11
|
1490 Other things that are possible, but probably less useful are:
|
joachim99@11
|
1491 </para>
|
joachim99@11
|
1492 <itemizedlist>
|
joachim99@11
|
1493 <listitem><para>Man-pages (man:),</para></listitem>
|
joachim99@11
|
1494 <listitem><para>Info-pages (info:),</para></listitem>
|
joachim99@11
|
1495 </itemizedlist>
|
joachim99@11
|
1496 </sect2>
|
joachim99@11
|
1497
|
joachim99@11
|
1498 <sect2><title>How To Write URLs</title>
|
joachim99@11
|
1499 <para>
|
joachim99@11
|
1500 An URL has a different syntax compared with paths for local files and directories.
|
joachim99@11
|
1501 Some things should be considered:
|
joachim99@11
|
1502 </para>
|
joachim99@11
|
1503 <itemizedlist>
|
joachim99@11
|
1504 <listitem><para>
|
joachim99@51
|
1505 A path can be relative and can contain "." or "..". This is not possible for URLs
|
joachim99@51
|
1506 which are always absolute.
|
joachim99@11
|
1507 </para></listitem><listitem><para>
|
joachim99@11
|
1508 Special characters must be written with "escaping". ("#"->"%23", space->"%20", etc.)
|
joachim99@11
|
1509 E.g. A file with the name "/#foo#" would have the URL "file:/%23foo%23".
|
joachim99@11
|
1510 </para></listitem><listitem><para>
|
joachim99@11
|
1511 When URLs don't work as expected, try to open them in Konqueror first.
|
joachim99@11
|
1512 </para></listitem>
|
joachim99@11
|
1513 </itemizedlist>
|
joachim99@11
|
1514
|
joachim99@11
|
1515 </sect2>
|
joachim99@11
|
1516
|
joachim99@11
|
1517 <sect2><title>Capabilities of KIO-Slaves</title>
|
joachim99@11
|
1518 <para>
|
joachim99@11
|
1519 Networktransparency has one drawback: Not all ressources have the same cababilities.
|
joachim99@11
|
1520 </para><para>
|
joachim99@11
|
1521 Sometimes this is due to the filesystem of the server, sometimes due to the protocol.
|
joachim99@11
|
1522 Here is a short list of restrictions:
|
joachim99@11
|
1523 </para>
|
joachim99@11
|
1524 <itemizedlist>
|
joachim99@11
|
1525 <listitem><para>
|
joachim99@11
|
1526 Sometimes there is no support for links.
|
joachim99@11
|
1527 </para></listitem><listitem><para>
|
joachim99@51
|
1528 Or there is no way to distinguish if a link points to a file or a directory; always
|
joachim99@51
|
1529 assuming a file. (ftp:, sftp:).
|
joachim99@11
|
1530 </para></listitem><listitem><para>
|
joachim99@11
|
1531 Can't always determine the filesize.
|
joachim99@11
|
1532 </para></listitem><listitem><para>
|
joachim99@11
|
1533 Limited support for permissions.
|
joachim99@11
|
1534 </para></listitem><listitem><para>
|
joachim99@51
|
1535 No possibility to modify permissions or modification time, so permissions or time
|
joachim99@51
|
1536 of a copy will differ from the original. (See the option "Trust the size".)
|
joachim99@68
|
1537 (To modify permissions or modification time is only possible for local files.)
|
joachim99@11
|
1538 </para></listitem>
|
joachim99@11
|
1539 </itemizedlist>
|
joachim99@11
|
1540 </sect2>
|
joachim99@11
|
1541 </sect1>
|
joachim99@11
|
1542
|
joachim99@11
|
1543 <sect1 id="kpart">
|
joachim99@11
|
1544 <title>Using &kdiff3; as a KPart</title>
|
joachim99@11
|
1545 <para>
|
joachim99@11
|
1546 &kdiff3; is a KPart. Currently it implements the KParts::ReadOnlyPart-interface.
|
joachim99@11
|
1547 </para><para>
|
joachim99@11
|
1548 It's main use is as difference-viewer in KDevelop. KDevelop always starts the
|
joachim99@11
|
1549 internal difference viewer first. To invoke KDiff3 press the right mouse button
|
joachim99@11
|
1550 on the difference viewer window and select "Show in KDiff3Part" from the contextmenu.
|
joachim99@11
|
1551 </para><para>
|
joachim99@11
|
1552 KDiff3 normally requires two complete files as input. When used as part KDiff3
|
joachim99@11
|
1553 will assume that the inputfile is a patch-file in the unified format. KDiff3
|
joachim99@11
|
1554 then retrieves the original filenames from the patch-file. At least one of
|
joachim99@11
|
1555 the two files must be available. KDiff3 will then invoke <command>patch</command> to
|
joachim99@11
|
1556 recreate the second file.
|
joachim99@11
|
1557 </para><para>
|
joachim99@11
|
1558 In Konqueror you can select a patch-file and select "Preview in"-"KDiff3Part" from
|
joachim99@11
|
1559 the contextmenu. Be aware that this won't work if none of the original files are
|
joachim99@11
|
1560 available, and it is not reliable if the original file(s) have changed since the
|
joachim99@11
|
1561 patch-file was generated.
|
joachim99@11
|
1562 </para><para>
|
joachim99@11
|
1563 When run as a part KDiff3 only provides the a two-file-diff, a very small toolbar
|
joachim99@11
|
1564 and menu. Merging or directory-comparison are not supported then.
|
joachim99@11
|
1565 </para>
|
joachim99@11
|
1566 </sect1>
|
joachim99@11
|
1567 </chapter>
|
joachim99@11
|
1568
|
joachim99@11
|
1569 <chapter id="faq">
|
joachim99@11
|
1570 <title>Questions and Answers</title>
|
joachim99@11
|
1571
|
joachim99@11
|
1572 &reporting.bugs;
|
joachim99@11
|
1573 &updating.documentation;
|
joachim99@11
|
1574
|
joachim99@11
|
1575 <qandaset id="faqlist">
|
joachim99@11
|
1576
|
joachim99@11
|
1577 <qandaentry><question><para>
|
joachim99@11
|
1578 Why is it called "KDiff3"?
|
joachim99@11
|
1579 </para></question><answer><para>
|
joachim99@11
|
1580 Tools named "KDiff" and "KDiff2" (now called "Kompare") already exist. Also "KDiff3" should suggest
|
joachim99@11
|
1581 that it can merge like the "diff3"-tool in the Diff-Tool collection.
|
joachim99@11
|
1582 </para></answer></qandaentry>
|
joachim99@11
|
1583
|
joachim99@11
|
1584 <qandaentry><question><para>
|
joachim99@11
|
1585 Why did I release it under GPL?
|
joachim99@11
|
1586 </para></question><answer><para>
|
joachim99@11
|
1587 I'm using GPL programs for a very long time now and learned very much
|
joachim99@11
|
1588 by having a look at many of the sources. Hence this is my "Thank You"
|
joachim99@11
|
1589 to all programmers that also did so or will do the same.
|
joachim99@11
|
1590 </para></answer></qandaentry>
|
joachim99@11
|
1591
|
joachim99@11
|
1592 <qandaentry><question><para>
|
joachim99@11
|
1593 Some buttons and functions are missing. What's wrong?
|
joachim99@11
|
1594 </para></question><answer><para>
|
joachim99@11
|
1595 You compiled from source but you probably didn't specify the correct KDE-prefix
|
joachim99@11
|
1596 with configure. By default configure wants to install in /usr/local but then KDE can't
|
joachim99@11
|
1597 find the user-interface ressource file (i.e. kdiff3ui.rc). The README-file contains
|
joachim99@11
|
1598 more information about the correct prefix.
|
joachim99@11
|
1599 </para></answer></qandaentry>
|
joachim99@11
|
1600
|
joachim99@11
|
1601 <qandaentry><question><para>
|
joachim99@11
|
1602 Often lines that are similar but not identical appear next to each other
|
joachim99@11
|
1603 but sometimes not. Why?
|
joachim99@11
|
1604 </para></question><answer><para>
|
joachim99@11
|
1605 Lines where only the amount of white space characters is different
|
joachim99@11
|
1606 are treated as "equal" at first, while just one different non-white character
|
joachim99@11
|
1607 causes the lines to be "different". If similar lines appear next to each
|
joachim99@11
|
1608 other, this actually is coincidence but this fortunately is often the case.
|
joachim99@11
|
1609 </para></answer></qandaentry>
|
joachim99@11
|
1610
|
joachim99@11
|
1611 <qandaentry><question><para>
|
joachim99@11
|
1612 Why must all conflicts be solved before the merge result can be saved?
|
joachim99@11
|
1613 </para></question><answer><para>
|
joachim99@11
|
1614 For each equal or different section the editor in the merge result
|
joachim99@11
|
1615 window remembers where it begins or ends. This is needed so that conflicts
|
joachim99@11
|
1616 can be solved manually by simply selecting the source button (A, B or C).
|
joachim99@11
|
1617 This information is lost while saving as text and it is too much effort to
|
joachim99@11
|
1618 create a special file format that supports saving and restoring all necessary
|
joachim99@11
|
1619 information.
|
joachim99@11
|
1620 </para></answer></qandaentry>
|
joachim99@11
|
1621
|
joachim99@11
|
1622 <qandaentry><question><para>
|
joachim99@11
|
1623 Why does the editor in the merge result window not have an "undo"-function?
|
joachim99@11
|
1624 </para></question><answer><para>
|
joachim99@11
|
1625 This was too much effort until now. You can always
|
joachim99@11
|
1626 restore a version from one source (A, B or C) by clicking the respective
|
joachim99@11
|
1627 button. For big editing the use of another editor is recommended anyway.
|
joachim99@11
|
1628 </para></answer></qandaentry>
|
joachim99@11
|
1629
|
joachim99@11
|
1630 <qandaentry><question><para>
|
joachim99@11
|
1631 When I removed some text, then suddenly "<No src line>" appeared
|
joachim99@11
|
1632 and can't be deleted. What does that mean and how can one remove this?
|
joachim99@11
|
1633 </para></question><answer><para>
|
joachim99@11
|
1634 For each equal or different section the editor in the merge result
|
joachim99@11
|
1635 window remembers where it begins or ends. "<No src line>" means
|
joachim99@11
|
1636 that there is nothing left in a section, not even a new line character.
|
joachim99@11
|
1637 This can happen either while merging automatically or by editing. This is
|
joachim99@11
|
1638 no problem, since this hint won't appear in the saved file. If you want
|
joachim99@11
|
1639 the orignal source back just select the section (click on the left summary
|
joachim99@11
|
1640 column) and then click the source button with the needed contents (A/B or
|
joachim99@11
|
1641 C).
|
joachim99@11
|
1642 </para></answer></qandaentry>
|
joachim99@11
|
1643
|
joachim99@11
|
1644 <qandaentry><question><para>
|
joachim99@11
|
1645 Why doesn't KDiff3 support syntax-highlighting?
|
joachim99@11
|
1646 </para></question><answer><para>
|
joachim99@11
|
1647 KDiff3 already uses many colors for difference highlighting. More
|
joachim99@11
|
1648 highlighting would be confusing. Use another editor for this.
|
joachim99@11
|
1649 </para></answer></qandaentry>
|
joachim99@11
|
1650
|
joachim99@11
|
1651 <qandaentry><question><para>
|
joachim99@11
|
1652 There is so much information here, but your question is still not answered?
|
joachim99@11
|
1653 </para></question><answer><para>
|
joachim99@11
|
1654 Please send me your question. I appreciate every comment.
|
joachim99@11
|
1655 </para></answer></qandaentry>
|
joachim99@11
|
1656
|
joachim99@11
|
1657 </qandaset>
|
joachim99@11
|
1658 </chapter>
|
joachim99@11
|
1659
|
joachim99@11
|
1660 <chapter id="credits">
|
joachim99@11
|
1661
|
joachim99@11
|
1662 <title>Credits and License</title>
|
joachim99@11
|
1663
|
joachim99@11
|
1664 <para>
|
joachim99@11
|
1665 &kdiff3; - File and Directory Comparison and Merge Tool
|
joachim99@11
|
1666 </para>
|
joachim99@11
|
1667 <para>
|
joachim99@68
|
1668 Program copyright 2002-2005 Joachim Eibl <email>joachim.eibl at gmx.de</email>
|
joachim99@11
|
1669 </para>
|
joachim99@11
|
1670 <para>
|
joachim99@11
|
1671 Several cool ideas and bugreports came from colleagues and many people out in the Wild Wild Web. Thank you!
|
joachim99@11
|
1672 </para>
|
joachim99@11
|
1673
|
joachim99@11
|
1674 <para>
|
joachim99@68
|
1675 Documentation Copyright © 2002-2005 Joachim Eibl <email>joachim.eibl at gmx.de</email>
|
joachim99@11
|
1676 </para>
|
joachim99@11
|
1677
|
joachim99@11
|
1678 <!-- TRANS:CREDIT_FOR_TRANSLATORS -->
|
joachim99@11
|
1679
|
joachim99@11
|
1680 &underFDL; <!-- FDL: do not remove -->
|
joachim99@11
|
1681
|
joachim99@11
|
1682
|
joachim99@11
|
1683 &underGPL; <!-- GPL License -->
|
joachim99@11
|
1684
|
joachim99@11
|
1685 </chapter>
|
joachim99@11
|
1686
|
joachim99@11
|
1687 <appendix id="installation">
|
joachim99@11
|
1688 <title>Installation</title>
|
joachim99@11
|
1689
|
joachim99@11
|
1690 <sect1 id="getting-kdiff3">
|
joachim99@11
|
1691 <title>How to obtain &kdiff3;</title>
|
joachim99@11
|
1692
|
joachim99@11
|
1693 <para>
|
joachim99@11
|
1694 You can download the latest version of KDiff3 from its homepage <ulink url="http://kdiff3.sourceforge.net">http://kdiff3.sourceforge.net</ulink>.
|
joachim99@11
|
1695 </para><para>
|
joachim99@11
|
1696 KDiff3 is also available for other platforms. See the homepage for details.
|
joachim99@11
|
1697 </para>
|
joachim99@11
|
1698
|
joachim99@11
|
1699
|
joachim99@11
|
1700 </sect1>
|
joachim99@11
|
1701
|
joachim99@11
|
1702 <sect1 id="requirements">
|
joachim99@11
|
1703 <title>Requirements</title>
|
joachim99@11
|
1704
|
joachim99@11
|
1705 <para>
|
joachim99@66
|
1706 In order to successfully use all features of &kdiff3;, you need &kde; >3.1.
|
joachim99@11
|
1707 </para><para>
|
joachim99@11
|
1708 For information about how to run KDiff3 on other platforms without KDE please see the
|
joachim99@11
|
1709 <ulink url="http://kdiff3.sourceforge.net">homepage</ulink>.
|
joachim99@11
|
1710 </para><para>
|
joachim99@11
|
1711 You can find a list of changes at <ulink
|
joachim99@11
|
1712 url="http://kdiff3.sourceforge.net/ChangeLog">http://kdiff3.sourceforge.net/ChangeLog</ulink>
|
joachim99@11
|
1713 or in the "ChangeLog"-file of the source package.
|
joachim99@11
|
1714 </para>
|
joachim99@11
|
1715 </sect1>
|
joachim99@11
|
1716
|
joachim99@11
|
1717 <sect1 id="compilation">
|
joachim99@11
|
1718 <title>Compilation and Installation</title>
|
joachim99@11
|
1719
|
joachim99@11
|
1720 <para>In order to compile and install &kdiff3; on a system with KDE, type the
|
joachim99@11
|
1721 following in the base directory of the &kdiff3; distribution:</para>
|
joachim99@11
|
1722
|
joachim99@11
|
1723 <screen><prompt>%</prompt> <userinput><command>./configure --prefix=<replaceable>kde-dir</replaceable></command></userinput>
|
joachim99@11
|
1724 <prompt>%</prompt> <userinput><command>make</command></userinput>
|
joachim99@11
|
1725 <prompt>%</prompt> <userinput><command>make</command> install</userinput>
|
joachim99@11
|
1726 </screen>
|
joachim99@11
|
1727 <para>
|
joachim99@11
|
1728 <replaceable>kde-dir</replaceable> specifies the directory
|
joachim99@11
|
1729 containing KDE on your system. If you are not sure, read the README-file for details.
|
joachim99@11
|
1730 </para>
|
joachim99@11
|
1731 <para>Since &kdiff3; uses <command>autoconf</command> and
|
joachim99@11
|
1732 <command>automake</command> you should have no trouble compiling it. Should you
|
joachim99@11
|
1733 run into problems please report them to the &kde; mailing lists.</para>
|
joachim99@11
|
1734
|
joachim99@11
|
1735 </sect1>
|
joachim99@11
|
1736
|
joachim99@11
|
1737 </appendix>
|
joachim99@11
|
1738
|
joachim99@11
|
1739 &documentation.index;
|
joachim99@11
|
1740 </book>
|
joachim99@11
|
1741
|
joachim99@11
|
1742 <!--
|
joachim99@11
|
1743 Local Variables:
|
joachim99@11
|
1744 mode: sgml
|
joachim99@11
|
1745 sgml-minimize-attributes:nil
|
joachim99@11
|
1746 sgml-general-insert-case:lower
|
joachim99@11
|
1747 sgml-indent-step:0
|
joachim99@11
|
1748 sgml-indent-data:nil
|
joachim99@11
|
1749 End:
|
joachim99@11
|
1750
|
joachim99@11
|
1751 vim:tabstop=2:shiftwidth=2:expandtab
|
joachim99@11
|
1752 -->
|