The `git log` command already offers support for including diffs for merges, via the `--diff-merges=<format>` option. Let's add corresponding support for `git range-diff`, too. This makes it more convenient to spot differences between commit ranges that contain merges. This is especially true in scenarios with non-trivial merges, i.e. merges introducing changes other than, or in addition to, what merge ORT would have produced. Merging a topic branch that changes a function signature into a branch that added a caller of that function, for example, would require the merge commit itself to adjust that caller to the modified signature. In my code reviews, I found the `--diff-merges=remerge` option particularly useful. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			38 lines
		
	
	
		
			934 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			934 B
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef RANGE_DIFF_H
 | 
						|
#define RANGE_DIFF_H
 | 
						|
 | 
						|
#include "diff.h"
 | 
						|
#include "strvec.h"
 | 
						|
 | 
						|
#define RANGE_DIFF_CREATION_FACTOR_DEFAULT 60
 | 
						|
 | 
						|
/*
 | 
						|
 * A much higher value than the default, when we KNOW we are comparing
 | 
						|
 * the same series (e.g., used when format-patch calls range-diff).
 | 
						|
 */
 | 
						|
#define CREATION_FACTOR_FOR_THE_SAME_SERIES 999
 | 
						|
 | 
						|
struct range_diff_options {
 | 
						|
	int creation_factor;
 | 
						|
	unsigned dual_color:1;
 | 
						|
	unsigned left_only:1, right_only:1;
 | 
						|
	unsigned include_merges:1;
 | 
						|
	const struct diff_options *diffopt; /* may be NULL */
 | 
						|
	const struct strvec *other_arg; /* may be NULL */
 | 
						|
};
 | 
						|
 | 
						|
/*
 | 
						|
 * Compare series of commits in `range1` and `range2`, and emit to the
 | 
						|
 * standard output.
 | 
						|
 */
 | 
						|
int show_range_diff(const char *range1, const char *range2,
 | 
						|
		    struct range_diff_options *opts);
 | 
						|
 | 
						|
/*
 | 
						|
 * Determine whether the given argument is usable as a range argument of `git
 | 
						|
 * range-diff`, e.g. A..B.
 | 
						|
 */
 | 
						|
int is_range_diff_range(const char *arg);
 | 
						|
 | 
						|
#endif
 |