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
 |