@@ -233,25 +233,20 @@ static void file_change(struct diff_options *options,
233233 tree_difference = REV_TREE_DIFFERENT ;
234234}
235235
236- static struct diff_options diff_opt = {
237- .recursive = 1 ,
238- .add_remove = file_add_remove ,
239- .change = file_change ,
240- };
241-
242- int rev_compare_tree (struct tree * t1 , struct tree * t2 )
236+ int rev_compare_tree (struct rev_info * revs , struct tree * t1 , struct tree * t2 )
243237{
244238 if (!t1 )
245239 return REV_TREE_NEW ;
246240 if (!t2 )
247241 return REV_TREE_DIFFERENT ;
248242 tree_difference = REV_TREE_SAME ;
249- if (diff_tree_sha1 (t1 -> object .sha1 , t2 -> object .sha1 , "" , & diff_opt ) < 0 )
243+ if (diff_tree_sha1 (t1 -> object .sha1 , t2 -> object .sha1 , "" ,
244+ & revs -> diffopt ) < 0 )
250245 return REV_TREE_DIFFERENT ;
251246 return tree_difference ;
252247}
253248
254- int rev_same_tree_as_empty (struct tree * t1 )
249+ int rev_same_tree_as_empty (struct rev_info * revs , struct tree * t1 )
255250{
256251 int retval ;
257252 void * tree ;
@@ -269,7 +264,7 @@ int rev_same_tree_as_empty(struct tree *t1)
269264 empty .size = 0 ;
270265
271266 tree_difference = 0 ;
272- retval = diff_tree (& empty , & real , "" , & diff_opt );
267+ retval = diff_tree (& empty , & real , "" , & revs -> diffopt );
273268 free (tree );
274269
275270 return retval >= 0 && !tree_difference ;
@@ -284,7 +279,7 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit)
284279 return ;
285280
286281 if (!commit -> parents ) {
287- if (!rev_same_tree_as_empty (commit -> tree ))
282+ if (!rev_same_tree_as_empty (revs , commit -> tree ))
288283 commit -> object .flags |= TREECHANGE ;
289284 return ;
290285 }
@@ -294,7 +289,7 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit)
294289 struct commit * p = parent -> item ;
295290
296291 parse_commit (p );
297- switch (rev_compare_tree (p -> tree , commit -> tree )) {
292+ switch (rev_compare_tree (revs , p -> tree , commit -> tree )) {
298293 case REV_TREE_SAME :
299294 if (p -> object .flags & UNINTERESTING ) {
300295 /* Even if a merge with an uninteresting
@@ -312,7 +307,7 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit)
312307
313308 case REV_TREE_NEW :
314309 if (revs -> remove_empty_trees &&
315- rev_same_tree_as_empty (p -> tree )) {
310+ rev_same_tree_as_empty (revs , p -> tree )) {
316311 /* We are adding all the specified
317312 * paths from this parent, so the
318313 * history beyond this parent is not
@@ -484,6 +479,9 @@ static void handle_all(struct rev_info *revs, unsigned flags)
484479void init_revisions (struct rev_info * revs )
485480{
486481 memset (revs , 0 , sizeof (* revs ));
482+ revs -> diffopt .recursive = 1 ;
483+ revs -> diffopt .add_remove = file_add_remove ;
484+ revs -> diffopt .change = file_change ;
487485 revs -> lifo = 1 ;
488486 revs -> dense = 1 ;
489487 revs -> prefix = setup_git_directory ();
@@ -707,7 +705,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
707705 revs -> limited = 1 ;
708706
709707 if (revs -> prune_data ) {
710- diff_tree_setup_paths (revs -> prune_data );
708+ diff_tree_setup_paths (revs -> prune_data , & revs -> diffopt );
711709 revs -> prune_fn = try_to_simplify_commit ;
712710 }
713711
0 commit comments