@@ -21,14 +21,6 @@ void init_notes_merge_options(struct notes_merge_options *o)
2121 o -> verbosity = NOTES_MERGE_VERBOSITY_DEFAULT ;
2222}
2323
24- #define OUTPUT (o , v , ...) \
25- do { \
26- if ((o)->verbosity >= (v)) { \
27- printf(__VA_ARGS__); \
28- puts(""); \
29- } \
30- } while (0)
31-
3224static int path_to_sha1 (const char * path , unsigned char * sha1 )
3325{
3426 char hex_sha1 [40 ];
@@ -392,21 +384,26 @@ static int merge_one_change_manual(struct notes_merge_options *o,
392384
393385 strbuf_addf (& (o -> commit_msg ), "\t%s\n" , sha1_to_hex (p -> obj ));
394386
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 ));
396389 check_notes_merge_worktree (o );
397390 if (is_null_sha1 (p -> local )) {
398391 /* D/F conflict, checkout p->remote */
399392 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 );
403398 write_note_to_worktree (p -> obj , p -> remote );
404399 } else if (is_null_sha1 (p -> remote )) {
405400 /* D/F conflict, checkout p->local */
406401 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 );
410407 write_note_to_worktree (p -> obj , p -> local );
411408 } else {
412409 /* "regular" conflict, checkout result of ll_merge() */
@@ -415,8 +412,9 @@ static int merge_one_change_manual(struct notes_merge_options *o,
415412 reason = "add/add" ;
416413 assert (!is_null_sha1 (p -> local ));
417414 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 ));
420418 ll_merge_in_worktree (o , p );
421419 }
422420
@@ -438,24 +436,30 @@ static int merge_one_change(struct notes_merge_options *o,
438436 case NOTES_MERGE_RESOLVE_MANUAL :
439437 return merge_one_change_manual (o , p , t );
440438 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 ));
442442 /* nothing to do */
443443 return 0 ;
444444 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 ));
446448 if (add_note (t , p -> obj , p -> remote , combine_notes_overwrite ))
447449 die ("BUG: combine_notes_overwrite failed" );
448450 return 0 ;
449451 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 ));
452455 if (add_note (t , p -> obj , p -> remote , combine_notes_concatenate ))
453456 die ("failed to concatenate notes "
454457 "(combine_notes_concatenate)" );
455458 return 0 ;
456459 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 ));
459463 if (add_note (t , p -> obj , p -> remote , combine_notes_cat_sort_uniq ))
460464 die ("failed to concatenate notes "
461465 "(combine_notes_cat_sort_uniq)" );
@@ -518,8 +522,9 @@ static int merge_from_diffs(struct notes_merge_options *o,
518522 conflicts = merge_changes (o , changes , & num_changes , t );
519523 free (changes );
520524
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" );
523528
524529 return conflicts ? -1 : 1 ;
525530}
@@ -616,33 +621,40 @@ int notes_merge(struct notes_merge_options *o,
616621 if (!bases ) {
617622 base_sha1 = null_sha1 ;
618623 base_tree_sha1 = EMPTY_TREE_SHA1_BIN ;
619- OUTPUT (o , 4 , "No merge base found; doing history-less merge" );
624+ if (o -> verbosity >= 4 )
625+ printf ("No merge base found; doing history-less merge\n" );
620626 } else if (!bases -> next ) {
621627 base_sha1 = bases -> item -> object .sha1 ;
622628 base_tree_sha1 = bases -> item -> tree -> object .sha1 ;
623- OUTPUT (o , 4 , "One merge base found (%.7s)" ,
624- sha1_to_hex (base_sha1 ));
629+ if (o -> verbosity >= 4 )
630+ printf ("One merge base found (%.7s)\n" ,
631+ sha1_to_hex (base_sha1 ));
625632 } else {
626633 /* TODO: How to handle multiple merge-bases? */
627634 base_sha1 = bases -> item -> object .sha1 ;
628635 base_tree_sha1 = bases -> item -> tree -> object .sha1 ;
629- OUTPUT (o , 3 , "Multiple merge bases found. Using the first "
630- "(%.7s)" , sha1_to_hex (base_sha1 ));
636+ if (o -> verbosity >= 3 )
637+ printf ("Multiple merge bases found. Using the first "
638+ "(%.7s)\n" , sha1_to_hex (base_sha1 ));
631639 }
632640
633- OUTPUT (o , 4 , "Merging remote commit %.7s into local commit %.7s with "
634- "merge-base %.7s" , sha1_to_hex (remote -> object .sha1 ),
635- sha1_to_hex (local -> object .sha1 ), sha1_to_hex (base_sha1 ));
641+ if (o -> verbosity >= 4 )
642+ printf ("Merging remote commit %.7s into local commit %.7s with "
643+ "merge-base %.7s\n" , sha1_to_hex (remote -> object .sha1 ),
644+ sha1_to_hex (local -> object .sha1 ),
645+ sha1_to_hex (base_sha1 ));
636646
637647 if (!hashcmp (remote -> object .sha1 , base_sha1 )) {
638648 /* Already merged; result == local commit */
639- OUTPUT (o , 2 , "Already up-to-date!" );
649+ if (o -> verbosity >= 2 )
650+ printf ("Already up-to-date!\n" );
640651 hashcpy (result_sha1 , local -> object .sha1 );
641652 goto found_result ;
642653 }
643654 if (!hashcmp (local -> object .sha1 , base_sha1 )) {
644655 /* Fast-forward; result == remote commit */
645- OUTPUT (o , 2 , "Fast-forward" );
656+ if (o -> verbosity >= 2 )
657+ printf ("Fast-forward\n" );
646658 hashcpy (result_sha1 , remote -> object .sha1 );
647659 goto found_result ;
648660 }
@@ -684,8 +696,9 @@ int notes_merge_commit(struct notes_merge_options *o,
684696 int path_len = strlen (path ), i ;
685697 const char * msg = strstr (partial_commit -> buffer , "\n\n" );
686698
687- OUTPUT (o , 3 , "Committing notes in notes merge worktree at %.*s" ,
688- path_len - 1 , path );
699+ if (o -> verbosity >= 3 )
700+ printf ("Committing notes in notes merge worktree at %.*s\n" ,
701+ path_len - 1 , path );
689702
690703 if (!msg || msg [2 ] == '\0' )
691704 die ("partial notes commit has empty message" );
@@ -700,7 +713,9 @@ int notes_merge_commit(struct notes_merge_options *o,
700713 unsigned char obj_sha1 [20 ], blob_sha1 [20 ];
701714
702715 if (ent -> len - path_len != 40 || get_sha1_hex (relpath , obj_sha1 )) {
703- OUTPUT (o , 3 , "Skipping non-SHA1 entry '%s'" , ent -> name );
716+ if (o -> verbosity >= 3 )
717+ printf ("Skipping non-SHA1 entry '%s'\n" ,
718+ ent -> name );
704719 continue ;
705720 }
706721
@@ -712,14 +727,16 @@ int notes_merge_commit(struct notes_merge_options *o,
712727 if (add_note (partial_tree , obj_sha1 , blob_sha1 , NULL ))
713728 die ("Failed to add resolved note '%s' to notes tree" ,
714729 ent -> name );
715- OUTPUT (o , 4 , "Added resolved note for object %s: %s" ,
716- sha1_to_hex (obj_sha1 ), sha1_to_hex (blob_sha1 ));
730+ if (o -> verbosity >= 4 )
731+ printf ("Added resolved note for object %s: %s\n" ,
732+ sha1_to_hex (obj_sha1 ), sha1_to_hex (blob_sha1 ));
717733 }
718734
719735 create_notes_commit (partial_tree , partial_commit -> parents , msg ,
720736 result_sha1 );
721- OUTPUT (o , 4 , "Finalized notes merge commit: %s" ,
722- sha1_to_hex (result_sha1 ));
737+ if (o -> verbosity >= 4 )
738+ printf ("Finalized notes merge commit: %s\n" ,
739+ sha1_to_hex (result_sha1 ));
723740 free (path );
724741 return 0 ;
725742}
@@ -731,7 +748,8 @@ int notes_merge_abort(struct notes_merge_options *o)
731748 int ret ;
732749
733750 strbuf_addstr (& buf , git_path (NOTES_MERGE_WORKTREE ));
734- OUTPUT (o , 3 , "Removing notes merge worktree at %s" , buf .buf );
751+ if (o -> verbosity >= 3 )
752+ printf ("Removing notes merge worktree at %s\n" , buf .buf );
735753 ret = remove_dir_recursively (& buf , 0 );
736754 strbuf_release (& buf );
737755 return ret ;
0 commit comments