git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Git Test Coverage Report (Friday, Oct 12)

From
Derrick Stolee <stolee@gmail.com>
Date
Oct 12, 2018, 12:59 UTC
Message-ID
<e30a9c05-87d8-1f2b-182c-6d6a5fefe43c@gmail.com>

In an effort to ensure new code is reasonably covered by the test suite, we now have contrib/coverage-diff.sh to combine the gcov output from 'make coverage-test ; make coverage-report' with the output from 'git diff A B' to discover _new_ lines of code that are not covered.

This report takes the output of these results after running on four branches:

         pu: 13cafb433ca0dd31b3ea229a79cc8507aa89ee19 (tests are broken, 
so coverage not reported)
        jch: fda196ac82002ede984896861cf28a354044d1a0
       next: 76f2f5c1e34c4dbef1029e2984c2892894c444ce
     master: 04861070400d3ca9d487bd0d736ca818b9ffe371
      maint: cae598d9980661a978e2df4fb338518f7bf09572

I ran the test suite on each of these branches on an Ubuntu Linux VM, and I'm missing some dependencies (like apache, svn, and perforce) so not all tests are run.

I submit this output without comment. I'm taking a look especially at my own lines to see where coverage can be improved.

Thanks,
-Stolee

Uncovered code new in jch, compared to next. Build logs at [1] --------------------------------------------------------------

builtin/archive.c
e001fd3a50 builtin/archive.c  78) die(_("git archive: expected ACK/NAK, 
got a flush packet"));
e001fd3a50 builtin/archive.c  80) if (starts_with(reader.line, "NACK "))
e001fd3a50 builtin/archive.c  81) die(_("git archive: NACK %s"), 
reader.line + 5);
e001fd3a50 builtin/archive.c  82) if (starts_with(reader.line, "ERR "))
e001fd3a50 builtin/archive.c  83) die(_("remote error: %s"), reader.line 
+ 4);
e001fd3a50 builtin/archive.c  84) die(_("git archive: protocol error"));
e001fd3a50 builtin/archive.c  89) die(_("git archive: expected a flush"));
fb19d32f05 builtin/archive.c  99) if (version != discover_version(&reader))
fb19d32f05 builtin/archive.c 100) die(_("git archive: received different 
protocol versions in subsequent requests"));

builtin/fetch.c 7bbc53a589 builtin/fetch.c  385) continue; /* can this happen??? */

builtin/rebase--interactive.c 53bbcfbde7 builtin/rebase--interactive2.c  24) return error(_("no HEAD?")); 53bbcfbde7 builtin/rebase--interactive2.c  51) return error_errno(_("could not create temporary %s"), path_state_dir()); 53bbcfbde7 builtin/rebase--interactive2.c  57) return error_errno(_("could not mark as interactive")); 53bbcfbde7 builtin/rebase--interactive2.c  77) return -1; 53bbcfbde7 builtin/rebase--interactive2.c  81) return -1; 53bbcfbde7 builtin/rebase--interactive2.c  87) free(revisions); 53bbcfbde7 builtin/rebase--interactive2.c  88) free(shortrevisions); 53bbcfbde7 builtin/rebase--interactive2.c  90) return -1; 53bbcfbde7 builtin/rebase--interactive2.c  98) free(revisions); 53bbcfbde7 builtin/rebase--interactive2.c  99) free(shortrevisions); 53bbcfbde7 builtin/rebase--interactive2.c 101) return error_errno(_("could not open %s"), rebase_path_todo()); 53bbcfbde7 builtin/rebase--interactive2.c 106) argv_array_push(&make_script_args, restrict_revision); 53bbcfbde7 builtin/rebase--interactive2.c 114) error(_("could not generate todo list")); 53bbcfbde7 builtin/rebase--interactive2.c 206) usage_with_options(builtin_rebase_interactive_usage, options); 53bbcfbde7 builtin/rebase--interactive2.c 220) warning(_("--[no-]rebase-cousins has no effect without " 0af129b2ed builtin/rebase--interactive2.c 226) die(_("a base commit must be provided with --upstream or --onto")); 34b47315d9 builtin/rebase--interactive.c  261) ret = rearrange_squash(); 34b47315d9 builtin/rebase--interactive.c  262) break; 34b47315d9 builtin/rebase--interactive.c  264) ret = sequencer_add_exec_commands(cmd); 34b47315d9 builtin/rebase--interactive.c  265) break; 0af129b2ed builtin/rebase--interactive2.c 267) BUG("invalid command '%d'", command);

builtin/rebase.c 55071ea248   61) strbuf_trim(&out); 55071ea248   62) ret = !strcmp("true", out.buf); 55071ea248   63) strbuf_release(&out); 002ee2fe68  115) die(_("%s requires an interactive rebase"), option); f95736288a  148) return error_errno(_("could not read '%s'"), path); f95736288a  162) return -1; f95736288a  167) return error(_("could not get 'onto': '%s'"), buf.buf); f95736288a  178) return -1; f95736288a  179) } else if (read_one(state_dir_path("head", opts), &buf)) f95736288a  180) return -1; f95736288a  182) return error(_("invalid orig-head: '%s'"), buf.buf); f95736288a  186) return -1; f95736288a  188) opts->flags &= ~REBASE_NO_QUIET; 73d51ed0a5  196) opts->signoff = 1; 73d51ed0a5  197) opts->flags |= REBASE_FORCE; ead98c111b  204) return -1; 12026a412c  219) return -1; ba1905a5fe  227) return -1; ba1905a5fe  235) return -1; 6defce2b02  255) return error(_("Could not read '%s'"), path); 6defce2b02  271) res = error(_("Cannot store %s"), autostash.buf); 6defce2b02  275) return res; bc24382c2b  373) argv_array_pushf(&child.args, bc24382c2b  375) oid_to_hex(&opts->restrict_revision->object.oid)); ac7f467fef  488) BUG("Unhandled rebase type %d", opts->type); ac7f467fef  507) struct strbuf dir = STRBUF_INIT; 6defce2b02  509) apply_autostash(opts); ac7f467fef  510) strbuf_addstr(&dir, opts->state_dir); ac7f467fef  511) remove_dir_recursively(&dir, 0); ac7f467fef  512) strbuf_release(&dir); ac7f467fef  513) die("Nothing to do"); d4c569f8f4  540) BUG("Not a fully qualified branch: '%s'", switch_to_branch); ac7f467fef  543) return -1; ac7f467fef  547) rollback_lock_file(&lock); ac7f467fef  548) return error(_("could not determine HEAD revision")); ac7f467fef  565) rollback_lock_file(&lock); ac7f467fef  566) return error(_("could not read index")); ac7f467fef  570) error(_("failed to find tree of %s"), oid_to_hex(oid)); ac7f467fef  571) rollback_lock_file(&lock); ac7f467fef  572) free((void *)desc.buffer); ac7f467fef  573) return -1; ac7f467fef  586) ret = error(_("could not write index")); ac7f467fef  590) return ret; ac7f467fef  606) } else if (old_orig) ac7f467fef  607) delete_ref(NULL, "ORIG_HEAD", old_orig, 0); bff014dac7  635) opts->flags &= !REBASE_DIFFSTAT; 9a48a615b4  669) return 1; 9a48a615b4  685) return 0; 55071ea248  893) const char *path = mkpath("%s/git-legacy-rebase", 55071ea248  896) if (sane_execvp(path, (char **)argv) < 0) 55071ea248  897) die_errno(_("could not exec %s"), path); 55071ea248  899) BUG("sane_execvp() returned???"); 0eabf4b95c  915) die(_("It looks like 'git am' is in progress. Cannot rebase.")); f28d40d3a9  952) usage_with_options(builtin_rebase_usage, f95736288a  972) die(_("Cannot read HEAD")); f95736288a  976) die(_("could not read index")); f95736288a  990) exit(1); 122420c295 1002) die(_("could not discard worktree changes")); 122420c295 1004) exit(1); 5e5d96197c 1015) exit(1); 5e5d96197c 1018) die(_("could not move back to %s"), 5a61494539 1028) die(_("could not remove '%s'"), options.state_dir); 51e9ea6da7 1042) BUG("action: %d", action); c54dacb50e 1047) const char *last_slash = strrchr(options.state_dir, '/'); c54dacb50e 1048) const char *state_dir_base = c54dacb50e 1049) last_slash ? last_slash + 1 : options.state_dir; c54dacb50e 1050) const char *cmd_live_rebase = c54dacb50e 1052) strbuf_reset(&buf); c54dacb50e 1053) strbuf_addf(&buf, "rm -fr \"%s\"", options.state_dir); c54dacb50e 1054) die(_("It seems that there is already a %s directory, and\n" 53f9e5be94 1078) strbuf_addstr(&options.git_am_opt, " --ignore-date"); 53f9e5be94 1079) options.flags |= REBASE_FORCE; 7998dbe1ec 1091) strbuf_addf(&options.git_am_opt, " -C%d", opt_c); 3c3588c7d3 1123) else if (strcmp("no-rebase-cousins", rebase_merges)) 3c3588c7d3 1124) die(_("Unknown mode: %s"), rebase_merges); ba1905a5fe 1146) die(_("--strategy requires --merge or --interactive")); ba1905a5fe 1156) BUG("unhandled rebase type (%d)", options.type); cda614e489 1164) strbuf_addstr(&options.git_format_patch_opt, " --progress"); ac7f467fef 1173) options.state_dir = apply_dir(); ac7f467fef 1174) break; ac7f467fef 1251) die(_("invalid upstream '%s'"), options.upstream_name); 9dba809a69 1257) die(_("Could not create new root commit")); e65123a71d 1307) die(_("fatal: no such branch/commit '%s'"), ac7f467fef 1315) die(_("No such ref: %s"), "HEAD"); ac7f467fef 1327) die(_("Could not resolve HEAD to a revision")); e65123a71d 1329) BUG("unexpected number of arguments left to parse"); e0333e5c63 1340) die(_("could not read index")); 6defce2b02 1367) die(_("Cannot autostash")); 6defce2b02 1370) die(_("Unexpected stash response: '%s'"), 6defce2b02 1376) die(_("Could not create directory for '%s'"), 6defce2b02 1382) die(_("could not reset --hard")); e65123a71d 1426) ret = !!error(_("could not parse '%s'"), e65123a71d 1428) goto cleanup; e65123a71d 1437) ret = !!error(_("could not switch to " 1ed9c14ff2 1447)  resolve_ref_unsafe("HEAD", 0, NULL, &flag)) 1ed9c14ff2 1448) puts(_("HEAD is up to date.")); 9a48a615b4 1457)  resolve_ref_unsafe("HEAD", 0, NULL, &flag)) 9a48a615b4 1458) puts(_("HEAD is up to date, rebase forced."));

