]> git.ipfire.org Git - thirdparty/git.git/blob - Documentation/technical/api-merge.txt
commit -a -m: allow the top-level tree to become empty again
[thirdparty/git.git] / Documentation / technical / api-merge.txt
1 merge API
2 =========
3
4 The merge API helps a program to reconcile two competing sets of
5 improvements to some files (e.g., unregistered changes from the work
6 tree versus changes involved in switching to a new branch), reporting
7 conflicts if found. The library called through this API is
8 responsible 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
20 Data structures
21 ---------------
22
23 * `mmbuffer_t`, `mmfile_t`
24
25 These store data usable for use by the xdiff backend, for writing and
26 for reading, respectively. See `xdiff/xdiff.h` for the definitions
27 and `diff.c` for examples.
28
29 * `struct ll_merge_options`
30
31 Check ll-merge.h for details.
32
33 Low-level (single file) merge
34 -----------------------------
35
36 Check ll-merge.h for details.