ac193e0e0a
Updates for corner cases in merge-recursive. * en/merge-path-collision: t6036: avoid non-portable "cp -a" merge-recursive: combine error handling t6036, t6043: increase code coverage for file collision handling merge-recursive: improve rename/rename(1to2)/add[/add] handling merge-recursive: use handle_file_collision for add/add conflicts merge-recursive: improve handling for rename/rename(2to1) conflicts merge-recursive: fix rename/add conflict handling merge-recursive: new function for better colliding conflict resolutions merge-recursive: increase marker length with depth of recursion t6036, t6042: testcases for rename collision of already conflicting files t6042: add tests for consistency in file collision conflict handling
31 lines
705 B
C
31 lines
705 B
C
/*
|
|
* Low level 3-way in-core file merge.
|
|
*/
|
|
|
|
#ifndef LL_MERGE_H
|
|
#define LL_MERGE_H
|
|
|
|
#include "xdiff/xdiff.h"
|
|
|
|
struct index_state;
|
|
|
|
struct ll_merge_options {
|
|
unsigned virtual_ancestor : 1;
|
|
unsigned variant : 2; /* favor ours, favor theirs, or union merge */
|
|
unsigned renormalize : 1;
|
|
unsigned extra_marker_size;
|
|
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,
|
|
struct index_state *istate,
|
|
const struct ll_merge_options *opts);
|
|
|
|
int ll_merge_marker_size(struct index_state *istate, const char *path);
|
|
|
|
#endif
|