builtin/rev-list.c 7c0fe330d5 builtin/rev-list.c 227) die("unexpected missing %s object '%s'", 7c0fe330d5 builtin/rev-list.c 228)     type_name(obj->type), oid_to_hex(&obj->oid)); 250edfa8c8 builtin/rev-list.c 434) bisect_flags |= BISECT_FIND_ALL;

builtin/stash.c 93871263d1 builtin/stash--helper.c  130) free_stash_info(info); 93871263d1 builtin/stash--helper.c  131) error(_("'%s' is not a stash-like commit"), revision); 93871263d1 builtin/stash--helper.c  132) exit(128); 93871263d1 builtin/stash--helper.c  165) free_stash_info(info); 93871263d1 builtin/stash--helper.c  166) fprintf_ln(stderr, _("No stash entries found.")); 93871263d1 builtin/stash--helper.c  167) return -1; 93871263d1 builtin/stash--helper.c  202) free_stash_info(info); 31f109a361 builtin/stash--helper.c  229) return error(_("git stash clear with parameters is unimplemented")); 93871263d1 builtin/stash--helper.c  244) return -1; 93871263d1 builtin/stash--helper.c  252) return -1; 93871263d1 builtin/stash--helper.c  265) return -1; 93871263d1 builtin/stash--helper.c  268) return error(_("unable to write new index file")); 93871263d1 builtin/stash--helper.c  374) remove_path(stash_index_path.buf); 93871263d1 builtin/stash--helper.c  375) return -1; 93871263d1 builtin/stash--helper.c  402) return -1; 93871263d1 builtin/stash--helper.c  405) return error(_("Cannot apply a stash in the middle of a merge")); 93871263d1 builtin/stash--helper.c  415) strbuf_release(&out); 93871263d1 builtin/stash--helper.c  416) return -1; 93871263d1 builtin/stash--helper.c  422) return -1; 93871263d1 builtin/stash--helper.c  427) return -1; 93871263d1 builtin/stash--helper.c  434) return error(_("Could not restore untracked files from stash")); 93871263d1 builtin/stash--helper.c  465) return -1; 93871263d1 builtin/stash--helper.c  470) strbuf_release(&out); 93871263d1 builtin/stash--helper.c  475) strbuf_release(&out); 93871263d1 builtin/stash--helper.c  476) return -1; 31f109a361 builtin/stash--helper.c  551) return error(_("%s: Could not drop stash entry"), b3513da4bd builtin/stash--helper.c  623) printf_ln(_("The stash entry is kept in case you need it again.")); 8ceb24b2c3 builtin/stash--helper.c  754) free_stash_info(&info); 129f0b0a00 builtin/stash.c          755) usage_with_options(git_stash_show_usage, options); 0ac06fb81f builtin/stash--helper.c  808) fprintf_ln(stderr, _("\"git stash store\" requires one <commit> argument")); 0ac06fb81f builtin/stash--helper.c  809) return -1; f6f191b3f2 builtin/stash--helper.c  884) return 1; f6f191b3f2 builtin/stash--helper.c  925) ret = -1; f6f191b3f2 builtin/stash--helper.c  926) goto done; f6f191b3f2 builtin/stash--helper.c  931) ret = -1; f6f191b3f2 builtin/stash--helper.c  932) goto done; f6f191b3f2 builtin/stash--helper.c  937) ret = -1; f6f191b3f2 builtin/stash--helper.c  938) goto done; f6f191b3f2 builtin/stash--helper.c  966) ret = -1; f6f191b3f2 builtin/stash--helper.c  967) goto done; f6f191b3f2 builtin/stash--helper.c  978) ret = -1; f6f191b3f2 builtin/stash--helper.c  979) goto done; f6f191b3f2 builtin/stash--helper.c  984) ret = -1; f6f191b3f2 builtin/stash--helper.c  985) goto done; f6f191b3f2 builtin/stash--helper.c  992) ret = -1; f6f191b3f2 builtin/stash--helper.c  993) goto done; f6f191b3f2 builtin/stash--helper.c 1018) ret = -1; f6f191b3f2 builtin/stash--helper.c 1019) goto done; f6f191b3f2 builtin/stash--helper.c 1031) ret = -1; f6f191b3f2 builtin/stash--helper.c 1032) goto done; f6f191b3f2 builtin/stash--helper.c 1037) ret = -1; f6f191b3f2 builtin/stash--helper.c 1038) goto done; f6f191b3f2 builtin/stash--helper.c 1049) ret = -1; f6f191b3f2 builtin/stash--helper.c 1050) goto done; f6f191b3f2 builtin/stash--helper.c 1055) ret = -1; f6f191b3f2 builtin/stash--helper.c 1056) goto done; 8002b9e626 builtin/stash--helper.c 1089) fprintf_ln(stderr, _("You do not have the initial commit yet")); 8002b9e626 builtin/stash--helper.c 1110) if (!quiet) 8002b9e626 builtin/stash--helper.c 1111) fprintf_ln(stderr, _("Cannot save the current index state")); f6f191b3f2 builtin/stash--helper.c 1112) ret = -1; f6f191b3f2 builtin/stash--helper.c 1113) *stash_msg = NULL; f6f191b3f2 builtin/stash--helper.c 1114) goto done; 8002b9e626 builtin/stash--helper.c 1119) if (!quiet) 8002b9e626 builtin/stash--helper.c 1120) fprintf_ln(stderr, _("Cannot save the untracked files")); f6f191b3f2 builtin/stash--helper.c 1121) ret = -1; f6f191b3f2 builtin/stash--helper.c 1122) *stash_msg = NULL; f6f191b3f2 builtin/stash--helper.c 1123) goto done; 8002b9e626 builtin/stash--helper.c 1131) if (!quiet) 8002b9e626 builtin/stash--helper.c 1132) fprintf_ln(stderr, _("Cannot save the current worktree state")); f6f191b3f2 builtin/stash--helper.c 1133) goto done; 8002b9e626 builtin/stash--helper.c 1139) if (!quiet) 8002b9e626 builtin/stash--helper.c 1140) fprintf_ln(stderr, _("Cannot save the current worktree state")); f6f191b3f2 builtin/stash--helper.c 1141) ret = -1; f6f191b3f2 builtin/stash--helper.c 1142) *stash_msg = NULL; f6f191b3f2 builtin/stash--helper.c 1143) goto done; 8002b9e626 builtin/stash--helper.c 1166) if (!quiet) 8002b9e626 builtin/stash--helper.c 1167) fprintf_ln(stderr, _("Cannot record working tree state")); f6f191b3f2 builtin/stash--helper.c 1168) ret = -1; f6f191b3f2 builtin/stash--helper.c 1169) goto done; 48c061fa44 builtin/stash--helper.c 1251) return -1; 8002b9e626 builtin/stash--helper.c 1260) if (!quiet) 8002b9e626 builtin/stash--helper.c 1261) fprintf_ln(stderr, _("Cannot initialize stash")); 48c061fa44 builtin/stash--helper.c 1262) return -1; 8002b9e626 builtin/stash--helper.c 1272) if (!quiet) 8002b9e626 builtin/stash--helper.c 1273) fprintf_ln(stderr, _("Cannot save the current status")); 48c061fa44 builtin/stash--helper.c 1274) ret = -1; 48c061fa44 builtin/stash--helper.c 1275) goto done; 48c061fa44 builtin/stash--helper.c 1292) ret = -1; 48c061fa44 builtin/stash--helper.c 1311) ret = -1; 48c061fa44 builtin/stash--helper.c 1312) goto done; 48c061fa44 builtin/stash--helper.c 1321) ret = -1; 48c061fa44 builtin/stash--helper.c 1322) goto done; 48c061fa44 builtin/stash--helper.c 1330) ret = -1; 48c061fa44 builtin/stash--helper.c 1339) ret = -1; 48c061fa44 builtin/stash--helper.c 1350) ret = -1; 48c061fa44 builtin/stash--helper.c 1359) ret = -1; 48c061fa44 builtin/stash--helper.c 1360) goto done; 48c061fa44 builtin/stash--helper.c 1368) ret = -1; 48c061fa44 builtin/stash--helper.c 1394) ret = -1; 129f0b0a00 builtin/stash.c         1524) usage_msg_opt(xstrfmt(_("unknown subcommand: %s"), argv[0]), 129f0b0a00 builtin/stash.c         1554) continue;

