| 171 | } |
| 172 | |
| 173 | static void builtin_diff_tree(struct rev_info *revs, |
| 174 | int argc, const char **argv, |
| 175 | struct object_array_entry *ent0, |
| 176 | struct object_array_entry *ent1) |
| 177 | { |
| 178 | const struct object_id *(oid[2]); |
| 179 | struct object_id mb_oid; |
| 180 | int merge_base = 0; |
| 181 | |
| 182 | while (1 < argc) { |
| 183 | const char *arg = argv[1]; |
| 184 | if (!strcmp(arg, "--merge-base")) |
| 185 | merge_base = 1; |
| 186 | else |
| 187 | usage(builtin_diff_usage); |
| 188 | argv++; argc--; |
| 189 | } |
| 190 | |
| 191 | if (merge_base) { |
| 192 | diff_get_merge_base(revs, &mb_oid); |
| 193 | oid[0] = &mb_oid; |
| 194 | oid[1] = &revs->pending.objects[1].item->oid; |
| 195 | } else { |
| 196 | int swap = 0; |
| 197 | |
| 198 | /* |
| 199 | * We saw two trees, ent0 and ent1. If ent1 is uninteresting, |
| 200 | * swap them. |
| 201 | */ |
| 202 | if (ent1->item->flags & UNINTERESTING) |
| 203 | swap = 1; |
| 204 | oid[swap] = &ent0->item->oid; |
| 205 | oid[1 - swap] = &ent1->item->oid; |
| 206 | } |
| 207 | diff_tree_oid(oid[0], oid[1], "", &revs->diffopt); |
| 208 | log_tree_diff_flush(revs); |
| 209 | } |
| 210 | |
| 211 | static void builtin_diff_combined(struct rev_info *revs, |
| 212 | int argc, const char **argv UNUSED, |
no test coverage detected