Comparing and merging folders


This topic describes how to compare and merge folders using the Folder Compare window.

1. Starting a folder compare operation

You can begin a folder compare operation from either the WinMerge window or a Command Prompt window.

From the WinMerge window

Click FileOpen. Use the Select Files or Folders dialog to specify the left and right folders to compare. By default, the compare includes all files in the folders, and is nonrecursive (does not include subfolders). To change any of these options and for more details about the Select Files or Folder dialog, see Opening files and folders.

From a Command Prompt window

Run WinMergeU.exe, which is in your WinMerge install directory. In your command arguments, include the left and right folders to compare. By default, the compare includes all files in the folders, and is nonrecursive. To change any of these options and for information about other command options, see Command line.

[Tip] Tips
Recursive mode

Recursive mode is useful for detecting and manipulating different files in an entire folder structure. However, it can be slow if there are many subfolders and files. For deeply nested directory structures, consider enabling the Tree view for easier navigation of the Compare window.

Nonrecursive mode has the advantage of speed when there are many subfolders that need not be examined. Also, the display can be easier to manage because it shows items in only selected folders.

Quick Contents comparisons

The Quick Contents method for file comparison, described in Options and configuration, can be useful when you compare big binary files; and it is automatically used to compare files bigger than 4 MB. Possible disadvantages are that line filters do not work, and there is no difference counts information in the Folder Compare window. This should not matter In most cases, because such large files are usually binary.

To use this method, configure it before your compare operation: in the Compare page of the WinMerge options, click the File Compare method drop-down menu and choose Quick Contents.

For advanced users

You can change the 4 MB file size limit of the Compare by Quick Contents, for example if you have a lot of very big text files. To do so, run the Windows regedit command, navigate to this keyword, and modify its value:

HKEY_CURRENT_USER\Software\Thingamahoochie\WinMerge\Settings\QuickMethodLimit

As usual, be careful when editing the registry!

1.1. Folder Compare Progress window

When you start a folder compare operation, WinMerge displays this status window:

Folder Compare Progress window

If the compare operation is quick, you might not notice the Progress window, which closes as soon as WinMerge displays the Folder Compare result. The Progress window shows the number of files and folders to be included in the operation, and the number compared so far. The progress bar graphically represents the Items compared.

[Note] Note

Because the files compares are usually of different sizes, the status data does not indicate the time used or remaining. For example, a 50/100 ratio does not necessarily mean that half of the compare operation time is expired.

You can click Stop to terminate the operation at any time before the compare operation finishes. The Folder Compare window is displayed with the results calculated at that time, omitting any uncompleted results.

2. Folder Compare window

The Folder Compare window shows the result of a folder compare. Two different views are available:

Tabular view

In tabular view, each file or folder in the result is listed in a row. This is the default view. Here's an example:

Tree view

In the tree view, folders are expandable and collapsible, containing files and subfolders. The tree view is available only in recursive compares. For example:

  • To expand or collapse a single folder, click the plus or minus control beside the folder icon, or double-click anywhere in the row.

  • To expand or collapse all folders in the view, click ViewExpand All Subfolders or ViewCollapse All Subfolders in the menu.

During a recursive compare (that is, if you enabled the Include Subfolders option in the Select Files or Folders dialog when you launched the compare), you can click ViewTree Mode command to switch between the two views. The ViewTree Mode command is disabled for non-recursive compares.

In both views, the columns show different types of data for each result item. You can control the sorting of items in the view by clicking a column heading. This changes the sorting in two ways:

  • Toggles (reverses) the sort order of the column.

  • Resorts all the rows in the view by the column.

2.1. Recursive and nonrecursive compare results

The Folder Compare window looks and behaves slightly differently for recursive and nonrecursive compares:

Recursive folder compare

The compare result includes all subfolders. You can control the types of items displayed within the folders by choosing the options in the View menu (for example, Show Identical Items). The Folder column is always empty: only the files within the folders are displayed. To see an item's subfolder, look at its path in the Compare result column. Folders that exist on only one side are displayed if one of the View menu options, Show Left Unique Files or Show Left Unique Files, is enabled.