builtin/upload-archive.c e001fd3a50 builtin/upload-archive.c 111) if (version == protocol_v0 || version == protocol_v1) e001fd3a50 builtin/upload-archive.c 112) packet_write_fmt(1, "NACK unable to spawn subprocess\n"); e001fd3a50 builtin/upload-archive.c 113) else if (version == protocol_v2) e001fd3a50 builtin/upload-archive.c 114) error_clnt("unable to spawn subprocess\n");

config.c c780b9cfe8 2298) return val; c780b9cfe8 2301) if (is_bool) c780b9cfe8 2302) return val ? 0 : 1; c780b9cfe8 2304) return val;

help.c 26c7d06783 help.c         500) static int get_alias(const char *var, const char *value, void *data) 26c7d06783 help.c         502) struct string_list *list = data; 26c7d06783 help.c         504) if (skip_prefix(var, "alias.", &var)) 26c7d06783 help.c         505) string_list_append(list, var)->util = xstrdup(value); 26c7d06783 help.c         507) return 0; 26c7d06783 help.c         530) printf("\n%s\n", _("Command aliases")); 26c7d06783 help.c         531) ALLOC_ARRAY(aliases, alias_list.nr + 1); 26c7d06783 help.c         532) for (i = 0; i < alias_list.nr; i++) { 26c7d06783 help.c         533) aliases[i].name = alias_list.items[i].string; 26c7d06783 help.c         534) aliases[i].help = alias_list.items[i].util; 26c7d06783 help.c         535) aliases[i].category = 1; 26c7d06783 help.c         537) aliases[alias_list.nr].name = NULL; 26c7d06783 help.c         538) print_command_list(aliases, 1, longest); 26c7d06783 help.c         539) free(aliases);

http-backend.c fb19d32f05 646) argv[1] = "."; fb19d32f05 647) argv[2] = NULL;

list-objects-filter-options.c bc5975d24f  55) if (errbuf) { bc5975d24f  56) strbuf_addstr( bc5975d24f  60) return 1; cc0b05a4cc  86) if (errbuf)

list-objects-filter.c 696aa73905  47) BUG("unknown filter_situation: %d", filter_situation); bc5975d24f 101) BUG("unknown filter_situation: %d", filter_situation); 696aa73905 152) BUG("unknown filter_situation: %d", filter_situation); 696aa73905 257) BUG("unknown filter_situation: %d", filter_situation); 696aa73905 438) BUG("invalid list-objects filter choice: %d",

list-objects.c f447a499db 197) ctx->show_object(obj, base->buf, ctx->show_data);

midx.c e43d2dcce1  285) if (hasheq(oid.hash, e43d2dcce1  286)    p->bad_object_sha1 + the_hash_algo->rawsz * i))

oidset.c 8b2f8cbcb1 29) kh_del_oid(&set->set, pos); 8b2f8cbcb1 30) return 1;

packfile.c fb571c5fa7  117) return error("index file %s is too small", path); fb571c5fa7  119) return error("empty data");

preload-index.c ae9af12287  73) struct progress_data *pd = p->progress; ae9af12287  75) pthread_mutex_lock(&pd->mutex); ae9af12287  76) pd->n += last_nr - nr; ae9af12287  77) display_progress(pd->progress, pd->n); ae9af12287  78) pthread_mutex_unlock(&pd->mutex); ae9af12287  79) last_nr = nr; ae9af12287  93) struct progress_data *pd = p->progress; ae9af12287  95) pthread_mutex_lock(&pd->mutex); ae9af12287  96) display_progress(pd->progress, pd->n + last_nr); ae9af12287  97) pthread_mutex_unlock(&pd->mutex); ae9af12287 128) pd.progress = start_delayed_progress(_("Refreshing index"), index->cache_nr); ae9af12287 129) pthread_mutex_init(&pd.mutex, NULL); ae9af12287 140) p->progress = &pd;

prio-queue.c 2d181390f3 94) return queue->array[queue->nr - 1].data;

