mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
![Elijah Newren](/assets/img/avatar_default.png)
A long term (but rather minor) pet-peeve of mine was the name
ll-merge.[ch]. I thought it made it harder to realize what stuff was
related to merging when I was working on the merge machinery and trying
to improve it.
Further, back in d1cbe1e6d8
("hash-ll.h: split out of hash.h to remove
dependency on repository.h", 2023-04-22), we have split the portions of
hash.h that do not depend upon repository.h into a "hash-ll.h" (due to
the recommendation to use "ll" for "low-level" in its name[1], but which
I used as a suffix precisely because of my distaste for "ll-merge").
When we discussed adding additional "*-ll.h" files, a request was made
that we use "ll" consistently as either a prefix or a suffix. Since it
is already in use as both a prefix and a suffix, the only way to do so
is to rename some files.
Besides my distaste for the ll-merge.[ch] name, let me also note that
the files
ll-fsmonitor.h, ll-hash.h, ll-merge.h, ll-object-store.h, ll-read-cache.h
would have essentially nothing to do with each other and make no sense
to group. But giving them the common "ll-" prefix would group them. Using
"-ll" as a suffix thus seems just much more logical to me. Rename
ll-merge.[ch] to merge-ll.[ch] to achieve this consistency, and to
ensure we get a more logical grouping of files.
[1] https://lore.kernel.org/git/kl6lsfcu1g8w.fsf@chooglen-macbookpro.roam.corp.google.com/
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
37 lines
1.1 KiB
Plaintext
37 lines
1.1 KiB
Plaintext
merge API
|
|
=========
|
|
|
|
The merge API helps a program to reconcile two competing sets of
|
|
improvements to some files (e.g., unregistered changes from the work
|
|
tree versus changes involved in switching to a new branch), reporting
|
|
conflicts if found. The library called through this API is
|
|
responsible for a few things.
|
|
|
|
* determining which trees to merge (recursive ancestor consolidation);
|
|
|
|
* lining up corresponding files in the trees to be merged (rename
|
|
detection, subtree shifting), reporting edge cases like add/add
|
|
and rename/rename conflicts to the user;
|
|
|
|
* performing a three-way merge of corresponding files, taking
|
|
path-specific merge drivers (specified in `.gitattributes`)
|
|
into account.
|
|
|
|
Data structures
|
|
---------------
|
|
|
|
* `mmbuffer_t`, `mmfile_t`
|
|
|
|
These store data usable for use by the xdiff backend, for writing and
|
|
for reading, respectively. See `xdiff/xdiff.h` for the definitions
|
|
and `diff.c` for examples.
|
|
|
|
* `struct ll_merge_options`
|
|
|
|
Check merge-ll.h for details.
|
|
|
|
Low-level (single file) merge
|
|
-----------------------------
|
|
|
|
Check merge-ll.h for details.
|