Nonrecursive folder compare

The result includes only the files and subfolders at the top level of the selected folders. However, you can browse to any subfolder that you want to compare.

2.2. File and folder icons

In the Compare Folders window, files and folders are compared and divided into several categories. In each row, the category is clearly identified in the left column with one of these icons :

Identical text files
Identical binary files
Identical files (type undetermined)
Different text files
Different binary files
Different files (type undetermined)
Identical folders (in tree view only)
Different folders (in tree view only)
Left-only folders
Right-only folders
Left-only files
Right-only files
Skipped (filtered) directories
Skipped (filtered) files
Items that can't be compared; for example when another program has locked the file.
Aborted item. WinMerge did not finish comparing this item when the compare was stopped. The result is unknown.

2.3. Navigating the Folder Compare window

You can use the mouse as well as keyboard and context menu shortcuts to navigate the Folder Compare window. You can also use the toolbar buttons. For example, the Next Difference button Next Difference button finds the next different file or folder and selects it.

[Note] Note

Unique files and folders are navigated in the same way as different ones.

You can select multiple files and folders. However, some operations (like Rename) are not available with multiple selections.

Use the navigation buttons (Next Difference, Previous Difference, and so on) to step through differences in the compared files. Use WinMerge functions to merge contents by copying, moving, or delete one or more files or subfolders.

2.4. Working with multiple Compare windows

By default, the WinMerge window displays a single File Compare or Folder Compare window.

In single compare mode, of you start a file or folder comparison while a Compare window is currently open, the current File Compare window is closed if there are no changes in either side. But if WinMerge detects unsaved changes (for example, if you have merged or edited a file),.WinMerge prompts you to save or discard your changes before opening a new File Compare window.

For example, in the next screen shot WinMerge gives you a chance to save changes detected in the right side file:

Save modifed files dialog

If you want to work with multiple compare operations simultaneously, consider setting (checking) the Enable multiple compare windows for Folder compare option, which is disabled by default. With this option enabled, you can open multiple File Compare windows without the intervening Save step.

When you open multiple Compare windows, they're displayed by default as individually resizeable child windows within the WinMerge window. This example shows a Folder Compare window — the File Compare window has similar child windows:

Multiple Folder Compare windows: default display

You can control the layering of multiple windows in either of two ways:

  • Control the windows directly, for example by clicking a title bar to bring its window to the top, or minimizing a window.

  • Click the Window menu, which lists the windows that are currently open, and choose the window that you want to bring to the top.

2.4.1. Using tabs with maximized Compare windows

Often, it's convenient to maximize your Compare window (by clicking its Maximixe button). The window then fills all the available space in the WinMerge window. The screen shot below shows a maximized Compare window.

Multiple Folder Compare windows: maximized

When you maximize one Compare window, any other Compare windows are hidden, as shown in the preceding screen shot. To access those windows, you could return to the default view by clicking the Restore button Restore button. A better solution is to enable tabs by setting (checking) ViewTab Bar.

When you display the Tab bar, each Compare window has a tab that shows the filenames of the two compared files. Now, you can easily identify and display any available Compare window, and the selected Compare window remains maximized:

Multiple Folder Compare windows: tabbed

3. File operations in Folder Compare

The Folder Compare window supports common operations on files, like editing, copying, deleting, moving, and renaming (moving is equivalent to a copy operation followed by a delete). You can use these file operations and some special WinMerge functions to merge the contents of folders. You can also open files using associated programs or external editors.

The most convenient way to perform most of these tasks is to right-click one or more items and use the context menu, where all file operations are available.

3.1. Copying files

The most common file operation in the Folder Compare window is copying files from side to side. There are several forms of the WinMerge copy function: all of them copy only files that are different, because copying identical files is of no use in merging. The copy functions are available in the context menu, in the WinMerge menu, and in the toolbar:

3.1.1. Context menu Copy shortcuts

In the Folder Compare window's context menu, the Copy item has a submenu with four shortcuts:

Folder Compare window Copy context menu
  • Left to Right and Right to Left copy the selection (or just the items in the selection that can be copied) from one side to the other. In the example, the suffix (2 of 4) indicates that only the two files that are different will be copied; the identical files will not. These shortcuts available only if any of the files you select is different: if you select only identical files, the shortcuts are unavailable.

  • Left to... and Right to... enable you to specify a copy target directory in your system, instead of a compared folder. When the Browse for Folder dialog opens, navigate to the target directory on your system (or create a new target folder) and click OK.

3.1.2. Toolbar and menu Copy commands

In the Folder Compare toolbar, Copy Right button Copy Right and Copy Left button Copy Left accomplish the same task as the Left to Right and Right to Left context menu shortcuts: they copy from side to side only files that are valid to copy. However, these commands do not directly display the number of files to be copied; instead, they display a confirmation dialog where you can check a list of source and target file paths.

In the WinMerge menu, MergeCopy to Right and MergeCopy to Left behave the same way as the toolbar Copy commands.

3.2. Deleting files

You can use the Delete context menu item to delete selected items in either or both sides. Like other file operations, Delete has a submenu with Left, Right, and Both shortcuts.

[Warning] Warning

We highly recommend that you keep the Send deleted files into Recycle Bin option enabled See Options and configuration), so that you can undo deletions in case of accidents. In addition, you should keep Recycle Bin enabled: the WinMerge option does not work if you disable the Recycle Bin in Windows. Again, you cannot undo file or folder deletion unless you use both the WinMerge Send deleted files into Recycle Bin option and the Windows Recycle Bin!

3.3. Renaming files

To rename a file or folder, choose Rename in its context menu or press F2. Then change the name in the edit box and press Return, or press Esc to cancel. You can only rename a single file or folder. Note that renaming changes items in both sides: it is not currently possible to rename an item on just one side.

3.4. Opening files

In the context menu, you can use either Open Left and Open Right, depending on which side you want to operate on. Each Open menu item has a submenu with these shortcuts:

with Registered Application

Opens the file with the application (if any) that is registered in Windows for the file's type.

[Tip] Tip

This shortcut usually opens a folder in a new Windows Explorer.

with External Editor

Opens the file with an external editor. The default editor is Notepad, but you can configure a different one in WinMerge options.

with...

Opens the Open With dialog, where you can specify an application to open your file with.

3.5. Copying pathnames or filenames

The context menu Copy Pathname and Copy Filenames shortcuts copy the pathname or filename of selected items to the Windows clipboard. You can then paste the copied information into a file or application, for example to create a list of changed files or a change log.

  • Copy Pathnames has a menu with three shortcuts, similar to other file operations. It copies the full pathnames of one or more selected items to the clipboard, one per line.

  • Copy Filenames copies only filenames without paths.

3.6. Protecting files

To protect the files and folders on either side of a compare from changes, enable the FileLeft Read-only or FileRight Read-only check box.

[Important] Important

Setting the read-only option protects files and folders only in the current compare view; it does not affect their Windows file attributes.

This protected status is inherited by files that you open in the folder compare. For example, if you compare two folders, set one side read-only, and open two files for comparing, the open file on the protected side is write-protected. Similarly, you cannot copy a file from the unprotected side to the protected side.

The RO code in the left or right side's pane in the status bar (near the bottom right of the window) indicates that the side is currently read-only.

3.7. Refreshing selected items in the view

A full refresh of large folders can take a long time. In WinMerge 2.2 and earlier, you always had to do a full refresh to update files after editing them outside WinMerge. Starting in Version 2.4, WinMerge can refresh just selected items: choose Refresh from the context menu or ViewRefresh Selected from the main menu.

3.8. Archiving files

Use the context menu Zip menu item to create a new archive file containing the items you select.

[Note] Note

Archive support requires that you have installed the WinMerge 7-Zip plugin.

The Zip menu item has a submenu with four shortcuts:

Left

Adds left-side files and folders recursively to the archive file

Right

Adds right-side files and folders recursively to the archive file

Both

Adds files and folders recursively from both sides to the archive file. Because the filenames are same, they are added to different subfolders, named Original and Altered, inside the archive: left-side files are put to Original, and right-side files are put into Altered.

Differences

Like Both, but adds only different files (including unique files) from both sides.