read-cache.c
ae9af12287 1490) progress = start_delayed_progress(_("Refresh index"),
ae9af12287 1491)   istate->cache_nr);
ae9af12287 1533) display_progress(progress, i);
ae9af12287 1566) display_progress(progress, istate->cache_nr);
ae9af12287 1567) stop_progress(&progress);
252d079cbd 1778) const unsigned char *cp = (const unsigned char *)name;
252d079cbd 1782) strip_len = decode_varint(&cp);
77ff1127a4 1783) if (previous_ce) {
77ff1127a4 1784) previous_len = previous_ce->ce_namelen;
77ff1127a4 1785) if (previous_len < strip_len)
252d079cbd 1786) die(_("malformed name field in the index, near path '%s'"),
77ff1127a4 1787) previous_ce->name);
77ff1127a4 1788) copy_len = previous_len - strip_len;
77ff1127a4 1790) copy_len = 0;
252d079cbd 1792) name = (const char *)cp;
252d079cbd 1798) len += copy_len;
252d079cbd 1819) if (copy_len)
252d079cbd 1820) memcpy(ce->name, previous_ce->name, copy_len);
252d079cbd 1821) memcpy(ce->name + copy_len, name, len + 1 - copy_len);
252d079cbd 1822) *ent_size = (name - ((char *)ondisk)) + len + 1 - copy_len;
abb4bb8384 1959) munmap((void *)p->mmap, p->mmap_size);
abb4bb8384 1960) die(_("index file corrupt"));
77ff1127a4 2001) mem_pool_init(&istate->ce_mem_pool,
77ff1127a4 2041) static void *load_cache_entries_thread(void *_data)
77ff1127a4 2043) struct load_cache_entries_thread_data *p = _data;
77ff1127a4 2047) for (i = p->ieot_start; i < p->ieot_start + 
p->ieot_blocks; i++) {
77ff1127a4 2048) p->consumed += load_cache_entry_block(p->istate, 
p->ce_mem_pool,
77ff1127a4 2049) p->offset, p->ieot->entries[i].nr, p->mmap, 
p->ieot->entries[i].offset, NULL);
77ff1127a4 2050) p->offset += p->ieot->entries[i].nr;
77ff1127a4 2052) return NULL;
77ff1127a4 2055) static unsigned long load_cache_entries_threaded(struct 
index_state *istate, const char *mmap, size_t mmap_size,
77ff1127a4 2060) unsigned long consumed = 0;
77ff1127a4 2063) if (istate->name_hash_initialized)
77ff1127a4 2064) BUG("the name hash isn't thread safe");
77ff1127a4 2066) mem_pool_init(&istate->ce_mem_pool, 0);
77ff1127a4 2069) if (nr_threads > ieot->nr)
77ff1127a4 2070) nr_threads = ieot->nr;
77ff1127a4 2071) data = xcalloc(nr_threads, sizeof(*data));
77ff1127a4 2073) offset = ieot_start = 0;
77ff1127a4 2074) ieot_blocks = DIV_ROUND_UP(ieot->nr, nr_threads);
77ff1127a4 2075) for (i = 0; i < nr_threads; i++) {
77ff1127a4 2076) struct load_cache_entries_thread_data *p = &data[i];
77ff1127a4 2079) if (ieot_start + ieot_blocks > ieot->nr)
77ff1127a4 2080) ieot_blocks = ieot->nr - ieot_start;
77ff1127a4 2082) p->istate = istate;
77ff1127a4 2083) p->offset = offset;
77ff1127a4 2084) p->mmap = mmap;
77ff1127a4 2085) p->ieot = ieot;
77ff1127a4 2086) p->ieot_start = ieot_start;
77ff1127a4 2087) p->ieot_blocks = ieot_blocks;
77ff1127a4 2090) nr = 0;
77ff1127a4 2091) for (j = p->ieot_start; j < p->ieot_start + 
p->ieot_blocks; j++)
77ff1127a4 2092) nr += p->ieot->entries[j].nr;
77ff1127a4 2093) if (istate->version == 4) {
77ff1127a4 2094) mem_pool_init(&p->ce_mem_pool,
77ff1127a4 2097) mem_pool_init(&p->ce_mem_pool,
77ff1127a4 2101) err = pthread_create(&p->pthread, NULL, 
load_cache_entries_thread, p);
77ff1127a4 2102) if (err)
77ff1127a4 2103) die(_("unable to create load_cache_entries thread: 
%s"), strerror(err));
77ff1127a4 2106) for (j = 0; j < ieot_blocks; j++)
77ff1127a4 2107) offset += ieot->entries[ieot_start + j].nr;
77ff1127a4 2108) ieot_start += ieot_blocks;
77ff1127a4 2111) for (i = 0; i < nr_threads; i++) {
77ff1127a4 2112) struct load_cache_entries_thread_data *p = &data[i];
77ff1127a4 2114) err = pthread_join(p->pthread, NULL);
77ff1127a4 2115) if (err)
77ff1127a4 2116) die(_("unable to join load_cache_entries thread: %s"), 
strerror(err));
77ff1127a4 2117) mem_pool_combine(istate->ce_mem_pool, p->ce_mem_pool);
77ff1127a4 2118) consumed += p->consumed;
77ff1127a4 2121) free(data);
77ff1127a4 2123) return consumed;
77ff1127a4 2192) nr_threads = cpus;
abb4bb8384 2196) extension_offset = read_eoie_extension(mmap, mmap_size);
abb4bb8384 2197) if (extension_offset) {
abb4bb8384 2200) p.src_offset = extension_offset;
abb4bb8384 2201) err = pthread_create(&p.pthread, NULL, 
load_index_extensions, &p);
abb4bb8384 2202) if (err)
abb4bb8384 2203) die(_("unable to create load_index_extensions thread: 
%s"), strerror(err));
abb4bb8384 2205) nr_threads--;
77ff1127a4 2214) ieot = read_ieot_extension(mmap, mmap_size, 
extension_offset);
77ff1127a4 2217) src_offset += load_cache_entries_threaded(istate, mmap, 
mmap_size, src_offset, nr_threads, ieot);
77ff1127a4 2218) free(ieot);
abb4bb8384 2232) int ret = pthread_join(p.pthread, NULL);
abb4bb8384 2233) if (ret)
abb4bb8384 2234) die(_("unable to join load_index_extensions thread: 
%s"), strerror(ret));
3255089ada 2775) ieot_blocks = nr_threads;
77ff1127a4 2776) if (ieot_blocks > istate->cache_nr)
77ff1127a4 2777) ieot_blocks = istate->cache_nr;
3255089ada 2785) ieot = xcalloc(1, sizeof(struct index_entry_offset_table)
3255089ada 2786) + (ieot_blocks * sizeof(struct index_entry_offset)));
77ff1127a4 2787) ieot_entries = DIV_ROUND_UP(entries, ieot_blocks);
3255089ada 2794) free(ieot);
3b1d9e045e 2795) return -1;
3255089ada 2821) ieot->entries[ieot->nr].nr = nr;
3255089ada 2822) ieot->entries[ieot->nr].offset = offset;
3255089ada 2823) ieot->nr++;
3255089ada 2829) if (previous_name)
3255089ada 2830) previous_name->buf[0] = 0;
3255089ada 2831) nr = 0;
3255089ada 2832) offset = lseek(newfd, 0, SEEK_CUR);
3255089ada 2833) if (offset < 0) {
3255089ada 2834) free(ieot);
3255089ada 2835) return -1;
3255089ada 2837) offset += write_buffer_len;
3255089ada 2847) ieot->entries[ieot->nr].nr = nr;
3255089ada 2848) ieot->entries[ieot->nr].offset = offset;
3255089ada 2849) ieot->nr++;
3255089ada 2861) free(ieot);
3b1d9e045e 2862) return -1;
3255089ada 2876) struct strbuf sb = STRBUF_INIT;
3255089ada 2878) write_ieot_extension(&sb, ieot);
3255089ada 2879) err = write_index_ext_header(&c, &eoie_c, newfd, 
CACHE_EXT_INDEXENTRYOFFSETTABLE, sb.len) < 0
3255089ada 2880) || ce_write(&c, newfd, sb.buf, sb.len) < 0;
3255089ada 2881) strbuf_release(&sb);
3255089ada 2882) free(ieot);
3255089ada 2883) if (err)
3255089ada 2884) return -1;
3b1d9e045e 3372) static size_t read_eoie_extension(const char *mmap, 
size_t mmap_size)
3b1d9e045e 3390) if (mmap_size < sizeof(struct cache_header) + 
EOIE_SIZE_WITH_HEADER + the_hash_algo->rawsz)
3b1d9e045e 3391) return 0;
3b1d9e045e 3394) index = eoie = mmap + mmap_size - EOIE_SIZE_WITH_HEADER 
- the_hash_algo->rawsz;
3b1d9e045e 3395) if (CACHE_EXT(index) != CACHE_EXT_ENDOFINDEXENTRIES)
3b1d9e045e 3396) return 0;
3b1d9e045e 3397) index += sizeof(uint32_t);
3b1d9e045e 3400) extsize = get_be32(index);
3b1d9e045e 3401) if (extsize != EOIE_SIZE)
3b1d9e045e 3402) return 0;
3b1d9e045e 3403) index += sizeof(uint32_t);
3b1d9e045e 3409) offset = get_be32(index);
3b1d9e045e 3410) if (mmap + offset < mmap + sizeof(struct cache_header))
3b1d9e045e 3411) return 0;
3b1d9e045e 3412) if (mmap + offset >= eoie)
3b1d9e045e 3413) return 0;
3b1d9e045e 3414) index += sizeof(uint32_t);
3b1d9e045e 3425) src_offset = offset;
3b1d9e045e 3426) the_hash_algo->init_fn(&c);
3b1d9e045e 3427) while (src_offset < mmap_size - the_hash_algo->rawsz - 
EOIE_SIZE_WITH_HEADER) {
3b1d9e045e 3435) memcpy(&extsize, mmap + src_offset + 4, 4);
3b1d9e045e 3436) extsize = ntohl(extsize);
3b1d9e045e 3439) if (src_offset + 8 + extsize < src_offset)
3b1d9e045e 3440) return 0;
3b1d9e045e 3442) the_hash_algo->update_fn(&c, mmap + src_offset, 8);
3b1d9e045e 3444) src_offset += 8;
3b1d9e045e 3445) src_offset += extsize;
3b1d9e045e 3447) the_hash_algo->final_fn(hash, &c);
3b1d9e045e 3448) if (!hasheq(hash, (const unsigned char *)index))
3b1d9e045e 3449) return 0;
3b1d9e045e 3452) if (src_offset != mmap_size - the_hash_algo->rawsz - 
EOIE_SIZE_WITH_HEADER)
3b1d9e045e 3453) return 0;
3b1d9e045e 3455) return offset;
3255089ada 3475) static struct index_entry_offset_table 
*read_ieot_extension(const char *mmap, size_t mmap_size, size_t offset)
3255089ada 3477)        const char *index = NULL;
3255089ada 3483)        if (!offset)
3255089ada 3484)        return NULL;
3255089ada 3485)        while (offset <= mmap_size - 
the_hash_algo->rawsz - 8) {
3255089ada 3486)        extsize = get_be32(mmap + offset + 4);
3255089ada 3487)        if (CACHE_EXT((mmap + offset)) == 
CACHE_EXT_INDEXENTRYOFFSETTABLE) {
3255089ada 3488)        index = mmap + offset + 4 + 4;
3255089ada 3489)        break;
3255089ada 3491)        offset += 8;
3255089ada 3492)        offset += extsize;
3255089ada 3494)        if (!index)
3255089ada 3495)        return NULL;
3255089ada 3498)        ext_version = get_be32(index);
3255089ada 3499)        if (ext_version != IEOT_VERSION) {
3255089ada 3500)        error("invalid IEOT version %d", ext_version);
3255089ada 3501)        return NULL;
3255089ada 3503)        index += sizeof(uint32_t);
3255089ada 3506)        nr = (extsize - sizeof(uint32_t)) / 
(sizeof(uint32_t) + sizeof(uint32_t));
3255089ada 3507)        if (!nr) {
3255089ada 3508)        error("invalid number of IEOT entries %d", nr);
3255089ada 3509)        return NULL;
3255089ada 3511)        ieot = xmalloc(sizeof(struct 
index_entry_offset_table)
3255089ada 3512)        + (nr * sizeof(struct index_entry_offset)));
3255089ada 3513)        ieot->nr = nr;
3255089ada 3514)        for (i = 0; i < nr; i++) {
3255089ada 3515)        ieot->entries[i].offset = get_be32(index);
3255089ada 3516)        index += sizeof(uint32_t);
3255089ada 3517)        ieot->entries[i].nr = get_be32(index);
3255089ada 3518)        index += sizeof(uint32_t);
3255089ada 3521)        return ieot;
3255089ada 3524) static void write_ieot_extension(struct strbuf *sb, 
struct index_entry_offset_table *ieot)
3255089ada 3530)        put_be32(&buffer, IEOT_VERSION);
3255089ada 3531)        strbuf_add(sb, &buffer, sizeof(uint32_t));
3255089ada 3534)        for (i = 0; i < ieot->nr; i++) {
3255089ada 3537)        put_be32(&buffer, ieot->entries[i].offset);
3255089ada 3538)        strbuf_add(sb, &buffer, sizeof(uint32_t));
3255089ada 3541)        put_be32(&buffer, ieot->entries[i].nr);
3255089ada 3542)        strbuf_add(sb, &buffer, sizeof(uint32_t));
3255089ada 3544) }

