{"thread":{"id":"49547","subject":"Git Test Coverage Report (Friday, Oct 12)","startedAt":"2018-10-12T12:59:53Z","lastAt":"2018-10-15T13:23:20Z","messageCount":3,"participants":["Derrick Stolee","Johannes Schindelin"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"360301","messageId":"e30a9c05-87d8-1f2b-182c-6d6a5fefe43c@gmail.com","threadId":"49547","inReplyTo":null,"subject":"Git Test Coverage Report (Friday, Oct 12)","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2018-10-12T12:59:43Z","receivedAt":"2018-10-12T12:59:53Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"\nIn an effort to ensure new code is reasonably covered by the test suite, \nwe now have contrib/coverage-diff.sh to combine the gcov output from \n'make coverage-test ; make coverage-report' with the output from 'git \ndiff A B' to discover _new_ lines of code that are not covered.\n\nThis report takes the output of these results after running on four \nbranches:\n\n         pu: 13cafb433ca0dd31b3ea229a79cc8507aa89ee19 (tests are broken, \nso coverage not reported)\n\n        jch: fda196ac82002ede984896861cf28a354044d1a0\n\n       next: 76f2f5c1e34c4dbef1029e2984c2892894c444ce\n\n     master: 04861070400d3ca9d487bd0d736ca818b9ffe371\n\n      maint: cae598d9980661a978e2df4fb338518f7bf09572\n\nI ran the test suite on each of these branches on an Ubuntu Linux VM, \nand I'm missing some dependencies (like apache, svn, and perforce) so \nnot all tests are run.\n\nI submit this output without comment. I'm taking a look especially at my \nown lines to see where coverage can be improved.\n\nThanks,\n\n-Stolee\n\nUncovered code new in jch, compared to next. Build logs at [1]\n--------------------------------------------------------------\n\nbuiltin/archive.c\ne001fd3a50 builtin/archive.c  78) die(_(\"git archive: expected ACK/NAK, \ngot a flush packet\"));\ne001fd3a50 builtin/archive.c  80) if (starts_with(reader.line, \"NACK \"))\ne001fd3a50 builtin/archive.c  81) die(_(\"git archive: NACK %s\"), \nreader.line + 5);\ne001fd3a50 builtin/archive.c  82) if (starts_with(reader.line, \"ERR \"))\ne001fd3a50 builtin/archive.c  83) die(_(\"remote error: %s\"), reader.line \n+ 4);\ne001fd3a50 builtin/archive.c  84) die(_(\"git archive: protocol error\"));\ne001fd3a50 builtin/archive.c  89) die(_(\"git archive: expected a flush\"));\nfb19d32f05 builtin/archive.c  99) if (version != discover_version(&reader))\nfb19d32f05 builtin/archive.c 100) die(_(\"git archive: received different \nprotocol versions in subsequent requests\"));\n\nbuiltin/fetch.c\n7bbc53a589 builtin/fetch.c  385) continue; /* can this happen??? */\n\nbuiltin/rebase--interactive.c\n53bbcfbde7 builtin/rebase--interactive2.c  24) return error(_(\"no HEAD?\"));\n53bbcfbde7 builtin/rebase--interactive2.c  51) return \nerror_errno(_(\"could not create temporary %s\"), path_state_dir());\n53bbcfbde7 builtin/rebase--interactive2.c  57) return \nerror_errno(_(\"could not mark as interactive\"));\n53bbcfbde7 builtin/rebase--interactive2.c  77) return -1;\n53bbcfbde7 builtin/rebase--interactive2.c  81) return -1;\n53bbcfbde7 builtin/rebase--interactive2.c  87) free(revisions);\n53bbcfbde7 builtin/rebase--interactive2.c  88) free(shortrevisions);\n53bbcfbde7 builtin/rebase--interactive2.c  90) return -1;\n53bbcfbde7 builtin/rebase--interactive2.c  98) free(revisions);\n53bbcfbde7 builtin/rebase--interactive2.c  99) free(shortrevisions);\n53bbcfbde7 builtin/rebase--interactive2.c 101) return \nerror_errno(_(\"could not open %s\"), rebase_path_todo());\n53bbcfbde7 builtin/rebase--interactive2.c 106) \nargv_array_push(&make_script_args, restrict_revision);\n53bbcfbde7 builtin/rebase--interactive2.c 114) error(_(\"could not \ngenerate todo list\"));\n53bbcfbde7 builtin/rebase--interactive2.c 206) \nusage_with_options(builtin_rebase_interactive_usage, options);\n53bbcfbde7 builtin/rebase--interactive2.c 220) \nwarning(_(\"--[no-]rebase-cousins has no effect without \"\n0af129b2ed builtin/rebase--interactive2.c 226) die(_(\"a base commit must \nbe provided with --upstream or --onto\"));\n34b47315d9 builtin/rebase--interactive.c  261) ret = rearrange_squash();\n34b47315d9 builtin/rebase--interactive.c  262) break;\n34b47315d9 builtin/rebase--interactive.c  264) ret = \nsequencer_add_exec_commands(cmd);\n34b47315d9 builtin/rebase--interactive.c  265) break;\n0af129b2ed builtin/rebase--interactive2.c 267) BUG(\"invalid command \n'%d'\", command);\n\nbuiltin/rebase.c\n55071ea248   61) strbuf_trim(&out);\n55071ea248   62) ret = !strcmp(\"true\", out.buf);\n55071ea248   63) strbuf_release(&out);\n002ee2fe68  115) die(_(\"%s requires an interactive rebase\"), option);\nf95736288a  148) return error_errno(_(\"could not read '%s'\"), path);\nf95736288a  162) return -1;\nf95736288a  167) return error(_(\"could not get 'onto': '%s'\"), buf.buf);\nf95736288a  178) return -1;\nf95736288a  179) } else if (read_one(state_dir_path(\"head\", opts), &buf))\nf95736288a  180) return -1;\nf95736288a  182) return error(_(\"invalid orig-head: '%s'\"), buf.buf);\nf95736288a  186) return -1;\nf95736288a  188) opts->flags &= ~REBASE_NO_QUIET;\n73d51ed0a5  196) opts->signoff = 1;\n73d51ed0a5  197) opts->flags |= REBASE_FORCE;\nead98c111b  204) return -1;\n12026a412c  219) return -1;\nba1905a5fe  227) return -1;\nba1905a5fe  235) return -1;\n6defce2b02  255) return error(_(\"Could not read '%s'\"), path);\n6defce2b02  271) res = error(_(\"Cannot store %s\"), autostash.buf);\n6defce2b02  275) return res;\nbc24382c2b  373) argv_array_pushf(&child.args,\nbc24382c2b  375) oid_to_hex(&opts->restrict_revision->object.oid));\nac7f467fef  488) BUG(\"Unhandled rebase type %d\", opts->type);\nac7f467fef  507) struct strbuf dir = STRBUF_INIT;\n6defce2b02  509) apply_autostash(opts);\nac7f467fef  510) strbuf_addstr(&dir, opts->state_dir);\nac7f467fef  511) remove_dir_recursively(&dir, 0);\nac7f467fef  512) strbuf_release(&dir);\nac7f467fef  513) die(\"Nothing to do\");\nd4c569f8f4  540) BUG(\"Not a fully qualified branch: '%s'\", \nswitch_to_branch);\nac7f467fef  543) return -1;\nac7f467fef  547) rollback_lock_file(&lock);\nac7f467fef  548) return error(_(\"could not determine HEAD revision\"));\nac7f467fef  565) rollback_lock_file(&lock);\nac7f467fef  566) return error(_(\"could not read index\"));\nac7f467fef  570) error(_(\"failed to find tree of %s\"), oid_to_hex(oid));\nac7f467fef  571) rollback_lock_file(&lock);\nac7f467fef  572) free((void *)desc.buffer);\nac7f467fef  573) return -1;\nac7f467fef  586) ret = error(_(\"could not write index\"));\nac7f467fef  590) return ret;\nac7f467fef  606) } else if (old_orig)\nac7f467fef  607) delete_ref(NULL, \"ORIG_HEAD\", old_orig, 0);\nbff014dac7  635) opts->flags &= !REBASE_DIFFSTAT;\n9a48a615b4  669) return 1;\n9a48a615b4  685) return 0;\n55071ea248  893) const char *path = mkpath(\"%s/git-legacy-rebase\",\n55071ea248  896) if (sane_execvp(path, (char **)argv) < 0)\n55071ea248  897) die_errno(_(\"could not exec %s\"), path);\n55071ea248  899) BUG(\"sane_execvp() returned???\");\n0eabf4b95c  915) die(_(\"It looks like 'git am' is in progress. Cannot \nrebase.\"));\nf28d40d3a9  952) usage_with_options(builtin_rebase_usage,\nf95736288a  972) die(_(\"Cannot read HEAD\"));\nf95736288a  976) die(_(\"could not read index\"));\nf95736288a  990) exit(1);\n122420c295 1002) die(_(\"could not discard worktree changes\"));\n122420c295 1004) exit(1);\n5e5d96197c 1015) exit(1);\n5e5d96197c 1018) die(_(\"could not move back to %s\"),\n5a61494539 1028) die(_(\"could not remove '%s'\"), options.state_dir);\n51e9ea6da7 1042) BUG(\"action: %d\", action);\nc54dacb50e 1047) const char *last_slash = strrchr(options.state_dir, '/');\nc54dacb50e 1048) const char *state_dir_base =\nc54dacb50e 1049) last_slash ? last_slash + 1 : options.state_dir;\nc54dacb50e 1050) const char *cmd_live_rebase =\nc54dacb50e 1052) strbuf_reset(&buf);\nc54dacb50e 1053) strbuf_addf(&buf, \"rm -fr \\\"%s\\\"\", options.state_dir);\nc54dacb50e 1054) die(_(\"It seems that there is already a %s directory, \nand\\n\"\n53f9e5be94 1078) strbuf_addstr(&options.git_am_opt, \" --ignore-date\");\n53f9e5be94 1079) options.flags |= REBASE_FORCE;\n7998dbe1ec 1091) strbuf_addf(&options.git_am_opt, \" -C%d\", opt_c);\n3c3588c7d3 1123) else if (strcmp(\"no-rebase-cousins\", rebase_merges))\n3c3588c7d3 1124) die(_(\"Unknown mode: %s\"), rebase_merges);\nba1905a5fe 1146) die(_(\"--strategy requires --merge or --interactive\"));\nba1905a5fe 1156) BUG(\"unhandled rebase type (%d)\", options.type);\ncda614e489 1164) strbuf_addstr(&options.git_format_patch_opt, \" \n--progress\");\nac7f467fef 1173) options.state_dir = apply_dir();\nac7f467fef 1174) break;\nac7f467fef 1251) die(_(\"invalid upstream '%s'\"), options.upstream_name);\n9dba809a69 1257) die(_(\"Could not create new root commit\"));\ne65123a71d 1307) die(_(\"fatal: no such branch/commit '%s'\"),\nac7f467fef 1315) die(_(\"No such ref: %s\"), \"HEAD\");\nac7f467fef 1327) die(_(\"Could not resolve HEAD to a revision\"));\ne65123a71d 1329) BUG(\"unexpected number of arguments left to parse\");\ne0333e5c63 1340) die(_(\"could not read index\"));\n6defce2b02 1367) die(_(\"Cannot autostash\"));\n6defce2b02 1370) die(_(\"Unexpected stash response: '%s'\"),\n6defce2b02 1376) die(_(\"Could not create directory for '%s'\"),\n6defce2b02 1382) die(_(\"could not reset --hard\"));\ne65123a71d 1426) ret = !!error(_(\"could not parse '%s'\"),\ne65123a71d 1428) goto cleanup;\ne65123a71d 1437) ret = !!error(_(\"could not switch to \"\n1ed9c14ff2 1447)  resolve_ref_unsafe(\"HEAD\", 0, NULL, &flag))\n1ed9c14ff2 1448) puts(_(\"HEAD is up to date.\"));\n9a48a615b4 1457)  resolve_ref_unsafe(\"HEAD\", 0, NULL, &flag))\n9a48a615b4 1458) puts(_(\"HEAD is up to date, rebase forced.\"));\n\nbuiltin/rev-list.c\n7c0fe330d5 builtin/rev-list.c 227) die(\"unexpected missing %s object '%s'\",\n7c0fe330d5 builtin/rev-list.c 228)     type_name(obj->type), \noid_to_hex(&obj->oid));\n250edfa8c8 builtin/rev-list.c 434) bisect_flags |= BISECT_FIND_ALL;\n\nbuiltin/stash.c\n93871263d1 builtin/stash--helper.c  130) free_stash_info(info);\n93871263d1 builtin/stash--helper.c  131) error(_(\"'%s' is not a \nstash-like commit\"), revision);\n93871263d1 builtin/stash--helper.c  132) exit(128);\n93871263d1 builtin/stash--helper.c  165) free_stash_info(info);\n93871263d1 builtin/stash--helper.c  166) fprintf_ln(stderr, _(\"No stash \nentries found.\"));\n93871263d1 builtin/stash--helper.c  167) return -1;\n93871263d1 builtin/stash--helper.c  202) free_stash_info(info);\n31f109a361 builtin/stash--helper.c  229) return error(_(\"git stash clear \nwith parameters is unimplemented\"));\n93871263d1 builtin/stash--helper.c  244) return -1;\n93871263d1 builtin/stash--helper.c  252) return -1;\n93871263d1 builtin/stash--helper.c  265) return -1;\n93871263d1 builtin/stash--helper.c  268) return error(_(\"unable to write \nnew index file\"));\n93871263d1 builtin/stash--helper.c  374) remove_path(stash_index_path.buf);\n93871263d1 builtin/stash--helper.c  375) return -1;\n93871263d1 builtin/stash--helper.c  402) return -1;\n93871263d1 builtin/stash--helper.c  405) return error(_(\"Cannot apply a \nstash in the middle of a merge\"));\n93871263d1 builtin/stash--helper.c  415) strbuf_release(&out);\n93871263d1 builtin/stash--helper.c  416) return -1;\n93871263d1 builtin/stash--helper.c  422) return -1;\n93871263d1 builtin/stash--helper.c  427) return -1;\n93871263d1 builtin/stash--helper.c  434) return error(_(\"Could not \nrestore untracked files from stash\"));\n93871263d1 builtin/stash--helper.c  465) return -1;\n93871263d1 builtin/stash--helper.c  470) strbuf_release(&out);\n93871263d1 builtin/stash--helper.c  475) strbuf_release(&out);\n93871263d1 builtin/stash--helper.c  476) return -1;\n31f109a361 builtin/stash--helper.c  551) return error(_(\"%s: Could not \ndrop stash entry\"),\nb3513da4bd builtin/stash--helper.c  623) printf_ln(_(\"The stash entry is \nkept in case you need it again.\"));\n8ceb24b2c3 builtin/stash--helper.c  754) free_stash_info(&info);\n129f0b0a00 builtin/stash.c          755) \nusage_with_options(git_stash_show_usage, options);\n0ac06fb81f builtin/stash--helper.c  808) fprintf_ln(stderr, _(\"\\\"git \nstash store\\\" requires one <commit> argument\"));\n0ac06fb81f builtin/stash--helper.c  809) return -1;\nf6f191b3f2 builtin/stash--helper.c  884) return 1;\nf6f191b3f2 builtin/stash--helper.c  925) ret = -1;\nf6f191b3f2 builtin/stash--helper.c  926) goto done;\nf6f191b3f2 builtin/stash--helper.c  931) ret = -1;\nf6f191b3f2 builtin/stash--helper.c  932) goto done;\nf6f191b3f2 builtin/stash--helper.c  937) ret = -1;\nf6f191b3f2 builtin/stash--helper.c  938) goto done;\nf6f191b3f2 builtin/stash--helper.c  966) ret = -1;\nf6f191b3f2 builtin/stash--helper.c  967) goto done;\nf6f191b3f2 builtin/stash--helper.c  978) ret = -1;\nf6f191b3f2 builtin/stash--helper.c  979) goto done;\nf6f191b3f2 builtin/stash--helper.c  984) ret = -1;\nf6f191b3f2 builtin/stash--helper.c  985) goto done;\nf6f191b3f2 builtin/stash--helper.c  992) ret = -1;\nf6f191b3f2 builtin/stash--helper.c  993) goto done;\nf6f191b3f2 builtin/stash--helper.c 1018) ret = -1;\nf6f191b3f2 builtin/stash--helper.c 1019) goto done;\nf6f191b3f2 builtin/stash--helper.c 1031) ret = -1;\nf6f191b3f2 builtin/stash--helper.c 1032) goto done;\nf6f191b3f2 builtin/stash--helper.c 1037) ret = -1;\nf6f191b3f2 builtin/stash--helper.c 1038) goto done;\nf6f191b3f2 builtin/stash--helper.c 1049) ret = -1;\nf6f191b3f2 builtin/stash--helper.c 1050) goto done;\nf6f191b3f2 builtin/stash--helper.c 1055) ret = -1;\nf6f191b3f2 builtin/stash--helper.c 1056) goto done;\n8002b9e626 builtin/stash--helper.c 1089) fprintf_ln(stderr, _(\"You do \nnot have the initial commit yet\"));\n8002b9e626 builtin/stash--helper.c 1110) if (!quiet)\n8002b9e626 builtin/stash--helper.c 1111) fprintf_ln(stderr, _(\"Cannot \nsave the current index state\"));\nf6f191b3f2 builtin/stash--helper.c 1112) ret = -1;\nf6f191b3f2 builtin/stash--helper.c 1113) *stash_msg = NULL;\nf6f191b3f2 builtin/stash--helper.c 1114) goto done;\n8002b9e626 builtin/stash--helper.c 1119) if (!quiet)\n8002b9e626 builtin/stash--helper.c 1120) fprintf_ln(stderr, _(\"Cannot \nsave the untracked files\"));\nf6f191b3f2 builtin/stash--helper.c 1121) ret = -1;\nf6f191b3f2 builtin/stash--helper.c 1122) *stash_msg = NULL;\nf6f191b3f2 builtin/stash--helper.c 1123) goto done;\n8002b9e626 builtin/stash--helper.c 1131) if (!quiet)\n8002b9e626 builtin/stash--helper.c 1132) fprintf_ln(stderr, _(\"Cannot \nsave the current worktree state\"));\nf6f191b3f2 builtin/stash--helper.c 1133) goto done;\n8002b9e626 builtin/stash--helper.c 1139) if (!quiet)\n8002b9e626 builtin/stash--helper.c 1140) fprintf_ln(stderr, _(\"Cannot \nsave the current worktree state\"));\nf6f191b3f2 builtin/stash--helper.c 1141) ret = -1;\nf6f191b3f2 builtin/stash--helper.c 1142) *stash_msg = NULL;\nf6f191b3f2 builtin/stash--helper.c 1143) goto done;\n8002b9e626 builtin/stash--helper.c 1166) if (!quiet)\n8002b9e626 builtin/stash--helper.c 1167) fprintf_ln(stderr, _(\"Cannot \nrecord working tree state\"));\nf6f191b3f2 builtin/stash--helper.c 1168) ret = -1;\nf6f191b3f2 builtin/stash--helper.c 1169) goto done;\n48c061fa44 builtin/stash--helper.c 1251) return -1;\n8002b9e626 builtin/stash--helper.c 1260) if (!quiet)\n8002b9e626 builtin/stash--helper.c 1261) fprintf_ln(stderr, _(\"Cannot \ninitialize stash\"));\n48c061fa44 builtin/stash--helper.c 1262) return -1;\n8002b9e626 builtin/stash--helper.c 1272) if (!quiet)\n8002b9e626 builtin/stash--helper.c 1273) fprintf_ln(stderr, _(\"Cannot \nsave the current status\"));\n48c061fa44 builtin/stash--helper.c 1274) ret = -1;\n48c061fa44 builtin/stash--helper.c 1275) goto done;\n48c061fa44 builtin/stash--helper.c 1292) ret = -1;\n48c061fa44 builtin/stash--helper.c 1311) ret = -1;\n48c061fa44 builtin/stash--helper.c 1312) goto done;\n48c061fa44 builtin/stash--helper.c 1321) ret = -1;\n48c061fa44 builtin/stash--helper.c 1322) goto done;\n48c061fa44 builtin/stash--helper.c 1330) ret = -1;\n48c061fa44 builtin/stash--helper.c 1339) ret = -1;\n48c061fa44 builtin/stash--helper.c 1350) ret = -1;\n48c061fa44 builtin/stash--helper.c 1359) ret = -1;\n48c061fa44 builtin/stash--helper.c 1360) goto done;\n48c061fa44 builtin/stash--helper.c 1368) ret = -1;\n48c061fa44 builtin/stash--helper.c 1394) ret = -1;\n129f0b0a00 builtin/stash.c         1524) \nusage_msg_opt(xstrfmt(_(\"unknown subcommand: %s\"), argv[0]),\n129f0b0a00 builtin/stash.c         1554) continue;\n\nbuiltin/upload-archive.c\ne001fd3a50 builtin/upload-archive.c 111) if (version == protocol_v0 || \nversion == protocol_v1)\ne001fd3a50 builtin/upload-archive.c 112) packet_write_fmt(1, \"NACK \nunable to spawn subprocess\\n\");\ne001fd3a50 builtin/upload-archive.c 113) else if (version == protocol_v2)\ne001fd3a50 builtin/upload-archive.c 114) error_clnt(\"unable to spawn \nsubprocess\\n\");\n\nconfig.c\nc780b9cfe8 2298) return val;\nc780b9cfe8 2301) if (is_bool)\nc780b9cfe8 2302) return val ? 0 : 1;\nc780b9cfe8 2304) return val;\n\nhelp.c\n26c7d06783 help.c         500) static int get_alias(const char *var, \nconst char *value, void *data)\n26c7d06783 help.c         502) struct string_list *list = data;\n26c7d06783 help.c         504) if (skip_prefix(var, \"alias.\", &var))\n26c7d06783 help.c         505) string_list_append(list, var)->util = \nxstrdup(value);\n26c7d06783 help.c         507) return 0;\n26c7d06783 help.c         530) printf(\"\\n%s\\n\", _(\"Command aliases\"));\n26c7d06783 help.c         531) ALLOC_ARRAY(aliases, alias_list.nr + 1);\n26c7d06783 help.c         532) for (i = 0; i < alias_list.nr; i++) {\n26c7d06783 help.c         533) aliases[i].name = alias_list.items[i].string;\n26c7d06783 help.c         534) aliases[i].help = alias_list.items[i].util;\n26c7d06783 help.c         535) aliases[i].category = 1;\n26c7d06783 help.c         537) aliases[alias_list.nr].name = NULL;\n26c7d06783 help.c         538) print_command_list(aliases, 1, longest);\n26c7d06783 help.c         539) free(aliases);\n\nhttp-backend.c\nfb19d32f05 646) argv[1] = \".\";\nfb19d32f05 647) argv[2] = NULL;\n\nlist-objects-filter-options.c\nbc5975d24f  55) if (errbuf) {\nbc5975d24f  56) strbuf_addstr(\nbc5975d24f  60) return 1;\ncc0b05a4cc  86) if (errbuf)\n\nlist-objects-filter.c\n696aa73905  47) BUG(\"unknown filter_situation: %d\", filter_situation);\nbc5975d24f 101) BUG(\"unknown filter_situation: %d\", filter_situation);\n696aa73905 152) BUG(\"unknown filter_situation: %d\", filter_situation);\n696aa73905 257) BUG(\"unknown filter_situation: %d\", filter_situation);\n696aa73905 438) BUG(\"invalid list-objects filter choice: %d\",\n\nlist-objects.c\nf447a499db 197) ctx->show_object(obj, base->buf, ctx->show_data);\n\nmidx.c\ne43d2dcce1  285) if (hasheq(oid.hash,\ne43d2dcce1  286)    p->bad_object_sha1 + the_hash_algo->rawsz * i))\n\noidset.c\n8b2f8cbcb1 29) kh_del_oid(&set->set, pos);\n8b2f8cbcb1 30) return 1;\n\npackfile.c\nfb571c5fa7  117) return error(\"index file %s is too small\", path);\nfb571c5fa7  119) return error(\"empty data\");\n\npreload-index.c\nae9af12287  73) struct progress_data *pd = p->progress;\nae9af12287  75) pthread_mutex_lock(&pd->mutex);\nae9af12287  76) pd->n += last_nr - nr;\nae9af12287  77) display_progress(pd->progress, pd->n);\nae9af12287  78) pthread_mutex_unlock(&pd->mutex);\nae9af12287  79) last_nr = nr;\nae9af12287  93) struct progress_data *pd = p->progress;\nae9af12287  95) pthread_mutex_lock(&pd->mutex);\nae9af12287  96) display_progress(pd->progress, pd->n + last_nr);\nae9af12287  97) pthread_mutex_unlock(&pd->mutex);\nae9af12287 128) pd.progress = start_delayed_progress(_(\"Refreshing \nindex\"), index->cache_nr);\nae9af12287 129) pthread_mutex_init(&pd.mutex, NULL);\nae9af12287 140) p->progress = &pd;\n\nprio-queue.c\n2d181390f3 94) return queue->array[queue->nr - 1].data;\n\nread-cache.c\nae9af12287 1490) progress = start_delayed_progress(_(\"Refresh index\"),\nae9af12287 1491)   istate->cache_nr);\nae9af12287 1533) display_progress(progress, i);\nae9af12287 1566) display_progress(progress, istate->cache_nr);\nae9af12287 1567) stop_progress(&progress);\n252d079cbd 1778) const unsigned char *cp = (const unsigned char *)name;\n252d079cbd 1782) strip_len = decode_varint(&cp);\n77ff1127a4 1783) if (previous_ce) {\n77ff1127a4 1784) previous_len = previous_ce->ce_namelen;\n77ff1127a4 1785) if (previous_len < strip_len)\n252d079cbd 1786) die(_(\"malformed name field in the index, near path '%s'\"),\n77ff1127a4 1787) previous_ce->name);\n77ff1127a4 1788) copy_len = previous_len - strip_len;\n77ff1127a4 1790) copy_len = 0;\n252d079cbd 1792) name = (const char *)cp;\n252d079cbd 1798) len += copy_len;\n252d079cbd 1819) if (copy_len)\n252d079cbd 1820) memcpy(ce->name, previous_ce->name, copy_len);\n252d079cbd 1821) memcpy(ce->name + copy_len, name, len + 1 - copy_len);\n252d079cbd 1822) *ent_size = (name - ((char *)ondisk)) + len + 1 - copy_len;\nabb4bb8384 1959) munmap((void *)p->mmap, p->mmap_size);\nabb4bb8384 1960) die(_(\"index file corrupt\"));\n77ff1127a4 2001) mem_pool_init(&istate->ce_mem_pool,\n77ff1127a4 2041) static void *load_cache_entries_thread(void *_data)\n77ff1127a4 2043) struct load_cache_entries_thread_data *p = _data;\n77ff1127a4 2047) for (i = p->ieot_start; i < p->ieot_start + \np->ieot_blocks; i++) {\n77ff1127a4 2048) p->consumed += load_cache_entry_block(p->istate, \np->ce_mem_pool,\n77ff1127a4 2049) p->offset, p->ieot->entries[i].nr, p->mmap, \np->ieot->entries[i].offset, NULL);\n77ff1127a4 2050) p->offset += p->ieot->entries[i].nr;\n77ff1127a4 2052) return NULL;\n77ff1127a4 2055) static unsigned long load_cache_entries_threaded(struct \nindex_state *istate, const char *mmap, size_t mmap_size,\n77ff1127a4 2060) unsigned long consumed = 0;\n77ff1127a4 2063) if (istate->name_hash_initialized)\n77ff1127a4 2064) BUG(\"the name hash isn't thread safe\");\n77ff1127a4 2066) mem_pool_init(&istate->ce_mem_pool, 0);\n77ff1127a4 2069) if (nr_threads > ieot->nr)\n77ff1127a4 2070) nr_threads = ieot->nr;\n77ff1127a4 2071) data = xcalloc(nr_threads, sizeof(*data));\n77ff1127a4 2073) offset = ieot_start = 0;\n77ff1127a4 2074) ieot_blocks = DIV_ROUND_UP(ieot->nr, nr_threads);\n77ff1127a4 2075) for (i = 0; i < nr_threads; i++) {\n77ff1127a4 2076) struct load_cache_entries_thread_data *p = &data[i];\n77ff1127a4 2079) if (ieot_start + ieot_blocks > ieot->nr)\n77ff1127a4 2080) ieot_blocks = ieot->nr - ieot_start;\n77ff1127a4 2082) p->istate = istate;\n77ff1127a4 2083) p->offset = offset;\n77ff1127a4 2084) p->mmap = mmap;\n77ff1127a4 2085) p->ieot = ieot;\n77ff1127a4 2086) p->ieot_start = ieot_start;\n77ff1127a4 2087) p->ieot_blocks = ieot_blocks;\n77ff1127a4 2090) nr = 0;\n77ff1127a4 2091) for (j = p->ieot_start; j < p->ieot_start + \np->ieot_blocks; j++)\n77ff1127a4 2092) nr += p->ieot->entries[j].nr;\n77ff1127a4 2093) if (istate->version == 4) {\n77ff1127a4 2094) mem_pool_init(&p->ce_mem_pool,\n77ff1127a4 2097) mem_pool_init(&p->ce_mem_pool,\n77ff1127a4 2101) err = pthread_create(&p->pthread, NULL, \nload_cache_entries_thread, p);\n77ff1127a4 2102) if (err)\n77ff1127a4 2103) die(_(\"unable to create load_cache_entries thread: \n%s\"), strerror(err));\n77ff1127a4 2106) for (j = 0; j < ieot_blocks; j++)\n77ff1127a4 2107) offset += ieot->entries[ieot_start + j].nr;\n77ff1127a4 2108) ieot_start += ieot_blocks;\n77ff1127a4 2111) for (i = 0; i < nr_threads; i++) {\n77ff1127a4 2112) struct load_cache_entries_thread_data *p = &data[i];\n77ff1127a4 2114) err = pthread_join(p->pthread, NULL);\n77ff1127a4 2115) if (err)\n77ff1127a4 2116) die(_(\"unable to join load_cache_entries thread: %s\"), \nstrerror(err));\n77ff1127a4 2117) mem_pool_combine(istate->ce_mem_pool, p->ce_mem_pool);\n77ff1127a4 2118) consumed += p->consumed;\n77ff1127a4 2121) free(data);\n77ff1127a4 2123) return consumed;\n77ff1127a4 2192) nr_threads = cpus;\nabb4bb8384 2196) extension_offset = read_eoie_extension(mmap, mmap_size);\nabb4bb8384 2197) if (extension_offset) {\nabb4bb8384 2200) p.src_offset = extension_offset;\nabb4bb8384 2201) err = pthread_create(&p.pthread, NULL, \nload_index_extensions, &p);\nabb4bb8384 2202) if (err)\nabb4bb8384 2203) die(_(\"unable to create load_index_extensions thread: \n%s\"), strerror(err));\nabb4bb8384 2205) nr_threads--;\n77ff1127a4 2214) ieot = read_ieot_extension(mmap, mmap_size, \nextension_offset);\n77ff1127a4 2217) src_offset += load_cache_entries_threaded(istate, mmap, \nmmap_size, src_offset, nr_threads, ieot);\n77ff1127a4 2218) free(ieot);\nabb4bb8384 2232) int ret = pthread_join(p.pthread, NULL);\nabb4bb8384 2233) if (ret)\nabb4bb8384 2234) die(_(\"unable to join load_index_extensions thread: \n%s\"), strerror(ret));\n3255089ada 2775) ieot_blocks = nr_threads;\n77ff1127a4 2776) if (ieot_blocks > istate->cache_nr)\n77ff1127a4 2777) ieot_blocks = istate->cache_nr;\n3255089ada 2785) ieot = xcalloc(1, sizeof(struct index_entry_offset_table)\n3255089ada 2786) + (ieot_blocks * sizeof(struct index_entry_offset)));\n77ff1127a4 2787) ieot_entries = DIV_ROUND_UP(entries, ieot_blocks);\n3255089ada 2794) free(ieot);\n3b1d9e045e 2795) return -1;\n3255089ada 2821) ieot->entries[ieot->nr].nr = nr;\n3255089ada 2822) ieot->entries[ieot->nr].offset = offset;\n3255089ada 2823) ieot->nr++;\n3255089ada 2829) if (previous_name)\n3255089ada 2830) previous_name->buf[0] = 0;\n3255089ada 2831) nr = 0;\n3255089ada 2832) offset = lseek(newfd, 0, SEEK_CUR);\n3255089ada 2833) if (offset < 0) {\n3255089ada 2834) free(ieot);\n3255089ada 2835) return -1;\n3255089ada 2837) offset += write_buffer_len;\n3255089ada 2847) ieot->entries[ieot->nr].nr = nr;\n3255089ada 2848) ieot->entries[ieot->nr].offset = offset;\n3255089ada 2849) ieot->nr++;\n3255089ada 2861) free(ieot);\n3b1d9e045e 2862) return -1;\n3255089ada 2876) struct strbuf sb = STRBUF_INIT;\n3255089ada 2878) write_ieot_extension(&sb, ieot);\n3255089ada 2879) err = write_index_ext_header(&c, &eoie_c, newfd, \nCACHE_EXT_INDEXENTRYOFFSETTABLE, sb.len) < 0\n3255089ada 2880) || ce_write(&c, newfd, sb.buf, sb.len) < 0;\n3255089ada 2881) strbuf_release(&sb);\n3255089ada 2882) free(ieot);\n3255089ada 2883) if (err)\n3255089ada 2884) return -1;\n3b1d9e045e 3372) static size_t read_eoie_extension(const char *mmap, \nsize_t mmap_size)\n3b1d9e045e 3390) if (mmap_size < sizeof(struct cache_header) + \nEOIE_SIZE_WITH_HEADER + the_hash_algo->rawsz)\n3b1d9e045e 3391) return 0;\n3b1d9e045e 3394) index = eoie = mmap + mmap_size - EOIE_SIZE_WITH_HEADER \n- the_hash_algo->rawsz;\n3b1d9e045e 3395) if (CACHE_EXT(index) != CACHE_EXT_ENDOFINDEXENTRIES)\n3b1d9e045e 3396) return 0;\n3b1d9e045e 3397) index += sizeof(uint32_t);\n3b1d9e045e 3400) extsize = get_be32(index);\n3b1d9e045e 3401) if (extsize != EOIE_SIZE)\n3b1d9e045e 3402) return 0;\n3b1d9e045e 3403) index += sizeof(uint32_t);\n3b1d9e045e 3409) offset = get_be32(index);\n3b1d9e045e 3410) if (mmap + offset < mmap + sizeof(struct cache_header))\n3b1d9e045e 3411) return 0;\n3b1d9e045e 3412) if (mmap + offset >= eoie)\n3b1d9e045e 3413) return 0;\n3b1d9e045e 3414) index += sizeof(uint32_t);\n3b1d9e045e 3425) src_offset = offset;\n3b1d9e045e 3426) the_hash_algo->init_fn(&c);\n3b1d9e045e 3427) while (src_offset < mmap_size - the_hash_algo->rawsz - \nEOIE_SIZE_WITH_HEADER) {\n3b1d9e045e 3435) memcpy(&extsize, mmap + src_offset + 4, 4);\n3b1d9e045e 3436) extsize = ntohl(extsize);\n3b1d9e045e 3439) if (src_offset + 8 + extsize < src_offset)\n3b1d9e045e 3440) return 0;\n3b1d9e045e 3442) the_hash_algo->update_fn(&c, mmap + src_offset, 8);\n3b1d9e045e 3444) src_offset += 8;\n3b1d9e045e 3445) src_offset += extsize;\n3b1d9e045e 3447) the_hash_algo->final_fn(hash, &c);\n3b1d9e045e 3448) if (!hasheq(hash, (const unsigned char *)index))\n3b1d9e045e 3449) return 0;\n3b1d9e045e 3452) if (src_offset != mmap_size - the_hash_algo->rawsz - \nEOIE_SIZE_WITH_HEADER)\n3b1d9e045e 3453) return 0;\n3b1d9e045e 3455) return offset;\n3255089ada 3475) static struct index_entry_offset_table \n*read_ieot_extension(const char *mmap, size_t mmap_size, size_t offset)\n3255089ada 3477)        const char *index = NULL;\n3255089ada 3483)        if (!offset)\n3255089ada 3484)        return NULL;\n3255089ada 3485)        while (offset <= mmap_size - \nthe_hash_algo->rawsz - 8) {\n3255089ada 3486)        extsize = get_be32(mmap + offset + 4);\n3255089ada 3487)        if (CACHE_EXT((mmap + offset)) == \nCACHE_EXT_INDEXENTRYOFFSETTABLE) {\n3255089ada 3488)        index = mmap + offset + 4 + 4;\n3255089ada 3489)        break;\n3255089ada 3491)        offset += 8;\n3255089ada 3492)        offset += extsize;\n3255089ada 3494)        if (!index)\n3255089ada 3495)        return NULL;\n3255089ada 3498)        ext_version = get_be32(index);\n3255089ada 3499)        if (ext_version != IEOT_VERSION) {\n3255089ada 3500)        error(\"invalid IEOT version %d\", ext_version);\n3255089ada 3501)        return NULL;\n3255089ada 3503)        index += sizeof(uint32_t);\n3255089ada 3506)        nr = (extsize - sizeof(uint32_t)) / \n(sizeof(uint32_t) + sizeof(uint32_t));\n3255089ada 3507)        if (!nr) {\n3255089ada 3508)        error(\"invalid number of IEOT entries %d\", nr);\n3255089ada 3509)        return NULL;\n3255089ada 3511)        ieot = xmalloc(sizeof(struct \nindex_entry_offset_table)\n3255089ada 3512)        + (nr * sizeof(struct index_entry_offset)));\n3255089ada 3513)        ieot->nr = nr;\n3255089ada 3514)        for (i = 0; i < nr; i++) {\n3255089ada 3515)        ieot->entries[i].offset = get_be32(index);\n3255089ada 3516)        index += sizeof(uint32_t);\n3255089ada 3517)        ieot->entries[i].nr = get_be32(index);\n3255089ada 3518)        index += sizeof(uint32_t);\n3255089ada 3521)        return ieot;\n3255089ada 3524) static void write_ieot_extension(struct strbuf *sb, \nstruct index_entry_offset_table *ieot)\n3255089ada 3530)        put_be32(&buffer, IEOT_VERSION);\n3255089ada 3531)        strbuf_add(sb, &buffer, sizeof(uint32_t));\n3255089ada 3534)        for (i = 0; i < ieot->nr; i++) {\n3255089ada 3537)        put_be32(&buffer, ieot->entries[i].offset);\n3255089ada 3538)        strbuf_add(sb, &buffer, sizeof(uint32_t));\n3255089ada 3541)        put_be32(&buffer, ieot->entries[i].nr);\n3255089ada 3542)        strbuf_add(sb, &buffer, sizeof(uint32_t));\n3255089ada 3544) }\n\nrebase-interactive.c\n64a43cbd5d 61) return error_errno(_(\"could not read '%s'.\"), todo_file);\n64a43cbd5d 65) strbuf_release(&buf);\n64a43cbd5d 66) return -1;\na9f5476fbc 74) return error_errno(_(\"could not read '%s'.\"), todo_file);\na9f5476fbc 78) strbuf_release(&buf);\na9f5476fbc 79) return -1;\n64a43cbd5d 85) return -1;\n\nrevision.c\n4943d28849 2931) return;\n4943d28849 2934) return;\n4943d28849 2937) c->object.flags |= UNINTERESTING;\n4943d28849 2940) return;\n4943d28849 2943) mark_parents_uninteresting(c);\n4943d28849 2966) return;\n4943d28849 2969) return;\n4943d28849 2974) return;\n4943d28849 3019) info->topo_queue.compare = compare_commits_by_commit_date;\n4943d28849 3020) break;\n4943d28849 3022) init_author_date_slab(&info->author_date);\n4943d28849 3023) info->topo_queue.compare = compare_commits_by_author_date;\n4943d28849 3024) info->topo_queue.cb_data = &info->author_date;\n4943d28849 3025) break;\n4943d28849 3038) continue;\n4943d28849 3048) record_author_date(&info->author_date, c);\n6c04ff3001 3086) if (!revs->ignore_missing_links)\n6c04ff3001 3087) die(\"Failed to traverse parents of commit %s\",\n4943d28849 3088) oid_to_hex(&commit->object.oid));\n4943d28849 3096) continue;\n\nsequencer.c\n65850686cf 2276) return;\n65850686cf 2373) write_file(rebase_path_quiet(), \"%s\\n\", quiet);\n2c58483a59 3371) return error(_(\"could not checkout %s\"), commit);\n4df66c40b0 3385) return error(_(\"%s: not a valid OID\"), orig_head);\nb97e187364 4748) return -1;\nb97e187364 4751) return -1;\nb97e187364 4757) return error_errno(_(\"could not read '%s'.\"), todo_file);\nb97e187364 4760) todo_list_release(&todo_list);\nb97e187364 4761) return error(_(\"unusable todo list: '%s'\"), todo_file);\nb97e187364 4780) todo_list_release(&todo_list);\nb97e187364 4781) return -1;\nb97e187364 4785) return error(_(\"could not copy '%s' to '%s'.\"), todo_file,\nb97e187364 4789) return error(_(\"could not transform the todo list\"));\nb97e187364 4818) return error(_(\"could not transform the todo list\"));\nb97e187364 4821) return error(_(\"could not skip unnecessary pick \ncommands\"));\nb97e187364 4827) return -1;\n\nsplit-index.c\n568f3a6073 310) const unsigned int ondisk_flags =\n568f3a6073 314) ce_flags = ce->ce_flags;\n568f3a6073 315) base_flags = base->ce_flags;\n568f3a6073 317) ce->ce_flags   &= ondisk_flags;\n568f3a6073 318) base->ce_flags &= ondisk_flags;\n568f3a6073 319) ret = memcmp(&ce->ce_stat_data, &base->ce_stat_data,\n568f3a6073 322) ce->ce_flags = ce_flags;\n568f3a6073 323) base->ce_flags = base_flags;\n568f3a6073 324) if (ret)\n568f3a6073 325) ce->ce_flags |= CE_UPDATE_IN_BASE;\n\nstrbuf.c\nf95736288a  127) --sb->len;\n\ntransport-helper.c\nfb19d32f05  643) if (!data->connect && !data->stateless_connect)\n\ntransport.c\n99bcb883cb  299) BUG(\"buffer must be empty at the end of handshake()\");\n\nCommits introducing uncovered code:\nAlban Gruin      0af129b2e: rebase--interactive2: rewrite the submodes \nof interactive rebase in C\nAlban Gruin      2c58483a5: rebase -i: rewrite setup_reflog_action() in C\nAlban Gruin      34b47315d: rebase -i: move rebase--helper modes to \nrebase--interactive\nAlban Gruin      4df66c40b: rebase -i: rewrite checkout_onto() in C\nAlban Gruin      53bbcfbde: rebase -i: implement the main part of \ninteractive rebase as a builtin\nAlban Gruin      64a43cbd5: rebase -i: rewrite the edit-todo \nfunctionality in C\nAlban Gruin      65850686c: rebase -i: rewrite write_basic_state() in C\nAlban Gruin      a9f5476fb: sequencer: refactor append_todo_help() to \nwrite its message to a buffer\nAlban Gruin      b97e18736: rebase -i: rewrite complete_action() in C\nBen Peart      3255089ad: ieot: add Index Entry Offset Table (IEOT) \nextension\nBen Peart      3b1d9e045: eoie: add End of Index Entry (EOIE) extension\nBen Peart      77ff1127a: read-cache: load cache entries on worker threads\nBen Peart      abb4bb838: read-cache: load cache extensions on a worker \nthread\nBen Peart      c780b9cfe: config: add new index.threads config setting\nDerrick Stolee      2d181390f: prio-queue: add 'peek' operation\nDerrick Stolee      4943d2884: revision.c: refactor basic topo-order logic\nDerrick Stolee      6c04ff300: revision.c: begin refactoring \n--topo-order logic\nHarald Nordgren      250edfa8c: bisect: create 'bisect_flags' parameter \nin find_bisection()\nJeff King      e43d2dcce: more oideq/hasheq conversions\nJoel Teichroeb      31f109a36: stash: convert drop and clear to builtin\nJoel Teichroeb      93871263d: stash: convert apply to builtin\nJoel Teichroeb      b3513da4b: stash: convert pop to builtin\nJohannes Schindelin      bc24382c2: builtin rebase: prepare for builtin \nrebase -i\nJonathan Tan      99bcb883c: transport: allow skipping of ref listing\nJosh Steadmon      e001fd3a5: archive: implement protocol v2 archive command\nJosh Steadmon      fb19d32f0: archive: allow archive over HTTP(S) with \nproto v2\nJosh Steadmon      fb571c5fa: fuzz: add fuzz testing for packfile indices\nJunio C Hamano      7bbc53a58: fetch: replace string-list used as a \nlook-up table with a hashmap\nMatthew DeVore      696aa7390: list-objects-filter: use BUG rather than die\nMatthew DeVore      7c0fe330d: rev-list: handle missing tree objects \nproperly\nMatthew DeVore      bc5975d24: list-objects-filter: implement filter tree:0\nMatthew DeVore      cc0b05a4c: list-objects-filter-options: do not \nover-strbuf_init\nMatthew DeVore      f447a499d: list-objects: store common func args in \nstruct\nNguyễn Thái Ngọc Duy      252d079cb: read-cache.c: optimize reading \nindex format v4\nNguyễn Thái Ngọc Duy      26c7d0678: help -a: improve and make --verbose \ndefault\nNguyễn Thái Ngọc Duy      ae9af1228: status: show progress bar if \nrefreshing the index takes too long\nPaul-Sebastian Ungureanu      0ac06fb81: stash: convert store to builtin\nPaul-Sebastian Ungureanu      129f0b0a0: stash: convert \n`stash--helper.c` into `stash.c`\nPaul-Sebastian Ungureanu      48c061fa4: stash: convert push to builtin\nPaul-Sebastian Ungureanu      8002b9e62: stash: make push -q quiet\nPaul-Sebastian Ungureanu      8ceb24b2c: stash: convert show to builtin\nPaul-Sebastian Ungureanu      f6f191b3f: stash: convert create to builtin\nPratik Karki      002ee2fe6: builtin rebase: support `keep-empty` option\nPratik Karki      0eabf4b95: builtin rebase: stop if `git am` is in progress\nPratik Karki      12026a412: builtin rebase: support `--gpg-sign` option\nPratik Karki      122420c29: builtin rebase: support --skip\nPratik Karki      1ed9c14ff: builtin rebase: support --force-rebase\nPratik Karki      3c3588c7d: builtin rebase: support \n--rebase-merges[=[no-]rebase-cousins]\nPratik Karki      51e9ea6da: builtin rebase: support --edit-todo and \n--show-current-patch\nPratik Karki      53f9e5be9: builtin rebase: support `ignore-date` option\nPratik Karki      55071ea24: rebase: start implementing it as a builtin\nPratik Karki      5a6149453: builtin rebase: support --quit\nPratik Karki      5e5d96197: builtin rebase: support --abort\nPratik Karki      6defce2b0: builtin rebase: support `--autostash` option\nPratik Karki      73d51ed0a: builtin rebase: support --signoff\nPratik Karki      7998dbe1e: builtin rebase: support `-C` and \n`--whitespace=<type>`\nPratik Karki      9a48a615b: builtin rebase: try to fast forward when \npossible\nPratik Karki      9dba809a6: builtin rebase: support --root\nPratik Karki      ac7f467fe: builtin/rebase: support running \"git rebase \n<upstream>\"\nPratik Karki      ba1905a5f: builtin rebase: add support for custom \nmerge strategies\nPratik Karki      bff014dac: builtin rebase: support the `verbose` and \n`diffstat` options\nPratik Karki      c54dacb50: builtin rebase: start a new rebase only if \nnone is in progress\nPratik Karki      cda614e48: builtin rebase: show progress when \nconnected to a terminal\nPratik Karki      d4c569f8f: builtin rebase: only store fully-qualified \nrefs in `options.head_name`\nPratik Karki      e0333e5c6: builtin rebase: require a clean worktree\nPratik Karki      e65123a71: builtin rebase: support `git rebase \n<upstream> <switch-to>`\nPratik Karki      ead98c111: builtin rebase: support --rerere-autoupdate\nPratik Karki      f28d40d3a: builtin rebase: support --onto\nPratik Karki      f95736288: builtin rebase: support --continue\nRené Scharfe      8b2f8cbcb: oidset: use khash\nSZEDER Gábor      568f3a607: split-index: don't compare stat data of \nentries already marked for split index\n\nUncovered code new in next, compared to master. Build logs at [2]\n-----------------------------------------------------------------\n\nblame.c\na470beea39  113)  !strcmp(r->index->cache[-1 - pos]->name, path))\na470beea39  272) int pos = index_name_pos(r->index, path, len);\na470beea39  274) mode = r->index->cache[pos]->ce_mode;\n\nbuiltin/am.c\n2abf350385 1414) repo_init_revisions(the_repository, &rev_info, NULL);\n\nbuiltin/gc.c\n3029970275 builtin/gc.c 461) ret = error_errno(_(\"cannot stat '%s'\"), \ngc_log_path);\n3029970275 builtin/gc.c 470) ret = error_errno(_(\"cannot read '%s'\"), \ngc_log_path);\nfec2ed2187 builtin/gc.c 495) die(FAILED_RUN, pack_refs_cmd.argv[0]);\nfec2ed2187 builtin/gc.c 498) die(FAILED_RUN, reflog.argv[0]);a\n3029970275 builtin/gc.c 585) exit(128);\nfec2ed2187 builtin/gc.c 637) die(FAILED_RUN, repack.argv[0]);\nfec2ed2187 builtin/gc.c 647) die(FAILED_RUN, prune.argv[0]);\nfec2ed2187 builtin/gc.c 654) die(FAILED_RUN, prune_worktrees.argv[0]);\nfec2ed2187 builtin/gc.c 658) die(FAILED_RUN, rerere.argv[0]);\n\nbuiltin/pack-objects.c\n2fa233a554 builtin/pack-objects.c 1512) hashcpy(base_oid.hash, base_sha1);\n2fa233a554 builtin/pack-objects.c 1513) if \n(!in_same_island(&delta->idx.oid, &base_oid))\n2fa233a554 builtin/pack-objects.c 1514) return 0;\n\ncommit-graph.c\n20fd6d5799   79) return 0;\n\ndiff.c\nb78ea5fc35 4117) add_external_diff_name(o->repo, &argv, other, two);\n\nrefs.c\n4a6067cda5 1405) return 0;\n\nrevision.c\n2abf350385 1526) if (ce_path_match(istate, ce, &revs->prune_data, NULL)) {\n2abf350385 1532) while ((i+1 < istate->cache_nr) &&\n2abf350385 1533)        ce_same_name(ce, istate->cache[i+1]))\n\nwt-status.c\nf3bd35fa0d  671) s->committable = 1;\n73ba5d78b4 1953) if (s->state.rebase_in_progress ||\n73ba5d78b4 1954)     s->state.rebase_interactive_in_progress)\n73ba5d78b4 1955) branch_name = s->state.onto;\n73ba5d78b4 1956) else if (s->state.detached_from)\n73ba5d78b4 1957) branch_name = s->state.detached_from;\n\nCommits introducing uncovered code:\nDerrick Stolee      20fd6d579: commit-graph: not compatible with grafts\nJeff King      2fa233a55: pack-objects: handle island check for \n\"external\" delta base\nJonathan Nieder      302997027: gc: do not return error for prior errors \nin daemonized mode\nJonathan Nieder      fec2ed218: gc: exit with status 128 on failure\nNguyễn Thái Ngọc Duy      2abf35038: revision.c: remove implicit \ndependency on the_index\nNguyễn Thái Ngọc Duy      a470beea3: blame.c: rename \"repo\" argument to \"r\"\nNguyễn Thái Ngọc Duy      b78ea5fc3: diff.c: reduce implicit dependency \non the_index\nStefan Beller      4a6067cda: refs.c: migrate internal ref iteration to \npass thru repository argument\nStephen P. Smith      73ba5d78b: roll wt_status_state into wt_status and \npopulate in the collect phase\nStephen P. Smith      f3bd35fa0: wt-status.c: set the committable flag \nin the collect phase\n\n\nUncovered code new in master, compared to maint. Build logs at [3]\n------------------------------------------------------------------\n\nbuiltin/checkout.c\nfa655d8411 builtin/checkout.c  537) return 0;\nfa655d8411 builtin/checkout.c  951) return error(_(\"index file corrupt\"));\n\nbuiltin/commit.c\n859fdc0c3c builtin/commit.c 1657) \nwrite_commit_graph_reachable(get_object_directory(), 0);\n\nbuiltin/difftool.c\n4a7e27e957 441) if (oideq(&loid, &roid))\n\nbuiltin/fsck.c\n454ea2e4d7 builtin/fsck.c 743) for (p = get_all_packs(the_repository); p;\n66ec0390e7 builtin/fsck.c 862) midx_argv[2] = \"--object-dir\";\n66ec0390e7 builtin/fsck.c 863) midx_argv[3] = alt->path;\n66ec0390e7 builtin/fsck.c 864) if (run_command(&midx_verify))\n66ec0390e7 builtin/fsck.c 865) errors_found |= ERROR_COMMIT_GRAPH;\n\nbuiltin/log.c\n2e6fd71a52 builtin/log.c 1461) die(_(\"failed to infer range-diff ranges\"));\nee6cbf712e builtin/log.c 1807) die(_(\"--interdiff requires \n--cover-letter or single patch\"));\n8631bf1cdd builtin/log.c 1817) else if (!rdiff_prev)\n8631bf1cdd builtin/log.c 1818) die(_(\"--creation-factor requires \n--range-diff\"));\n40ce41604d builtin/log.c 1822) die(_(\"--range-diff requires \n--cover-letter or single patch\"));\n\nbuiltin/multi-pack-index.c\n6d68e6a461 35) usage_with_options(builtin_multi_pack_index_usage,\n6d68e6a461 39) die(_(\"too many arguments\"));\n6d68e6a461 48) die(_(\"unrecognized verb: %s\"), argv[0]);\n\nbuiltin/pack-objects.c\n6a22d52126 builtin/pack-objects.c 1079) if (fill_midx_entry(oid, &e, m)) {\n6a22d52126 builtin/pack-objects.c 1080) struct packed_git *p = e.p;\n6a22d52126 builtin/pack-objects.c 1083) if (p == *found_pack)\n6a22d52126 builtin/pack-objects.c 1084) offset = *found_offset;\n6a22d52126 builtin/pack-objects.c 1086) offset = \nfind_pack_entry_one(oid->hash, p);\n6a22d52126 builtin/pack-objects.c 1088) if (offset) {\n6a22d52126 builtin/pack-objects.c 1089) if (!*found_pack) {\n6a22d52126 builtin/pack-objects.c 1090) if (!is_pack_valid(p))\n6a22d52126 builtin/pack-objects.c 1091) continue;\n6a22d52126 builtin/pack-objects.c 1092) *found_offset = offset;\n6a22d52126 builtin/pack-objects.c 1093) *found_pack = p;\n6a22d52126 builtin/pack-objects.c 1095) want = \nwant_found_object(exclude, p);\n6a22d52126 builtin/pack-objects.c 1096) if (want != -1)\n6a22d52126 builtin/pack-objects.c 1097) return want;\n28b8a73080 builtin/pack-objects.c 2778) depth++;\n108f530385 builtin/pack-objects.c 2782) oe_set_tree_depth(&to_pack, ent, \ndepth);\n454ea2e4d7 builtin/pack-objects.c 2966) p = get_all_packs(the_repository);\n\nbuiltin/pack-redundant.c\n454ea2e4d7 builtin/pack-redundant.c 580) struct packed_git *p = \nget_all_packs(the_repository);\n454ea2e4d7 builtin/pack-redundant.c 595) struct packed_git *p = \nget_all_packs(the_repository);\n\nbuiltin/remote.c\n5025425dff builtin/remote.c  864) return error(_(\"No such remote: \n'%s'\"), name);\n\nbuiltin/repack.c\n16d75fa48d  48) use_delta_islands = git_config_bool(var, value);\n16d75fa48d  49) return 0;\n\nbuiltin/rerere.c\n2373b65059 builtin/rerere.c  78) warning(_(\"'git rerere forget' without \npaths is deprecated\"));\n2373b65059 builtin/rerere.c 110) die(_(\"unable to generate diff for \n'%s'\"), rerere_path(id, NULL));\n\nbuiltin/show-branch.c\n9001dc2a74 builtin/show-branch.c 430) if (get_oid(refname + ofs, &tmp) \n|| !oideq(&tmp, oid))\n\nbuiltin/submodule--helper.c\nee69b2a90c 1462) die(_(\"Invalid update mode '%s' for submodule path '%s'\"),\nee69b2a90c 1466) die(_(\"Invalid update mode '%s' configured for \nsubmodule path '%s'\"),\nee69b2a90c 1469) trace_printf(\"loaded thing\");\nee69b2a90c 1470) out->type = sub->update_strategy.type;\nee69b2a90c 1471) out->command = sub->update_strategy.command;\nee69b2a90c 1491) die(\"submodule--helper update-module-clone expects \n<just-cloned> <path> [<update>]\");\n74d4731da1 2033) BUG(\"submodule--helper connect-gitdir-workingtree \n<name> <path>\");\n74d4731da1 2039) BUG(\"We could get the submodule handle before?\");\n74d4731da1 2042) die(_(\"could not get a repository handle for submodule \n'%s'\"), path);\n\nbuiltin/unpack-objects.c\n4a7e27e957 builtin/unpack-objects.c 306) if (oideq(&info->base_oid, \n&obj_list[nr].oid) ||\n\nbuiltin/update-index.c\n4a7e27e957 builtin/update-index.c  672) if (oideq(&ce_2->oid, &ce_3->oid) &&\n\nbuiltin/worktree.c\ne5353bef55  60) error_errno(_(\"failed to delete '%s'\"), sb.buf);\ne19831c94f 251)     die(_(\"unable to re-add worktree '%s'\"), path);\n68a6b3a1bd 793) die(_(\"cannot move a locked working tree, lock reason: \n%s\\nuse 'move -f -f' to override or unlock first\"),\nf4143101cb 906) die(_(\"cannot remove a locked working tree, lock reason: \n%s\\nuse 'remove -f -f' to override or unlock first\"),\n\ncache-tree.c\n4592e6080f 762) BUG(\"%s with flags 0x%x should not be in cache-tree\",\n4592e6080f 770) BUG(\"bad subtree '%.*s'\", entlen, name);\n4592e6080f 785) BUG(\"cache-tree for path %.*s does not match. \"\n\ncommit-graph.c\n6cc017431c  247) return 0;\n\ncommit-reach.c\n5227c38566  63) BUG(\"bad generation skip %8x > %8x at %s\",\n5227c38566 134) return ret;\n5227c38566 282) return 1;\n5227c38566 314) return ret;\n5227c38566 317) return ret;\n5227c38566 323) return ret;\n1d614d41e5 395) return 0;\n1d614d41e5 401) return 0;\n1d614d41e5 405) return 0;\n920f93ca1c 459) return CONTAINS_NO;\n920f93ca1c 484) cutoff = c->generation;\nb67f6b26e3 559) continue;\nb67f6b26e3 569) from->objects[i].item->flags |= assign_flag;\nb67f6b26e3 570) continue;\nb67f6b26e3 576) result = 0;\nb67f6b26e3 577) goto cleanup;\n\ndelta-islands.c\nc8d521faf7  53) memcpy(b, old, size);\nc8d521faf7  73) return 1;\nc8d521faf7 118) return 0;\nc8d521faf7 130) return 0;\nc8d521faf7 187) b->refcount--;\nc8d521faf7 188) b = kh_value(island_marks, pos) = island_bitmap_new(b);\nc8d521faf7 202) continue;\nc8d521faf7 212) obj = ((struct tag *)obj)->tagged;\nc8d521faf7 213) if (obj) {\nc8d521faf7 214) parse_object(the_repository, &obj->oid);\nc8d521faf7 215) marks = create_or_get_island_marks(obj);\nc8d521faf7 216) island_bitmap_set(marks, island_counter);\nc8d521faf7 248) return;\nc8d521faf7 268) progress_state = start_progress(_(\"Propagating island \nmarks\"), nr);\nc8d521faf7 286) die(_(\"bad tree object %s\"), oid_to_hex(&ent->idx.oid));\nc8d521faf7 293) continue;\nc8d521faf7 297) continue;\nc8d521faf7 321) return config_error_nonbool(k);\nc8d521faf7 330) die(_(\"failed to load island regex for '%s': %s\"), k, \nre.buf);\nc8d521faf7 386) warning(_(\"island regex from config has \"\nc8d521faf7 397) strbuf_addch(&island_name, '-');\nc8d521faf7 433) continue;\nc8d521faf7 436) list[dst] = list[src];\n\ndiff-lib.c\n9001dc2a74 diff-lib.c 345)     (!oideq(oid, &old_entry->oid) || \n!oideq(&old_entry->oid, &new_entry->oid))) {\n\ndir.c\nc46c406ae1 2275) trace_performance_leave(\"read directory %.*s\", len, path);\n\nentry.c\nb878579ae7 402) static void mark_colliding_entries(const struct checkout \n*state,\nb878579ae7 405) int i, trust_ino = check_stat;\nb878579ae7 411) ce->ce_flags |= CE_MATCHED;\nb878579ae7 413) for (i = 0; i < state->istate->cache_nr; i++) {\nb878579ae7 414) struct cache_entry *dup = state->istate->cache[i];\nb878579ae7 416) if (dup == ce)\nb878579ae7 417) break;\nb878579ae7 419) if (dup->ce_flags & (CE_MATCHED | CE_VALID | \nCE_SKIP_WORKTREE))\nb878579ae7 420) continue;\nb878579ae7 422) if ((trust_ino && dup->ce_stat_data.sd_ino == st->st_ino) ||\nb878579ae7 423)     (!trust_ino && !fspathcmp(ce->name, dup->name))) {\nb878579ae7 424) dup->ce_flags |= CE_MATCHED;\nb878579ae7 425) break;\nb878579ae7 428) }\nb878579ae7 488) mark_colliding_entries(state, ce, &st);\n\nfsck.c\nfb8952077d  214) die_errno(\"Could not read '%s'\", path);\n\nll-merge.c\nd64324cb60 379) marker_size = DEFAULT_CONFLICT_MARKER_SIZE;\n\nlog-tree.c\n4a7e27e957 477) if (oideq(&parent->item->object.oid, oid))\n\nmailinfo.c\n3aa4d81f88  992) len--;\n3aa4d81f88  998) handle_filter(mi, prev);\n3aa4d81f88  999) strbuf_reset(prev);\n3aa4d81f88 1090) handle_filter(mi, &prev);\n\nmidx.c\n4d80560c54   58) error_errno(_(\"failed to read %s\"), midx_name);\n4d80560c54   59) goto cleanup_fail;\n4d80560c54   65) error(_(\"multi-pack-index file %s is too small\"), \nmidx_name);\n4d80560c54   66) goto cleanup_fail;\n0d5b3a5ef7  146) die(_(\"multi-pack-index missing required OID lookup \nchunk\"));\n662148c435  148) die(_(\"multi-pack-index missing required object offsets \nchunk\"));\n4d80560c54  173) munmap(midx_map, midx_size);\n4d80560c54  175) close(fd);\na40498a126  188) close_pack(m->packs[i]);\na40498a126  189) free(m->packs);\n3715a6335c  262) return 0;\n3715a6335c  278) return 0;\nc39b02ae0a  283) nth_midxed_object_oid(&oid, m, pos);\nc39b02ae0a  284) for (i = 0; i < p->num_bad_objects; i++)\nc39b02ae0a  285) if (!hashcmp(oid.hash,\nc39b02ae0a  286)      p->bad_object_sha1 + the_hash_algo->rawsz * i))\nc39b02ae0a  287) return 0;\nc4d25228eb  341) return 1;\n396f257018  398) warning(_(\"failed to add packfile '%s'\"),\n396f257018  400) return;\nfe1ed56f5e  404) warning(_(\"failed to open pack-index '%s'\"),\nfe1ed56f5e  406) close_pack(packs->list[packs->nr]);\nfe1ed56f5e  407) FREE_AND_NULL(packs->list[packs->nr]);\nfe1ed56f5e  408) return;\na40498a126  481) return 1;\nfe1ed56f5e  498) die(_(\"failed to locate object %d in packfile\"), \ncur_object);\n32f3c541e3  611) BUG(\"incorrect pack-file order: %s before %s\",\n0d5b3a5ef7  673) BUG(\"OIDs not in order: %s >= %s\",\n662148c435  700) BUG(\"object %s requires a large offset (%\"PRIx64\") but \nthe MIDX is not writing large offsets!\",\nfc59e74844  754) die_errno(_(\"unable to create leading directories of %s\"),\na40498a126  784) goto cleanup;\n32f3c541e3  843) BUG(\"incorrect chunk offsets: %\"PRIu64\" before %\"PRIu64,\n32f3c541e3  848) BUG(\"chunk offset %\"PRIu64\" is not properly aligned\",\n32f3c541e3  860) BUG(\"incorrect chunk offset (%\"PRIu64\" != %\"PRIu64\") \nfor chunk id %\"PRIx32,\n32f3c541e3  887) BUG(\"trying to write unknown chunk id %\"PRIx32,\n32f3c541e3  893) BUG(\"incorrect final offset %\"PRIu64\" != %\"PRIu64,\n525e18c04b  923) die(_(\"failed to clear multi-pack-index at %s\"), midx);\n56ee7ff156  949) return 0;\ncc6af73c02  990) midx_report(_(\"failed to load pack-index for packfile %s\"),\ncc6af73c02  991)     e.p->pack_name);\ncc6af73c02  992) break;\n\npack-bitmap.c\n30cdc33fba 1130) return 0;\n\npack-objects.c\n108f530385 169) REALLOC_ARRAY(pdata->tree_depth, pdata->nr_alloc);\nfe0ac2fb7f 172) REALLOC_ARRAY(pdata->layer, pdata->nr_alloc);\n108f530385 189) pdata->tree_depth[pdata->nr_objects - 1] = 0;\nfe0ac2fb7f 192) pdata->layer[pdata->nr_objects - 1] = 0;\n\npackfile.c\nfe1ed56f5e  205) if (open_pack_index(p))\nfe1ed56f5e  206) return 0;\nfe1ed56f5e  207) level1_ofs = p->index_data;\n17c35c8969  479) break;\n17c35c8969  483) return error(\"packfile %s index unavailable\", \np->pack_name);\n17c35c8969  537) return 0;\n\nrefs/packed-backend.c\n9001dc2a74 1163) } else if (!oideq(&update->old_oid, iter->oid)) {\n\nrefs/ref-cache.c\n9001dc2a74 275) if (!oideq(&ref1->u.value.oid, &ref2->u.value.oid))\n\nrerere.c\n2373b65059  216) die(_(\"corrupt MERGE_RR\"));\n2373b65059  225) die(_(\"corrupt MERGE_RR\"));\n2373b65059  228) die(_(\"corrupt MERGE_RR\"));\n2373b65059  263) die(_(\"unable to write rerere record\"));\n2373b65059  268) die(_(\"unable to write rerere record\"));\n4af32207bc  375) break;\n4af32207bc  379) strbuf_addbuf(&two, &conflict);\nc0f16f8e14  383) break;\nc0f16f8e14  387) break;\nc0f16f8e14  391) break;\n2373b65059  476) return error_errno(_(\"could not open '%s'\"), path);\n2373b65059  481) error_errno(_(\"could not write '%s'\"), output);\n2373b65059  491) error(_(\"there were errors while writing '%s' (%s)\"),\n2373b65059  494) io.io.wrerror = error_errno(_(\"failed to flush '%s'\"), \npath);\n2373b65059  560) return error(_(\"index file corrupt\"));\n2373b65059  593) return error(_(\"index file corrupt\"));\n2373b65059  676) warning_errno(_(\"failed utime() on '%s'\"),\n2373b65059  682) return error_errno(_(\"could not open '%s'\"), path);\n2373b65059  684) error_errno(_(\"could not write '%s'\"), path);\n2373b65059  686) return error_errno(_(\"writing '%s' failed\"), path);\n2373b65059  712) die(_(\"unable to write new index file\"));\n2373b65059  794) die_errno(_(\"cannot unlink stray '%s'\"), path);\n2373b65059 1043) error(_(\"failed to update conflicted state in '%s'\"), \npath);\n2373b65059 1061) error(_(\"no remembered resolution for '%s'\"), path);\n2373b65059 1063) error_errno(_(\"cannot unlink '%s'\"), filename);\n2373b65059 1097) return error(_(\"index file corrupt\"));\n2373b65059 1185) die_errno(_(\"unable to open rr-cache directory\"));\n\nrevision.c\n4a7e27e957 3241)     oideq(&p->item->object.oid, &commit->object.oid))\n\nsha1-file.c\n67947c34ae sha1-file.c 2216) if (!hasheq(expected_sha1, real_sha1)) {\n\nsha1-name.c\n8aac67a174 sha1-name.c  154) static void unique_in_midx(struct \nmulti_pack_index *m,\n8aac67a174 sha1-name.c  157) uint32_t num, i, first = 0;\n8aac67a174 sha1-name.c  158) const struct object_id *current = NULL;\n8aac67a174 sha1-name.c  159) num = m->num_objects;\n8aac67a174 sha1-name.c  161) if (!num)\n8aac67a174 sha1-name.c  162) return;\n8aac67a174 sha1-name.c  164) bsearch_midx(&ds->bin_pfx, m, &first);\n8aac67a174 sha1-name.c  171) for (i = first; i < num && !ds->ambiguous; \ni++) {\n8aac67a174 sha1-name.c  173) current = nth_midxed_object_oid(&oid, m, i);\n8aac67a174 sha1-name.c  174) if (!match_sha(ds->len, ds->bin_pfx.hash, \ncurrent->hash))\n8aac67a174 sha1-name.c  175) break;\n8aac67a174 sha1-name.c  176) update_candidates(ds, current);\n8aac67a174 sha1-name.c  212)      m = m->next)\n8aac67a174 sha1-name.c  213) unique_in_midx(m, ds);\n8aac67a174 sha1-name.c  573) return;\n\ntrace.c\nc46c406ae1 189) now = getnanotime();\nc46c406ae1 190) perf_start_times[perf_indent] = now;\nc46c406ae1 191) if (perf_indent + 1 < ARRAY_SIZE(perf_start_times))\nc46c406ae1 192) perf_indent++;\nc46c406ae1 194) BUG(\"Too deep indentation\");\nc46c406ae1 195) return now;\nc46c406ae1 211) if (perf_indent >= strlen(space))\nc46c406ae1 212) BUG(\"Too deep indentation\");\nc46c406ae1 214) strbuf_addf(&buf, \":%.*s \", perf_indent, space);\nc46c406ae1 317) void trace_performance_leave_fl(const char *file, int line,\nc46c406ae1 323) if (perf_indent)\nc46c406ae1 324) perf_indent--;\nc46c406ae1 326) if (!format) /* Allow callers to leave without tracing \nanything */\nc46c406ae1 327) return;\nc46c406ae1 329) since = perf_start_times[perf_indent];\nc46c406ae1 330) va_start(ap, format);\nc46c406ae1 331) trace_performance_vprintf_fl(file, line, nanos - since, \nformat, ap);\nc46c406ae1 332) va_end(ap);\nc46c406ae1 477) trace_performance_leave(\"git command:%s\", command_line.buf);\nc46c406ae1 485) if (!command_line.len)\nc46c406ae1 490) trace_performance_enter();\n\nunpack-trees.c\nb878579ae7  360) string_list_append(&list, ce->name);\nb878579ae7  361) ce->ce_flags &= ~CE_MATCHED;\nb878579ae7  368) warning(_(\"the following paths have collided (e.g. \ncase-sensitive paths\\n\"\nb878579ae7  372) for (i = 0; i < list.nr; i++)\nb878579ae7  373) fprintf(stderr, \"  '%s'\\n\", list.items[i].string);\nb4da37380b  715) BUG(\"This is a directory and should not exist in index\");\nb4da37380b  719) BUG(\"pos must point at the first entry in this directory\");\nb4da37380b  740) BUG(\"We need cache-tree to do this optimization\");\nf1e11c6510  777) free(tree_ce);\nb4da37380b  778) return rc;\nb4da37380b  785) printf(\"Unpacked %d entries from %s to %s using \ncache-tree\\n\",\nb4da37380b  787)        o->src_index->cache[pos]->name,\nb4da37380b  788)        o->src_index->cache[pos + nr_entries - 1]->name);\nb4da37380b  811) BUG(\"Wrong condition to get here buddy\");\n\nCommits introducing uncovered code:\nBen Peart      fa655d841: checkout: optimize \"git checkout -b <new_branch>\"\nChristian Couder      108f53038: pack-objects: move tree_depth into \n'struct packing_data'\nChristian Couder      fe0ac2fb7: pack-objects: move 'layer' into 'struct \npacking_data'\nDerrick Stolee      0d5b3a5ef: midx: write object ids in a chunk\nDerrick Stolee      17c35c896: packfile: skip loading index if in \nmulti-pack-index\nDerrick Stolee      1d614d41e: commit-reach: move ref_newer from remote.c\nDerrick Stolee      32f3c541e: multi-pack-index: write pack names in chunk\nDerrick Stolee      3715a6335: midx: read objects from multi-pack-index\nDerrick Stolee      396f25701: multi-pack-index: read packfile list\nDerrick Stolee      454ea2e4d: treewide: use get_all_packs\nDerrick Stolee      4d80560c5: multi-pack-index: load into memory\nDerrick Stolee      5227c3856: commit-reach: move walk methods from commit.c\nDerrick Stolee      525e18c04: midx: clear midx on repack\nDerrick Stolee      56ee7ff15: multi-pack-index: add 'verify' verb\nDerrick Stolee      662148c43: midx: write object offsets\nDerrick Stolee      66ec0390e: fsck: verify multi-pack-index\nDerrick Stolee      6a22d5212: pack-objects: consider packs in \nmulti-pack-index\nDerrick Stolee      6cc017431: commit-reach: use can_all_from_reach\nDerrick Stolee      6d68e6a46: multi-pack-index: provide more helpful \nusage info\nDerrick Stolee      859fdc0c3: commit-graph: define GIT_TEST_COMMIT_GRAPH\nDerrick Stolee      8aac67a17: midx: use midx in abbreviation calculations\nDerrick Stolee      920f93ca1: commit-reach: move commit_contains from \nref-filter\nDerrick Stolee      a40498a12: midx: use existing midx when writing new one\nDerrick Stolee      b67f6b26e: commit-reach: properly peel tags\nDerrick Stolee      c39b02ae0: midx: mark bad packed objects\nDerrick Stolee      c4d25228e: config: create core.multiPackIndex setting\nDerrick Stolee      cc6af73c0: multi-pack-index: verify object offsets\nDerrick Stolee      fc59e7484: midx: write header information to lockfile\nDerrick Stolee      fe1ed56f5: midx: sort and deduplicate objects from \npackfiles\nDuy Nguyen      b878579ae: clone: report duplicate entries on \ncase-insensitive filesystems\nEric Sunshine      2e6fd71a5: format-patch: extend --range-diff to \naccept revision range\nEric Sunshine      40ce41604: format-patch: allow --range-diff to apply \nto a lone-patch\nEric Sunshine      68a6b3a1b: worktree: teach 'move' to override lock \nwhen --force given twice\nEric Sunshine      8631bf1cd: format-patch: add --creation-factor tweak \nfor --range-diff\nEric Sunshine      e19831c94: worktree: teach 'add' to respect --force \nfor registered but missing path\nEric Sunshine      e5353bef5: worktree: move delete_git_dir() earlier in \nfile for upcoming new callers\nEric Sunshine      ee6cbf712: format-patch: allow --interdiff to apply \nto a lone-patch\nEric Sunshine      f4143101c: worktree: teach 'remove' to override lock \nwhen --force given twice\nJeff King      16d75fa48: repack: add delta-islands support\nJeff King      28b8a7308: pack-objects: add delta-islands support\nJeff King      30cdc33fb: pack-bitmap: save \"have\" bitmap from walk\nJeff King      4a7e27e95: convert \"oidcmp() == 0\" to oideq()\nJeff King      67947c34a: convert \"hashcmp() != 0\" to \"!hasheq()\"\nJeff King      9001dc2a7: convert \"oidcmp() != 0\" to \"!oideq()\"\nJeff King      c8d521faf: Add delta-islands.{c,h}\nNguyễn Thái Ngọc Duy      4592e6080: cache-tree: verify valid cache-tree \nin the test suite\nNguyễn Thái Ngọc Duy      b4da37380: unpack-trees: optimize walking same \ntrees with cache-tree\nNguyễn Thái Ngọc Duy      c46c406ae: trace.h: support nested performance \ntracing\nNguyễn Thái Ngọc Duy      f1e11c651: unpack-trees: reduce malloc in \ncache-tree walk\nRené Scharfe      3aa4d81f8: mailinfo: support format=flowed\nRené Scharfe      fb8952077: fsck: use strbuf_getline() to read skiplist \nfile\nShulhan      5025425df: builtin/remote: quote remote name on error to \ndisplay empty name\nStefan Beller      74d4731da: submodule--helper: replace \nconnect-gitdir-workingtree by ensure-core-worktree\nStefan Beller      ee69b2a90: submodule--helper: introduce new \nupdate-module-mode helper\nThomas Gummerer      2373b6505: rerere: mark strings for translation\nThomas Gummerer      4af32207b: rerere: teach rerere to handle nested \nconflicts\nThomas Gummerer      c0f16f8e1: rerere: factor out handle_conflict function\nTorsten Bögershausen      d64324cb6: Make git_check_attr() a void function\n\n\n[1] https://dev.azure.com/git/git/_build/results?buildId=172&view=logs\n     Build running coverage-test for 'jch' and coverage-diff.sh against \n'next'\n\n[2] https://git.visualstudio.com/git/_build/results?buildId=166&view=logs\n     Build running coverage-test for 'next' and coverage-diff.sh against \n'master'\n\n[3] https://dev.azure.com/git/git/_build/results?buildId=171&view=logs\n     Build running coverage-test for 'master' and coverage-diff.sh \nagainst 'maint'\n"},{"id":"360486","messageId":"nycvar.QRO.7.76.6.1810151007430.561@tvgsbejvaqbjf.bet","threadId":"49547","inReplyTo":"e30a9c05-87d8-1f2b-182c-6d6a5fefe43c@gmail.com","subject":"Re: Git Test Coverage Report (Friday, Oct 12)","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2018-10-15T08:09:13Z","receivedAt":"2018-10-15T08:09:15Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Stolee,\n\nOn Fri, 12 Oct 2018, Derrick Stolee wrote:\n\n> \n> In an effort to ensure new code is reasonably covered by the test suite, we\n> now have contrib/coverage-diff.sh to combine the gcov output from 'make\n> coverage-test ; make coverage-report' with the output from 'git diff A B' to\n> discover _new_ lines of code that are not covered.\n\nThanks for doing this. I do notice, though, that there are a few mentions\nof BUG() lines, e.g.\n\n> 0af129b2ed builtin/rebase--interactive2.c 267) BUG(\"invalid command '%d'\",\n> command);\n\nI do not think that we will ever want to ensure that all of these lines\nget code coverage ;-) Maybe it would be possible to exclude those lines\nfrom the analysis?\n\nThank you,\nDscho\n"},{"id":"360520","messageId":"41a53f74-9b40-c71a-d521-94dcc6e2abe9@gmail.com","threadId":"49547","inReplyTo":"nycvar.QRO.7.76.6.1810151007430.561@tvgsbejvaqbjf.bet","subject":"Re: Git Test Coverage Report (Friday, Oct 12)","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2018-10-15T13:23:14Z","receivedAt":"2018-10-15T13:23:20Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 10/15/2018 4:09 AM, Johannes Schindelin wrote:\n> Hi Stolee,\n>\n> On Fri, 12 Oct 2018, Derrick Stolee wrote:\n>\n>> In an effort to ensure new code is reasonably covered by the test suite, we\n>> now have contrib/coverage-diff.sh to combine the gcov output from 'make\n>> coverage-test ; make coverage-report' with the output from 'git diff A B' to\n>> discover _new_ lines of code that are not covered.\n> Thanks for doing this. I do notice, though, that there are a few mentions\n> of BUG() lines, e.g.\n>\n>> 0af129b2ed builtin/rebase--interactive2.c 267) BUG(\"invalid command '%d'\",\n>> command);\n> I do not think that we will ever want to ensure that all of these lines\n> get code coverage ;-) Maybe it would be possible to exclude those lines\n> from the analysis?\nI'll incorporate that into my build script, but leave it out of \ncontrib/coverage-diff.sh in case people really want to see those lines \nwhen the inspect a single topic.\n\nThanks,\n-Stolee\n"}]}