When you select one of the Zip shortcuts, the Save As dialog prompts you for the archive filename and type. WinMerge cannot add files to existing archive files: it always creates a new archive file.

[Tip] Tip

WinMerge can compare the contents of archive files that have the same name on both sides: WinMerge looks for the Original and Altered subfolders, and compares the contents of those two folders.

If a folder compare includes the contents of an archive file, any changes made to the included files in WinMerge (for example, using an Open file operation to edit the file) are saved in the archive file. But you cannot update archive contents by using the WinMerge Copy, Move, or Delete file operations. Instead, create a new archive file using one of the Zip shortcuts.

4. Browsing folders in the Folder Compare window

This section discusses ways to browse folders that are listed in a Compare Folder window. When you browse a folder, you perform a completely new compare operation. Its result overwrites the current result in the window.

4.1. Browsing folders in a nonrecursive compare

Even though a nonrecursive folder compare does not include the contents of subfolders, the subfolders themselves are listed as files in the result. Similarly, the compared folder's parent folder is listed as a file at the top of the table. By opening these folders directly in the Folder Compare window, you can selectively browse a directory tree. This approach — comparing just the subdirectories you are interested in — can be more efficient than performing a recursive compare on the entire directory tree.

Browsing the parent folder

To compare the parent folder (the .. path at the top), double-click its row, or select the row and press Enter.

Sometimes the parent folder cannot be opened (for example if you do not have permissions to access it). These two icons indicate whether a parent folder can be opened:

Parent folder can be opened.
Parent folder cannot be opened.
Browsing a single subfolder that exists on both sides

To compare a single subfolder that exists on both sides, double-click the folder in the folder compare window.

Browsing a single subfolder that exists only one side

If you browse to a subfolder that exists only the left or right side, WinMerge can create a new, matching folder on the other side. See Browsing unique folders for details.

Browsing two different subfolders

You cannot compare two subfolders (that is, selecting two rows) where the subfolders on each side are different. Only if you have previously compared identical folders (for example, by browsing a single subfolder in a compare result) can you compare two subfolders. First select the two folders in the Folder Compare window, as shown in the following figure:

Folder Compare window, two folders selected

The order of selection is significant: the folder you select first is the left folder in the result; the second selected folder becomes the right folder in the result.

With the two folders selected, right-click and choose Compare (or click MergeCompare in the menu).

[Tip] Tip

Again, the Compare operation is available only when the current left and right folder paths are identical in the Folder Compare window, as shown in the preceding screen shot. For example, it is not available if the current window compares two different folders.

4.2. Browsing unique folders

In WinMerge 2.6 and earlier, you could not browse to unique folders (folders that exist only in one side of a compare result), because WinMerge cannot compare an existing folder to a non-existing folder. To copy anything from a unique folder in WinMerge, you had to first create a copy of the entire folder structure.

However, you might prefer not to copy the whole folder structure. Starting in Version 2.8, WinMerge provides an alternate way to create a new, empty folder instead. This enables you to copy just the elements you want from the original, unique folder to the created empty folder. This procedure demonstrates:

  1. Browse to the unique folder (select the folder and press Enter, double-click it, or right-click it and choose Compare). For example:

    Folder Compare window, comparing unique folder

    A WinMerge message informs you that the folder exists on only one side and cannot be opened. The message then prompts you to confirm whether you want to create a matching folder and open it as the other side of the compare result.

  2. Click Yes to confirm (No cancels the compare). In the new compare result, the unique folder is opened on the left side, and the new empty created folder is on the right:

    Folder Compare window after browsing to unique and created folders

    In the compare result, you can copy or move items (for example, using the right-click context menu) from the unique folder to the created folder.

5. Customizing the Folder Compare window

This section describes how to control the way Folder Compare window displays results. You can customize the view by showing, hiding, and reordering the table columns.

5.1. Showing and hiding types of files

The View menu contains these shortcuts to show or hide types of items. Enable (check) a menu option to show the item; disable it to hide the item.

  • Show Identical Items: Files detected as identical

  • Show Different Items: Files detected as different

  • Show Left Unique Items: Files and directories present only in left side

  • Show Right Unique Items: Files and directories present only in right side

  • Show Skipped Items: Files and directories omitted by file filters

  • Show Binary Files: Files detected as binaries