rebase-interactive.c 64a43cbd5d 61) return error_errno(_("could not read '%s'."), todo_file); 64a43cbd5d 65) strbuf_release(&buf); 64a43cbd5d 66) return -1; a9f5476fbc 74) return error_errno(_("could not read '%s'."), todo_file); a9f5476fbc 78) strbuf_release(&buf); a9f5476fbc 79) return -1; 64a43cbd5d 85) return -1;

revision.c 4943d28849 2931) return; 4943d28849 2934) return; 4943d28849 2937) c->object.flags |= UNINTERESTING; 4943d28849 2940) return; 4943d28849 2943) mark_parents_uninteresting(c); 4943d28849 2966) return; 4943d28849 2969) return; 4943d28849 2974) return; 4943d28849 3019) info->topo_queue.compare = compare_commits_by_commit_date; 4943d28849 3020) break; 4943d28849 3022) init_author_date_slab(&info->author_date); 4943d28849 3023) info->topo_queue.compare = compare_commits_by_author_date; 4943d28849 3024) info->topo_queue.cb_data = &info->author_date; 4943d28849 3025) break; 4943d28849 3038) continue; 4943d28849 3048) record_author_date(&info->author_date, c); 6c04ff3001 3086) if (!revs->ignore_missing_links) 6c04ff3001 3087) die("Failed to traverse parents of commit %s", 4943d28849 3088) oid_to_hex(&commit->object.oid)); 4943d28849 3096) continue;

sequencer.c 65850686cf 2276) return; 65850686cf 2373) write_file(rebase_path_quiet(), "%s\n", quiet); 2c58483a59 3371) return error(_("could not checkout %s"), commit); 4df66c40b0 3385) return error(_("%s: not a valid OID"), orig_head); b97e187364 4748) return -1; b97e187364 4751) return -1; b97e187364 4757) return error_errno(_("could not read '%s'."), todo_file); b97e187364 4760) todo_list_release(&todo_list); b97e187364 4761) return error(_("unusable todo list: '%s'"), todo_file); b97e187364 4780) todo_list_release(&todo_list); b97e187364 4781) return -1; b97e187364 4785) return error(_("could not copy '%s' to '%s'."), todo_file, b97e187364 4789) return error(_("could not transform the todo list")); b97e187364 4818) return error(_("could not transform the todo list")); b97e187364 4821) return error(_("could not skip unnecessary pick commands")); b97e187364 4827) return -1;

split-index.c 568f3a6073 310) const unsigned int ondisk_flags = 568f3a6073 314) ce_flags = ce->ce_flags; 568f3a6073 315) base_flags = base->ce_flags; 568f3a6073 317) ce->ce_flags   &= ondisk_flags; 568f3a6073 318) base->ce_flags &= ondisk_flags; 568f3a6073 319) ret = memcmp(&ce->ce_stat_data, &base->ce_stat_data, 568f3a6073 322) ce->ce_flags = ce_flags; 568f3a6073 323) base->ce_flags = base_flags; 568f3a6073 324) if (ret) 568f3a6073 325) ce->ce_flags |= CE_UPDATE_IN_BASE;

strbuf.c f95736288a  127) --sb->len;

transport-helper.c fb19d32f05  643) if (!data->connect && !data->stateless_connect)

transport.c 99bcb883cb  299) BUG("buffer must be empty at the end of handshake()");

Commits introducing uncovered code: Alban Gruin      0af129b2e: rebase--interactive2: rewrite the submodes of interactive rebase in C Alban Gruin      2c58483a5: rebase -i: rewrite setup_reflog_action() in C Alban Gruin      34b47315d: rebase -i: move rebase--helper modes to rebase--interactive Alban Gruin      4df66c40b: rebase -i: rewrite checkout_onto() in C Alban Gruin      53bbcfbde: rebase -i: implement the main part of interactive rebase as a builtin Alban Gruin      64a43cbd5: rebase -i: rewrite the edit-todo functionality in C Alban Gruin      65850686c: rebase -i: rewrite write_basic_state() in C Alban Gruin      a9f5476fb: sequencer: refactor append_todo_help() to write its message to a buffer Alban Gruin      b97e18736: rebase -i: rewrite complete_action() in C Ben Peart      3255089ad: ieot: add Index Entry Offset Table (IEOT) extension Ben Peart      3b1d9e045: eoie: add End of Index Entry (EOIE) extension Ben Peart      77ff1127a: read-cache: load cache entries on worker threads Ben Peart      abb4bb838: read-cache: load cache extensions on a worker thread Ben Peart      c780b9cfe: config: add new index.threads config setting Derrick Stolee      2d181390f: prio-queue: add 'peek' operation Derrick Stolee      4943d2884: revision.c: refactor basic topo-order logic Derrick Stolee      6c04ff300: revision.c: begin refactoring --topo-order logic Harald Nordgren      250edfa8c: bisect: create 'bisect_flags' parameter in find_bisection() Jeff King      e43d2dcce: more oideq/hasheq conversions Joel Teichroeb      31f109a36: stash: convert drop and clear to builtin Joel Teichroeb      93871263d: stash: convert apply to builtin Joel Teichroeb      b3513da4b: stash: convert pop to builtin Johannes Schindelin      bc24382c2: builtin rebase: prepare for builtin rebase -i Jonathan Tan      99bcb883c: transport: allow skipping of ref listing Josh Steadmon      e001fd3a5: archive: implement protocol v2 archive command Josh Steadmon      fb19d32f0: archive: allow archive over HTTP(S) with proto v2 Josh Steadmon      fb571c5fa: fuzz: add fuzz testing for packfile indices Junio C Hamano      7bbc53a58: fetch: replace string-list used as a look-up table with a hashmap Matthew DeVore      696aa7390: list-objects-filter: use BUG rather than die Matthew DeVore      7c0fe330d: rev-list: handle missing tree objects properly Matthew DeVore      bc5975d24: list-objects-filter: implement filter tree:0 Matthew DeVore      cc0b05a4c: list-objects-filter-options: do not over-strbuf_init Matthew DeVore      f447a499d: list-objects: store common func args in struct Nguyễn Thái Ngọc Duy      252d079cb: read-cache.c: optimize reading index format v4 Nguyễn Thái Ngọc Duy      26c7d0678: help -a: improve and make --verbose default Nguyễn Thái Ngọc Duy      ae9af1228: status: show progress bar if refreshing the index takes too long Paul-Sebastian Ungureanu      0ac06fb81: stash: convert store to builtin Paul-Sebastian Ungureanu      129f0b0a0: stash: convert `stash--helper.c` into `stash.c` Paul-Sebastian Ungureanu      48c061fa4: stash: convert push to builtin Paul-Sebastian Ungureanu      8002b9e62: stash: make push -q quiet Paul-Sebastian Ungureanu      8ceb24b2c: stash: convert show to builtin Paul-Sebastian Ungureanu      f6f191b3f: stash: convert create to builtin Pratik Karki      002ee2fe6: builtin rebase: support `keep-empty` option Pratik Karki      0eabf4b95: builtin rebase: stop if `git am` is in progress Pratik Karki      12026a412: builtin rebase: support `--gpg-sign` option Pratik Karki      122420c29: builtin rebase: support --skip Pratik Karki      1ed9c14ff: builtin rebase: support --force-rebase Pratik Karki      3c3588c7d: builtin rebase: support --rebase-merges[=[no-]rebase-cousins] Pratik Karki      51e9ea6da: builtin rebase: support --edit-todo and --show-current-patch Pratik Karki      53f9e5be9: builtin rebase: support `ignore-date` option Pratik Karki      55071ea24: rebase: start implementing it as a builtin Pratik Karki      5a6149453: builtin rebase: support --quit Pratik Karki      5e5d96197: builtin rebase: support --abort Pratik Karki      6defce2b0: builtin rebase: support `--autostash` option Pratik Karki      73d51ed0a: builtin rebase: support --signoff Pratik Karki      7998dbe1e: builtin rebase: support `-C` and `--whitespace=<type>` Pratik Karki      9a48a615b: builtin rebase: try to fast forward when possible Pratik Karki      9dba809a6: builtin rebase: support --root Pratik Karki      ac7f467fe: builtin/rebase: support running "git rebase <upstream>" Pratik Karki      ba1905a5f: builtin rebase: add support for custom merge strategies Pratik Karki      bff014dac: builtin rebase: support the `verbose` and `diffstat` options Pratik Karki      c54dacb50: builtin rebase: start a new rebase only if none is in progress Pratik Karki      cda614e48: builtin rebase: show progress when connected to a terminal Pratik Karki      d4c569f8f: builtin rebase: only store fully-qualified refs in `options.head_name` Pratik Karki      e0333e5c6: builtin rebase: require a clean worktree Pratik Karki      e65123a71: builtin rebase: support `git rebase <upstream> <switch-to>` Pratik Karki      ead98c111: builtin rebase: support --rerere-autoupdate Pratik Karki      f28d40d3a: builtin rebase: support --onto Pratik Karki      f95736288: builtin rebase: support --continue René Scharfe      8b2f8cbcb: oidset: use khash SZEDER Gábor      568f3a607: split-index: don't compare stat data of entries already marked for split index

Uncovered code new in next, compared to master. Build logs at [2] -----------------------------------------------------------------

blame.c a470beea39  113)  !strcmp(r->index->cache[-1 - pos]->name, path)) a470beea39  272) int pos = index_name_pos(r->index, path, len); a470beea39  274) mode = r->index->cache[pos]->ce_mode;

