]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/technical/api-merge.txt
Merge branch 'jk/ci-retire-allow-ref'
[thirdparty/git.git] / Documentation / technical / api-merge.txt
CommitLineData
24d113ec
JN
1merge API
2=========
3
4The merge API helps a program to reconcile two competing sets of
5improvements to some files (e.g., unregistered changes from the work
6tree versus changes involved in switching to a new branch), reporting
7conflicts if found. The library called through this API is
8responsible for a few things.
9
10 * determining which trees to merge (recursive ancestor consolidation);
11
12 * lining up corresponding files in the trees to be merged (rename
13 detection, subtree shifting), reporting edge cases like add/add
14 and rename/rename conflicts to the user;
15
16 * performing a three-way merge of corresponding files, taking
17 path-specific merge drivers (specified in `.gitattributes`)
18 into account.
19
712516bc
JN
20Data structures
21---------------
22
23* `mmbuffer_t`, `mmfile_t`
24
25These store data usable for use by the xdiff backend, for writing and
26for reading, respectively. See `xdiff/xdiff.h` for the definitions
27and `diff.c` for examples.
28
29* `struct ll_merge_options`
30
67238999 31Check merge-ll.h for details.
712516bc 32
24d113ec
JN
33Low-level (single file) merge
34-----------------------------
35
67238999 36Check merge-ll.h for details.