annotate mercurial/help/merge-tools.txt @ 12771:c77f6276c9e7

help: help topic for merge tools I have made a help topic for merge tools. The text in the topic is based on the http://mercurial.selenic.com/wiki/MergeProgram page from the wiki, along with some extra information on the internal merge tools.
author Erik Zielke <ez@aragost.com>
date Wed, 20 Oct 2010 16:54:34 +0200
parents
children e0e8b123b75e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
1 To merge files Mercurial uses merge tools.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
2
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
3 A merge tool combines two different versions of a file into a merged
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
4 file. Merge tools are given the two files and the greatest common
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
5 ancestor of the two file versions, so they can determine the changes
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
6 made on both branches.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
7
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
8 The merge tools are used both for :hg:`resolve` and :hg:`merge`.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
9
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
10 Usually, the merge tool tries to automatically, by combining all the
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
11 non-overlapping changes that occurred separately in the two different
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
12 evolutions of the same initial base file. Furthermore, some
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
13 interactive merge programs make it easier to manually resolve
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
14 conflicting merges, either in a graphical way, or by inserting some
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
15 conflict markers. Mercurial does not include any interactive merge
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
16 programs but relies on external tools for that. External merge tools
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
17 and their properties and usage is configured in merge-tools section -
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
18 see hgrc(5).
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
19
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
20 There are a some internal merge tools which can be used. The internal
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
21 merge tools are:
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
22
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
23 ``internal:merge``
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
24 Uses the internal non-interactive merge tool for merging files.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
25
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
26 ``internal:fail``
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
27 Rather than attempting to merge files that were modified on both
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
28 branches, it marks these files as unresolved. Then the resolve
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
29 command must be used to mark files resolved.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
30
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
31 ``internal:local``
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
32 Uses the local version of files as the merged version.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
33
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
34 ``internal:other``
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
35 Uses the remote version of files as the merged version.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
36
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
37 ``internal:prompt``
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
38 Asks the user which of the local or the other version to keep as
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
39 the merged version.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
40
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
41 ``internal:dump``
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
42 Creates three versions of the files to merge, containing the
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
43 contents of local, other and base. These files can then be used to
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
44 perform a merge manually. If the file merged is name ``a.txt``,
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
45 these files will accordingly be named ``a.txt.local``,
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
46 ``a.txt.other`` and ``a.txt.base`` and they will be placed in the
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
47 same directory as the file to merge.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
48
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
49 How Mercurial decides which merge program to use
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
50
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
51 1. If the ``HGMERGE`` environment variable is present, it is used. If
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
52 specified it must be either an executable path or the name of an
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
53 application in your executable search path.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
54
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
55 2. If the filename of the file to be merged matches any of the
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
56 patterns in the merge-patterns configuration section, then the
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
57 corresponding merge tool is used, unless the file to be merged is a
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
58 symlink. Here binary capabilities of the merge tool are not
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
59 considered.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
60
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
61 3. If ui.merge is set, it is used.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
62
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
63 4. If any merge tools are present in the merge-tools configuration
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
64 section, and any of the tools can be found on the system, the
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
65 priority settings are used to determine which one to use. Binary,
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
66 symlink and GUI capabilities do also have to match.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
67
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
68 5. If a program named ``hgmerge`` exists on the system, it is used.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
69
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
70 6. If the file to be merged is not binary and is not a symlink, then
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
71 ``internal:merge`` is used.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
72
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
73 7. The merge fails.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
74
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
75 .. note::
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
76 After selecting a merge program, Mercurial will by default attempt
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
77 to merge the files using a simple merge algorithm first, to see if
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
78 they can be merged without conflicts. Only if there are conflicting
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
79 changes Mercurial will actually execute the merge program. Whether
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
80 to use the simple merge algorithm first can be controlled be the
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
81 premerge setting of the merge tool, which is enabled by default
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
82 unless the file is binary or symlink.
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
83
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
84 See the merge-tools and ui sections of hgrc(5) for details on
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
85 configuration of merge tools.