builtin/am.c 2abf350385 1414) repo_init_revisions(the_repository, &rev_info, NULL);

builtin/gc.c 3029970275 builtin/gc.c 461) ret = error_errno(_("cannot stat '%s'"), gc_log_path); 3029970275 builtin/gc.c 470) ret = error_errno(_("cannot read '%s'"), gc_log_path); fec2ed2187 builtin/gc.c 495) die(FAILED_RUN, pack_refs_cmd.argv[0]); fec2ed2187 builtin/gc.c 498) die(FAILED_RUN, reflog.argv[0]);a 3029970275 builtin/gc.c 585) exit(128); fec2ed2187 builtin/gc.c 637) die(FAILED_RUN, repack.argv[0]); fec2ed2187 builtin/gc.c 647) die(FAILED_RUN, prune.argv[0]); fec2ed2187 builtin/gc.c 654) die(FAILED_RUN, prune_worktrees.argv[0]); fec2ed2187 builtin/gc.c 658) die(FAILED_RUN, rerere.argv[0]);

builtin/pack-objects.c 2fa233a554 builtin/pack-objects.c 1512) hashcpy(base_oid.hash, base_sha1); 2fa233a554 builtin/pack-objects.c 1513) if (!in_same_island(&delta->idx.oid, &base_oid)) 2fa233a554 builtin/pack-objects.c 1514) return 0;

commit-graph.c 20fd6d5799   79) return 0;

diff.c b78ea5fc35 4117) add_external_diff_name(o->repo, &argv, other, two);

refs.c 4a6067cda5 1405) return 0;

revision.c 2abf350385 1526) if (ce_path_match(istate, ce, &revs->prune_data, NULL)) { 2abf350385 1532) while ((i+1 < istate->cache_nr) && 2abf350385 1533)        ce_same_name(ce, istate->cache[i+1]))

wt-status.c f3bd35fa0d  671) s->committable = 1; 73ba5d78b4 1953) if (s->state.rebase_in_progress || 73ba5d78b4 1954)     s->state.rebase_interactive_in_progress) 73ba5d78b4 1955) branch_name = s->state.onto; 73ba5d78b4 1956) else if (s->state.detached_from) 73ba5d78b4 1957) branch_name = s->state.detached_from;

Commits introducing uncovered code: Derrick Stolee      20fd6d579: commit-graph: not compatible with grafts Jeff King      2fa233a55: pack-objects: handle island check for "external" delta base Jonathan Nieder      302997027: gc: do not return error for prior errors in daemonized mode Jonathan Nieder      fec2ed218: gc: exit with status 128 on failure Nguyễn Thái Ngọc Duy      2abf35038: revision.c: remove implicit dependency on the_index Nguyễn Thái Ngọc Duy      a470beea3: blame.c: rename "repo" argument to "r" Nguyễn Thái Ngọc Duy      b78ea5fc3: diff.c: reduce implicit dependency on the_index Stefan Beller      4a6067cda: refs.c: migrate internal ref iteration to pass thru repository argument Stephen P. Smith      73ba5d78b: roll wt_status_state into wt_status and populate in the collect phase Stephen P. Smith      f3bd35fa0: wt-status.c: set the committable flag in the collect phase

Uncovered code new in master, compared to maint. Build logs at [3] ------------------------------------------------------------------

builtin/checkout.c fa655d8411 builtin/checkout.c  537) return 0; fa655d8411 builtin/checkout.c  951) return error(_("index file corrupt"));

builtin/commit.c 859fdc0c3c builtin/commit.c 1657) write_commit_graph_reachable(get_object_directory(), 0);

builtin/difftool.c 4a7e27e957 441) if (oideq(&loid, &roid))

builtin/fsck.c 454ea2e4d7 builtin/fsck.c 743) for (p = get_all_packs(the_repository); p; 66ec0390e7 builtin/fsck.c 862) midx_argv[2] = "--object-dir"; 66ec0390e7 builtin/fsck.c 863) midx_argv[3] = alt->path; 66ec0390e7 builtin/fsck.c 864) if (run_command(&midx_verify)) 66ec0390e7 builtin/fsck.c 865) errors_found |= ERROR_COMMIT_GRAPH;

builtin/log.c 2e6fd71a52 builtin/log.c 1461) die(_("failed to infer range-diff ranges")); ee6cbf712e builtin/log.c 1807) die(_("--interdiff requires --cover-letter or single patch")); 8631bf1cdd builtin/log.c 1817) else if (!rdiff_prev) 8631bf1cdd builtin/log.c 1818) die(_("--creation-factor requires --range-diff")); 40ce41604d builtin/log.c 1822) die(_("--range-diff requires --cover-letter or single patch"));

builtin/multi-pack-index.c 6d68e6a461 35) usage_with_options(builtin_multi_pack_index_usage, 6d68e6a461 39) die(_("too many arguments")); 6d68e6a461 48) die(_("unrecognized verb: %s"), argv[0]);

builtin/pack-objects.c 6a22d52126 builtin/pack-objects.c 1079) if (fill_midx_entry(oid, &e, m)) { 6a22d52126 builtin/pack-objects.c 1080) struct packed_git *p = e.p; 6a22d52126 builtin/pack-objects.c 1083) if (p == *found_pack) 6a22d52126 builtin/pack-objects.c 1084) offset = *found_offset; 6a22d52126 builtin/pack-objects.c 1086) offset = find_pack_entry_one(oid->hash, p); 6a22d52126 builtin/pack-objects.c 1088) if (offset) { 6a22d52126 builtin/pack-objects.c 1089) if (!*found_pack) { 6a22d52126 builtin/pack-objects.c 1090) if (!is_pack_valid(p)) 6a22d52126 builtin/pack-objects.c 1091) continue; 6a22d52126 builtin/pack-objects.c 1092) *found_offset = offset; 6a22d52126 builtin/pack-objects.c 1093) *found_pack = p; 6a22d52126 builtin/pack-objects.c 1095) want = want_found_object(exclude, p); 6a22d52126 builtin/pack-objects.c 1096) if (want != -1) 6a22d52126 builtin/pack-objects.c 1097) return want; 28b8a73080 builtin/pack-objects.c 2778) depth++; 108f530385 builtin/pack-objects.c 2782) oe_set_tree_depth(&to_pack, ent, depth); 454ea2e4d7 builtin/pack-objects.c 2966) p = get_all_packs(the_repository);

builtin/pack-redundant.c 454ea2e4d7 builtin/pack-redundant.c 580) struct packed_git *p = get_all_packs(the_repository); 454ea2e4d7 builtin/pack-redundant.c 595) struct packed_git *p = get_all_packs(the_repository);

builtin/remote.c 5025425dff builtin/remote.c  864) return error(_("No such remote: '%s'"), name);

builtin/repack.c 16d75fa48d  48) use_delta_islands = git_config_bool(var, value); 16d75fa48d  49) return 0;

builtin/rerere.c 2373b65059 builtin/rerere.c  78) warning(_("'git rerere forget' without paths is deprecated")); 2373b65059 builtin/rerere.c 110) die(_("unable to generate diff for '%s'"), rerere_path(id, NULL));

builtin/show-branch.c
9001dc2a74 builtin/show-branch.c 430) if (get_oid(refname + ofs, &tmp) 
|| !oideq(&tmp, oid))

builtin/submodule--helper.c ee69b2a90c 1462) die(_("Invalid update mode '%s' for submodule path '%s'"), ee69b2a90c 1466) die(_("Invalid update mode '%s' configured for submodule path '%s'"), ee69b2a90c 1469) trace_printf("loaded thing"); ee69b2a90c 1470) out->type = sub->update_strategy.type; ee69b2a90c 1471) out->command = sub->update_strategy.command; ee69b2a90c 1491) die("submodule--helper update-module-clone expects <just-cloned> <path> [<update>]"); 74d4731da1 2033) BUG("submodule--helper connect-gitdir-workingtree <name> <path>"); 74d4731da1 2039) BUG("We could get the submodule handle before?"); 74d4731da1 2042) die(_("could not get a repository handle for submodule '%s'"), path);

builtin/unpack-objects.c 4a7e27e957 builtin/unpack-objects.c 306) if (oideq(&info->base_oid, &obj_list[nr].oid) ||

builtin/update-index.c 4a7e27e957 builtin/update-index.c  672) if (oideq(&ce_2->oid, &ce_3->oid) &&

builtin/worktree.c e5353bef55  60) error_errno(_("failed to delete '%s'"), sb.buf); e19831c94f 251)     die(_("unable to re-add worktree '%s'"), path); 68a6b3a1bd 793) die(_("cannot move a locked working tree, lock reason: %s\nuse 'move -f -f' to override or unlock first"), f4143101cb 906) die(_("cannot remove a locked working tree, lock reason: %s\nuse 'remove -f -f' to override or unlock first"),

cache-tree.c 4592e6080f 762) BUG("%s with flags 0x%x should not be in cache-tree", 4592e6080f 770) BUG("bad subtree '%.*s'", entlen, name); 4592e6080f 785) BUG("cache-tree for path %.*s does not match. "

commit-graph.c 6cc017431c  247) return 0;

