mirror of
https://github.com/git/git.git
synced 2024-12-24 01:04:04 +08:00
58a1ece478
Teach the merge-recursive strategy a --patience option to use the "patience diff" algorithm, which tends to improve results when cherry-picking a patch that reorders functions at the same time as refactoring them. To support this, struct merge_options and ll_merge_options gain an xdl_opts member, so programs can use arbitrary xdiff flags (think "XDF_IGNORE_WHITESPACE") in a git-aware merge. git merge and git rebase can be passed the -Xpatience option to use this. [jn: split from --ignore-space patch; with documentation] Signed-off-by: Justin Frankel <justin@cockos.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
25 lines
567 B
C
25 lines
567 B
C
/*
|
|
* Low level 3-way in-core file merge.
|
|
*/
|
|
|
|
#ifndef LL_MERGE_H
|
|
#define LL_MERGE_H
|
|
|
|
struct ll_merge_options {
|
|
unsigned virtual_ancestor : 1;
|
|
unsigned variant : 2; /* favor ours, favor theirs, or union merge */
|
|
unsigned renormalize : 1;
|
|
long xdl_opts;
|
|
};
|
|
|
|
int ll_merge(mmbuffer_t *result_buf,
|
|
const char *path,
|
|
mmfile_t *ancestor, const char *ancestor_label,
|
|
mmfile_t *ours, const char *our_label,
|
|
mmfile_t *theirs, const char *their_label,
|
|
const struct ll_merge_options *opts);
|
|
|
|
int ll_merge_marker_size(const char *path);
|
|
|
|
#endif
|