5.2. Changing column sorting

The rows in the Folder Compare window are ordered according to the sort order of a particular column. This sort column is indicated by a small arrow in its heading. The arrow points up if the column is sorted in ascending order, down if descending. The Folder Compare example at the top of this topic is sorted by the Filename column, in ascending order.

To choose another order column, simply click in that column's heading. The selected column is set to its default sort order and all the rows are reordered by that column's sort order.

To change the sort direction of a column that is already the sort column, click in its header again. That is, clicking in a sort column header reverses its order (toggling between ascending and descending order).

5.3. Adding, removing, and reordering columns

To modify the columns that are displayed in the Folder Compare window:

  1. Right-click any column heading and choose Customize Columns. Or, click ToolsCustomize Columns

  2. The Display Columns dialog contains a list of all the available column names, each with a check box. Configure the columns using any combination of these actions:

    • Check the columns you want to display (note that selecting the item in the list is not enough)

    • Uncheck the columns you want to hide.

    • To change the order of columns, select one or more items and click Move Up or Move Down.

    • Click Defaults if you want to restore the default WinMerge column configuration, overriding your custom configuration.

  3. Click OK.

The following columns in the Display Columns dialog are displayed by default in the Folder Compare window:

  • Filename (default): Name of compared item. In a nonrecursive compare, this column includes both files and folders; in a recursive compare, it does not include folders: instead, folders are listed in the Folder column.

  • Folder: Path of compared subfolder, relative to the compared folder. For a nonrecursive compare this column is always empty: folders are listed in the Filename column instead.

  • Comparison result: Verbose comparison result (see also Short Result).

  • Left Date, Right Date: Modification dates of item in each side. The newer of the two dates (or the date for any unique item) is prefixed with an asterisk ( * ).

  • Extension: File extension, handy for sorting.

The following additional columns are available in the Display Columns dialog:

  • Short Result: Displays the Comparison result column in a brief (Right only) form.

  • Binary: Column contains an asterisk ( * ) when the file is a binary file. This is handy for sorting and for use with the Short Result column.

  • Left Attributes, Right Attributes: Shows file attributes.

  • Left Creation Time, Right Creation Time: Item creation time.

  • Left Encoding, Right Encoding: File encoding. Shows the codepage number for ANSI files and Unicode encoding for Unicode files.

  • Left File Version, Right File Version: Version number from the file, if present. Note that the version is read only for some binary file types known to usually have a version resource.

  • Left Size, Right Size: File size in bytes.

  • Left Size (Short), Right Size (Short): Shorter versions of file sizes, rounded to KB, MB, or GB.

  • Newer File: Shows which side is newer.

  • Differences: Number of differences found between files, excluding possibly ignored differences.

  • Ignored Diff: Number of ignored differences within files. These are differences ignored by line filters.

  • Left EOL, Right EOL: Shows the EOL (linefeed) style of files.

5.4. Hiding items

You can quickly hide one or more selected items by using the Hide Items context menu shortcut. The items remain hidden until you refresh the view (press F5) or click ViewShow Hidden Items.

[Tip] Tip

Get to know Hide Items: it can save you a lot of time by eliminating items that you already handled, or that are not currently of interest, from the view. For example, you might hide files after merging them, making it easier to see what items are left to merge.

6. Using Windows shell commands from the Folder Compare window

If you have enabled Add Shell menu to context menu in the Shell Integration page of WinMerge options, you can right-click a selection in the Folder Compare window and launch Windows shell commands directly from the context menu.

If the selection occurs on both sides, you can choose either the Left shell menu or Right shell menu; if the item occurs only on one side, only that side's shell menu is available.

[Caution] Caution

Please consider that shell menu commands run entirely outside of WinMerge. Consequently, WinMerge might not respond to some operations in the same way as operations performed inside WinMerge. For example, if you delete a file through this integration instead of using the WinMerge Delete command, the change is not automatically shown in the Folder Compare window (you have to manually refresh the window to see the change).