commit-reach.c 5227c38566  63) BUG("bad generation skip %8x > %8x at %s", 5227c38566 134) return ret; 5227c38566 282) return 1; 5227c38566 314) return ret; 5227c38566 317) return ret; 5227c38566 323) return ret; 1d614d41e5 395) return 0; 1d614d41e5 401) return 0; 1d614d41e5 405) return 0; 920f93ca1c 459) return CONTAINS_NO; 920f93ca1c 484) cutoff = c->generation; b67f6b26e3 559) continue; b67f6b26e3 569) from->objects[i].item->flags |= assign_flag; b67f6b26e3 570) continue; b67f6b26e3 576) result = 0; b67f6b26e3 577) goto cleanup;

delta-islands.c c8d521faf7  53) memcpy(b, old, size); c8d521faf7  73) return 1; c8d521faf7 118) return 0; c8d521faf7 130) return 0; c8d521faf7 187) b->refcount--; c8d521faf7 188) b = kh_value(island_marks, pos) = island_bitmap_new(b); c8d521faf7 202) continue; c8d521faf7 212) obj = ((struct tag *)obj)->tagged; c8d521faf7 213) if (obj) { c8d521faf7 214) parse_object(the_repository, &obj->oid); c8d521faf7 215) marks = create_or_get_island_marks(obj); c8d521faf7 216) island_bitmap_set(marks, island_counter); c8d521faf7 248) return; c8d521faf7 268) progress_state = start_progress(_("Propagating island marks"), nr); c8d521faf7 286) die(_("bad tree object %s"), oid_to_hex(&ent->idx.oid)); c8d521faf7 293) continue; c8d521faf7 297) continue; c8d521faf7 321) return config_error_nonbool(k); c8d521faf7 330) die(_("failed to load island regex for '%s': %s"), k, re.buf); c8d521faf7 386) warning(_("island regex from config has " c8d521faf7 397) strbuf_addch(&island_name, '-'); c8d521faf7 433) continue; c8d521faf7 436) list[dst] = list[src];

diff-lib.c 9001dc2a74 diff-lib.c 345)     (!oideq(oid, &old_entry->oid) || !oideq(&old_entry->oid, &new_entry->oid))) {

dir.c c46c406ae1 2275) trace_performance_leave("read directory %.*s", len, path);

entry.c b878579ae7 402) static void mark_colliding_entries(const struct checkout *state, b878579ae7 405) int i, trust_ino = check_stat; b878579ae7 411) ce->ce_flags |= CE_MATCHED; b878579ae7 413) for (i = 0; i < state->istate->cache_nr; i++) { b878579ae7 414) struct cache_entry *dup = state->istate->cache[i]; b878579ae7 416) if (dup == ce) b878579ae7 417) break; b878579ae7 419) if (dup->ce_flags & (CE_MATCHED | CE_VALID | CE_SKIP_WORKTREE)) b878579ae7 420) continue; b878579ae7 422) if ((trust_ino && dup->ce_stat_data.sd_ino == st->st_ino) || b878579ae7 423)     (!trust_ino && !fspathcmp(ce->name, dup->name))) { b878579ae7 424) dup->ce_flags |= CE_MATCHED; b878579ae7 425) break; b878579ae7 428) } b878579ae7 488) mark_colliding_entries(state, ce, &st);

fsck.c fb8952077d  214) die_errno("Could not read '%s'", path);

ll-merge.c d64324cb60 379) marker_size = DEFAULT_CONFLICT_MARKER_SIZE;

log-tree.c 4a7e27e957 477) if (oideq(&parent->item->object.oid, oid))

mailinfo.c 3aa4d81f88  992) len--; 3aa4d81f88  998) handle_filter(mi, prev); 3aa4d81f88  999) strbuf_reset(prev); 3aa4d81f88 1090) handle_filter(mi, &prev);

midx.c 4d80560c54   58) error_errno(_("failed to read %s"), midx_name); 4d80560c54   59) goto cleanup_fail; 4d80560c54   65) error(_("multi-pack-index file %s is too small"), midx_name); 4d80560c54   66) goto cleanup_fail; 0d5b3a5ef7  146) die(_("multi-pack-index missing required OID lookup chunk")); 662148c435  148) die(_("multi-pack-index missing required object offsets chunk")); 4d80560c54  173) munmap(midx_map, midx_size); 4d80560c54  175) close(fd); a40498a126  188) close_pack(m->packs[i]); a40498a126  189) free(m->packs); 3715a6335c  262) return 0; 3715a6335c  278) return 0; c39b02ae0a  283) nth_midxed_object_oid(&oid, m, pos); c39b02ae0a  284) for (i = 0; i < p->num_bad_objects; i++) c39b02ae0a  285) if (!hashcmp(oid.hash, c39b02ae0a  286)      p->bad_object_sha1 + the_hash_algo->rawsz * i)) c39b02ae0a  287) return 0; c4d25228eb  341) return 1; 396f257018  398) warning(_("failed to add packfile '%s'"), 396f257018  400) return; fe1ed56f5e  404) warning(_("failed to open pack-index '%s'"), fe1ed56f5e  406) close_pack(packs->list[packs->nr]); fe1ed56f5e  407) FREE_AND_NULL(packs->list[packs->nr]); fe1ed56f5e  408) return; a40498a126  481) return 1; fe1ed56f5e  498) die(_("failed to locate object %d in packfile"), cur_object); 32f3c541e3  611) BUG("incorrect pack-file order: %s before %s", 0d5b3a5ef7  673) BUG("OIDs not in order: %s >= %s", 662148c435  700) BUG("object %s requires a large offset (%"PRIx64") but the MIDX is not writing large offsets!", fc59e74844  754) die_errno(_("unable to create leading directories of %s"), a40498a126  784) goto cleanup; 32f3c541e3  843) BUG("incorrect chunk offsets: %"PRIu64" before %"PRIu64, 32f3c541e3  848) BUG("chunk offset %"PRIu64" is not properly aligned", 32f3c541e3  860) BUG("incorrect chunk offset (%"PRIu64" != %"PRIu64") for chunk id %"PRIx32, 32f3c541e3  887) BUG("trying to write unknown chunk id %"PRIx32, 32f3c541e3  893) BUG("incorrect final offset %"PRIu64" != %"PRIu64, 525e18c04b  923) die(_("failed to clear multi-pack-index at %s"), midx); 56ee7ff156  949) return 0; cc6af73c02  990) midx_report(_("failed to load pack-index for packfile %s"), cc6af73c02  991)     e.p->pack_name); cc6af73c02  992) break;

pack-bitmap.c 30cdc33fba 1130) return 0;

pack-objects.c 108f530385 169) REALLOC_ARRAY(pdata->tree_depth, pdata->nr_alloc); fe0ac2fb7f 172) REALLOC_ARRAY(pdata->layer, pdata->nr_alloc); 108f530385 189) pdata->tree_depth[pdata->nr_objects - 1] = 0; fe0ac2fb7f 192) pdata->layer[pdata->nr_objects - 1] = 0;

packfile.c fe1ed56f5e  205) if (open_pack_index(p)) fe1ed56f5e  206) return 0; fe1ed56f5e  207) level1_ofs = p->index_data; 17c35c8969  479) break; 17c35c8969  483) return error("packfile %s index unavailable", p->pack_name); 17c35c8969  537) return 0;

refs/packed-backend.c 9001dc2a74 1163) } else if (!oideq(&update->old_oid, iter->oid)) {

refs/ref-cache.c 9001dc2a74 275) if (!oideq(&ref1->u.value.oid, &ref2->u.value.oid))

rerere.c 2373b65059  216) die(_("corrupt MERGE_RR")); 2373b65059  225) die(_("corrupt MERGE_RR")); 2373b65059  228) die(_("corrupt MERGE_RR")); 2373b65059  263) die(_("unable to write rerere record")); 2373b65059  268) die(_("unable to write rerere record")); 4af32207bc  375) break; 4af32207bc  379) strbuf_addbuf(&two, &conflict); c0f16f8e14  383) break; c0f16f8e14  387) break; c0f16f8e14  391) break; 2373b65059  476) return error_errno(_("could not open '%s'"), path); 2373b65059  481) error_errno(_("could not write '%s'"), output); 2373b65059  491) error(_("there were errors while writing '%s' (%s)"), 2373b65059  494) io.io.wrerror = error_errno(_("failed to flush '%s'"), path); 2373b65059  560) return error(_("index file corrupt")); 2373b65059  593) return error(_("index file corrupt")); 2373b65059  676) warning_errno(_("failed utime() on '%s'"), 2373b65059  682) return error_errno(_("could not open '%s'"), path); 2373b65059  684) error_errno(_("could not write '%s'"), path); 2373b65059  686) return error_errno(_("writing '%s' failed"), path); 2373b65059  712) die(_("unable to write new index file")); 2373b65059  794) die_errno(_("cannot unlink stray '%s'"), path); 2373b65059 1043) error(_("failed to update conflicted state in '%s'"), path); 2373b65059 1061) error(_("no remembered resolution for '%s'"), path); 2373b65059 1063) error_errno(_("cannot unlink '%s'"), filename); 2373b65059 1097) return error(_("index file corrupt")); 2373b65059 1185) die_errno(_("unable to open rr-cache directory"));

