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