@@ -21,14 +21,6 @@ void init_notes_merge_options(struct notes_merge_options *o)
21
21
o -> verbosity = NOTES_MERGE_VERBOSITY_DEFAULT ;
22
22
}
23
23
24
- #define OUTPUT (o , v , ...) \
25
- do { \
26
- if ((o)->verbosity >= (v)) { \
27
- printf(__VA_ARGS__); \
28
- puts(""); \
29
- } \
30
- } while (0)
31
-
32
24
static int path_to_sha1 (const char * path , unsigned char * sha1 )
33
25
{
34
26
char hex_sha1 [40 ];
@@ -392,21 +384,26 @@ static int merge_one_change_manual(struct notes_merge_options *o,
392
384
393
385
strbuf_addf (& (o -> commit_msg ), "\t%s\n" , sha1_to_hex (p -> obj ));
394
386
395
- OUTPUT (o , 2 , "Auto-merging notes for %s" , sha1_to_hex (p -> obj ));
387
+ if (o -> verbosity >= 2 )
388
+ printf ("Auto-merging notes for %s\n" , sha1_to_hex (p -> obj ));
396
389
check_notes_merge_worktree (o );
397
390
if (is_null_sha1 (p -> local )) {
398
391
/* D/F conflict, checkout p->remote */
399
392
assert (!is_null_sha1 (p -> remote ));
400
- OUTPUT (o , 1 , "CONFLICT (delete/modify): Notes for object %s "
401
- "deleted in %s and modified in %s. Version from %s "
402
- "left in tree." , sha1_to_hex (p -> obj ), lref , rref , rref );
393
+ if (o -> verbosity >= 1 )
394
+ printf ("CONFLICT (delete/modify): Notes for object %s "
395
+ "deleted in %s and modified in %s. Version from %s "
396
+ "left in tree.\n" ,
397
+ sha1_to_hex (p -> obj ), lref , rref , rref );
403
398
write_note_to_worktree (p -> obj , p -> remote );
404
399
} else if (is_null_sha1 (p -> remote )) {
405
400
/* D/F conflict, checkout p->local */
406
401
assert (!is_null_sha1 (p -> local ));
407
- OUTPUT (o , 1 , "CONFLICT (delete/modify): Notes for object %s "
408
- "deleted in %s and modified in %s. Version from %s "
409
- "left in tree." , sha1_to_hex (p -> obj ), rref , lref , lref );
402
+ if (o -> verbosity >= 1 )
403
+ printf ("CONFLICT (delete/modify): Notes for object %s "
404
+ "deleted in %s and modified in %s. Version from %s "
405
+ "left in tree.\n" ,
406
+ sha1_to_hex (p -> obj ), rref , lref , lref );
410
407
write_note_to_worktree (p -> obj , p -> local );
411
408
} else {
412
409
/* "regular" conflict, checkout result of ll_merge() */
@@ -415,8 +412,9 @@ static int merge_one_change_manual(struct notes_merge_options *o,
415
412
reason = "add/add" ;
416
413
assert (!is_null_sha1 (p -> local ));
417
414
assert (!is_null_sha1 (p -> remote ));
418
- OUTPUT (o , 1 , "CONFLICT (%s): Merge conflict in notes for "
419
- "object %s" , reason , sha1_to_hex (p -> obj ));
415
+ if (o -> verbosity >= 1 )
416
+ printf ("CONFLICT (%s): Merge conflict in notes for "
417
+ "object %s\n" , reason , sha1_to_hex (p -> obj ));
420
418
ll_merge_in_worktree (o , p );
421
419
}
422
420
@@ -438,24 +436,30 @@ static int merge_one_change(struct notes_merge_options *o,
438
436
case NOTES_MERGE_RESOLVE_MANUAL :
439
437
return merge_one_change_manual (o , p , t );
440
438
case NOTES_MERGE_RESOLVE_OURS :
441
- OUTPUT (o , 2 , "Using local notes for %s" , sha1_to_hex (p -> obj ));
439
+ if (o -> verbosity >= 2 )
440
+ printf ("Using local notes for %s\n" ,
441
+ sha1_to_hex (p -> obj ));
442
442
/* nothing to do */
443
443
return 0 ;
444
444
case NOTES_MERGE_RESOLVE_THEIRS :
445
- OUTPUT (o , 2 , "Using remote notes for %s" , sha1_to_hex (p -> obj ));
445
+ if (o -> verbosity >= 2 )
446
+ printf ("Using remote notes for %s\n" ,
447
+ sha1_to_hex (p -> obj ));
446
448
if (add_note (t , p -> obj , p -> remote , combine_notes_overwrite ))
447
449
die ("BUG: combine_notes_overwrite failed" );
448
450
return 0 ;
449
451
case NOTES_MERGE_RESOLVE_UNION :
450
- OUTPUT (o , 2 , "Concatenating local and remote notes for %s" ,
451
- sha1_to_hex (p -> obj ));
452
+ if (o -> verbosity >= 2 )
453
+ printf ("Concatenating local and remote notes for %s\n" ,
454
+ sha1_to_hex (p -> obj ));
452
455
if (add_note (t , p -> obj , p -> remote , combine_notes_concatenate ))
453
456
die ("failed to concatenate notes "
454
457
"(combine_notes_concatenate)" );
455
458
return 0 ;
456
459
case NOTES_MERGE_RESOLVE_CAT_SORT_UNIQ :
457
- OUTPUT (o , 2 , "Concatenating unique lines in local and remote "
458
- "notes for %s" , sha1_to_hex (p -> obj ));
460
+ if (o -> verbosity >= 2 )
461
+ printf ("Concatenating unique lines in local and remote "
462
+ "notes for %s\n" , sha1_to_hex (p -> obj ));
459
463
if (add_note (t , p -> obj , p -> remote , combine_notes_cat_sort_uniq ))
460
464
die ("failed to concatenate notes "
461
465
"(combine_notes_cat_sort_uniq)" );
@@ -518,8 +522,9 @@ static int merge_from_diffs(struct notes_merge_options *o,
518
522
conflicts = merge_changes (o , changes , & num_changes , t );
519
523
free (changes );
520
524
521
- OUTPUT (o , 4 , "Merge result: %i unmerged notes and a %s notes tree" ,
522
- conflicts , t -> dirty ? "dirty" : "clean" );
525
+ if (o -> verbosity >= 4 )
526
+ printf ("Merge result: %i unmerged notes and a %s notes tree\n" ,
527
+ conflicts , t -> dirty ? "dirty" : "clean" );
523
528
524
529
return conflicts ? -1 : 1 ;
525
530
}
@@ -617,33 +622,40 @@ int notes_merge(struct notes_merge_options *o,
617
622
if (!bases ) {
618
623
base_sha1 = null_sha1 ;
619
624
base_tree_sha1 = EMPTY_TREE_SHA1_BIN ;
620
- OUTPUT (o , 4 , "No merge base found; doing history-less merge" );
625
+ if (o -> verbosity >= 4 )
626
+ printf ("No merge base found; doing history-less merge\n" );
621
627
} else if (!bases -> next ) {
622
628
base_sha1 = bases -> item -> object .sha1 ;
623
629
base_tree_sha1 = bases -> item -> tree -> object .sha1 ;
624
- OUTPUT (o , 4 , "One merge base found (%.7s)" ,
625
- sha1_to_hex (base_sha1 ));
630
+ if (o -> verbosity >= 4 )
631
+ printf ("One merge base found (%.7s)\n" ,
632
+ sha1_to_hex (base_sha1 ));
626
633
} else {
627
634
/* TODO: How to handle multiple merge-bases? */
628
635
base_sha1 = bases -> item -> object .sha1 ;
629
636
base_tree_sha1 = bases -> item -> tree -> object .sha1 ;
630
- OUTPUT (o , 3 , "Multiple merge bases found. Using the first "
631
- "(%.7s)" , sha1_to_hex (base_sha1 ));
637
+ if (o -> verbosity >= 3 )
638
+ printf ("Multiple merge bases found. Using the first "
639
+ "(%.7s)\n" , sha1_to_hex (base_sha1 ));
632
640
}
633
641
634
- OUTPUT (o , 4 , "Merging remote commit %.7s into local commit %.7s with "
635
- "merge-base %.7s" , sha1_to_hex (remote -> object .sha1 ),
636
- sha1_to_hex (local -> object .sha1 ), sha1_to_hex (base_sha1 ));
642
+ if (o -> verbosity >= 4 )
643
+ printf ("Merging remote commit %.7s into local commit %.7s with "
644
+ "merge-base %.7s\n" , sha1_to_hex (remote -> object .sha1 ),
645
+ sha1_to_hex (local -> object .sha1 ),
646
+ sha1_to_hex (base_sha1 ));
637
647
638
648
if (!hashcmp (remote -> object .sha1 , base_sha1 )) {
639
649
/* Already merged; result == local commit */
640
- OUTPUT (o , 2 , "Already up-to-date!" );
650
+ if (o -> verbosity >= 2 )
651
+ printf ("Already up-to-date!\n" );
641
652
hashcpy (result_sha1 , local -> object .sha1 );
642
653
goto found_result ;
643
654
}
644
655
if (!hashcmp (local -> object .sha1 , base_sha1 )) {
645
656
/* Fast-forward; result == remote commit */
646
- OUTPUT (o , 2 , "Fast-forward" );
657
+ if (o -> verbosity >= 2 )
658
+ printf ("Fast-forward\n" );
647
659
hashcpy (result_sha1 , remote -> object .sha1 );
648
660
goto found_result ;
649
661
}
@@ -685,8 +697,9 @@ int notes_merge_commit(struct notes_merge_options *o,
685
697
int path_len = strlen (path ), i ;
686
698
const char * msg = strstr (partial_commit -> buffer , "\n\n" );
687
699
688
- OUTPUT (o , 3 , "Committing notes in notes merge worktree at %.*s" ,
689
- path_len - 1 , path );
700
+ if (o -> verbosity >= 3 )
701
+ printf ("Committing notes in notes merge worktree at %.*s\n" ,
702
+ path_len - 1 , path );
690
703
691
704
if (!msg || msg [2 ] == '\0' )
692
705
die ("partial notes commit has empty message" );
@@ -701,7 +714,9 @@ int notes_merge_commit(struct notes_merge_options *o,
701
714
unsigned char obj_sha1 [20 ], blob_sha1 [20 ];
702
715
703
716
if (ent -> len - path_len != 40 || get_sha1_hex (relpath , obj_sha1 )) {
704
- OUTPUT (o , 3 , "Skipping non-SHA1 entry '%s'" , ent -> name );
717
+ if (o -> verbosity >= 3 )
718
+ printf ("Skipping non-SHA1 entry '%s'\n" ,
719
+ ent -> name );
705
720
continue ;
706
721
}
707
722
@@ -713,14 +728,16 @@ int notes_merge_commit(struct notes_merge_options *o,
713
728
if (add_note (partial_tree , obj_sha1 , blob_sha1 , NULL ))
714
729
die ("Failed to add resolved note '%s' to notes tree" ,
715
730
ent -> name );
716
- OUTPUT (o , 4 , "Added resolved note for object %s: %s" ,
717
- sha1_to_hex (obj_sha1 ), sha1_to_hex (blob_sha1 ));
731
+ if (o -> verbosity >= 4 )
732
+ printf ("Added resolved note for object %s: %s\n" ,
733
+ sha1_to_hex (obj_sha1 ), sha1_to_hex (blob_sha1 ));
718
734
}
719
735
720
736
create_notes_commit (partial_tree , partial_commit -> parents , msg ,
721
737
result_sha1 );
722
- OUTPUT (o , 4 , "Finalized notes merge commit: %s" ,
723
- sha1_to_hex (result_sha1 ));
738
+ if (o -> verbosity >= 4 )
739
+ printf ("Finalized notes merge commit: %s\n" ,
740
+ sha1_to_hex (result_sha1 ));
724
741
free (path );
725
742
return 0 ;
726
743
}
@@ -732,7 +749,8 @@ int notes_merge_abort(struct notes_merge_options *o)
732
749
int ret ;
733
750
734
751
strbuf_addstr (& buf , git_path (NOTES_MERGE_WORKTREE ));
735
- OUTPUT (o , 3 , "Removing notes merge worktree at %s" , buf .buf );
752
+ if (o -> verbosity >= 3 )
753
+ printf ("Removing notes merge worktree at %s\n" , buf .buf );
736
754
ret = remove_dir_recursively (& buf , 0 );
737
755
strbuf_release (& buf );
738
756
return ret ;
0 commit comments