| 920 | } |
| 921 | |
| 922 | static void show_combined_header(struct combine_diff_path *elem, |
| 923 | int num_parent, |
| 924 | struct rev_info *rev, |
| 925 | const char *line_prefix, |
| 926 | int mode_differs, |
| 927 | int show_file_header) |
| 928 | { |
| 929 | struct diff_options *opt = &rev->diffopt; |
| 930 | int abbrev = opt->flags.full_index ? the_hash_algo->hexsz : DEFAULT_ABBREV; |
| 931 | const char *a_prefix = opt->a_prefix ? opt->a_prefix : "a/"; |
| 932 | const char *b_prefix = opt->b_prefix ? opt->b_prefix : "b/"; |
| 933 | const char *c_meta = diff_get_color_opt(opt, DIFF_METAINFO); |
| 934 | const char *c_reset = diff_get_color_opt(opt, DIFF_RESET); |
| 935 | const char *abb; |
| 936 | int added = 0; |
| 937 | int deleted = 0; |
| 938 | int i; |
| 939 | int dense = rev->dense_combined_merges; |
| 940 | |
| 941 | if (rev->loginfo && !rev->no_commit_id) |
| 942 | show_log(rev); |
| 943 | |
| 944 | dump_quoted_path(dense ? "diff --cc " : "diff --combined ", |
| 945 | "", elem->path, line_prefix, c_meta, c_reset); |
| 946 | printf("%s%sindex ", line_prefix, c_meta); |
| 947 | for (i = 0; i < num_parent; i++) { |
| 948 | abb = repo_find_unique_abbrev(the_repository, |
| 949 | &elem->parent[i].oid, abbrev); |
| 950 | printf("%s%s", i ? "," : "", abb); |
| 951 | } |
| 952 | abb = repo_find_unique_abbrev(the_repository, &elem->oid, abbrev); |
| 953 | printf("..%s%s\n", abb, c_reset); |
| 954 | |
| 955 | if (mode_differs) { |
| 956 | deleted = !elem->mode; |
| 957 | |
| 958 | /* We say it was added if nobody had it */ |
| 959 | added = !deleted; |
| 960 | for (i = 0; added && i < num_parent; i++) |
| 961 | if (elem->parent[i].status != |
| 962 | DIFF_STATUS_ADDED) |
| 963 | added = 0; |
| 964 | if (added) |
| 965 | printf("%s%snew file mode %06o", |
| 966 | line_prefix, c_meta, elem->mode); |
| 967 | else { |
| 968 | if (deleted) |
| 969 | printf("%s%sdeleted file ", |
| 970 | line_prefix, c_meta); |
| 971 | printf("mode "); |
| 972 | for (i = 0; i < num_parent; i++) { |
| 973 | printf("%s%06o", i ? "," : "", |
| 974 | elem->parent[i].mode); |
| 975 | } |
| 976 | if (elem->mode) |
| 977 | printf("..%06o", elem->mode); |
| 978 | } |
| 979 | printf("%s\n", c_reset); |
no test coverage detected