 58a1ece478
			
		
	
	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
 |