1 | <?xml version="1.0" encoding="UTF-8"?> |
1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <article id="CompareFiles"> |
2 | <article id="CompareFiles"> |
.3 | <title>Comparing Files</title> |
3 | <title>Comparing and merging files<indexterm> |
| |
4 | <primary>comparing files</primary> |
| |
5 | </indexterm></title> |
| |
6 | |
| |
7 | <para>This topic describes how to use the WinMerge File Compare window to |
| |
8 | compare and merge files. To understand the basic concepts about differences |
| |
9 | used here, we suggest you read read <xref linkend="IntroductDiffing" /> |
| |
10 | first.</para> |
| |
11 | |
| |
12 | <section id="Compare_files_starting"> |
| |
13 | <title>Starting a file compare operation</title> |
| |
14 | |
| |
15 | <para>You can start a file compare operation from either the WinMerge window |
| |
16 | or a Command Prompt window.</para> |
| |
17 | |
| |
18 | <variablelist> |
| |
19 | <varlistentry> |
| |
20 | <term>From the WinMerge window</term> |
4 | |
21 | |
.5 | <para>File compare window is basically two files opened to editor into two |
22 | <listitem> |
6 | horizontal panes. The editor allows user to do a basic file editing inside |
23 | <para>Click <menuchoice> |
7 | WinMerge without needing to open files to external editor program or |
24 | <guimenu>File</guimenu> |
8 | development environment.</para> |
25 | |
9 | |
26 | <guimenuitem>Open</guimenuitem> |
10 | <mediaobject> |
27 | </menuchoice>. Use the Select Files or Folders dialog to specify the |
11 | <imageobject> |
28 | left and right source files to compare. For more details about the |
12 | <imagedata fileref="screenshots/filecomp1.png" format="PNG" /> |
29 | Select Files or Folder dialog, see <xref |
13 | </imageobject> |
30 | linkend="OpenPaths" />.</para> |
14 | |
31 | </listitem> |
15 | <caption><para>File Compare Window</para></caption> |
32 | </varlistentry> |
16 | </mediaobject> |
| |
17 | |
| |
18 | <para>WinMerge editor is not comparable to specialized editor programs, but it |
| |
19 | has basic features like <guilabel>Undo</guilabel>/<guilabel>Redo</guilabel>, |
| |
20 | <guilabel>Find</guilabel>/<guilabel>Replace</guilabel> and |
| |
21 | <guilabel>Goto</guilabel> (to linenumber). The editor also has a syntax |
| |
22 | highlighting feature supporting several file formats (colors configurable). |
| |
23 | Note however WinMerge does not syntax highlight text inside differences. |
| |
24 | Syntax highlighting can be disabled from options.</para> |
| |
25 | |
| |
26 | <tip> |
| |
27 | <para>If <guilabel>Automatic rescan</guilabel> is not enabled manual refresh |
| |
28 | is recommended after editing.</para> |
| |
29 | </tip> |
| |
30 | |
| |
31 | <section> |
| |
32 | <title>Showing the Differences</title> |
| |
33 | |
| |
34 | <para>WinMerge uses different (user configurable) colors to highlight and |
| |
35 | select differences. By default WinMerge shows different lines with yellow |
| |
36 | background and missing lines with gray background. If user selects the |
| |
37 | difference, it is shown with red background and missing lines with milder |
| |
38 | red.</para> |
| |
39 | </section> |
| |
40 | |
33 | |
.41 | <section> |
34 | <varlistentry> |
42 | <title>Tabs</title> |
35 | <term>From a Command Prompt window</term> |
43 | |
36 | |
.44 | <para>WinMerge can show open windows in tab bar below toolbar. Tab bar can |
37 | <listitem> |
45 | be shown and hidden from menu <menuchoice> |
38 | <para>Run <command>WinMergeU.exe</command>, which is in your WinMerge |
46 | <guimenu>View</guimenu> |
39 | install directory. In your command arguments, include the left and |
47 | |
40 | right files to compare. For more information about using the command |
48 | <guimenuitem>Tab Bar</guimenuitem> |
41 | line, see <xref linkend="CommandLine" />.</para> |
49 | </menuchoice>. When the tab bar is shown it has one tab for every open |
42 | </listitem> |
50 | window. The tab contains last part of the folder names or file names.</para> |
43 | </varlistentry> |
| |
44 | </variablelist> |
51 | </section> |
45 | </section> |
52 | |
46 | |
.53 | <section> |
47 | <section id="Compare_files_window"> |
54 | <title>File Headerbar</title> |
48 | <title>File Compare window<indexterm> |
| |
49 | <primary>File Compare window</primary> |
| |
50 | </indexterm></title> |
| |
51 | |
| |
52 | <para>The File Compare window displays compared files in two File panes, |
| |
53 | side by side. The WinMerge toolbar and context menu provides functions for |
| |
54 | viewing, navigating, and merging differences. The screen shot below shows a |
| |
55 | comparison of two versions of a file.</para> |
55 | |
56 | |
.56 | <para>The file headerbar has several functionalities. See screenshot |
57 | <mediaobject> |
57 | below:</para> |
58 | <imageobject> |
| |
59 | <imagedata contentwidth="600" fileref="screenshots/filecomp1.png" |
| |
60 | format="PNG" /> |
| |
61 | </imageobject> |
58 | |
62 | |
.59 | <para><inlinemediaobject> |
63 | <textobject> |
60 | <imageobject> |
64 | <phrase>File Compare Window</phrase> |
61 | <imagedata fileref="screenshots/file_headerbar1.png" format="PNG" /> |
65 | </textobject> |
62 | </imageobject> |
66 | </mediaobject> |
63 | </inlinemediaobject></para> |
| |
64 | |
67 | |
.65 | <para>Headerbar shows full path to the open file. If the path is longer than |
68 | <section> |
66 | available space one part of the path is replaced with an ellipsis (...). |
69 | <title>File panes<indexterm> |
67 | Headerbar also shows:<itemizedlist> |
70 | <primary>File panes</primary> |
68 | <listitem> |
71 | </indexterm></title> |
69 | <simpara>the current active file with sunken border (like in the above |
72 | |
70 | screenshot), the non-active file is shown with flat |
73 | <para>The left and right File panes show the text contents and differences |
71 | headerbar.</simpara> |
74 | of the two files being compared. The File panes are the main area for |
72 | </listitem> |
75 | navigating and merging differences, and also allow you to edit the text |
| |
76 | directly. This section describes the features that support these actions, |
| |
77 | and ways that you can customize the File panes.</para> |
| |
78 | |
| |
79 | <section> |
| |
80 | <title>File pane header</title> |
| |
81 | |
| |
82 | <para>The header at the top of each File pane shows the full path of the |
| |
83 | source file. The left and right file names are also identified in the |
| |
84 | header of the Compare Window, above the File panes.</para> |
| |
85 | |
| |
86 | <para>One of the File panes is always active (indicated by the dark |
| |
87 | header background); the other is inactive and has a lighter header bar. |
| |
88 | You can edit only in the active pane (as described in <xref |
| |
89 | linkend="CompareFiles_editing" />). Click in either side to make it |
| |
90 | active and make the other side inactive.</para> |
| |
91 | |
| |
92 | <para>An asterisk (*) before the filename in the header indicates that |
| |
93 | there are unsaved changes in the file.</para> |
| |
94 | |
| |
95 | <para>The header bar's context menu has shortcuts that are useful for |
| |
96 | copying and pasting file information:</para> |
| |
97 | |
| |
98 | <variablelist> |
| |
99 | <varlistentry> |
| |
100 | <term>Copy Full Path<indexterm> |
| |
101 | <primary>Copy Full Path function</primary> |
| |
102 | </indexterm></term> |
| |
103 | |
| |
104 | <listitem> |
| |
105 | <para>Copies the full path of the source file into the system |
| |
106 | clipboard.</para> |
| |
107 | </listitem> |
| |
108 | </varlistentry> |
| |
109 | |
| |
110 | <varlistentry> |
| |
111 | <term>Copy Filename<indexterm> |
| |
112 | <primary>Copy Filename function</primary> |
| |
113 | </indexterm></term> |
| |
114 | |
| |
115 | <listitem> |
| |
116 | <para>Copies just the source filename into the system |
| |
117 | clipboard.</para> |
| |
118 | </listitem> |
| |
119 | </varlistentry> |
| |
120 | </variablelist> |
| |
121 | </section> |
| |
122 | |
| |
123 | <section> |
| |
124 | <title>Difference colors in File panes<indexterm> |
| |
125 | <primary>difference colors</primary> |
| |
126 | |
| |
127 | <secondary>in File panes</secondary> |
| |
128 | </indexterm></title> |
| |
129 | |
| |
130 | <para>Unless your files are identical, the content of the File panes |
| |
131 | includes some differences. Difference blocks are marked with background |
| |
132 | colors, which you can configure in WinMerge options. The basic |
| |
133 | difference color is dark yellow, by default. When selected, the |
| |
134 | difference color is red. Identical lines (like the second line in the |
| |
135 | preceding screen shot) have white backgrounds.</para> |
| |
136 | |
| |
137 | <para>WinMerge inserts one or more gray blank lines in one version of a |
| |
138 | difference when the other version has more lines. These empty lines |
| |
139 | (which change from gray to light red when the difference is selected) do |
| |
140 | not represent blank lines in the source file; they are only placeholders |
| |
141 | in the display. The purpose of placeholder lines is to keep the left and |
| |
142 | right versions of differences vertically aligned.</para> |
| |
143 | |
| |
144 | <para>By default, different words within difference lines are also |
| |
145 | marked with a background color. You can disable this coloring, or (for |
| |
146 | even more granular highlighting) add character-level difference |
| |
147 | coloring. Both are controlled by the Line Difference Coloring settings |
| |
148 | in the Editing page of WinMerge options. To change the various |
| |
149 | difference colors used, edit the values in the Colors page of WinMerge |
| |
150 | options.</para> |
| |
151 | </section> |
| |
152 | |
| |
153 | <section id="CompareFiles_editing"> |
| |
154 | <title>File pane editing features<indexterm> |
| |
155 | <primary>editing</primary> |
| |
156 | |
| |
157 | <secondary>features in File Compare window</secondary> |
| |
158 | </indexterm></title> |
| |
159 | |
| |
160 | <para>Although WinMerge is a not a full-featured editor or IDE, it does |
| |
161 | provide basic editing functions, like <guilabel>Undo</guilabel> and |
| |
162 | <guilabel>Redo</guilabel>, <guilabel>Find</guilabel> and |
| |
163 | <guilabel>Replace</guilabel>, and <guilabel>Goto</guilabel>. These basic |
| |
164 | editing tasks are often needed during merging (for example, to change |
| |
165 | text within differences). You can edit in the active File pane |
| |
166 | (remember, click in a pane to make it active). Changes are not written |
| |
167 | to a file until you save a pane to a result file.</para> |
| |
168 | |
| |
169 | <para>WinMerge editing features also include syntax highlighting. This |
| |
170 | optional feature supports several file formats, and you can configure |
| |
171 | the colors used. Note that syntax highlighting is not applied within |
| |
172 | differences, as the preceding screen shot shows.</para> |
| |
173 | |
| |
174 | <tip> |
| |
175 | <para>Make sure that <guilabel>Automatic rescan</guilabel> is enabled, |
| |
176 | as described in <xref linkend="Compare_files_scan" />. If it is not, |
| |
177 | manually refresh your view (press F5) before and after editing a file, |
| |
178 | to ensure that WinMerge difference detection is up to date.</para> |
| |
179 | </tip> |
| |
180 | </section> |
| |
181 | |
| |
182 | <section> |
| |
183 | <title>File pane fonts<indexterm> |
| |
184 | <primary>fonts</primary> |
73 | |
185 | |
.74 | <listitem> |
186 | <secondary>choosing in File Compare window</secondary> |
75 | <simpara>if the file has been modified (has unsaved changes). This is |
187 | </indexterm></title> |
76 | indicated by adding asterisk (<guilabel>*</guilabel>) before the |
| |
77 | filename, like in the screenshot.</simpara> |
| |
78 | </listitem> |
| |
79 | </itemizedlist></para> |
| |
80 | |
188 | |
.81 | <para>Headerbar has a context menu with items to copy full path or filename |
189 | <para>You can choose fonts for the File pane by clicking <menuchoice> |
82 | to clipboard.</para> |
190 | <guimenu>View</guimenu> |
83 | </section> |
| |
84 | |
191 | |
.85 | <section> |
192 | <guimenuitem>Select Font</guimenuitem> |
86 | <title>Statusbar</title> |
193 | </menuchoice>. WinMerge supports only fixed width fonts.</para> |
87 | |
194 | |
.88 | <para><inlinemediaobject> |
195 | <para>Here are font suggestions for using WinMerge with East Asian |
89 | <imageobject> |
196 | languages:</para> |
90 | <imagedata fileref="screenshots/filecomp_statusbar1.png" format="PNG" /> |
197 | |
91 | </imageobject> |
198 | <itemizedlist> |
92 | </inlinemediaobject></para> |
199 | <listitem> |
| |
200 | <simpara>Simplified Chinese: <guilabel>SimSun</guilabel> or |
| |
201 | <guilabel>SimHei</guilabel> fixed-width fonts</simpara> |
| |
202 | </listitem> |
| |
203 | |
| |
204 | <listitem> |
| |
205 | <simpara>Traditional Chinese: <guilabel>MingLiU</guilabel> |
| |
206 | fixed-width font</simpara> |
| |
207 | </listitem> |
| |
208 | |
| |
209 | <listitem> |
| |
210 | <simpara>Japanese: <guilabel>MS Gothic</guilabel> or <guilabel>MS |
| |
211 | Mincho</guilabel> fixed-width fonts</simpara> |
| |
212 | </listitem> |
93 | |
213 | |
.94 | <para>Statusbar upper line shows information about current line. In first |
214 | <listitem> |
95 | pane:</para> |
215 | <simpara>Korean: <guilabel>GulimChe</guilabel> fixed-width font (not |
| |
216 | <guilabel>Gulim</guilabel>, because this variant uses |
| |
217 | proportional-spacing glyphs that are not centered in grid cells and |
| |
218 | poorly aligned in fixed-width mode).</simpara> |
| |
219 | </listitem> |
| |
220 | </itemizedlist> |
| |
221 | </section> |
96 | |
222 | |
.97 | <itemizedlist> |
223 | <section> |
98 | <listitem> |
224 | <title>File pane margins<indexterm> |
99 | <simpara><guilabel>Ln</guilabel> : current linenumber</simpara> |
225 | <primary>margins</primary> |
100 | </listitem> |
| |
101 | |
226 | |
.102 | <listitem> |
227 | <secondary>in File panes</secondary> |
103 | <simpara><guilabel>Col</guilabel>: current column for cursor and total |
228 | </indexterm></title> |
104 | number of columns in line</simpara> |
| |
105 | </listitem> |
| |
106 | |
229 | |
.107 | <listitem> |
230 | <para>The File panes have optional gray margins that show line numbers |
108 | <simpara><guilabel>Ch</guilabel> : current char for cursor and total |
231 | and some symbols. To show or hide the margins, clicking <menuchoice> |
109 | number of chars in line</simpara> |
232 | <guimenu>View</guimenu> |
110 | </listitem> |
| |
111 | |
233 | |
.112 | <listitem> |
234 | <guimenuitem>View Margins</guimenuitem> |
113 | <simpara><guilabel>EOL</guilabel> : current line EOL style (shown only |
235 | </menuchoice>. If you are using multiple File Compare windows, you can |
114 | when <guilabel>Preserve original EOL chars</guilabel>-option is |
236 | control margins for each window independently. The margin can show any |
115 | enabled)</simpara> |
237 | or all of these features:<indexterm> |
116 | </listitem> |
238 | <primary>line numbers</primary> |
117 | </itemizedlist> |
239 | |
| |
240 | <secondary>in File panes</secondary> |
| |
241 | </indexterm><indexterm> |
| |
242 | <primary>bookmarks</primary> |
| |
243 | </indexterm><indexterm> |
| |
244 | <primary>word wrapping</primary> |
118 | |
245 | |
.119 | <note> |
246 | <secondary>in File panes</secondary> |
120 | <para><guilabel>Col</guilabel> counts <keycap>TAB</keycap> as |
247 | </indexterm></para> |
121 | <replaceable>X</replaceable> chars (as defined in editor options) and |
| |
122 | <guilabel>Ch</guilabel> counts <keycap>TAB</keycap> as one |
| |
123 | character.</para> |
| |
124 | </note> |
| |
125 | |
248 | |
.126 | <para>Other three panes are:</para> |
249 | <itemizedlist> |
| |
250 | <listitem> |
| |
251 | <para>Line numbers, if <menuchoice> |
| |
252 | <guimenu>View</guimenu> |
127 | |
253 | |
.128 | <para><itemizedlist> |
254 | <guimenuitem>View Line Numbers</guimenuitem> |
129 | <listitem> |
255 | </menuchoice> is enabled.</para> |
130 | <simpara>read-only: <guilabel>RO</guilabel> is shown in the pane if |
256 | </listitem> |
131 | the file is read-only / protected</simpara> |
| |
132 | </listitem> |
| |
133 | |
257 | |
.134 | <listitem> |
258 | <listitem> |
135 | <simpara>encoding: this pane shows codepage number for ANSI files and |
259 | <para>Bookmarks, if <menuchoice> |
136 | Unicode encoding type for Unicode files</simpara> |
260 | <guimenu>Edit</guimenu> |
137 | </listitem> |
| |
138 | |
261 | |
.139 | <listitem> |
262 | <guisubmenu>Bookmarks</guisubmenu> |
140 | <simpara>EOL style: EOL style can be <guilabel>Win</guilabel> for |
263 | </menuchoice> is enabled. A bookmark is a blue circle, in the |
141 | Windows/DOS files (CRLF), <guilabel>Unix</guilabel> (LF) or |
264 | margin next to a line, that you can make WinMerge remember and |
142 | <guilabel>Mac</guilabel> (CR)</simpara> |
265 | return to.</para> |
143 | </listitem> |
266 | |
144 | </itemizedlist>Note there are two different ways to show EOL style. When |
267 | <itemizedlist> |
145 | per-line EOL style is not remembered, EOL style is shown on own pane in |
268 | <listitem> |
146 | statusbar. And when per-line EOL style is remembered line's EOL style is |
269 | <para>To set a bookmark on a line, double-click in its margin |
147 | shown after char number. When per-line EOL style is used there is no |
270 | (or press (<keycombo> |
148 | file-wide EOL style.</para> |
271 | <keycap>Ctrl</keycap> |
| |
272 | |
| |
273 | <keycap>F2</keycap> |
| |
274 | </keycombo>). The same action deletes an existing |
| |
275 | bookmark.</para> |
| |
276 | </listitem> |
| |
277 | |
| |
278 | <listitem> |
| |
279 | <para>To navigate bookmarks, click <menuchoice> |
| |
280 | <guimenu>Edit</guimenu> |
| |
281 | |
| |
282 | <guimenuitem>Bookmarks</guimenuitem> |
| |
283 | </menuchoice> and choose <guimenuitem>Next</guimenuitem> or |
| |
284 | <guimenuitem>Previous</guimenuitem>.</para> |
| |
285 | </listitem> |
| |
286 | |
| |
287 | <listitem> |
| |
288 | <para>Double-click a single bookmark to delete it (or press |
| |
289 | (<keycombo> |
| |
290 | <keycap>Ctrl</keycap> |
| |
291 | |
| |
292 | <keycap>F2</keycap> |
| |
293 | </keycombo>).</para> |
| |
294 | </listitem> |
| |
295 | |
| |
296 | <listitem> |
| |
297 | <para>Click <menuchoice> |
| |
298 | <guimenu>Edit</guimenu> |
| |
299 | |
| |
300 | <guimenuitem>Bookmarks</guimenuitem> |
| |
301 | |
| |
302 | <guimenuitem>Clear All Bookmarks</guimenuitem> |
| |
303 | </menuchoice> to delete all bookmarks.</para> |
| |
304 | </listitem> |
| |
305 | </itemizedlist> |
| |
306 | </listitem> |
| |
307 | |
| |
308 | <listitem> |
| |
309 | <para>Word wrap arrow symbols, if <menuchoice> |
| |
310 | <guimenu>View</guimenu> |
| |
311 | |
| |
312 | <guimenuitem>Wrap Lines</guimenuitem> |
| |
313 | </menuchoice> is enabled.</para> |
| |
314 | </listitem> |
| |
315 | </itemizedlist> |
| |
316 | |
| |
317 | <para>The following screen shot shows a margin with bookmarks and word |
| |
318 | wrap enabled. Without line numbers, the margin width is minimal.</para> |
| |
319 | |
| |
320 | <mediaobject> |
| |
321 | <imageobject> |
| |
322 | <imagedata contentwidth="384" |
| |
323 | fileref="screenshots/filecomp_margin1.png" format="PNG" /> |
| |
324 | </imageobject> |
| |
325 | |
| |
326 | <textobject> |
| |
327 | <phrase>File Compare window margin with bookmark and word |
| |
328 | wrap</phrase> |
| |
329 | </textobject> |
| |
330 | </mediaobject> |
| |
331 | |
| |
332 | <para>The next screen shot shows a margin with bookmarks and line |
| |
333 | numbers enabled. Notice that the margin is wider. In fact, the margin is |
| |
334 | wide enough for the largest line number. Thus, the margins for large |
| |
335 | files with many lines can be quite wide.</para> |
| |
336 | |
| |
337 | <mediaobject> |
| |
338 | <imageobject> |
| |
339 | <imagedata contentdepth="77" contentwidth="384" |
| |
340 | fileref="screenshots/filecomp_margin2.png" format="PNG" /> |
| |
341 | </imageobject> |
| |
342 | |
| |
343 | <textobject> |
| |
344 | <phrase>File Compare window margin with bookmark and line |
| |
345 | numbers</phrase> |
| |
346 | </textobject> |
| |
347 | </mediaobject> |
| |
348 | </section> |
| |
349 | </section> |
| |
350 | |
| |
351 | <section id="Compare_files_functions"> |
| |
352 | <title>Toolbar and menus<indexterm> |
| |
353 | <primary>toolbar, with File Compare window</primary> |
| |
354 | </indexterm><indexterm> |
| |
355 | <primary>menus, with File Compare window</primary> |
| |
356 | </indexterm></title> |
| |
357 | |
| |
358 | <para>The WinMerge toolbar and menus provide a range of functions to |
| |
359 | navigate, select, and merge differences within files.</para> |
| |
360 | |
| |
361 | <note> |
| |
362 | <para>WinMerge shortcuts have the same names and buttons whether you |
| |
363 | open a Folder Compare or File Compare window. However, the functions |
| |
364 | behave differently: with a File Compare window, the functions operate on |
| |
365 | differences within files, not on differences within folders.</para> |
| |
366 | </note> |
| |
367 | |
| |
368 | <para>The difference functions you can use depend on your context, which |
| |
369 | often changes as you work. This means that a function is available only |
| |
370 | when its operation is possible for a given location or other condition in |
| |
371 | your WinMerge environment. For example, if you click in a line of text |
| |
372 | within a difference, you might notice several navigation and merge buttons |
| |
373 | become enabled in the toolbar. If you click in another area of text that |
| |
374 | is not within a difference, these functions become unavailable. </para> |
149 | |
375 | |
.150 | <para>Difference between column and char is that column counts tabulator |
376 | <para>Difference functions are available in the WinMerge toolbar,and also |
151 | character as so many (space) chars as it occupies (4 by default, can be |
377 | through these alternate mechanisms:</para> |
152 | changed from options). But char count counts tabulator char as one |
| |
153 | char.</para> |
| |
154 | |
378 | |
.155 | <para>Lower line in statusbar shows current difference and amount of |
379 | <itemizedlist> |
156 | differences. Text can be:<itemizedlist> |
| |
157 | <listitem> |
380 | <listitem> |
.158 | <simpara><guilabel>Identical</guilabel> : files are identical there |
381 | <para>WinMerge menus, especially <guimenu>Merge</guimenu></para> |
159 | are no differences</simpara> |
| |
160 | </listitem> |
382 | </listitem> |
161 | |
383 | |
162 | <listitem> |
384 | <listitem> |
.163 | <simpara><guilabel>X differences Found</guilabel> : amount of |
385 | <para>Context menus within the File Compare window (when you |
164 | differences, no difference is selected</simpara> |
386 | right-click in text)</para> |
165 | </listitem> |
387 | </listitem> |
166 | |
388 | |
167 | <listitem> |
389 | <listitem> |
.168 | <simpara><guilabel>Difference X of Y</guilabel> : amount of |
390 | <para>Keyboard shortcuts</para> |
169 | differences (<guilabel>Y</guilabel>) and number of selected difference |
| |
170 | (<guilabel>X</guilabel>)</simpara> |
| |
171 | </listitem> |
391 | </listitem> |
.172 | </itemizedlist></para> |
392 | </itemizedlist> |
173 | </section> |
| |
174 | |
393 | |
.175 | <section> |
394 | <para>Difference functions are described in <xref |
176 | <title>Editor Margin</title> |
395 | linkend="Compare_files_nav" /> and <xref linkend="Compare_files_merge" />, |
| |
396 | later in this topic. <xref linkend="QuickStart" /> and <xref |
| |
397 | linkend="IntroductDiffing" /> provide examples of comparing and |
| |
398 | merging.</para> |
| |
399 | |
| |
400 | <section> |
| |
401 | <title>Merge Mode<indexterm> |
| |
402 | <primary>merge mode</primary> |
| |
403 | </indexterm></title> |
| |
404 | |
| |
405 | <para><menuchoice> |
| |
406 | <guimenu>File</guimenu> |
| |
407 | |
| |
408 | <guimenu>Merge Mode</guimenu> |
| |
409 | </menuchoice> restores these WinMerge 1.7.1 single keyboard shortcuts |
| |
410 | for difference merging and navigating functions:</para> |
177 | |
411 | |
.178 | <para>The editor panes (file panes) have optional gray margin area for line |
412 | <itemizedlist> |
179 | numbers and some symbols. This margin can be shown/hidded from menu |
413 | <listitem> |
180 | <menuchoice> |
414 | <simpara><keycap>Up</keycap> and <keycap>Down</keycap> keys for the |
181 | <guimenu>View</guimenu> |
415 | <function>Previous Difference</function> and <function>Next |
182 | |
416 | Difference</function> functions.</simpara> |
183 | <guimenuitem>View Margins</guimenuitem> |
417 | </listitem> |
184 | </menuchoice>. The margin shows:</para> |
| |
185 | |
| |
186 | <itemizedlist> |
| |
187 | <listitem> |
| |
188 | <simpara>Line numbers (from menu <menuchoice> |
| |
189 | <guimenu>View</guimenu> |
| |
190 | |
418 | |
.191 | <guimenuitem>View Line Numbers</guimenuitem> |
419 | <listitem> |
192 | </menuchoice>)</simpara> |
420 | <simpara><keycap>Left</keycap> and <keycap>Right</keycap> keys for |
193 | </listitem> |
421 | the <function>Copy Left</function> and <function>Copy |
| |
422 | Right</function> functions.</simpara> |
| |
423 | </listitem> |
| |
424 | </itemizedlist> |
194 | |
425 | |
.195 | <listitem> |
426 | <para>Merge mode omits the <keycap>Alt</keycap> key for these common |
196 | <simpara>Bookmarks (menu <menuchoice> |
427 | operations (making them quicker to use than the normal mode). Note that |
197 | <guimenu>Edit</guimenu> |
428 | the <keycap>Shift</keycap> and <keycap>Alt</keycap> |
| |
429 | <keycap>Arrow</keycap> key combinations work in merge mode in the same |
| |
430 | way as normal mode.</para> |
| |
431 | |
| |
432 | <para>Merge mode is indicated in the status bar by the text, |
| |
433 | <guilabel>Merge</guilabel>.</para> |
| |
434 | </section> |
| |
435 | </section> |
198 | |
436 | |
.199 | <guisubmenu>Bookmarks</guisubmenu> |
437 | <section> |
200 | </menuchoice>)</simpara> |
438 | <title>Location pane<indexterm> |
201 | </listitem> |
439 | <primary>Location pane, File Compare window</primary> |
202 | |
440 | </indexterm></title> |
203 | <listitem> |
441 | |
204 | <simpara>Word wrap symbols, when word wrap is enabled</simpara> |
442 | <para>The Location pane, to the left of the File panes, maps the entire |
205 | </listitem> |
443 | length of the compared files into two vertical bars (corresponding to the |
206 | </itemizedlist> |
444 | left and right File panes). It is especially useful for working with files |
| |
445 | that are too long to easily navigate in the File panes.</para> |
| |
446 | |
| |
447 | <para>The Location pane shows several kinds of items:</para> |
| |
448 | |
| |
449 | <variablelist> |
| |
450 | <varlistentry> |
| |
451 | <term><inlinemediaobject> |
| |
452 | <imageobject> |
| |
453 | <imagedata contentdepth="15" |
| |
454 | fileref="screenshots/locpane_diffs.png" /> |
| |
455 | </imageobject> |
| |
456 | |
| |
457 | <textobject> |
| |
458 | <phrase>Location pane diff lines</phrase> |
| |
459 | </textobject> |
| |
460 | </inlinemediaobject> Difference blocks</term> |
207 | |
461 | |
.208 | <para>When line numbers are not shown then margin is shown like screenshot |
462 | <listitem> |
209 | below.</para> |
463 | <para>Each difference block in the File panes is indicated in the |
| |
464 | Location pane by a horizontal line across each vertical bar. The |
| |
465 | thickness, color , and locations of these lines are clues about of |
| |
466 | the size (number of lines), types and distribution of all |
| |
467 | differences in the files. For example, the color of a line is the |
| |
468 | same as the color of the corresponding difference block. The |
| |
469 | Location pane in the preceding screen shot shows many basic |
| |
470 | differences (gold) and some empty difference blocks (gray).</para> |
| |
471 | </listitem> |
| |
472 | </varlistentry> |
210 | |
473 | |
.211 | <para><inlinemediaobject> |
474 | <varlistentry> |
212 | <imageobject> |
475 | <term><inlinemediaobject> |
213 | <imagedata fileref="screenshots/filecomp_margin1.png" format="PNG" /> |
476 | <imageobject> |
214 | </imageobject> |
477 | <imagedata contentdepth="15" |
215 | </inlinemediaobject></para> |
478 | fileref="screenshots/locpane_currentdiff.png" /> |
| |
479 | </imageobject> |
| |
480 | |
| |
481 | <textobject> |
| |
482 | <phrase>Location pane current diff pointer</phrase> |
| |
483 | </textobject> |
| |
484 | </inlinemediaobject> Current difference</term> |
216 | |
485 | |
.217 | <para>Blue circle is a Bookmark. And arrow marks word-wrapped line. Next |
486 | <listitem> |
218 | screenshot shows same lines without word-wrap and with linenumbers.</para> |
487 | <para>If you have selected a difference, the Location pane marks the |
| |
488 | current difference line with a pair of small triangles on either |
| |
489 | side of the vertical bars. If you navigate to another difference, |
| |
490 | the pointer moves up or down with the location. Scrolling the File |
| |
491 | pane does not change the location of the difference pointer (or any |
| |
492 | of the difference lines) in the location pane.</para> |
| |
493 | </listitem> |
| |
494 | </varlistentry> |
219 | |
495 | |
.220 | <para><inlinemediaobject> |
496 | <varlistentry> |
221 | <imageobject> |
497 | <term><inlinemediaobject> |
222 | <imagedata fileref="screenshots/filecomp_margin2.png" format="PNG" /> |
498 | <imageobject> |
223 | </imageobject> |
499 | <imagedata contentdepth="15" |
224 | </inlinemediaobject></para> |
500 | fileref="screenshots/locpane_viewbar.png" /> |
| |
501 | </imageobject> |
| |
502 | |
| |
503 | <textobject> |
| |
504 | <phrase>Location pane view area bar</phrase> |
| |
505 | </textobject> |
| |
506 | </inlinemediaobject> View area</term> |
225 | |
507 | |
.226 | <para>If linenubmers are not visible it takes pretty minimal width. Note |
508 | <listitem> |
227 | that with linenumbers the margin width is set so that the longest line |
509 | <para>The area of the files currently visible in the File panes is |
228 | number fits into it. So with large files with lots of lines it needs space |
510 | indicated by a shaded (translucent) view bar over the Location pane. |
229 | for several numbers.</para> |
511 | The area bar's height and location correspond to the portion of the |
230 | </section> |
512 | files that is visible in the scroll region. For example, you might |
| |
513 | see the bar expand or shrink if you change the height of your File |
| |
514 | panes. This synchronization of the Location pane view bar and File |
| |
515 | panes enables quick navigation, and some useful actions:</para> |
| |
516 | |
| |
517 | <itemizedlist> |
| |
518 | <listitem> |
| |
519 | <para>When you scroll the File panes, the view area in the |
| |
520 | Location pane moves with it.</para> |
| |
521 | </listitem> |
| |
522 | |
| |
523 | <listitem> |
| |
524 | <para>Conversely, you can drag the view area bar in the Location |
| |
525 | pane up or down to scroll the File panes. This scrollbar thumb |
| |
526 | action is very handy for navigating long files.</para> |
| |
527 | </listitem> |
| |
528 | |
| |
529 | <listitem> |
| |
530 | <para>Click anywhere in the Location pane to jump to the |
| |
531 | corresponding location in the File panes.</para> |
| |
532 | </listitem> |
| |
533 | </itemizedlist> |
| |
534 | </listitem> |
| |
535 | </varlistentry> |
231 | |
536 | |
.232 | <section> |
537 | <varlistentry> |
233 | <title><indexterm> |
538 | <term>Moved differences<indexterm> |
234 | <primary>Difference Navigation</primary> |
539 | <primary>moved differences, in File Compare window</primary> |
| |
540 | </indexterm></term> |
235 | |
541 | |
.236 | <secondary>File Compare</secondary> |
542 | <listitem> |
237 | </indexterm>Difference Navigation</title> |
543 | <para>The Location pane can indicate difference blocks that are |
| |
544 | moved. Moved blocks are two sides of a difference that are in |
| |
545 | different locations. Moved blocks are indicated by the |
| |
546 | <guilabel>Moved</guilabel> and <guilabel>Selected Moved</guilabel> |
| |
547 | difference colors (configurable in WinMerge Options) and by lines |
| |
548 | connecting their locations in the left and right location bars. For |
| |
549 | example:</para> |
| |
550 | |
| |
551 | <mediaobject> |
| |
552 | <imageobject> |
| |
553 | <imagedata contentwidth="576" |
| |
554 | fileref="screenshots/locpane_moved_diffs.png" |
| |
555 | format="PNG" /> |
| |
556 | </imageobject> |
| |
557 | |
| |
558 | <textobject> |
| |
559 | <phrase>Location pane with moved diff</phrase> |
| |
560 | </textobject> |
| |
561 | </mediaobject> |
| |
562 | |
| |
563 | <para>Showing moved blocks can make it easier to visualize changes |
| |
564 | in files. However, if there are too many moved lines it can appear |
| |
565 | cluttered. Use your own judgement!</para> |
| |
566 | </listitem> |
| |
567 | </varlistentry> |
| |
568 | </variablelist> |
238 | |
569 | |
.239 | <para>Difference navigation commands are in <guimenu>Merge</guimenu> |
570 | <para>The Location pane's context menu contains these shortcuts:<indexterm> |
240 | menu:</para> |
571 | <primary>context menu</primary> |
241 | |
572 | |
.242 | <para><inlinemediaobject> |
573 | <secondary>Location pane</secondary> |
243 | <imageobject> |
574 | </indexterm><indexterm> |
244 | <imagedata fileref="screenshots/merge_menu.png" format="PNG" /> |
575 | <primary>Moved Blocks functions</primary> |
245 | </imageobject> |
576 | </indexterm></para> |
246 | </inlinemediaobject></para> |
| |
247 | |
577 | |
.248 | <section> |
578 | <itemizedlist> |
249 | <title>Selecting a difference</title> |
579 | <listitem> |
| |
580 | <para><guimenuitem>Goto Line 1</guimenuitem>: Moves the cursor to the |
| |
581 | top of the file.</para> |
| |
582 | </listitem> |
250 | |
583 | |
.251 | <para>Before difference can be merged, it must be selected. Selecting can |
584 | <listitem> |
252 | happen by difference navigation keys/items (see below) or by selecting |
585 | <para><guimenuitem>Goto</guimenuitem>: Moves the cursor to a line you |
253 | wanted difference directly:</para> |
586 | specify (described in <xref |
| |
587 | linkend="Compare_files_nav_functions" />).</para> |
| |
588 | </listitem> |
| |
589 | |
| |
590 | <listitem> |
| |
591 | <para><guimenuitem>No Moved Blocks</guimenuitem>: Turns off moved |
| |
592 | difference color for moved blocks.</para> |
| |
593 | </listitem> |
254 | |
594 | |
.255 | <itemizedlist> |
| |
256 | <listitem> |
595 | <listitem> |
.257 | <simpara>Double-click over difference with mouse</simpara> |
596 | <para><guimenuitem>All Moved Blocks</guimenuitem>: Turns on moved |
| |
597 | difference color for all moved blocks.</para> |
258 | </listitem> |
598 | </listitem> |
259 | |
599 | |
260 | <listitem> |
600 | <listitem> |
.261 | <simpara>Move cursor inside difference and select it with |
601 | <para><guimenuitem>Moved Block for Current Diff</guimenuitem>: Turns |
262 | <guimenuitem>Current Difference</guimenuitem>.</simpara> |
602 | on moved difference color only for current selected moved |
| |
603 | difference.</para> |
263 | </listitem> |
604 | </listitem> |
264 | </itemizedlist> |
605 | </itemizedlist> |
265 | </section> |
606 | </section> |
266 | |
607 | |
267 | <section> |
608 | <section> |
.268 | <title>Navigating differences</title> |
609 | <title>Diff pane<indexterm> |
269 | |
610 | <primary>Diff pane, File Compare window</primary> |
270 | <para><guimenu>Merge</guimenu>-menu has items for navigating to |
611 | </indexterm></title> |
271 | next/previous and first/last difference. Navigation is always done based |
612 | |
272 | on current cursor location. So <guimenuitem>Next |
613 | <para>The Diff pane shows the contents of the two sides of a selected |
273 | Difference</guimenuitem>-command selects next difference from cursor, not |
614 | difference.</para> |
274 | from current selected difference.</para> |
615 | |
275 | |
616 | <para>When you select a difference, the two versions are loaded in the |
276 | <note> |
617 | upper and lower sides of the Diff pane. In this way, the Diff pane |
277 | <para>When difference is selected with navigation commands cursor is |
618 | confirms which lines are included in a difference, and lets you examine |
278 | moved to begin of first line of difference. In both files.</para> |
619 | them in isolation from the rest of the file.</para> |
279 | </note> |
620 | |
| |
621 | <para>You can merge differences directly in the Diff pane by |
| |
622 | right-clicking in either the top or bottom side and choosing |
| |
623 | <function><guimenuitem>Copy to Right</guimenuitem></function> or |
| |
624 | <guimenuitem>Copy to Left</guimenuitem>.</para> |
280 | </section> |
625 | </section> |
281 | |
626 | |
282 | <section> |
627 | <section> |
.283 | <title><guimenuitem>Current Difference</guimenuitem>-command</title> |
628 | <title>Status bars<indexterm> |
| |
629 | <primary>status bars</primary> |
| |
630 | |
| |
631 | <secondary>for File Compare window</secondary> |
| |
632 | </indexterm><indexterm> |
| |
633 | <primary>tab</primary> |
| |
634 | |
| |
635 | <secondary>character encoding</secondary> |
| |
636 | </indexterm></title> |
| |
637 | |
| |
638 | <para>Each File pane contains a status bar at the bottom. The status bar |
| |
639 | contains several panes with different types of information about the |
| |
640 | document and your location in it:</para> |
| |
641 | |
| |
642 | <variablelist> |
| |
643 | <varlistentry> |
| |
644 | <term>Line status</term> |
| |
645 | |
| |
646 | <listitem> |
| |
647 | <itemizedlist> |
| |
648 | <listitem> |
| |
649 | <para><guilabel>Ln</guilabel>: Line number in the source |
| |
650 | file.</para> |
| |
651 | </listitem> |
| |
652 | |
| |
653 | <listitem> |
| |
654 | <para><guilabel>Col</guilabel>: Column location of the cursor |
| |
655 | and the total number of columns in the line.</para> |
| |
656 | |
| |
657 | <para><guilabel>Col</guilabel> counts tabs as |
| |
658 | <replaceable>n</replaceable> spaces, where |
| |
659 | <replaceable>n</replaceable> is the number of characters defined |
| |
660 | as the <guilabel>Tab size</guilabel> in the Editor page of |
| |
661 | WinMerge options (4 by default). </para> |
| |
662 | </listitem> |
| |
663 | |
| |
664 | <listitem> |
| |
665 | <para><guilabel>Ch</guilabel>: Character location of cursor and |
| |
666 | the total number of chars in the line.</para> |
| |
667 | |
| |
668 | <para><guilabel>Ch</guilabel> counts tabs as single tab |
| |
669 | characters.</para> |
| |
670 | </listitem> |
| |
671 | |
| |
672 | <listitem> |
| |
673 | <para><guilabel>EOL</guilabel>: Linefeed style of the current |
| |
674 | line (shown only when the <guilabel>Preserve original EOL |
| |
675 | chars</guilabel> option is enabled in the Editor page of |
| |
676 | WinMerge options).</para> |
| |
677 | </listitem> |
| |
678 | </itemizedlist> |
| |
679 | </listitem> |
| |
680 | </varlistentry> |
| |
681 | |
| |
682 | <varlistentry> |
| |
683 | <term>Read-only status</term> |
| |
684 | |
| |
685 | <listitem> |
| |
686 | <para><guilabel>RO</guilabel> is shown in the pane if the file is |
| |
687 | set to read-only (as described in <xref |
| |
688 | linkend="protectingfiles" />). Otherwise the pane is empty.</para> |
| |
689 | </listitem> |
| |
690 | </varlistentry> |
| |
691 | |
| |
692 | <varlistentry> |
| |
693 | <term>File encoding </term> |
| |
694 | |
| |
695 | <listitem> |
| |
696 | <para>Codepage number for ANSI files, Unicode encoding type for |
| |
697 | Unicode files.</para> |
| |
698 | </listitem> |
| |
699 | </varlistentry> |
| |
700 | |
| |
701 | <varlistentry> |
| |
702 | <term>EOL style</term> |
| |
703 | |
| |
704 | <listitem> |
| |
705 | <para>EOL style of the file: <guilabel>Win</guilabel> for |
| |
706 | Windows/DOS files (CRLF), <guilabel>Unix</guilabel> (LF), |
| |
707 | <guilabel>Mac</guilabel> (CR), or Mixed.</para> |
| |
708 | |
| |
709 | <note> |
| |
710 | <para>When the per-line EOL style is used, the file EOL style is |
| |
711 | not shown (this pane is blank).</para> |
| |
712 | </note> |
| |
713 | </listitem> |
| |
714 | </varlistentry> |
| |
715 | </variablelist> |
284 | |
716 | |
.285 | <para>This command has two important functions:<itemizedlist> |
717 | <para>When a File Compare window is open, the WinMerge window status bar |
| |
718 | shows one of these messages about the compared files:<itemizedlist> |
286 | <listitem> |
719 | <listitem> |
.287 | <simpara>When there is no difference selected and cursor is inside |
720 | <para><guilabel>Identical</guilabel>: The files contain no |
288 | difference, it selects this difference. This is very handy way to |
721 | differences</para> |
289 | select difference from keyboard.</simpara> |
| |
290 | </listitem> |
722 | </listitem> |
291 | |
723 | |
292 | <listitem> |
724 | <listitem> |
.293 | <simpara>When there is selected difference, it scrolls to selected |
725 | <para><guilabel><replaceable>n</replaceable> Differences |
294 | difference. This is handy if user has scrolled selected difference |
726 | Found</guilabel>: The number of differences detected, displayed only |
295 | out of screen. So this allows user to scroll files to see other |
727 | when no difference is selected.</para> |
296 | contents and quickly return back to selected difference.</simpara> |
728 | </listitem> |
| |
729 | |
| |
730 | <listitem> |
| |
731 | <para><guilabel>Difference <replaceable>x</replaceable> of |
| |
732 | <replaceable>n</replaceable></guilabel>: The selected difference's |
| |
733 | sequence number in the total number of differences, starting with |
| |
734 | 1.</para> |
297 | </listitem> |
735 | </listitem> |
298 | </itemizedlist></para> |
736 | </itemizedlist></para> |
299 | </section> |
737 | </section> |
300 | |
738 | |
. | |
739 | <section id="Compare_files_multiwin"> |
| |
740 | <title>Working with multiple File Compare windows<indexterm> |
| |
741 | <primary>File Compare window</primary> |
| |
742 | |
| |
743 | <secondary>multiple</secondary> |
| |
744 | </indexterm></title> |
| |
745 | |
| |
746 | <para>By default, the WinMerge window displays a single File Compare |
| |
747 | window. If you start another file comparison (by clicking <menuchoice> |
| |
748 | <guimenu>File</guimenu> |
| |
749 | |
| |
750 | <guimenuitem>Open</guimenuitem> |
| |
751 | </menuchoice> and selecting another pair of files) while a File Compare |
| |
752 | window is currently open, the current File Compare window is closed, |
| |
753 | unless WinMerge detects unsaved changes in the left or right file. If you |
| |
754 | have modified either file, WinMerge prompts you to save or discard your |
| |
755 | changes before opening a new File Compare window.</para> |
| |
756 | |
| |
757 | <!--We don't say that the old window is closed, even though most of the time that's what happens. |
| |
758 | If you click Cancel in the Save dialog, WinMerge does NOT close the current window, and you end up |
| |
759 | with multiple File Compare windows. The reasons why this behavior has not been fixed is discussed in |
| |
760 | https://sourceforge.net/forum/forum.php?thread_id=2001747&forum_id=41637--> |
| |
761 | |
| |
762 | <para>For example, in the next screen shot WinMerge gives you a chance to |
| |
763 | save changes detected in the right side file:</para> |
| |
764 | |
| |
765 | <mediaobject> |
| |
766 | <imageobject> |
| |
767 | <imagedata contentwidth="400" fileref="screenshots/save_mod1.png" |
| |
768 | format="PNG" /> |
| |
769 | </imageobject> |
| |
770 | |
| |
771 | <textobject> |
| |
772 | <phrase>Save modifed files? dialog</phrase> |
| |
773 | </textobject> |
| |
774 | </mediaobject> |
| |
775 | |
| |
776 | <para>If you plan to work with multiple compare operations simultaneously, |
| |
777 | consider setting (checking) the <guilabel>Enable multiple compare windows |
| |
778 | for File compare</guilabel> option, which is disabled by default. With |
| |
779 | this option enabled, you can open multiple File Compare windows without |
| |
780 | the intervening Save step.</para> |
| |
781 | </section> |
| |
782 | |
301 | <section> |
783 | <section> |
.302 | <title>Go To line or difference</title> |
784 | <title>Using tabs with maximized Compare windows<indexterm> |
| |
785 | <primary>File Compare window</primary> |
303 | |
786 | |
.304 | <para>Using <guimenuitem>Go To</guimenuitem> from |
787 | <secondary>using tabs when maximizing</secondary> |
305 | <guimenu>Edit</guimenu>-menu user can jump to certain line or difference. |
788 | </indexterm></title> |
306 | Go To -dialog shows current line and side when opened.</para> |
789 | |
307 | |
790 | <para>By default, Compare windows are displayed as individually resizeable |
308 | <tip> |
791 | child windows within the WinMerge window, like this:</para> |
309 | <para>Go To line number is useful if there is need to merge same change |
792 | |
310 | to several target files from one original file. Rather than using |
793 | <mediaobject> |
311 | <guimenuitem>Find</guimenuitem> or difference navigation it is faster to |
794 | <imageobject> |
312 | jump to first line of difference.</para> |
795 | <imagedata contentwidth="569" fileref="screenshots/multifilecomp1.png" |
313 | </tip> |
796 | format="PNG" /> |
| |
797 | </imageobject> |
| |
798 | |
| |
799 | <textobject> |
| |
800 | <phrase>Multiple File Compare windows: default display</phrase> |
| |
801 | </textobject> |
| |
802 | </mediaobject> |
| |
803 | |
| |
804 | <para>If you maximize your Compare window (by clicking its Maximixe |
| |
805 | button), the window fills all the available space in the WinMerge window, |
| |
806 | giving you the most room possible to work in. However, if you are working |
| |
807 | with multiple Compare windows, only one one maximized window is visible: |
| |
808 | any others are hidden. The screen shot below shows the header area of a |
| |
809 | maximized Compare window:</para> |
| |
810 | |
| |
811 | <mediaobject> |
| |
812 | <imageobject> |
| |
813 | <imagedata contentwidth="569" fileref="screenshots/multifilecomp2.png" |
| |
814 | format="PNG" /> |
| |
815 | </imageobject> |
| |
816 | |
| |
817 | <textobject> |
| |
818 | <phrase>Multiple File Compare windows: maximized</phrase> |
| |
819 | </textobject> |
| |
820 | </mediaobject> |
| |
821 | |
| |
822 | <para>To access other Compare windows, you could return to the default |
| |
823 | view by clicking the <inlinemediaobject> |
| |
824 | <imageobject> |
| |
825 | <imagedata contentwidth="15" fileref="screenshots/restore_btn.png" /> |
| |
826 | </imageobject> |
| |
827 | |
| |
828 | <textobject> |
| |
829 | <phrase>Restore button</phrase> |
| |
830 | </textobject> |
| |
831 | </inlinemediaobject> Restore button. But a better solution is to enable |
| |
832 | tabs by setting (checking) <menuchoice> |
| |
833 | <guimenu>View</guimenu> |
| |
834 | |
| |
835 | <guimenuitem>Tab Bar</guimenuitem> |
| |
836 | </menuchoice>.</para> |
| |
837 | |
| |
838 | <para>When you display the Tab bar, each Compare window has a tab that |
| |
839 | shows the filenames of the two compared files. Now, you can easily |
| |
840 | identify the available Compare windows. To open any of them, just click |
| |
841 | its tab:</para> |
| |
842 | |
| |
843 | <mediaobject> |
| |
844 | <imageobject> |
| |
845 | <imagedata contentwidth="569" fileref="screenshots/multifilecomp3.png" |
| |
846 | format="PNG" /> |
| |
847 | </imageobject> |
| |
848 | |
| |
849 | <textobject> |
| |
850 | <phrase>Multiple File Compare windows: tabbed</phrase> |
| |
851 | </textobject> |
| |
852 | </mediaobject> |
314 | </section> |
853 | </section> |
315 | </section> |
854 | </section> |
316 | |
855 | |
.317 | <section> |
856 | <section id="Compare_files_nav"> |
318 | <title><indexterm> |
857 | <title>Navigating differences<indexterm> |
319 | <primary>Merging Differences</primary> |
858 | <primary>difference navigation</primary> |
320 | </indexterm>Merging Differences</title> |
859 | |
321 | |
860 | <secondary>File Compare window</secondary> |
322 | <para>Merging commands are located in <guimenu>Merge</guimenu>-menu after |
861 | </indexterm></title> |
323 | navigation commands. Basically there are only two types of merging commands |
862 | |
324 | - copy difference from right to left and copy difference from left to right. |
863 | <para>This section describes how to navigate and select differences in the |
325 | Additional commands make merging several differences easier.</para> |
864 | File Compare window. Note that when you select a difference, it is always |
326 | |
865 | selected in both File panes.</para> |
327 | <para><guimenuitem>Copy to Right</guimenuitem> and <guimenuitem>Copy to |
| |
328 | Left</guimenuitem> copy difference from side to side. At simplest this means |
| |
329 | replacing text in destination difference with text in source difference. But |
| |
330 | because difference can contain also removed lines, new lines may be created |
| |
331 | or some lines removed. If there are several differences selected, then all |
| |
332 | fully selected differences are merged with one command. This makes merging |
| |
333 | many small differences a lot faster.</para> |
| |
334 | |
| |
335 | <para>WinMerge rescans files after every merging operation. This is done to |
| |
336 | ensure differences were copied correctly and all changes after last |
| |
337 | rescanning are taken care of. If <guilabel>Automatic |
| |
338 | rescan</guilabel>-option is not set, user may have edited files and |
| |
339 | differences may not have shown correctly before merging. If result of |
| |
340 | merging is not what were wanted, user can undo merging operation.</para> |
| |
341 | |
| |
342 | <important> |
| |
343 | <para>It is strongly advised to run <guimenuitem>Rescan</guimenuitem> |
| |
344 | (<keycap>F5</keycap>) before merging differences if <guilabel>Automatic |
| |
345 | rescan</guilabel> is set off. Usually files get out of sync when editing |
| |
346 | and merging differences may have unpredictable results. If merging result |
| |
347 | looks incorrect try undoing (<menuchoice> |
| |
348 | <guimenu>Edit</guimenu> |
| |
349 | |
| |
350 | <guimenuitem>Undo</guimenuitem> |
| |
351 | </menuchoice> from menu or <keycombo> |
| |
352 | <keycap>Ctrl</keycap> |
| |
353 | |
| |
354 | <keycap>Z</keycap> |
| |
355 | </keycombo>) it and rescanning files. And then merging again.</para> |
| |
356 | </important> |
| |
357 | |
| |
358 | <para><guimenuitem>Copy to Right/Left and Advance</guimenuitem>-commands |
| |
359 | merge current difference and then select next difference (if there is one). |
| |
360 | Using these commands makes merging several differences easier and |
| |
361 | faster.</para> |
| |
362 | |
| |
363 | <para><guimenuitem>Copy All to Right/Left</guimenuitem>-commands sync two |
| |
364 | open files by merging all differences. Note that you can undo this whole |
| |
365 | operation with one undo command.</para> |
| |
366 | |
866 | |
367 | <tip> |
867 | <tip> |
.368 | <para>Enable <guilabel>Automatically scroll to first difference</guilabel> |
868 | <para>To save time, enable <guilabel>Automatically scroll to first |
369 | -option from general options. This saves you from scrolling to first |
869 | difference</guilabel> in the General page of WinMerge options. Then you |
370 | difference and selecting it. See <xref linkend="Configuration" /> for more |
870 | don't have to manually navigate to the first difference and select |
371 | information.</para> |
871 | it.</para> |
372 | </tip> |
872 | </tip> |
.373 | </section> |
| |
374 | |
873 | |
.375 | <section> |
874 | <section id="Compare_files_nav_functions"> |
376 | <title><indexterm> |
875 | <title>Navigation functions<indexterm> |
377 | <primary>Merge Mode</primary> |
876 | <primary>WinMerge functions</primary> |
378 | </indexterm>Merge Mode</title> |
877 | |
379 | |
878 | <secondary>difference navigation in File Compare window</secondary> |
380 | <para>Merge mode can be enabled from the <guimenu>File</guimenu>-menu. It |
879 | </indexterm></title> |
381 | restores the WinMerge 1.7.1 single keys for difference merging and |
880 | |
382 | navigating:</para> |
881 | <para>Here are the functions for navigating differences in the File |
383 | |
882 | Compare window, and their shortcuts in the toolbar and menus:</para> |
384 | <itemizedlist> |
883 | |
385 | <listitem> |
884 | <variablelist> |
386 | <simpara><keycap>Up-</keycap> and <keycap>Down arrow</keycap> keys |
885 | <varlistentry> |
387 | select previous and next difference</simpara> |
886 | <term>Difference in the Current Line/Select Line Difference<indexterm> |
388 | </listitem> |
887 | <primary>Difference in the Current LIne function</primary> |
389 | |
888 | </indexterm><indexterm> |
390 | <listitem> |
889 | <primary>Select Line Difference function</primary> |
391 | <simpara><keycap>Left-</keycap> and <keycap>Right arrow</keycap> keys |
890 | </indexterm></term> |
392 | merge difference to left side or right side.</simpara> |
| |
393 | </listitem> |
| |
394 | </itemizedlist> |
| |
395 | |
| |
396 | <para>Unlike the normal mode, in this schema the <keycap>Alt</keycap>-key is |
| |
397 | not needed for these basic operations (which makes them quicker and more |
| |
398 | convenient). Note that <keycombo> |
| |
399 | <keycap>Shift</keycap> |
| |
400 | |
| |
401 | <keycap>Arrow</keycap> |
| |
402 | </keycombo>, <keycombo> |
| |
403 | <keycap>Alt</keycap> |
| |
404 | |
| |
405 | <keycap>Arrow</keycap> |
| |
406 | </keycombo> and <keycombo> |
| |
407 | <keycap>Ctrl</keycap> |
| |
408 | |
891 | |
.409 | <keycap>Alt</keycap> |
892 | <listitem> |
| |
893 | <para>Shortcuts: <inlinemediaobject> |
| |
894 | <imageobject> |
| |
895 | <imagedata contentdepth="15" |
| |
896 | fileref="screenshots/diff_inline_btn.png" /> |
| |
897 | </imageobject> |
| |
898 | |
| |
899 | <textobject> |
| |
900 | <phrase>Difference in the Current Line button</phrase> |
| |
901 | </textobject> |
| |
902 | </inlinemediaobject> button, <menuchoice> |
| |
903 | <guimenu>Edit</guimenu> |
| |
904 | |
| |
905 | <guimenuitem>Select Line Difference</guimenuitem> |
| |
906 | </menuchoice>, <keycap>F4</keycap>, context menu in File pane |
| |
907 | within a difference.</para> |
| |
908 | |
| |
909 | <para>Enabled if you have clicked in (or selected) text within a |
| |
910 | difference in a File pane. Selects the word differences within the |
| |
911 | line. For example:</para> |
| |
912 | |
| |
913 | <mediaobject> |
| |
914 | <imageobject> |
| |
915 | <imagedata contentwidth="562" fileref="screenshots/linediff.png" |
| |
916 | format="PNG" /> |
| |
917 | </imageobject> |
| |
918 | |
| |
919 | <textobject> |
| |
920 | <phrase>Select Line Difference example</phrase> |
| |
921 | </textobject> |
| |
922 | </mediaobject> |
410 | |
923 | |
.411 | <keycap>Arrow</keycap> |
924 | <para>If you want to select the difference block itself, use |
412 | </keycombo> keys work in merge mode like in normal mode.</para> |
925 | <command>Current Difference</command> instead.</para> |
| |
926 | </listitem> |
| |
927 | </varlistentry> |
413 | |
928 | |
.414 | <para>When merge mode is enabled <guilabel>Merge</guilabel> text is shown in |
929 | <varlistentry> |
415 | statusbar.</para> |
930 | <term>Next Difference<indexterm> |
416 | </section> |
931 | <primary>Next Difference function</primary> |
417 | |
932 | |
.418 | <section> |
933 | <secondary>with Compare Files</secondary> |
419 | <title>Refreshing</title> |
934 | </indexterm></term> |
420 | |
935 | |
.421 | <para>Refreshing updates differences after changes are made to files. It is |
936 | <listitem> |
422 | important to do a refresh before merging changes between files.</para> |
937 | <para>Shortcuts: <inlinemediaobject> |
| |
938 | <imageobject> |
| |
939 | <imagedata contentdepth="15" |
| |
940 | fileref="screenshots/nextdiff_btn.png" /> |
| |
941 | </imageobject> |
| |
942 | |
| |
943 | <textobject> |
| |
944 | <phrase>Next Difference button</phrase> |
| |
945 | </textobject> |
| |
946 | </inlinemediaobject> button, <menuchoice> |
| |
947 | <guimenu>Merge</guimenu> |
| |
948 | |
| |
949 | <guimenuitem>Next Difference</guimenuitem> |
| |
950 | </menuchoice>, <keycombo> |
| |
951 | <keycap>Alt</keycap> |
| |
952 | |
| |
953 | <keycap>Down</keycap> |
| |
954 | </keycombo> (or <keycap>Down</keycap> in merge mode).</para> |
| |
955 | |
| |
956 | <para>Selects the next difference below your current cursor location |
| |
957 | in the document (not necessarily relative to the current |
| |
958 | difference). Use to step through differences sequentially from any |
| |
959 | point. Available except when the last difference is currently |
| |
960 | selected.</para> |
| |
961 | </listitem> |
| |
962 | </varlistentry> |
423 | |
963 | |
.424 | <note> |
964 | <varlistentry> |
425 | <para>Refresh does not reload file. That means, if another programs has |
965 | <term>Previous Difference<indexterm> |
426 | updated files etc, those changes are not seen. Refresh updates differences |
966 | <primary>Previous Difference function</primary> |
427 | according changes user has done.</para> |
| |
428 | </note> |
| |
429 | </section> |
| |
430 | |
967 | |
.431 | <section> |
968 | <secondary>with Compare Files</secondary> |
432 | <title>View Whitespaces</title> |
969 | </indexterm></term> |
433 | |
970 | |
.434 | <para>When enabled from <guimenu>View</guimenu> menu <guimenuitem>View |
971 | <listitem> |
435 | Whitespace</guimenuitem> feature shows all whitespace characters (spaces, |
972 | <para>Shortcuts: <inlinemediaobject> |
436 | tabulators, line ends). This is very useful for example when there are |
973 | <imageobject> |
437 | spaces in other file and tabulators in other. Also, if <guilabel>Preserve |
974 | <imagedata contentdepth="15" |
438 | original EOL chars</guilabel> is enabled, WinMerge shows type of EOL |
975 | fileref="screenshots/prevdiff_btn.png" /> |
439 | (<guilabel>Windows</guilabel>/<guilabel>Unix</guilabel>/<guilabel>Mac</guilabel>).</para> |
976 | </imageobject> |
440 | </section> |
977 | |
| |
978 | <textobject> |
| |
979 | <phrase>Previous Difference button</phrase> |
| |
980 | </textobject> |
| |
981 | </inlinemediaobject> button, <menuchoice> |
| |
982 | <guimenu>Merge</guimenu> |
| |
983 | |
| |
984 | <guimenuitem>Previous Difference</guimenuitem> |
| |
985 | </menuchoice>, <keycombo> |
| |
986 | <keycap>Alt</keycap> |
| |
987 | |
| |
988 | <keycap>Up</keycap> |
| |
989 | </keycombo> (or <keycap>Up</keycap> in merge mode).</para> |
| |
990 | |
| |
991 | <para>Selects the previous difference above your current cursor |
| |
992 | location (not necessarily relative to the current difference). Use |
| |
993 | to step backwards sequentially through differences. Available except |
| |
994 | when the first difference is currently selected.</para> |
| |
995 | </listitem> |
| |
996 | </varlistentry> |
441 | |
997 | |
.442 | <section> |
998 | <varlistentry> |
443 | <title>Editing Files</title> |
999 | <term>First Difference<indexterm> |
| |
1000 | <primary>First Difference function</primary> |
444 | |
1001 | |
.445 | <para>Normal editing features work in WinMerge editor. User can type and |
1002 | <secondary>with Compare Files</secondary> |
446 | delete text, select text, copy, cut and paste text etc. There is some |
1003 | </indexterm></term> |
447 | customisation because there can be removed lines in files (lines existing |
| |
448 | only in other side). Anyway these customisations are not usually visible to |
| |
449 | users otherwise that lines can sometimes "jump" when WinMerge has to |
| |
450 | relocate matching/non-matching files.</para> |
| |
451 | </section> |
| |
452 | |
1004 | |
.453 | <section> |
1005 | <listitem> |
454 | <title>Line Difference Highlight</title> |
1006 | <para>Shortcuts: <inlinemediaobject> |
| |
1007 | <imageobject> |
| |
1008 | <imagedata contentdepth="15" |
| |
1009 | fileref="screenshots/firstdiff_btn.png" /> |
| |
1010 | </imageobject> |
| |
1011 | |
| |
1012 | <textobject> |
| |
1013 | <phrase>First Difference button</phrase> |
| |
1014 | </textobject> |
| |
1015 | </inlinemediaobject> button, <menuchoice> |
| |
1016 | <guimenu>Merge</guimenu> |
| |
1017 | |
| |
1018 | <guimenuitem>First Difference</guimenuitem> |
| |
1019 | </menuchoice>, <keycombo> |
| |
1020 | <keycap>Alt</keycap> |
| |
1021 | |
| |
1022 | <keycap>Home</keycap> |
| |
1023 | </keycombo>.</para> |
| |
1024 | |
| |
1025 | <para>Use this to begin comparing or merging differences, or to |
| |
1026 | locate the first difference from any other location. Available |
| |
1027 | except when the first difference is currently selected. You can also |
| |
1028 | select a difference by double-clicking its text.</para> |
| |
1029 | </listitem> |
| |
1030 | </varlistentry> |
455 | |
1031 | |
.456 | <para>WinMerge can automatically highlight all differences it finds in |
1032 | <varlistentry> |
457 | lines. This makes it fast to look through and find differences. See |
1033 | <term>Current Difference<indexterm> |
458 | screenshot below for an example of highlighted differences.</para> |
1034 | <primary>Current Difference function</primary> |
459 | |
1035 | |
.460 | <mediaobject> |
1036 | <secondary>with Compare Files</secondary> |
461 | <imageobject> |
1037 | </indexterm></term> |
462 | <imagedata fileref="screenshots/filecomp_inlinediff.png" format="PNG" /> |
| |
463 | </imageobject> |
| |
464 | </mediaobject> |
| |
465 | |
1038 | |
.466 | <para>This feature can be enabled and disabled from menu <menuchoice> |
1039 | <listitem> |
467 | <guimenu>View</guimenu> |
1040 | <para>Shortcuts: <inlinemediaobject> |
| |
1041 | <imageobject> |
| |
1042 | <imagedata contentdepth="15" |
| |
1043 | fileref="screenshots/currentdiff_btn.png" /> |
| |
1044 | </imageobject> |
| |
1045 | |
| |
1046 | <textobject> |
| |
1047 | <phrase>Current Difference button</phrase> |
| |
1048 | </textobject> |
| |
1049 | </inlinemediaobject> button, <menuchoice> |
| |
1050 | <guimenu>Merge</guimenu> |
| |
1051 | |
| |
1052 | <guimenuitem>Current Difference</guimenuitem> |
| |
1053 | </menuchoice>, <keycombo> |
| |
1054 | <keycap>Alt</keycap> |
| |
1055 | |
| |
1056 | <keycap>Enter</keycap> |
| |
1057 | </keycombo>.</para> |
| |
1058 | |
| |
1059 | <para>This function has two modes of action:</para> |
| |
1060 | |
| |
1061 | <para><itemizedlist> |
| |
1062 | <listitem> |
| |
1063 | <simpara>If your cursor is inside a difference but no |
| |
1064 | difference is selected, this function selects the entire |
| |
1065 | difference. This is a very handy way to select a difference |
| |
1066 | using the keyboard.</simpara> |
| |
1067 | </listitem> |
| |
1068 | |
| |
1069 | <listitem> |
| |
1070 | <simpara>When there is a current difference, the function |
| |
1071 | jumps to that location. This is handy if you have scrolled the |
| |
1072 | selected difference out of view, and want to quickly return to |
| |
1073 | its location.</simpara> |
| |
1074 | </listitem> |
| |
1075 | </itemizedlist></para> |
| |
1076 | </listitem> |
| |
1077 | </varlistentry> |
468 | |
1078 | |
.469 | <guimenuitem>View Line Differences</guimenuitem> |
1079 | <varlistentry> |
470 | </menuchoice>.</para> |
1080 | <term>Last Difference (<keycombo> |
| |
1081 | <keycap>Alt</keycap> |
| |
1082 | |
| |
1083 | <keycap>End</keycap> |
| |
1084 | </keycombo>)<indexterm> |
| |
1085 | <primary>Last Difference function</primary> |
471 | |
1086 | |
.472 | <para>With default settings WinMerge uses whitespace characters (namely |
1087 | <secondary>with Compare Files</secondary> |
473 | spaces and tabulators) to separate words. WinMerge does not consider commas |
1088 | </indexterm></term> |
474 | or dots as word separators. That means WinMerge thinks "For Example" is two |
| |
475 | words but "For,Example" is one word. More characters can be included as |
| |
476 | word-separator characters from editor options (select from menu <menuchoice> |
| |
477 | <guimenu>Edit</guimenu> |
| |
478 | |
| |
479 | <guimenuitem>Options</guimenuitem> |
| |
480 | </menuchoice> and <guilabel>Editor</guilabel> page). See <xref |
| |
481 | linkend="Configuration" /> for more information.</para> |
| |
482 | </section> |
| |
483 | |
1089 | |
.484 | <section> |
1090 | <listitem> |
485 | <title>Line Difference Selection</title> |
1091 | <para>Shortcuts: <inlinemediaobject> |
| |
1092 | <imageobject> |
| |
1093 | <imagedata contentdepth="15" |
| |
1094 | fileref="screenshots/lastdiff_btn.png" /> |
| |
1095 | </imageobject> |
| |
1096 | |
| |
1097 | <textobject> |
| |
1098 | <phrase>Last Difference button</phrase> |
| |
1099 | </textobject> |
| |
1100 | </inlinemediaobject> button, <menuchoice> |
| |
1101 | <guimenu>Merge</guimenu> |
| |
1102 | |
| |
1103 | <guimenuitem>Last Difference</guimenuitem> |
| |
1104 | </menuchoice>, <keycombo> |
| |
1105 | <keycap>Alt</keycap> |
486 | |
1106 | |
.487 | <para>Many times it is useful to see exact differences inside lines. |
1107 | <keycap>End</keycap> |
488 | WinMerge can highlight different area between lines. This feature is called |
1108 | </keycombo>.</para> |
489 | <guilabel>Select Line Difference</guilabel>. It is available in |
| |
490 | <guimenu>Edit</guimenu>-menu, toolbar and shortcut key |
| |
491 | (<keycap>F4</keycap>). In screenshot below there is one difference |
| |
492 | highlighted</para> |
| |
493 | |
1109 | |
.494 | <mediaobject> |
1110 | <para>Enabled except when the last difference is currently |
495 | <imageobject> |
1111 | selected.</para> |
496 | <imagedata fileref="screenshots/linediff.png" format="PNG" /> |
1112 | </listitem> |
497 | </imageobject> |
1113 | </varlistentry> |
498 | </mediaobject> |
| |
499 | </section> |
| |
500 | |
1114 | |
.501 | <section> |
1115 | <varlistentry> |
502 | <title>Location Pane</title> |
1116 | <term>Go To<indexterm> |
| |
1117 | <primary>Go To function</primary> |
| |
1118 | </indexterm></term> |
503 | |
1119 | |
.504 | <para>Location pane is a handy side-pane showing a overall (difference) map |
1120 | <listitem> |
505 | of files compared.</para> |
1121 | <para>Shortcuts: <menuchoice> |
| |
1122 | <guimenu>Edit</guimenu> |
506 | |
1123 | |
.507 | <para><inlinemediaobject> |
1124 | <guimenuitem>Go to</guimenuitem> |
508 | <imageobject> |
1125 | </menuchoice>, <keycombo> |
509 | <imagedata fileref="screenshots/filecomp_locpane.png" format="PNG" /> |
1126 | <keycap>Ctrl</keycap> |
510 | </imageobject> |
1127 | |
511 | </inlinemediaobject></para> |
1128 | <keycap>G</keycap> |
| |
1129 | </keycombo>, context menu in File pane and Location pane.</para> |
| |
1130 | |
| |
1131 | <para>Enables you to jump to either a line number or a difference |
| |
1132 | number (for example, difference 2 is the second difference). Opens |
| |
1133 | the Go To dialog, where you specify the number, which file to use |
| |
1134 | (either the left or right), and the type of location (either line or |
| |
1135 | difference).</para> |
| |
1136 | |
| |
1137 | <tip> |
| |
1138 | <para>The Go To line number can be useful when you need to merge |
| |
1139 | the same change from one file to several target files. Jumping to |
| |
1140 | a particular difference can be quicker than using |
| |
1141 | <guimenuitem>Find</guimenuitem> to search text, or stepping |
| |
1142 | through differences.</para> |
| |
1143 | </tip> |
| |
1144 | </listitem> |
| |
1145 | </varlistentry> |
512 | |
1146 | |
.513 | <para>Location Pane shows differences as they are located in the files. So |
1147 | <varlistentry> |
514 | it gives a good overall view for files compared. Location Pane shows |
1148 | <term>Refresh</term> |
515 | differences with same colors than editor panes. There are different |
1149 | |
516 | indicators in Location Pane:</para> |
1150 | <listitem> |
517 | |
1151 | <para>See <xref linkend="Compare_files_merge_functions" />.</para> |
518 | <itemizedlist> |
1152 | </listitem> |
519 | <listitem> |
1153 | </varlistentry> |
520 | <simpara>small triangles point to begin of the selected |
1154 | </variablelist> |
521 | difference</simpara> |
1155 | </section> |
522 | </listitem> |
| |
523 | |
| |
524 | <listitem> |
| |
525 | <simpara>selected difference is shown with different color</simpara> |
| |
526 | </listitem> |
| |
527 | |
| |
528 | <listitem> |
| |
529 | <simpara>area visible in editor panes is shown with different background |
| |
530 | color</simpara> |
| |
531 | </listitem> |
| |
532 | </itemizedlist> |
| |
533 | |
| |
534 | <para>Clicking with mouse in Location Pane moves cursor to place clicked in |
| |
535 | file. Right-clicking with mouse opens the context menu with items to select |
| |
536 | line to go to. And the visible area locator (area with different background |
| |
537 | color) can be used like a scrollbar thumb - after pressing down the left |
| |
538 | mouse button over it can be dragged upwards and downwards to scroll the |
| |
539 | files.</para> |
| |
540 | </section> |
1156 | </section> |
541 | |
1157 | |
.542 | <section> |
1158 | <section id="Compare_files_merge"> |
543 | <title>Context Menu</title> |
1159 | <title>Merging Differences<indexterm> |
| |
1160 | <primary>merging differences</primary> |
| |
1161 | </indexterm></title> |
| |
1162 | |
| |
1163 | <para>Merging differences amounts to copying them from one File pane to the |
| |
1164 | other — either left to right, or right to left. This is different from |
| |
1165 | directly editing text using WinMerge's editing functions (described earlier |
| |
1166 | in this topic).</para> |
| |
1167 | |
| |
1168 | <section id="Compare_files_scan"> |
| |
1169 | <title>Rescanning files<indexterm> |
| |
1170 | <primary>rescanning files</primary> |
| |
1171 | </indexterm></title> |
| |
1172 | |
| |
1173 | <para>By default, the <guilabel>Automatic rescan</guilabel> option is |
| |
1174 | enabled in the Editor page of WinMerge options. WinMerge rescans your |
| |
1175 | files after every change to update its difference mapping. Without |
| |
1176 | rescanning, WinMerge differences might not be synchronized with the |
| |
1177 | current content of the files, causing unpredictable merge results.</para> |
| |
1178 | |
| |
1179 | <note> |
| |
1180 | <para>Rescanning does not reload files. Therefore, if an external |
| |
1181 | program has updated a file, those changes are not seen in WinMerge: only |
| |
1182 | changes made in WinMerge are used to update differences.</para> |
| |
1183 | </note> |
544 | |
1184 | |
.545 | <para>File compare context menu contains items for frequently used |
1185 | <important> |
546 | features:</para> |
1186 | <para>If <guilabel>Automatic rescan</guilabel> is disabled, we strongly |
| |
1187 | advise that you run <guimenuitem>Refresh</guimenuitem> |
| |
1188 | <emphasis>before</emphasis> performing any merge operation: click |
| |
1189 | <menuchoice> |
| |
1190 | <guimenu>Edit</guimenu> |
547 | |
1191 | |
.548 | <para><inlinemediaobject> |
1192 | <guimenuitem>Refresh</guimenuitem> |
549 | <imageobject> |
1193 | </menuchoice> or the <inlinemediaobject> |
550 | <imagedata fileref="screenshots/filecomp_context1.png" format="PNG" /> |
1194 | <imageobject> |
551 | </imageobject> |
1195 | <imagedata contentwidth="16" fileref="screenshots/refresh_btn.png" /> |
552 | </inlinemediaobject></para> |
1196 | </imageobject> |
| |
1197 | |
| |
1198 | <textobject> |
| |
1199 | <phrase>Refresh button</phrase> |
| |
1200 | </textobject> |
| |
1201 | </inlinemediaobject> toolbar button, or press |
| |
1202 | <keycap>F5</keycap>.</para> |
553 | |
1203 | |
.554 | <para>Most of these items are familiar from Main menu. Worth noting is last |
1204 | <para>If a merge result looks incorrect, click <menuchoice> |
555 | item <guimenuitem>Open</guimenuitem>. It allows to open file with (system) |
1205 | <guimenu>Edit</guimenu> |
556 | registered application or with external editor. Also context menu |
| |
557 | merge-commands are not relative to active file. They always merge the |
| |
558 | selected difference.</para> |
| |
559 | </section> |
| |
560 | |
1206 | |
.561 | <section> |
1207 | <guimenuitem>Undo</guimenuitem> |
562 | <title>Fonts</title> |
1208 | </menuchoice> or press <keycombo> |
| |
1209 | <keycap>Ctrl</keycap> |
| |
1210 | |
| |
1211 | <keycap>Z</keycap> |
| |
1212 | </keycombo> to undo the merge. Then rescan the files and try merging |
| |
1213 | again.</para> |
| |
1214 | </important> |
| |
1215 | </section> |
563 | |
1216 | |
.564 | <para>Font used by editor can be changed from <menuchoice> |
1217 | <section id="Compare_files_merge_functions"> |
565 | <guimenu>View</guimenu> |
1218 | <title>Merge functions<indexterm> |
| |
1219 | <primary>WinMerge functions</primary> |
| |
1220 | |
| |
1221 | <secondary>merging</secondary> |
| |
1222 | </indexterm></title> |
| |
1223 | |
| |
1224 | <para>The merging functions can implicitly select differences based on a |
| |
1225 | cursor location or text selection. For example, if you click anywhere in a |
| |
1226 | difference and then click the <guibutton>Copy Right</guibutton> toolbar |
| |
1227 | button, the entire difference block is merged. This makes it easy to merge |
| |
1228 | many small differences. Similarly, if you select text that spans all or |
| |
1229 | part of multiple differences, all the included differences are merged with |
| |
1230 | a single merge command.</para> |
| |
1231 | |
| |
1232 | <para>If the result of a merge operation is not what you expected, you can |
| |
1233 | click <guibutton>Undo</guibutton> to reverse the operation.</para> |
| |
1234 | |
| |
1235 | <para>Here are the merge functions and their shortcuts in the toolbar and |
| |
1236 | menus:</para> |
| |
1237 | |
| |
1238 | <variablelist> |
| |
1239 | <varlistentry> |
| |
1240 | <term>Copy Right<indexterm> |
| |
1241 | <primary>Copy Right function</primary> |
| |
1242 | </indexterm></term> |
566 | |
1243 | |
.567 | <guimenuitem>Select Font...</guimenuitem> |
1244 | <listitem> |
568 | </menuchoice>. Due to limitations in the editor, only fixed width fonts |
1245 | <para>Shortcuts: <inlinemediaobject> |
569 | are supported in WinMerge.</para> |
1246 | <imageobject> |
570 | |
1247 | <imagedata contentwidth="17" |
571 | <para>Font suggestions for use of WinMerge with East Asian languages:</para> |
1248 | fileref="screenshots/copyr_button.png" /> |
572 | |
1249 | </imageobject> |
573 | <itemizedlist> |
1250 | |
574 | <listitem> |
1251 | <textobject> |
575 | <simpara>Simplified Chinese texts with the <guilabel>SimSun</guilabel> |
1252 | <phrase>Copy Right button</phrase> |
576 | or <guilabel>SimHei</guilabel> fixed-width fonts</simpara> |
1253 | </textobject> |
577 | </listitem> |
1254 | </inlinemediaobject> button, <menuchoice> |
578 | |
1255 | <guimenu>Merge</guimenu> |
579 | <listitem> |
1256 | |
580 | <simpara>Traditional Chinese texts with the <guilabel>MingLiU</guilabel> |
1257 | <guimenuitem>Copy to Right</guimenuitem> |
581 | fixed-width font, or</simpara> |
1258 | </menuchoice>, <keycombo> |
582 | </listitem> |
1259 | <keycap>Alt</keycap> |
583 | |
1260 | |
584 | <listitem> |
1261 | <keycap>Right</keycap> |
585 | <simpara>Japanese texts with the <guilabel>MS Gothic</guilabel> or |
1262 | </keycombo> ( or <keycap>Right</keycap> in merge mode), context |
586 | <guilabel>MS Mincho</guilabel> fixed-width fonts</simpara> |
1263 | menu in File pane within a difference, and in Diff pane.</para> |
587 | </listitem> |
1264 | |
588 | |
1265 | <para>Copies one or more difference from left to right. Note that |
589 | <listitem> |
1266 | differences do not need to be fully selected: At its simplest, this |
590 | <simpara>Korean texts with the <guilabel>GulimChe</guilabel> fixed-width |
1267 | means replacing text in the target difference with text in source |
591 | font (not Gulim as this variant uses proportional-spacing glyphs that |
1268 | difference. But because differences can also contain empty lines, |
592 | are not centered in grid cells and then poorly aligned in fixed-width |
1269 | new lines may be created or removed.</para> |
593 | mode)</simpara> |
1270 | </listitem> |
594 | </listitem> |
1271 | </varlistentry> |
595 | </itemizedlist> |
| |
596 | </section> |
| |
597 | |
1272 | |
.598 | <section id="ResolveConflictFiles"> |
1273 | <varlistentry> |
599 | <title><indexterm> |
1274 | <term>Copy Left<indexterm> |
600 | <primary>Conflict Files</primary> |
1275 | <primary>Copy Left function</primary> |
601 | </indexterm>Resolving Conflict Files</title> |
1276 | </indexterm></term> |
602 | |
| |
603 | <para>WinMerge can resolve conflict files several version control systems |
| |
604 | produce when merging files. Conflict file is basically two different |
| |
605 | versions of files embedded into one file. WinMerge reads this file and |
| |
606 | separates it into its original files, and shows those files in file compare. |
| |
607 | So conflicted file can be resolved using normal WinMerge file compare |
| |
608 | functionality.</para> |
| |
609 | |
1277 | |
.610 | <section> |
1278 | <listitem> |
611 | <title>Opening Conflict Files</title> |
1279 | <para>Shortcuts: <inlinemediaobject> |
| |
1280 | <imageobject> |
| |
1281 | <imagedata contentwidth="17" |
| |
1282 | fileref="screenshots/copyl_button.png" /> |
| |
1283 | </imageobject> |
| |
1284 | |
| |
1285 | <textobject> |
| |
1286 | <phrase>Copy Left button</phrase> |
| |
1287 | </textobject> |
| |
1288 | </inlinemediaobject> button, <menuchoice> |
| |
1289 | <guimenu>Merge</guimenu> |
| |
1290 | |
| |
1291 | <guimenuitem>Copy to Left</guimenuitem> |
| |
1292 | </menuchoice>, <keycombo> |
| |
1293 | <keycap>Alt</keycap> |
| |
1294 | |
| |
1295 | <keycap>Left</keycap> |
| |
1296 | </keycombo> (or <keycap>Left</keycap> in merge mode), context menu |
| |
1297 | in File pane within a difference, and in Diff pane.</para> |
| |
1298 | |
| |
1299 | <para>Copies the current difference from the right to the left File |
| |
1300 | pane. See <command>Copy Righ</command>t description for |
| |
1301 | details.</para> |
| |
1302 | </listitem> |
| |
1303 | </varlistentry> |
612 | |
1304 | |
.613 | <para>Conflict files can be opened into WinMerge using <menuchoice> |
1305 | <varlistentry> |
| |
1306 | <term>Copy Right and Advance<indexterm> |
| |
1307 | <primary>Copy Right and Advance function</primary> |
| |
1308 | </indexterm></term> |
| |
1309 | |
| |
1310 | <listitem> |
| |
1311 | <para>Shortcuts: <inlinemediaobject> |
| |
1312 | <imageobject> |
| |
1313 | <imagedata contentdepth="15" |
| |
1314 | fileref="screenshots/copyr_adv_btn.png" /> |
| |
1315 | </imageobject> |
| |
1316 | |
| |
1317 | <textobject> |
| |
1318 | <phrase>Copy Right and Advance button</phrase> |
| |
1319 | </textobject> |
| |
1320 | </inlinemediaobject> button, <menuchoice> |
| |
1321 | <guimenu>Merge</guimenu> |
| |
1322 | |
| |
1323 | <guimenuitem>Copy to Left</guimenuitem> |
| |
1324 | </menuchoice>, <keycombo> |
| |
1325 | <keycap>Ctrl</keycap> |
| |
1326 | |
| |
1327 | <keycap>Alt</keycap> |
| |
1328 | |
| |
1329 | <keycap>Right</keycap> |
| |
1330 | </keycombo>, context menu in File pane within a difference.</para> |
| |
1331 | |
| |
1332 | <para>Merges the current difference from the right to the left File |
| |
1333 | pane, then selects the next difference (if one exists). Equivalent |
| |
1334 | to <command>Copy Right</command> and <command>Next |
| |
1335 | Difference</command> in one step.</para> |
| |
1336 | </listitem> |
| |
1337 | </varlistentry> |
| |
1338 | |
| |
1339 | <varlistentry> |
| |
1340 | <term>Copy Left and Advance<indexterm> |
| |
1341 | <primary>Copy Left and Advance function</primary> |
| |
1342 | </indexterm></term> |
| |
1343 | |
| |
1344 | <listitem> |
| |
1345 | <para>Shortcuts: <inlinemediaobject> |
| |
1346 | <imageobject> |
| |
1347 | <imagedata contentdepth="15" |
| |
1348 | fileref="screenshots/copyl_adv_btn.png" /> |
| |
1349 | </imageobject> |
| |
1350 | |
| |
1351 | <textobject> |
| |
1352 | <phrase>Copy Left and Advance button</phrase> |
| |
1353 | </textobject> |
| |
1354 | </inlinemediaobject> button, <menuchoice> |
| |
1355 | <guimenu>Merge</guimenu> |
| |
1356 | |
| |
1357 | <guimenuitem>Copy to Left</guimenuitem> |
| |
1358 | </menuchoice>, <keycombo> |
| |
1359 | <keycap>Ctrl</keycap> |
| |
1360 | |
| |
1361 | <keycap>Alt</keycap> |
| |
1362 | |
| |
1363 | <keycap>Left</keycap> |
| |
1364 | </keycombo>, context menu in File pane within a difference.</para> |
| |
1365 | |
| |
1366 | <para>Merges the current difference from left to right, then selects |
| |
1367 | the next difference (if one exists). Equivalent to <command>Copy |
| |
1368 | Left</command> and <command>Next Difference</command> in one |
| |
1369 | step.</para> |
| |
1370 | </listitem> |
| |
1371 | </varlistentry> |
| |
1372 | |
| |
1373 | <varlistentry> |
| |
1374 | <term>All Right<indexterm> |
| |
1375 | <primary>All Right function</primary> |
| |
1376 | </indexterm></term> |
| |
1377 | |
| |
1378 | <listitem> |
| |
1379 | <para>Shortcuts: <inlinemediaobject> |
| |
1380 | <imageobject> |
| |
1381 | <imagedata contentdepth="15" |
| |
1382 | fileref="screenshots/allright_btn.png" /> |
| |
1383 | </imageobject> |
| |
1384 | |
| |
1385 | <textobject> |
| |
1386 | <phrase>All Right button</phrase> |
| |
1387 | </textobject> |
| |
1388 | </inlinemediaobject> button, <menuchoice> |
| |
1389 | <guimenu>Merge</guimenu> |
| |
1390 | |
| |
1391 | <guimenuitem>Copy to Left</guimenuitem> |
| |
1392 | </menuchoice>, <keycombo> |
| |
1393 | <keycap>Alt</keycap> |
| |
1394 | |
| |
1395 | <keycap>Left</keycap> |
| |
1396 | </keycombo>, context menu in File pane within a difference.</para> |
| |
1397 | |
| |
1398 | <para>Copies all differences from the left to the right File pane. |
| |
1399 | Use to synchronize two files with one command. Similarly, you can |
| |
1400 | back out the entire merge by clicking the<inlinemediaobject> |
| |
1401 | <imageobject> |
| |
1402 | <imagedata contentdepth="11" |
| |
1403 | fileref="screenshots/undo_btn.png" /> |
| |
1404 | </imageobject> |
| |
1405 | |
| |
1406 | <textobject> |
| |
1407 | <phrase>Refresh button</phrase> |
| |
1408 | </textobject> |
| |
1409 | </inlinemediaobject> Undo or pressing <keycombo> |
| |
1410 | <keycap>Ctrl</keycap> |
| |
1411 | |
| |
1412 | <keycap>Z</keycap> |
| |
1413 | </keycombo>.</para> |
| |
1414 | </listitem> |
| |
1415 | </varlistentry> |
| |
1416 | |
| |
1417 | <varlistentry> |
| |
1418 | <term>All Left<indexterm> |
| |
1419 | <primary>All Left function</primary> |
| |
1420 | </indexterm></term> |
614 | <guimenu>File</guimenu> |
| |
615 | |
1421 | |
.616 | <guimenuitem>Open Conflict File...</guimenuitem> |
1422 | <listitem> |
617 | </menuchoice>. Conflict file to resolve can be selected using file |
1423 | <para>Shortcuts: <inlinemediaobject> |
618 | selection dialog that opens. At the moment there are no other ways to open |
1424 | <imageobject> |
619 | conflict files.</para> |
1425 | <imagedata contentdepth="15" |
620 | |
1426 | fileref="screenshots/allleft_btn.png" /> |
621 | <warning> |
1427 | </imageobject> |
622 | <para>WinMerge overwrites original conflict file. If original file is |
1428 | |
623 | wanted to save, it must be copied to another folder or another filename |
1429 | <textobject> |
624 | before opening it into WinMerge.</para> |
1430 | <phrase>All Left button</phrase> |
625 | </warning> |
1431 | </textobject> |
| |
1432 | </inlinemediaobject> button, <menuchoice> |
| |
1433 | <guimenu>Merge</guimenu> |
| |
1434 | |
| |
1435 | <guimenuitem>Copy to Left</guimenuitem> |
| |
1436 | </menuchoice>, <keycombo> |
| |
1437 | <keycap>Alt</keycap> |
| |
1438 | |
| |
1439 | <keycap>Left</keycap> |
| |
1440 | </keycombo>, context menu in File pane within a difference.</para> |
| |
1441 | |
| |
1442 | <para>Copies all differences from the right to the left File pane. |
| |
1443 | Effectively, replaces the content of the left File pane. See similar |
| |
1444 | to <command>All Right</command>.</para> |
| |
1445 | </listitem> |
| |
1446 | </varlistentry> |
| |
1447 | |
| |
1448 | <varlistentry> |
| |
1449 | <term>Refresh<indexterm> |
| |
1450 | <primary>Refresh function</primary> |
| |
1451 | |
| |
1452 | <seealso>rescanning files</seealso> |
| |
1453 | </indexterm></term> |
| |
1454 | |
| |
1455 | <listitem> |
| |
1456 | <para>Shortcuts: <inlinemediaobject> |
| |
1457 | <imageobject> |
| |
1458 | <imagedata contentwidth="16" |
| |
1459 | fileref="screenshots/refresh_btn.png" /> |
| |
1460 | </imageobject> |
| |
1461 | |
| |
1462 | <textobject> |
| |
1463 | <phrase>Refresh button</phrase> |
| |
1464 | </textobject> |
| |
1465 | </inlinemediaobject> button, <menuchoice> |
| |
1466 | <guimenu>View</guimenu> |
| |
1467 | |
| |
1468 | <guimenuitem>Refresh</guimenuitem> |
| |
1469 | </menuchoice>, <keycap>F5</keycap>.</para> |
| |
1470 | |
| |
1471 | <para>Rescans files to update differences. Use after changes are |
| |
1472 | made to files, if automatic scanning is disabled (see <xref |
| |
1473 | linkend="Compare_files_scan" /> for details).</para> |
| |
1474 | </listitem> |
| |
1475 | </varlistentry> |
| |
1476 | </variablelist> |
626 | </section> |
1477 | </section> |
627 | |
1478 | |
.628 | <section> |
1479 | <section id="ResolveConflictFiles"> |
629 | <title>Conflict Resolving</title> |
1480 | <title>Resolving Conflict Files<indexterm> |
| |
1481 | <primary>conflict files</primary> |
| |
1482 | </indexterm></title> |
| |
1483 | |
| |
1484 | <para>You can use WinMerge to resolve conflict files that some version |
| |
1485 | control systems produce during their merge operations. A conflict file is |
| |
1486 | created when a merge encounters differences that cannot be automatically |
| |
1487 | resolved. It is a single file containing the incompletely merged content |
| |
1488 | of the two files. WinMerge separates the conflict file into separate files |
| |
1489 | and opens those files in file Compare window. You can then use WinMerge's |
| |
1490 | compare and merge functions to resolve the conflicts and save the merged |
| |
1491 | result file.</para> |
| |
1492 | |
| |
1493 | <orderedlist> |
| |
1494 | <listitem> |
| |
1495 | <para>Click <menuchoice> |
| |
1496 | <guimenu>File</guimenu> |
| |
1497 | |
| |
1498 | <guimenuitem>Open Conflict File</guimenuitem> |
| |
1499 | </menuchoice>, and use the Open dialog to select the conflict file |
| |
1500 | in your file system. The conflict file opens in the File Compare |
| |
1501 | window:</para> |
| |
1502 | |
| |
1503 | <itemizedlist> |
| |
1504 | <listitem> |
| |
1505 | <para>The left File pane file header is titled, <guilabel>Theirs |
| |
1506 | File</guilabel>. This side represents the file that is usually in |
| |
1507 | the version control system's repository. This file usually cannot |
| |
1508 | be edited, so WinMerge sets the left File pane to be read-only. |
| |
1509 | This means that differences can be merged only from this file to |
| |
1510 | the other file.</para> |
| |
1511 | </listitem> |
| |
1512 | |
| |
1513 | <listitem> |
| |
1514 | <para>The right File pane is titled, <guilabel>Mine |
| |
1515 | File</guilabel>. This side is the working copy of the file. All |
| |
1516 | changes should be done to this file, which is the result |
| |
1517 | file.</para> |
| |
1518 | |
| |
1519 | <para>The <guilabel>Mine File</guilabel> side is set to modified |
| |
1520 | after opening conflict file (you will notice the asterisk in the |
| |
1521 | File pane header). This allows you to save the file quickly if the |
| |
1522 | it does not require any changes. It also ensures that you do not |
| |
1523 | forget to resolve the files. If you choose not to save the file, |
| |
1524 | the original conflict file is not modified.</para> |
| |
1525 | </listitem> |
| |
1526 | </itemizedlist> |
| |
1527 | </listitem> |
| |
1528 | |
| |
1529 | <listitem> |
| |
1530 | <para>Use all the normal compare and merge functions described earlier |
| |
1531 | in this topic to resolve the conflicts in the Mine File pane. </para> |
| |
1532 | </listitem> |
| |
1533 | |
| |
1534 | <listitem> |
| |
1535 | <para>When you are done, click <keycombo> |
| |
1536 | <keycap>Ctrl</keycap> |
| |
1537 | |
| |
1538 | <keycap>S</keycap> |
| |
1539 | </keycombo> to save the the <guilabel>Mine File</guilabel> side as |
| |
1540 | the result file. By default, the new version overwrites the original |
| |
1541 | conflict file. Alternatively, you can click <menuchoice> |
| |
1542 | <guimenu>File</guimenu> |
| |
1543 | |
| |
1544 | <guimenuitem>Save Right</guimenuitem> |
| |
1545 | |
| |
1546 | <guimenuitem>Save As</guimenuitem> |
| |
1547 | </menuchoice>, and choose a different file name.</para> |
| |
1548 | </listitem> |
| |
1549 | </orderedlist> |
630 | |
1550 | |
.631 | <para>WinMerge opens conflict file into normal file compare (see above). |
1551 | <para>Many version control systems allow you to configure an external |
632 | All normal WinMerge file compare features are in use. Files in two panels |
1552 | merge tool. If yours does, you might be able to have your version control |
633 | are:</para> |
1553 | system launch WinMerge automatically when a merge conflict occurs.</para> |
634 | |
1554 | |
635 | <simplelist> |
1555 | <para>You can also open a conflict file from the WinMerge command line, |
636 | <member><emphasis>Left panel</emphasis>: this file is called |
1556 | which accepts three filename parameters: <option>Theirs</option>, |
637 | "<emphasis>theirs</emphasis>" file. It is usually the file that is in |
1557 | <option>Mine</option>, and optionally, <option>Resolved</option> (if you |
638 | version control system's repository. This file usually cannot be edited. |
1558 | want a different result file from the conflict file). For more |
639 | An as such, WinMerge opens left-side file as read-only. Differences can |
1559 | information, see <xref linkend="CommandLine" />. Single path to the |
640 | be moved only from this file to the another file.</member> |
1560 | conflict file is also accepted in command line.</para> |
641 | |
| |
642 | <member><emphasis>Right panel</emphasis>: this file is called |
| |
643 | "<emphasis>mine</emphasis>" file. It is the user's working file |
| |
644 | originally. All changes should be done to this file. I.e. this file is |
| |
645 | at the same time the result file.</member> |
| |
646 | </simplelist> |
| |
647 | |
| |
648 | <para>After the wanted resolved file is in right-side panel, it can be |
| |
649 | saved like normal file. WinMerge saves the file over original file.</para> |
| |
650 | |
| |
651 | <para>Left side "<emphasis>mine</emphasis>" file is set to modified after |
| |
652 | opening conflict file. This allows fast resolve by just saving the file |
| |
653 | when user's file is the wanted end result. This also prevents accidentally |
| |
654 | not resolving the files. As resolving only happens when file is saved. If |
| |
655 | file is no saved, original conflict file is kept unmodified.</para> |
| |
656 | |
| |
657 | <para>Many version control tools allow configuring external merge tool. |
| |
658 | WinMerge accepts three filenames ("T<guilabel>heirs</guilabel>", |
| |
659 | "<guilabel>Mine</guilabel>" and "<guilabel>Resolved</guilabel>") as |
| |
660 | command line parameters. See more info from <xref |
| |
661 | linkend="CommandLine" />. Single path to the conflict file is also |
| |
662 | accepted in command line.</para> |
| |
663 | </section> |
1561 | </section> |
664 | </section> |
1562 | </section> |
665 | </article> |
1563 | </article> |
| | | |
| |
| |