revision.c 4a7e27e957 3241)     oideq(&p->item->object.oid, &commit->object.oid))

sha1-file.c 67947c34ae sha1-file.c 2216) if (!hasheq(expected_sha1, real_sha1)) {

sha1-name.c 8aac67a174 sha1-name.c  154) static void unique_in_midx(struct multi_pack_index *m, 8aac67a174 sha1-name.c  157) uint32_t num, i, first = 0; 8aac67a174 sha1-name.c  158) const struct object_id *current = NULL; 8aac67a174 sha1-name.c  159) num = m->num_objects; 8aac67a174 sha1-name.c  161) if (!num) 8aac67a174 sha1-name.c  162) return; 8aac67a174 sha1-name.c  164) bsearch_midx(&ds->bin_pfx, m, &first); 8aac67a174 sha1-name.c  171) for (i = first; i < num && !ds->ambiguous; i++) { 8aac67a174 sha1-name.c  173) current = nth_midxed_object_oid(&oid, m, i); 8aac67a174 sha1-name.c  174) if (!match_sha(ds->len, ds->bin_pfx.hash, current->hash)) 8aac67a174 sha1-name.c  175) break; 8aac67a174 sha1-name.c  176) update_candidates(ds, current); 8aac67a174 sha1-name.c  212)      m = m->next) 8aac67a174 sha1-name.c  213) unique_in_midx(m, ds); 8aac67a174 sha1-name.c  573) return;

trace.c c46c406ae1 189) now = getnanotime(); c46c406ae1 190) perf_start_times[perf_indent] = now; c46c406ae1 191) if (perf_indent + 1 < ARRAY_SIZE(perf_start_times)) c46c406ae1 192) perf_indent++; c46c406ae1 194) BUG("Too deep indentation"); c46c406ae1 195) return now; c46c406ae1 211) if (perf_indent >= strlen(space)) c46c406ae1 212) BUG("Too deep indentation"); c46c406ae1 214) strbuf_addf(&buf, ":%.*s ", perf_indent, space); c46c406ae1 317) void trace_performance_leave_fl(const char *file, int line, c46c406ae1 323) if (perf_indent) c46c406ae1 324) perf_indent--; c46c406ae1 326) if (!format) /* Allow callers to leave without tracing anything */ c46c406ae1 327) return; c46c406ae1 329) since = perf_start_times[perf_indent]; c46c406ae1 330) va_start(ap, format); c46c406ae1 331) trace_performance_vprintf_fl(file, line, nanos - since, format, ap); c46c406ae1 332) va_end(ap); c46c406ae1 477) trace_performance_leave("git command:%s", command_line.buf); c46c406ae1 485) if (!command_line.len) c46c406ae1 490) trace_performance_enter();

unpack-trees.c b878579ae7  360) string_list_append(&list, ce->name); b878579ae7  361) ce->ce_flags &= ~CE_MATCHED; b878579ae7  368) warning(_("the following paths have collided (e.g. case-sensitive paths\n" b878579ae7  372) for (i = 0; i < list.nr; i++) b878579ae7  373) fprintf(stderr, "  '%s'\n", list.items[i].string); b4da37380b  715) BUG("This is a directory and should not exist in index"); b4da37380b  719) BUG("pos must point at the first entry in this directory"); b4da37380b  740) BUG("We need cache-tree to do this optimization"); f1e11c6510  777) free(tree_ce); b4da37380b  778) return rc; b4da37380b  785) printf("Unpacked %d entries from %s to %s using cache-tree\n", b4da37380b  787)        o->src_index->cache[pos]->name, b4da37380b  788)        o->src_index->cache[pos + nr_entries - 1]->name); b4da37380b  811) BUG("Wrong condition to get here buddy");

Commits introducing uncovered code: Ben Peart      fa655d841: checkout: optimize "git checkout -b <new_branch>" Christian Couder      108f53038: pack-objects: move tree_depth into 'struct packing_data' Christian Couder      fe0ac2fb7: pack-objects: move 'layer' into 'struct packing_data' Derrick Stolee      0d5b3a5ef: midx: write object ids in a chunk Derrick Stolee      17c35c896: packfile: skip loading index if in multi-pack-index Derrick Stolee      1d614d41e: commit-reach: move ref_newer from remote.c Derrick Stolee      32f3c541e: multi-pack-index: write pack names in chunk Derrick Stolee      3715a6335: midx: read objects from multi-pack-index Derrick Stolee      396f25701: multi-pack-index: read packfile list Derrick Stolee      454ea2e4d: treewide: use get_all_packs Derrick Stolee      4d80560c5: multi-pack-index: load into memory Derrick Stolee      5227c3856: commit-reach: move walk methods from commit.c Derrick Stolee      525e18c04: midx: clear midx on repack Derrick Stolee      56ee7ff15: multi-pack-index: add 'verify' verb Derrick Stolee      662148c43: midx: write object offsets Derrick Stolee      66ec0390e: fsck: verify multi-pack-index Derrick Stolee      6a22d5212: pack-objects: consider packs in multi-pack-index Derrick Stolee      6cc017431: commit-reach: use can_all_from_reach Derrick Stolee      6d68e6a46: multi-pack-index: provide more helpful usage info Derrick Stolee      859fdc0c3: commit-graph: define GIT_TEST_COMMIT_GRAPH Derrick Stolee      8aac67a17: midx: use midx in abbreviation calculations Derrick Stolee      920f93ca1: commit-reach: move commit_contains from ref-filter Derrick Stolee      a40498a12: midx: use existing midx when writing new one Derrick Stolee      b67f6b26e: commit-reach: properly peel tags Derrick Stolee      c39b02ae0: midx: mark bad packed objects Derrick Stolee      c4d25228e: config: create core.multiPackIndex setting Derrick Stolee      cc6af73c0: multi-pack-index: verify object offsets Derrick Stolee      fc59e7484: midx: write header information to lockfile Derrick Stolee      fe1ed56f5: midx: sort and deduplicate objects from packfiles Duy Nguyen      b878579ae: clone: report duplicate entries on case-insensitive filesystems Eric Sunshine      2e6fd71a5: format-patch: extend --range-diff to accept revision range Eric Sunshine      40ce41604: format-patch: allow --range-diff to apply to a lone-patch Eric Sunshine      68a6b3a1b: worktree: teach 'move' to override lock when --force given twice Eric Sunshine      8631bf1cd: format-patch: add --creation-factor tweak for --range-diff Eric Sunshine      e19831c94: worktree: teach 'add' to respect --force for registered but missing path Eric Sunshine      e5353bef5: worktree: move delete_git_dir() earlier in file for upcoming new callers Eric Sunshine      ee6cbf712: format-patch: allow --interdiff to apply to a lone-patch Eric Sunshine      f4143101c: worktree: teach 'remove' to override lock when --force given twice Jeff King      16d75fa48: repack: add delta-islands support Jeff King      28b8a7308: pack-objects: add delta-islands support Jeff King      30cdc33fb: pack-bitmap: save "have" bitmap from walk Jeff King      4a7e27e95: convert "oidcmp() == 0" to oideq() Jeff King      67947c34a: convert "hashcmp() != 0" to "!hasheq()" Jeff King      9001dc2a7: convert "oidcmp() != 0" to "!oideq()" Jeff King      c8d521faf: Add delta-islands.{c,h} Nguyễn Thái Ngọc Duy      4592e6080: cache-tree: verify valid cache-tree in the test suite Nguyễn Thái Ngọc Duy      b4da37380: unpack-trees: optimize walking same trees with cache-tree Nguyễn Thái Ngọc Duy      c46c406ae: trace.h: support nested performance tracing Nguyễn Thái Ngọc Duy      f1e11c651: unpack-trees: reduce malloc in cache-tree walk René Scharfe      3aa4d81f8: mailinfo: support format=flowed René Scharfe      fb8952077: fsck: use strbuf_getline() to read skiplist file Shulhan      5025425df: builtin/remote: quote remote name on error to display empty name Stefan Beller      74d4731da: submodule--helper: replace connect-gitdir-workingtree by ensure-core-worktree Stefan Beller      ee69b2a90: submodule--helper: introduce new update-module-mode helper Thomas Gummerer      2373b6505: rerere: mark strings for translation Thomas Gummerer      4af32207b: rerere: teach rerere to handle nested conflicts Thomas Gummerer      c0f16f8e1: rerere: factor out handle_conflict function Torsten Bögershausen      d64324cb6: Make git_check_attr() a void function

[1] https://dev.azure.com/git/git/_build/results?buildId=172&view=logs
     Build running coverage-test for 'jch' and coverage-diff.sh against 
'next'
[2] https://git.visualstudio.com/git/_build/results?buildId=166&view=logs
     Build running coverage-test for 'next' and coverage-diff.sh against 
'master'
[3] https://dev.azure.com/git/git/_build/results?buildId=171&view=logs
     Build running coverage-test for 'master' and coverage-diff.sh 
against 'maint'
Next: Johannes Schindelin
Message 1 of 3 in “Git Test Coverage Report (Friday, Oct 12)”
  1. Derrick StoleeOct 12, 2018
  2. Johannes SchindelinOct 15, 2018
  3. Derrick StoleeOct 15, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.