{"thread":{"id":"53245","subject":"Re: Git Test Coverage Report (April 16, 2020)","startedAt":"2020-04-16T14:09:16Z","lastAt":"2020-04-16T16:32:10Z","messageCount":3,"participants":["Derrick Stolee","Taylor Blau"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"395587","messageId":"d4bf43d8-0d56-bbb9-e68f-a4933dacd3d3@gmail.com","threadId":"53245","inReplyTo":"c797df50-ec21-98a3-58c4-ade0c04284c9@gmail.com","subject":"Re: Git Test Coverage Report (April 16, 2020)","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2020-04-16T14:08:43Z","receivedAt":"2020-04-16T14:09:16Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 4/16/2020 9:57 AM, Derrick Stolee wrote:\n> Derrick Stolee\tefb0e3a0 blame: use changed-path Bloom filters\n> blame.c\n> efb0e3a0 1276) if (origin->commit->generation == GENERATION_NUMBER_INFINITY)\n> efb0e3a0 1277) return 1;\n> efb0e3a0 1279) filter = get_bloom_filter(r, origin->commit, 0);\n> efb0e3a0 1281) if (!filter)\n> efb0e3a0 1282) return 1;\n> efb0e3a0 1284) bloom_count_queries++;\n> efb0e3a0 1285) for (i = 0; i < bd->nr; i++) {\n> efb0e3a0 1286) if (bloom_filter_contains(filter,\n> efb0e3a0 1287)   bd->keys[i],\n> efb0e3a0 1288)   bd->settings))\n> efb0e3a0 1289) return 1;\n> efb0e3a0 1292) bloom_count_no++;\n> efb0e3a0 1293) return 0;\n> efb0e3a0 1302) if (bd->nr >= bd->alloc) {\n> efb0e3a0 1303) bd->alloc *= 2;\n> efb0e3a0 1304) REALLOC_ARRAY(bd->keys, bd->alloc);\n> efb0e3a0 1307) bd->keys[bd->nr] = xmalloc(sizeof(struct bloom_key));\n> efb0e3a0 1308) fill_bloom_key(path, strlen(path), bd->keys[bd->nr], bd->settings);\n> efb0e3a0 1309) bd->nr++;\n> efb0e3a0 2903) bd = xmalloc(sizeof(struct blame_bloom_data));\n> efb0e3a0 2905) bd->settings = sb->repo->objects->commit_graph->bloom_filter_settings;\n> efb0e3a0 2907) bd->alloc = 4;\n> efb0e3a0 2908) bd->nr = 0;\n> efb0e3a0 2909) ALLOC_ARRAY(bd->keys, bd->alloc);\n> efb0e3a0 2911) add_bloom_key(bd, path);\n> efb0e3a0 2913) sb->bloom_data = bd;\n> efb0e3a0 2920) for (i = 0; i < sb->bloom_data->nr; i++) {\n> efb0e3a0 2921) free(sb->bloom_data->keys[i]->hashes);\n> efb0e3a0 2922) free(sb->bloom_data->keys[i]);\n> efb0e3a0 2924) free(sb->bloom_data->keys);\n> efb0e3a0 2925) FREE_AND_NULL(sb->bloom_data);\n> efb0e3a0 2927) trace2_data_intmax(\"blame\", sb->repo,\n> efb0e3a0 2929) trace2_data_intmax(\"blame\", sb->repo,\n\nFor this to be covered, I need to modify my build to use\nGIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1. I'll have that ready for the next\nrun.\n\n> Derrick Stolee\t72ca4f9b commit: write commit-graph with Bloom filters\n> commit-graph.c\n> 72ca4f9b 1979) ctx->changed_paths = 1;\n\nSame here, although I will change this line in the next version.\n \nThanks,\n-Stolee\n\n"},{"id":"395591","messageId":"c797df50-ec21-98a3-58c4-ade0c04284c9@gmail.com","threadId":"53245","inReplyTo":null,"subject":"Git Test Coverage Report (April 16, 2020)","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2020-04-16T13:57:07Z","receivedAt":"2020-04-16T14:53:10Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"Here is today's test coverage report.\n\nThanks,\n-Stolee\n\n[1] https://derrickstolee.github.io/git-test-coverage/reports/2020-04-16-commits.txt\n[2] https://derrickstolee.github.io/git-test-coverage/reports/2020-04-16.txt\n[3] https://derrickstolee.github.io/git-test-coverage/reports/2020-04-16.htm\n\n---\n\npu\t89b51f611e0e8e10d254fbbfd738adc6d1ea1764\njch\tc58d47de3eb380e6178eb51a4dc97aa59ddd5ea8\nnext\t55bc3eb7cb9c200ab95bbd2415bc0a35fbf29053\nmaster\tefe3874640e2e58209ddbb3b072f48f6b7094f34\nmaster@{1}\t9fadedd637b312089337d73c3ed8447e9f0aa775\n\n\nUncovered code in 'pu' not in 'jch'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nDenton Liu\tbe1bb600 sequencer: make apply_autostash() accept a path\nsequencer.c\nbe1bb600 5302) apply_autostash(rebase_path_autostash());\n\nDenton Liu\t65c425a2 sequencer: stop leaking buf\nsequencer.c\n65c425a2 2643) goto done_rebase_i;\n\nDenton Liu\t5b2f6d9c sequencer: make file exists check more efficient\nsequencer.c\n5b2f6d9c 433) warning_errno(_(\"could not read '%s'\"), path);\n\nDenton Liu\tefcf6cf0 rebase: use read_oneliner()\nbuiltin/rebase.c\nefcf6cf0 641) } else if (!read_oneliner(&buf, state_dir_path(\"head\", opts),\n\nDenton Liu\tb309a971 reset: extract reset_head() from rebase\nreset.c\nb309a971 37) ret = -1;\nb309a971 38) goto leave_reset_head;\nb309a971 43) goto leave_reset_head;\nb309a971 66) goto leave_reset_head;\nb309a971 72) goto leave_reset_head;\nb309a971 77) goto leave_reset_head;\nb309a971 81) ret = -1;\nb309a971 82) goto leave_reset_head;\nb309a971 90) goto leave_reset_head;\nb309a971 109) } else if (old_orig)\nb309a971 110) delete_ref(NULL, \"ORIG_HEAD\", old_orig, 0);\n\nDenton Liu\tf213f069 rebase: generify reset_head()\nbuiltin/rebase.c\nf213f069 902) reset_head(the_repository, &opts->orig_head, \"checkout\",\nf213f069 903)    opts->head_name, 0,\n\nDenton Liu\t86ed00af rebase: use apply_autostash() from sequencer.c\nbuiltin/rebase.c\n86ed00af 1063) apply_autostash(state_dir_path(\"autostash\", opts));\n\nElijah Newren\t16846444 dir: include DIR_KEEP_UNTRACKED_CONTENTS handling in treat_directory()\ndir.c\n16846444 1924) FREE_AND_NULL(dir->entries[i]);\n\nEmily Shaffer\td14e00c1 bugreport: add uname info\nbugreport.c\nd14e00c1 20) strbuf_addf(sys_info, _(\"uname() failed with error '%s' (%d)\\n\"),\nd14e00c1 22)     errno);\n\nEmily Shaffer\tdd763e68 help: move list_config_help to builtin/help\nbuiltin/help.c\ndd763e68 123) puts(var);\ndd763e68 124) continue;\n\nEmily Shaffer\tefbace64 bugreport: gather git version and build info\nhelp.c\nefbace64 641) strbuf_addstr(buf, \"no commit associated with this build\\n\");\n\nJiang Xin\tbc3e2729 receive-pack: add new proc-receive hook\nbuiltin/receive-pack.c\nbc3e2729 1019) return code;\nbc3e2729 1022) proc.err = 0;\nbc3e2729 1027) if (use_sideband)\nbc3e2729 1028) finish_async(&muxer);\nbc3e2729 1029) return code;\nbc3e2729 2243) packet_buf_write(&buf, \"ng %s %s%c%s\\n\",\nbc3e2729 2244)  cmd->ref_name, cmd->error_string,\n\nt/helper/test-proc-receive.c\nbc3e2729 127) usage_msg_opt(\"Too many arguments.\", proc_receive_usage, options);\nbc3e2729 167) *p = '\\0';\nbc3e2729 168) p += 2;\nbc3e2729 169) packet_write_fmt(1, \"%s%c%s\\n\", item->string, '\\0', p);\n\nJiang Xin\td131afc3 send-pack: extension for client-side status report\nremote.c\nd131afc3 2385) return;\n\ntransport-helper.c\nd131afc3 756) status = REF_STATUS_UPTODATE;\nd131afc3 757) FREE_AND_NULL(msg);\nd131afc3 764) status = REF_STATUS_REJECT_ALREADY_EXISTS;\nd131afc3 765) FREE_AND_NULL(msg);\nd131afc3 768) status = REF_STATUS_REJECT_FETCH_FIRST;\nd131afc3 769) FREE_AND_NULL(msg);\nd131afc3 772) status = REF_STATUS_REJECT_NEEDS_FORCE;\nd131afc3 773) FREE_AND_NULL(msg);\nd131afc3 776) status = REF_STATUS_REJECT_STALE;\nd131afc3 777) FREE_AND_NULL(msg);\nd131afc3 780) forced = 1;\n\ntransport.c\nd131afc3 481) fprintf(stdout, \"%c\\t:%s\\t\", flag,\n\nJiang Xin\t2c26d674 receive-pack: new config receive.procReceiveRefs\nbuiltin/receive-pack.c\n2c26d674 237) return config_error_nonbool(var);\n2c26d674 1812) continue;\n\nKarsten Blees\tdefd7c7b dir.c: git-status --ignored: don't scan the work tree three times\ndir.c\ndefd7c7b 2177) return path_none;\n\nPatrick Steinhardt\tedc30691 refs: fix segfault when aborting empty transaction\nrefs/files-backend.c\nedc30691 2572) strbuf_release(&err);\n\nPatrick Steinhardt\ta65b8ac2 update-ref: organize commands in an array\nbuiltin/update-ref.c\na65b8ac2 419) continue;\n\nPhillip Wood\tcd5e0fd9 Revert \"Revert \"Merge branch 'ra/rebase-i-more-options'\"\"\nbuiltin/rebase.c\ncd5e0fd9 834) argv_array_push(&am.args, \"--ignore-whitespace\");\ncd5e0fd9 836) argv_array_push(&opts->git_am_opts, \"--committer-date-is-author-date\");\ncd5e0fd9 838) argv_array_push(&opts->git_am_opts, \"--ignore-date\");\n\nsequencer.c\ncd5e0fd9 877) return NULL;\ncd5e0fd9 1394) goto out;\ncd5e0fd9 1398) goto out;\ncd5e0fd9 1474) res = -1;\ncd5e0fd9 1475) goto out;\n\nTaylor Blau\tfdbde82f builtin/commit-graph.c: introduce split strategy 'no-merge'\ncommit-graph.c\nfdbde82f 1777) break;\n\n\n\nUncovered code in 'jch' not in 'next'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nbrian m. carlson\tedc6dccf builtin/receive-pack: use constant-time comparison for HMAC value\nbuiltin/receive-pack.c\nedc6dccf 566) retval = NONCE_BAD;\nedc6dccf 567) goto leave;\n\nDenton Liu\t9460fd48 Lib-ify prune-packed\nprune-packed.c\n9460fd48 26) printf(\"rm -f %s\\n\", path);\n9460fd48 35) progress = start_delayed_progress(_(\"Removing duplicate objects\"), 256);\n\nDenton Liu\tce6521e4 Lib-ify fmt-merge-msg\nfmt-merge-msg.c\nce6521e4 24) use_branch_desc = git_config_bool(key, value);\nce6521e4 75) continue;\nce6521e4 107) return 1;\nce6521e4 113) return 2;\nce6521e4 117) return 3;\nce6521e4 126) line[len - 1] = 0;\nce6521e4 167) origin = src;\nce6521e4 168) string_list_append(&src_data->generic, line);\nce6521e4 169) src_data->head_status |= 2;\nce6521e4 188) return;\nce6521e4 201) static void add_branch_desc(struct strbuf *out, const char *name)\nce6521e4 203) struct strbuf desc = STRBUF_INIT;\nce6521e4 205) if (!read_branch_desc(&desc, name)) {\nce6521e4 206) const char *bp = desc.buf;\nce6521e4 207) while (*bp) {\nce6521e4 208) const char *ep = strchrnul(bp, '\\n');\nce6521e4 209) if (*ep)\nce6521e4 210) ep++;\nce6521e4 211) strbuf_addf(out, \"  : %.*s\", (int)(ep - bp), bp);\nce6521e4 212) bp = ep;\nce6521e4 214) strbuf_complete_line(out);\nce6521e4 216) strbuf_release(&desc);\nce6521e4 217) }\nce6521e4 231) return;\nce6521e4 239) return;\nce6521e4 276) else if (people->nr)\nce6521e4 277) strbuf_addf(out, \"%s (%d) and others\",\nce6521e4 278)     people->items[0].string,\nce6521e4 279)     (int)util_as_integral(&people->items[0]));\nce6521e4 342) return;\nce6521e4 355) if (opts->credit_people)\nce6521e4 356) record_person('c', &committers, commit);\nce6521e4 372) string_list_append(&subjects,\nce6521e4 373)    oid_to_hex(&commit->object.oid));\nce6521e4 387) add_branch_desc(out, name);\nce6521e4 425) subsep = \", \";\nce6521e4 426) strbuf_addstr(out, \"HEAD\");\nce6521e4 446) strbuf_addstr(out, subsep);\nce6521e4 447) print_joined(\"commit \", \"commits \", &src_data->generic,\nce6521e4 507) if (tag_number == 2) {\nce6521e4 508) struct strbuf tagline = STRBUF_INIT;\nce6521e4 509) strbuf_addch(&tagline, '\\n');\nce6521e4 510) strbuf_add_commented_lines(&tagline,\nce6521e4 511) origins.items[first_tag].string,\nce6521e4 512) strlen(origins.items[first_tag].string));\nce6521e4 513) strbuf_insert(&tagbuf, 0, tagline.buf,\nce6521e4 515) strbuf_release(&tagline);\nce6521e4 517) strbuf_addch(&tagbuf, '\\n');\nce6521e4 518) strbuf_add_commented_lines(&tagbuf,\nce6521e4 519) origins.items[i].string,\nce6521e4 520) strlen(origins.items[i].string));\nce6521e4 521) fmt_tag_signature(&tagbuf, &sig, buf, len);\nce6521e4 566) continue;\n\nDerrick Stolee\tefb0e3a0 blame: use changed-path Bloom filters\nblame.c\nefb0e3a0 1276) if (origin->commit->generation == GENERATION_NUMBER_INFINITY)\nefb0e3a0 1277) return 1;\nefb0e3a0 1279) filter = get_bloom_filter(r, origin->commit, 0);\nefb0e3a0 1281) if (!filter)\nefb0e3a0 1282) return 1;\nefb0e3a0 1284) bloom_count_queries++;\nefb0e3a0 1285) for (i = 0; i < bd->nr; i++) {\nefb0e3a0 1286) if (bloom_filter_contains(filter,\nefb0e3a0 1287)   bd->keys[i],\nefb0e3a0 1288)   bd->settings))\nefb0e3a0 1289) return 1;\nefb0e3a0 1292) bloom_count_no++;\nefb0e3a0 1293) return 0;\nefb0e3a0 1302) if (bd->nr >= bd->alloc) {\nefb0e3a0 1303) bd->alloc *= 2;\nefb0e3a0 1304) REALLOC_ARRAY(bd->keys, bd->alloc);\nefb0e3a0 1307) bd->keys[bd->nr] = xmalloc(sizeof(struct bloom_key));\nefb0e3a0 1308) fill_bloom_key(path, strlen(path), bd->keys[bd->nr], bd->settings);\nefb0e3a0 1309) bd->nr++;\nefb0e3a0 2903) bd = xmalloc(sizeof(struct blame_bloom_data));\nefb0e3a0 2905) bd->settings = sb->repo->objects->commit_graph->bloom_filter_settings;\nefb0e3a0 2907) bd->alloc = 4;\nefb0e3a0 2908) bd->nr = 0;\nefb0e3a0 2909) ALLOC_ARRAY(bd->keys, bd->alloc);\nefb0e3a0 2911) add_bloom_key(bd, path);\nefb0e3a0 2913) sb->bloom_data = bd;\nefb0e3a0 2920) for (i = 0; i < sb->bloom_data->nr; i++) {\nefb0e3a0 2921) free(sb->bloom_data->keys[i]->hashes);\nefb0e3a0 2922) free(sb->bloom_data->keys[i]);\nefb0e3a0 2924) free(sb->bloom_data->keys);\nefb0e3a0 2925) FREE_AND_NULL(sb->bloom_data);\nefb0e3a0 2927) trace2_data_intmax(\"blame\", sb->repo,\nefb0e3a0 2929) trace2_data_intmax(\"blame\", sb->repo,\n\nDerrick Stolee\t88d2bac8 revision: complicated pathspecs disable filters\nrevision.c\n88d2bac8 658) return 1;\n88d2bac8 662) return 1;\n\nDerrick Stolee\te3696980 diff: halt tree-diff early after max_changes\ntree-diff.c\ne3696980 438) break;\n\nDerrick Stolee\t72ca4f9b commit: write commit-graph with Bloom filters\ncommit-graph.c\n72ca4f9b 1979) ctx->changed_paths = 1;\n\nGarima Singh\t76ffbca7 commit-graph: write Bloom filters to commit graph file\ncommit-graph.c\n76ffbca7 335) chunk_repeated = 1;\n76ffbca7 342) chunk_repeated = 1;\n76ffbca7 349) break;\n76ffbca7 1091) progress = start_delayed_progress(\n76ffbca7 1093) ctx->commits.nr);\n76ffbca7 1116) progress = start_delayed_progress(\n76ffbca7 1118) ctx->commits.nr);\n\nGarima Singh\t3d112755 commit-graph: examine commits by generation number\ncommit-graph.c\n3d112755 95) return -1;\n3d112755 98) return 0;\n3d112755 1300) QSORT(sorted_commits, ctx->commits.nr, commit_pos_cmp);\n\nGarima Singh\ta56b9464 revision.c: use Bloom filters to speed up path based revision walks\nbloom.c\na56b9464 266) return -1;\n\nrevision.c\na56b9464 721) return -1;\na56b9464 724) return -1;\na56b9464 735) return -1;\n\nGarima Singh\ted591feb bloom.c: core Bloom filter implementation for changed paths.\nbloom.c\ned591feb 172) return NULL;\ned591feb 246) for (i = 0; i < diff_queued_diff.nr; i++)\ned591feb 247) diff_free_filepair(diff_queued_diff.queue[i]);\ned591feb 248) filter->data = NULL;\ned591feb 249) filter->len = 0;\n\nGarima Singh\t42e50e78 revision.c: add trace2 stats around Bloom filter usage\nrevision.c\n42e50e78 734) count_bloom_filter_length_zero++;\n\nGarima Singh\tf1294eaf bloom.c: introduce core Bloom filter constructs\nt/helper/test-bloom.c\nf1294eaf 25) printf(\"No filter.\\n\");\nf1294eaf 26) return;\n\nGarima Singh\tf97b9325 commit-graph: compute Bloom filters for changed paths\ncommit-graph.c\nf97b9325 1292) progress = start_delayed_progress(\nf97b9325 1294) ctx->commits.nr);\n\nJeff King\t348482de config: reject parsing of files over INT_MAX\nconfig.c\n348482de 537) cf->eof = 1;\n348482de 538) return 0;\n\nJeff King\td8410a81 fast-import: replace custom hash with hashmap.c\nfast-import.c\nd8410a81 60) e2 = container_of(entry_or_key, const struct object_entry, ent);\nd8410a81 61) return oidcmp(&e1->idx.oid, &e2->idx.oid);\n\nJeff King\td21ee7d1 commit-graph: examine changed-path objects in pack order\ncommit-graph.c\nd21ee7d1 69) return; /* should never happen, but be lenient */\nd21ee7d1 74) static int commit_pos_cmp(const void *va, const void *vb)\nd21ee7d1 76) const struct commit *a = *(const struct commit **)va;\nd21ee7d1 77) const struct commit *b = *(const struct commit **)vb;\nd21ee7d1 78) return commit_pos_at(&commit_pos, a) -\nd21ee7d1 79)        commit_pos_at(&commit_pos, b);\n\nJonathan Tan\t95acf11a diff: restrict when prefetching occurs\ndiffcore-rename.c\n95acf11a 137) static void prefetch(void *prefetch_options)\n95acf11a 139) struct prefetch_options *options = prefetch_options;\n95acf11a 141) struct oid_array to_fetch = OID_ARRAY_INIT;\n95acf11a 143) for (i = 0; i < rename_dst_nr; i++) {\n95acf11a 144) if (rename_dst[i].pair)\n95acf11a 149) continue; /* already found exact match */\n95acf11a 150) diff_add_if_missing(options->repo, &to_fetch,\n95acf11a 151)     rename_dst[i].two);\n95acf11a 153) for (i = 0; i < rename_src_nr; i++) {\n95acf11a 154) if (options->skip_unmodified &&\n95acf11a 155)     diff_unmodified_pair(rename_src[i].p))\n95acf11a 160) continue;\n95acf11a 161) diff_add_if_missing(options->repo, &to_fetch,\n95acf11a 162)     rename_src[i].p->one);\n95acf11a 164) promisor_remote_get_direct(options->repo, to_fetch.oid, to_fetch.nr);\n95acf11a 165) oid_array_clear(&to_fetch);\n95acf11a 166) }\n\nJunio C Hamano\t4cdae8d2 Merge branch 'dl/libify-a-few' into jch\nfmt-merge-msg.c\n4cdae8d2 498) strbuf_addstr(&sig, \"gpg verification failed.\\n\");\n\n\n\nUncovered code in 'next' not in 'master'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nÆvar Arnfjörð Bjarmason\t5cc044e0 get_short_oid: sort ambiguous objects by type, then SHA-1\noid-array.c\n5cc044e0 56) return ret;\n\nbrian m. carlson\t910650d2 Rename sha1_array to oid_array\nt/helper/test-oid-array.c\n910650d2 29) oid_array_clear(&array);\n\nDamien Robert\t1fec6fa2 remote.c: fix handling of %(push:remoteref)\nremote.c\n1fec6fa2 1656) return NULL;\n1fec6fa2 1663) return branch->refname;\n1fec6fa2 1681) return NULL;\n1fec6fa2 1808) return NULL;\n\nDamien Robert\te3165570 remote.c: fix %(push) for triangular workflows\nremote.c\ne3165570 1766) return NULL;\n\nDenton Liu\t7cd54d37 wrapper: indent with tabs\nwrapper.c\n7cd54d37 221) len = MAX_IO_SIZE;\n7cd54d37 243) len = MAX_IO_SIZE;\n\nElijah Newren\tb9cbd295 rebase: reinstate --no-keep-empty\nsequencer.c\nb9cbd295 4674) continue;\n\nElijah Newren\t7af7a258 unpack-trees: add a new update_sparsity() function\nunpack-trees.c\n7af7a258 1847) ret = UPDATE_SPARSITY_WORKTREE_UPDATE_FAILURES;\n\nJeff King\t16ddcd40 sha1_array: let callbacks interrupt iteration\noid-array.c\n16ddcd40 76) return ret;\n\nJosh Steadmon\t3d3adaad trace2: teach Git to log environment variables\ntrace2/tr2_cfg.c\n3d3adaad 63) return tr2_cfg_env_vars_count;\n\n\n\nUncovered code in 'master' not in 'master@{1}'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\n\n"},{"id":"395605","messageId":"20200416163200.GA78342@syl.local","threadId":"53245","inReplyTo":"c797df50-ec21-98a3-58c4-ade0c04284c9@gmail.com","subject":"Re: Git Test Coverage Report (April 16, 2020)","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2020-04-16T16:32:00Z","receivedAt":"2020-04-16T16:32:10Z","isPatch":false,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"Hi Stolee,\n\nOn Thu, Apr 16, 2020 at 09:57:07AM -0400, Derrick Stolee wrote:\n> Here is today's test coverage report.\n>\n> Thanks,\n> -Stolee\n>\n> [1] https://derrickstolee.github.io/git-test-coverage/reports/2020-04-16-commits.txt\n> [2] https://derrickstolee.github.io/git-test-coverage/reports/2020-04-16.txt\n> [3] https://derrickstolee.github.io/git-test-coverage/reports/2020-04-16.htm\n>\n> ---\n>\n> pu\t89b51f611e0e8e10d254fbbfd738adc6d1ea1764\n> jch\tc58d47de3eb380e6178eb51a4dc97aa59ddd5ea8\n> next\t55bc3eb7cb9c200ab95bbd2415bc0a35fbf29053\n> master\tefe3874640e2e58209ddbb3b072f48f6b7094f34\n> master@{1}\t9fadedd637b312089337d73c3ed8447e9f0aa775\n>\n>\n> Uncovered code in 'pu' not in 'jch'\n> --------------------------------------------------------\n>\n> Taylor Blau\tfdbde82f builtin/commit-graph.c: introduce split strategy 'no-merge'\n> commit-graph.c\n> fdbde82f 1777) break;\n>\n\nGood, it looks like the other spot that I was worried about went away.\nThat was easy ;).\n\nThanks,\nTaylor\n"}]}