annotate mercurial/help/merge-tools.txt @ 37392:a4f02a17420d

copies: clean up _related logic The limit parameter was never actually used, since the only way the 4th case could be reached was if f1r and f2r converged. The new code makes this clear, and additionally reduces the conditional block to just 3 cases.
author Gábor Stefanik <gabor.stefanik@nng.com>
date Thu, 05 Apr 2018 17:51:10 +0200
parents ff178743e59b
children 7c6044634957
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
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
8 Merge tools are used both for :hg:`resolve`, :hg:`merge`, :hg:`update`,
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
9 :hg:`backout` and in several extensions.
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
10
12804
e0e8b123b75e merge-tools: fixed typos
Martin Geisler <mg@lazybytes.net>
parents: 12771
diff changeset
11 Usually, the merge tool tries to automatically reconcile the files by
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
12 combining all non-overlapping changes that occurred separately in
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
13 the two different evolutions of the same initial base file. Furthermore, some
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
14 interactive merge programs make it easier to manually resolve
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
15 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
16 conflict markers. Mercurial does not include any interactive merge
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
17 programs but relies on external tools for that.
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
18
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
19 Available merge tools
17267
979b107eaea2 doc: unify section level between help topics
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16126
diff changeset
20 =====================
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
21
12824
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
22 External merge tools and their properties are configured in the
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
23 merge-tools configuration section - see hgrc(5) - but they can often just
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
24 be named by their executable.
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
25
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
26 A merge tool is generally usable if its executable can be found on the
12824
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
27 system and if it can handle the merge. The executable is found if it
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
28 is an absolute or relative executable path or the name of an
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
29 application in the executable search path. The tool is assumed to be
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
30 able to handle the merge if it can handle symlinks if the file is a
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
31 symlink, if it can handle binary files if the file is binary, and if a
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
32 GUI is available if the tool requires a GUI.
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
33
12858
6eec9d7c6e0f help: fix typo in merge-tools topic
Wagner Bruna <wbruna@yahoo.com>
parents: 12838
diff changeset
34 There are some internal merge tools which can be used. The internal
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
35 merge tools are:
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
36
16126
0c4bec9596d8 filemerge: create detail of internal merge tools from documentation string
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 12858
diff changeset
37 .. internaltoolsmarker
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
38
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
39 Internal tools are always available and do not require a GUI but will by default
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
40 not handle symlinks or binary files.
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
41
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
42 Choosing a merge tool
17267
979b107eaea2 doc: unify section level between help topics
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 16126
diff changeset
43 =====================
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
44
12824
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
45 Mercurial uses these rules when deciding which merge tool to use:
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
46
12824
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
47 1. If a tool has been specified with the --tool option to merge or resolve, it
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
48 is used. If it is the name of a tool in the merge-tools configuration, its
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
49 configuration is used. Otherwise the specified tool must be executable by
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
50 the shell.
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
51
12824
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
52 2. If the ``HGMERGE`` environment variable is present, its value is used and
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
53 must be executable by the shell.
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
54
12824
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
55 3. If the filename of the file to be merged matches any of the patterns in the
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
56 merge-patterns configuration section, the first usable merge tool
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
57 corresponding to a matching pattern is used. Here, binary capabilities of the
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
58 merge tool are not considered.
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
59
12824
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
60 4. If ui.merge is set it will be considered next. If the value is not the name
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
61 of a configured tool, the specified value is used and must be executable by
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
62 the shell. Otherwise the named tool is used if it is usable.
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
63
12824
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
64 5. If any usable merge tools are present in the merge-tools configuration
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
65 section, the one with the highest priority is used.
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
66
12826
4d622380ab39 merge-tools.txt: 6 comes after 5
Patrick Mezard <pmezard@gmail.com>
parents: 12824
diff changeset
67 6. If a program named ``hgmerge`` can be found on the system, it is used - but
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
68 it will by default not be used for symlinks and binary files.
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
69
12824
93d6559a9cbc merge-tools.txt: fix typos, simplify, renumber from 1.
Patrick Mezard <pmezard@gmail.com>
parents: 12809
diff changeset
70 7. If the file to be merged is not binary and is not a symlink, then
22707
38e0363dcbe0 filemerge: switch the default name for internal tools from internal:x to :x
Mads Kiilerich <madski@unity3d.com>
parents: 20532
diff changeset
71 internal ``:merge`` is used.
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
72
32179
247bb7a2c492 help: describe about choice of :prompt as a fallback merge tool explicitly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 22707
diff changeset
73 8. Otherwise, ``:prompt`` is used.
12771
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::
20532
f1a3ae7c15df help: remove last occurrences of ".. note::" without two newlines
Simon Heimberg <simohe@besonet.ch>
parents: 17267
diff changeset
76
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
77 After selecting a merge program, Mercurial will by default attempt
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
78 to merge the files using a simple merge algorithm first. Only if it doesn't
34948
ff178743e59b help: minor copy editing for grammar
Matt Harbison <matt_harbison@yahoo.com>
parents: 32179
diff changeset
79 succeed because of conflicting changes will Mercurial actually execute the
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
80 merge program. Whether to use the simple merge algorithm first can be
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
81 controlled by the premerge setting of the merge tool. Premerge is enabled by
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
82 default unless the file is binary or a symlink.
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
83
12809
e5922564ab01 help: improve merge-tools topic, describe --tool and clarify details
Mads Kiilerich <mads@kiilerich.com>
parents: 12804
diff changeset
84 See the merge-tools and ui sections of hgrc(5) for details on the
12771
c77f6276c9e7 help: help topic for merge tools
Erik Zielke <ez@aragost.com>
parents:
diff changeset
85 configuration of merge tools.