threads / discuss / 49699

Git Test Coverage Report (Saturday, Oct 27)

Subject: Git Test Coverage Report (Saturday, Oct 27)

## tl;dr

4 messages between Oct 27, 2018 and Oct 27, 2018.

replies: 3people: 3as markdown or json

Derrick Stolee· Oct 27, 2018, 13:27 UTC · lore

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 ignores lines including "BUG(".

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

         pu: a5dda2204a27a14f65171e29307400194b522051
        jch: 280dd2581eb7191db037cf1243dd64fd200455ba
       next: 0250525e6984e0e5e803c7e2e3417279b036f1c9
     master: c670b1f876521c9f7cd40184bf7ed05aad843433
master@{1}: c4df23f7927d8d00e666a3c8d1b3375f1dc8a3c1

Uncovered in pu not in jch -------------------------- (Note: t4041-diff-submodule-option.sh failed with extra test options, so some lines that would be covered by that test run were not covered.)

builtin/blame.c a5dda2204a builtin/blame.c    200) repo_unuse_commit_buffer(the_repository, commit, message); 74e8221b52 builtin/blame.c    924) blame_date_width = sizeof("Thu Oct 19 16:00"); 74e8221b52 builtin/blame.c    925) break;

builtin/describe.c a5dda2204a builtin/describe.c 257) repo_parse_commit(the_repository, p);

builtin/fsck.c b29759d89a builtin/fsck.c 613) fprintf(stderr, "Checking %s link\n", head_ref_name); b29759d89a builtin/fsck.c 618) return error("Invalid %s", head_ref_name);

builtin/grep.c c22b820141 builtin/grep.c  442) grep_read_unlock();

builtin/pack-objects.c a5dda2204a builtin/pack-objects.c 2852) if (!repo_has_object_file(the_repository, &obj->oid) && is_promisor_object(&obj->oid))

builtin/rebase--interactive.c 6424061be4 builtin/rebase--interactive.c   23) return error_errno(_("could not read '%s'."), todo_file); 6424061be4 builtin/rebase--interactive.c   28) return error_errno(_("could not write '%s'"), todo_file); 7ccfac40bc builtin/rebase--interactive.c   43) return error_errno(_("could not read '%s'."), todo_file); 7ccfac40bc builtin/rebase--interactive.c   46) todo_list_release(&todo_list); 7ccfac40bc builtin/rebase--interactive.c   47) return error(_("unusable todo list: '%s'"), todo_file); 9787d17d40 builtin/rebase--interactive.c  294) ret = rearrange_squash_in_todo_file();

builtin/reflog.c c9ef0d95eb builtin/reflog.c 581) all_worktrees = 0; c9ef0d95eb builtin/reflog.c 617) continue;

date.c 74e8221b52  113) die("Timestamp too large for this system: %"PRItime, time); 74e8221b52  216) if (tm->tm_mon == human_tm->tm_mon) { 74e8221b52  217) if (tm->tm_mday > human_tm->tm_mday) { 74e8221b52  219) } else if (tm->tm_mday == human_tm->tm_mday) { 74e8221b52  220) hide.date = hide.wday = 1; 74e8221b52  221) } else if (tm->tm_mday + 5 > human_tm->tm_mday) { 74e8221b52  223) hide.date = 1; 74e8221b52  231) gettimeofday(&now, NULL); 74e8221b52  232) show_date_relative(time, tz, &now, buf); 74e8221b52  233) return; 74e8221b52  246) hide.seconds = 1; 74e8221b52  247) hide.tz |= !hide.date; 74e8221b52  248) hide.wday = hide.time = !hide.year; 74e8221b52  262) strbuf_rtrim(buf); 74e8221b52  287) gettimeofday(&now, NULL); 74e8221b52  290) human_tz = local_time_tzoffset(now.tv_sec, &human_tm); 74e8221b52  886) static int auto_date_style(void) 74e8221b52  888) return (isatty(1) || pager_in_use()) ? DATE_HUMAN : DATE_NORMAL; 74e8221b52  909) return DATE_HUMAN; 74e8221b52  911) return auto_date_style();

fsck.c a5dda2204a  858) repo_unuse_commit_buffer(the_repository, commit, buffer); a5dda2204a  878) repo_read_object_file(the_repository, a5dda2204a  879)       &tag->object.oid, &type, &size);

http-push.c a5dda2204a 1635) if (!repo_has_object_file(the_repository, &head_oid)) a5dda2204a 1642) if (!repo_has_object_file(the_repository, &remote_ref->old_oid))

merge-recursive.c 4cdc48e412 1585) return -1; 4cdc48e412 1588) return -1; 4cdc48e412 1594) return -1; 4cdc48e412 1596) if (update_file(o, 1, b_oid, b_mode, collide_path)) 4cdc48e412 1597) return -1; 4cdc48e412 1664) return -1; 4cdc48e412 1667) return -1; 4cdc48e412 1670) return -1; b58ae691c0 1703) return -1; 387361a6a7 1738) return -1; 387361a6a7 1786) return -1; 387361a6a7 1795) new_path = unique_path(o, a->path, ci->branch1); 387361a6a7 1796) output(o, 1, _("Refusing to lose untracked file" 387361a6a7 1802) return -1; 387361a6a7 1805) return -1; 387361a6a7 1815) return -1; 387361a6a7 1831) return -1; 387361a6a7 1834) return -1;

midx.c 1dcd9f2043  184) return;

negotiator/default.c a5dda2204a  71) if (repo_parse_commit(the_repository, commit))

packfile.c dc7d664335  350) close_midx(o->multi_pack_index); dc7d664335  351) o->multi_pack_index = NULL;

rebase-interactive.c b74a37a5a7  26) warning(_("unrecognized setting %s for option " 6424061be4 107) return error_errno(_("could not write '%s''"), todo_file); 6424061be4 110) return error(_("could not copy '%s' to '%s'."), todo_file, b74a37a5a7 174) goto leave_check;

refs.c 3a3b9d8cde  657) return 0;

refs/files-backend.c revision.c a5dda2204a  726) if (repo_parse_commit(the_repository, p) < 0)

sequencer.c a5dda2204a 1597) repo_unuse_commit_buffer(the_repository, head_commit, a5dda2204a 3821) repo_unuse_commit_buffer(the_repository, b5d6062402 4486) strbuf_insert(buf, todo_list->items[insert].offset_in_buf + b5d6062402 4498) int sequencer_add_exec_commands(const char *commands) 06d8136126 4505) return error_errno(_("could not read '%s'."), todo_file); b5d6062402 4507) if (todo_list_parse_insn_buffer(todo_list.buf.buf, &todo_list)) { b5d6062402 4512) todo_list_add_exec_commands(&todo_list, commands); b5d6062402 4513) res = write_message(todo_list.buf.buf, todo_list.buf.len, todo_file, 0); 0cce4a2756 4514) todo_list_release(&todo_list); b5d6062402 4516) return res; b74a37a5a7 4576) goto out; b74a37a5a7 4581) goto out; b8dac44d10 4721) todo_list_release(&new_todo); 009173ed7b 4726) todo_list_release(&new_todo); 009173ed7b 4727) return error_errno(_("could not write '%s'"), todo_file); 9787d17d40 4921) int rearrange_squash_in_todo_file(void) 9787d17d40 4923) const char *todo_file = rebase_path_todo(); 9787d17d40 4924) struct todo_list todo_list = TODO_LIST_INIT; 9787d17d40 4925) int res = 0; 9787d17d40 4927) if (strbuf_read_file_or_whine(&todo_list.buf, todo_file) < 0) 9787d17d40 4928) return -1; 9787d17d40 4929) if (todo_list_parse_insn_buffer(todo_list.buf.buf, &todo_list) < 0) { 9787d17d40 4930) todo_list_release(&todo_list); 9787d17d40 4931) return -1; 9787d17d40 4934) res = todo_list_rearrange_squash(&todo_list); 9787d17d40 4935) if (!res) 9787d17d40 4936) res = rewrite_file(todo_file, todo_list.buf.buf, todo_list.buf.len); 9787d17d40 4938) todo_list_release(&todo_list);

setup.c 58b284a2e9  413) return config_error_nonbool(var);

sha1-array.c 7fdf90d541 91) oidcpy(&oids[dst], &oids[src]);

submodule-config.c bcbc780d14 740) return CONFIG_INVALID_KEY; 45f5ef3d77 755) warning(_("Could not update .gitmodules entry %s"), key);

submodule.c b303ef65e7  524) the_repository->submodule_prefix : 060675d4fc 1378) strbuf_release(&gitdir); 183be9660a 1501) struct get_next_submodule_task *task = task_cb; 183be9660a 1505) get_next_submodule_task_release(task); 183be9660a 1532) return 0; 183be9660a 1536) goto out; 183be9660a 1551) return 0;

tree.c a5dda2204a 108) if (repo_parse_commit(the_repository, commit))

worktree.c 3a3b9d8cde 495) return -1; 3a3b9d8cde 508) return -1; 3a3b9d8cde 517) return -1; ab3e1f78ae 537) break;

wrapper.c 5efde212fc  70) die("Out of memory, malloc failed (tried to allocate %" PRIuMAX " bytes)", 5efde212fc  73) error("Out of memory, malloc failed (tried to allocate %" PRIuMAX " bytes)",

Commits introducing uncovered code: Alban Gruin      009173ed7: sequencer: change complete_action() to use the refactored functions Alban Gruin      06d813612: sequencer: fix a call to error() in transform_todo_file() Alban Gruin      6424061be: rebase-interactive: rewrite edit_todo_list() to handle the initial edit Alban Gruin      7ccfac40b: rebase--interactive: move transform_todo_file() to rebase--interactive.c Alban Gruin      9787d17d4: sequencer: refactor rearrange_squash() to work on a todo_list Alban Gruin      b5d606240: sequencer: refactor sequencer_add_exec_commands() to work on a todo_list Alban Gruin      b74a37a5a: sequencer: refactor check_todo_list() to work on a todo_list Alban Gruin      b8dac44d1: sequencer: refactor skip_unnecessary_picks() to work on a todo_list Antonio Ospite      45f5ef3d7: submodule: factor out a config_set_in_gitmodules_file_gently function Antonio Ospite      bcbc780d1: submodule: add a print_config_from_gitmodules() helper Antonio Ospite      c22b82014: submodule: support reading .gitmodules when it's not in the working tree Derrick Stolee      1dcd9f204: midx: close multi-pack-index on repack Derrick Stolee      dc7d66433: packfile: close multi-pack-index in close_all_packs Elijah Newren      387361a6a: merge-recursive: improve rename/rename(1to2)/add[/add] handling Elijah Newren      4cdc48e41: merge-recursive: new function for better colliding conflict resolutions Elijah Newren      b58ae691c: merge-recursive: fix rename/add conflict handling Junio C Hamano      a5dda2204: treewide: apply cocci patch Liam Beguin      0cce4a275: rebase -i -x: add exec commands via the rebase--helper Linus Torvalds      74e8221b5: Add 'human' date format Martin Koegler      5efde212f: zlib.c: use size_t for size Nguyễn Thái Ngọc Duy      3a3b9d8cd: refs: new ref types to make per-worktree refs visible to all worktrees Nguyễn Thái Ngọc Duy      58b284a2e: worktree: add per-worktree config files Nguyễn Thái Ngọc Duy      ab3e1f78a: revision.c: better error reporting on ref from different worktrees Nguyễn Thái Ngọc Duy      b29759d89: fsck: check HEAD and reflog from other worktrees Nguyễn Thái Ngọc Duy      c9ef0d95e: reflog expire: cover reflog from all worktrees Stefan Beller      060675d4f: submodule: migrate get_next_submodule to use repository structs Stefan Beller      183be9660: fetch: try fetching submodules if needed objects were not fetched Stefan Beller      7fdf90d54: sha1-array: provide oid_array_filter Stefan Beller      b303ef65e: submodule: use submodule repos for object lookup

Uncovered in jch not in next ----------------------------

builtin/branch.c 0ecb1fc726 builtin/branch.c 452) die(_("could not resolve HEAD")); 0ecb1fc726 builtin/branch.c 458) die(_("HEAD (%s) points outside of refs/heads/"), refname);

builtin/fetch.c c806111692 builtin/fetch.c  373) continue; /* can this happen??? */

builtin/stash.c 3d5ec65ce8 builtin/stash--helper.c  126) error(_("'%s' is not a stash-like commit"), revision); 3d5ec65ce8 builtin/stash--helper.c  127) free_stash_info(info); 3d5ec65ce8 builtin/stash--helper.c  128) exit(128); 3d5ec65ce8 builtin/stash--helper.c  161) free_stash_info(info); 3d5ec65ce8 builtin/stash--helper.c  162) fprintf_ln(stderr, _("No stash entries found.")); 3d5ec65ce8 builtin/stash--helper.c  163) return -1; 3d5ec65ce8 builtin/stash--helper.c  198) free_stash_info(info); 7005771171 builtin/stash--helper.c  225) return error(_("git stash clear with parameters is " 3d5ec65ce8 builtin/stash--helper.c  241) return -1; 3d5ec65ce8 builtin/stash--helper.c  249) return -1; 3d5ec65ce8 builtin/stash--helper.c  262) return -1; 3d5ec65ce8 builtin/stash--helper.c  265) return error(_("unable to write new index file")); 3d5ec65ce8 builtin/stash--helper.c  377) remove_path(stash_index_path.buf); 3d5ec65ce8 builtin/stash--helper.c  378) return -1; 3d5ec65ce8 builtin/stash--helper.c  405) return -1; 3d5ec65ce8 builtin/stash--helper.c  408) return error(_("cannot apply a stash in the middle of a merge")); 3d5ec65ce8 builtin/stash--helper.c  418) strbuf_release(&out); 3d5ec65ce8 builtin/stash--helper.c  419) return error(_("Could not generate diff %s^!."), 3d5ec65ce8 builtin/stash--helper.c  426) return error(_("Conflicts in index." 3d5ec65ce8 builtin/stash--helper.c  432) return error(_("Could not save index tree")); 3d5ec65ce8 builtin/stash--helper.c  439) return error(_("could not restore untracked files from stash")); 3d5ec65ce8 builtin/stash--helper.c  470) return -1; 3d5ec65ce8 builtin/stash--helper.c  475) strbuf_release(&out); 3d5ec65ce8 builtin/stash--helper.c  480) strbuf_release(&out); 3d5ec65ce8 builtin/stash--helper.c  481) return -1; 7005771171 builtin/stash--helper.c  557) return error(_("%s: Could not drop stash entry"), 5bf62a19c0 builtin/stash--helper.c  632) printf_ln(_("The stash entry is kept in case " 104eb50d14 builtin/stash--helper.c  766) free_stash_info(&info); 193c3e3516 builtin/stash.c          767) usage_with_options(git_stash_show_usage, options); 813904a0ce builtin/stash--helper.c  783) stash_msg = "Created via \"git stash store\"."; 813904a0ce builtin/stash--helper.c  789) if (!quiet) { 813904a0ce builtin/stash--helper.c  790) fprintf_ln(stderr, _("Cannot update %s with %s"), 813904a0ce builtin/stash--helper.c  793) return -1; 813904a0ce builtin/stash--helper.c  817) if (!quiet) 813904a0ce builtin/stash--helper.c  818) fprintf_ln(stderr, _("\"git stash store\" requires one " 813904a0ce builtin/stash--helper.c  820) return -1; 9f630e7480 builtin/stash--helper.c  902) return -1; 9f630e7480 builtin/stash--helper.c  962) ret = -1; 9f630e7480 builtin/stash--helper.c  963) goto done; 9f630e7480 builtin/stash--helper.c  968) ret = -1; 9f630e7480 builtin/stash--helper.c  969) goto done; 9f630e7480 builtin/stash--helper.c  974) ret = -1; 9f630e7480 builtin/stash--helper.c  975) goto done; 9f630e7480 builtin/stash--helper.c 1001) ret = -1; 9f630e7480 builtin/stash--helper.c 1002) goto done; 9f630e7480 builtin/stash--helper.c 1013) ret = -1; 9f630e7480 builtin/stash--helper.c 1014) goto done; 9f630e7480 builtin/stash--helper.c 1020) ret = -1; 9f630e7480 builtin/stash--helper.c 1021) goto done; 9f630e7480 builtin/stash--helper.c 1028) ret = -1; 9f630e7480 builtin/stash--helper.c 1029) goto done; 9f630e7480 builtin/stash--helper.c 1054) ret = -1; 9f630e7480 builtin/stash--helper.c 1055) goto done; 9f630e7480 builtin/stash--helper.c 1067) ret = -1; 9f630e7480 builtin/stash--helper.c 1068) goto done; 9f630e7480 builtin/stash--helper.c 1074) ret = -1; 9f630e7480 builtin/stash--helper.c 1075) goto done; 9f630e7480 builtin/stash--helper.c 1086) ret = -1; 9f630e7480 builtin/stash--helper.c 1087) goto done; 9f630e7480 builtin/stash--helper.c 1092) ret = -1; 9f630e7480 builtin/stash--helper.c 1093) goto done; c2cc69f192 builtin/stash--helper.c 1128) fprintf_ln(stderr, _("You do not have " 9f630e7480 builtin/stash--helper.c 1137) ret = 1; 9f630e7480 builtin/stash--helper.c 1138) goto done; c2cc69f192 builtin/stash--helper.c 1154) if (!quiet) c2cc69f192 builtin/stash--helper.c 1155) fprintf_ln(stderr, _("Cannot save the current " 9f630e7480 builtin/stash--helper.c 1157) ret = -1; 9f630e7480 builtin/stash--helper.c 1158) goto done; c2cc69f192 builtin/stash--helper.c 1163) if (!quiet) c2cc69f192 builtin/stash--helper.c 1164) fprintf_ln(stderr, _("Cannot save " 9f630e7480 builtin/stash--helper.c 1166) ret = -1; 9f630e7480 builtin/stash--helper.c 1167) goto done; c2cc69f192 builtin/stash--helper.c 1174) if (!quiet) c2cc69f192 builtin/stash--helper.c 1175) fprintf_ln(stderr, _("Cannot save the current " 9f630e7480 builtin/stash--helper.c 1177) goto done; c2cc69f192 builtin/stash--helper.c 1183) if (!quiet) c2cc69f192 builtin/stash--helper.c 1184) fprintf_ln(stderr, _("Cannot save the current " 9f630e7480 builtin/stash--helper.c 1186) ret = -1; 9f630e7480 builtin/stash--helper.c 1187) goto done; c2cc69f192 builtin/stash--helper.c 1213) if (!quiet) c2cc69f192 builtin/stash--helper.c 1214) fprintf_ln(stderr, _("Cannot record " 9f630e7480 builtin/stash--helper.c 1216) ret = -1; 9f630e7480 builtin/stash--helper.c 1217) goto done; 1a0f0409a7 builtin/stash--helper.c 1289) ret = -1; 1a0f0409a7 builtin/stash--helper.c 1290) goto done; 1a0f0409a7 builtin/stash--helper.c 1300) ret = -1; c2cc69f192 builtin/stash--helper.c 1301) if (!quiet) c2cc69f192 builtin/stash--helper.c 1302) fprintf_ln(stderr, _("Cannot initialize stash")); 1a0f0409a7 builtin/stash--helper.c 1303) goto done; 1a0f0409a7 builtin/stash--helper.c 1313) ret = -1; c2cc69f192 builtin/stash--helper.c 1314) if (!quiet) c2cc69f192 builtin/stash--helper.c 1315) fprintf_ln(stderr, _("Cannot save the current status")); 1a0f0409a7 builtin/stash--helper.c 1316) goto done; 1a0f0409a7 builtin/stash--helper.c 1333) ret = -1; 1a0f0409a7 builtin/stash--helper.c 1352) ret = -1; 1a0f0409a7 builtin/stash--helper.c 1353) goto done; 1a0f0409a7 builtin/stash--helper.c 1362) ret = -1; 1a0f0409a7 builtin/stash--helper.c 1363) goto done; 1a0f0409a7 builtin/stash--helper.c 1371) ret = -1; 1a0f0409a7 builtin/stash--helper.c 1380) ret = -1; 1a0f0409a7 builtin/stash--helper.c 1391) ret = -1; 1a0f0409a7 builtin/stash--helper.c 1392) goto done; 1a0f0409a7 builtin/stash--helper.c 1401) ret = -1; 1a0f0409a7 builtin/stash--helper.c 1402) goto done; 1a0f0409a7 builtin/stash--helper.c 1410) ret = -1; 1a0f0409a7 builtin/stash--helper.c 1436) ret = -1; 193c3e3516 builtin/stash.c         1568) usage_msg_opt(xstrfmt(_("unknown subcommand: %s"), argv[0]), 193c3e3516 builtin/stash.c         1596) continue;

builtin/submodule--helper.c e0a862fdaf 1648) url = sub->url;

hex.c b3a41547ce  93) char *sha1_to_hex_r(char *buffer, const unsigned char *sha1) b3a41547ce  95) return hash_to_hex_algop_r(buffer, sha1, &hash_algos[GIT_HASH_SHA1]); b3a41547ce 116) char *hash_to_hex(const unsigned char *hash) b3a41547ce 118) return hash_to_hex_algop(hash, the_hash_algo);

revision.c a63d88e595 2932) return; a63d88e595 2935) return; a63d88e595 2941) c->object.flags |= UNINTERESTING; a63d88e595 2944) return; a63d88e595 2947) mark_parents_uninteresting(c); a63d88e595 2970) return; a63d88e595 2973) return; a63d88e595 2978) return; a63d88e595 3042) continue; f33f8de6af 3090) if (!revs->ignore_missing_links) f33f8de6af 3091) die("Failed to traverse parents of commit %s", a63d88e595 3092) oid_to_hex(&commit->object.oid)); a63d88e595 3100) continue;

sequencer.c 08b6ba5cc0  683) np = strchrnul(buf, '\n'); 08b6ba5cc0  684) return error(_("unable to parse '%.*s'"), 08b6ba5cc0  695) return error(_("unable to dequote value of '%s'"), 08b6ba5cc0  737) goto finish; 08b6ba5cc0  742) name_i = error(_("'GIT_AUTHOR_NAME' already given")); 08b6ba5cc0  747) email_i = error(_("'GIT_AUTHOR_EMAIL' already given")); 08b6ba5cc0  752) date_i = error(_("'GIT_AUTHOR_DATE' already given")); 08b6ba5cc0  756) err = error(_("unknown variable '%s'"), 08b6ba5cc0  761) error(_("missing 'GIT_AUTHOR_NAME'")); 08b6ba5cc0  763) error(_("missing 'GIT_AUTHOR_EMAIL'")); 08b6ba5cc0  765) error(_("missing 'GIT_AUTHOR_DATE'"));

sha1-file.c 2f90b9d9b4 sha1-file.c  172) int hash_algo_by_name(const char *name) 2f90b9d9b4 sha1-file.c  175) if (!name) 2f90b9d9b4 sha1-file.c  176) return GIT_HASH_UNKNOWN; 2f90b9d9b4 sha1-file.c  177) for (i = 1; i < GIT_HASH_NALGOS; i++) 2f90b9d9b4 sha1-file.c  178) if (!strcmp(name, hash_algos[i].name)) 2f90b9d9b4 sha1-file.c  179) return i; 2f90b9d9b4 sha1-file.c  180) return GIT_HASH_UNKNOWN; 2f90b9d9b4 sha1-file.c  183) int hash_algo_by_id(uint32_t format_id) 2f90b9d9b4 sha1-file.c  186) for (i = 1; i < GIT_HASH_NALGOS; i++) 2f90b9d9b4 sha1-file.c  187) if (format_id == hash_algos[i].format_id) 2f90b9d9b4 sha1-file.c  188) return i; 2f90b9d9b4 sha1-file.c  189) return GIT_HASH_UNKNOWN;

upload-pack.c 1d1243fe63 1403) deepen(INFINITE_DEPTH, data->deepen_relative, &data->shallows,

Commits introducing uncovered code: brian m. carlson      2f90b9d9b: sha1-file: provide functions to look up hash algorithms brian m. carlson      b3a41547c: hex: introduce functions to print arbitrary hashes Daniels Umanovskis      0ecb1fc72: branch: introduce --show-current display option Derrick Stolee      a63d88e59: revision.c: generation-based topo-order algorithm Derrick Stolee      f33f8de6a: revision.c: begin refactoring --topo-order logic Joel Teichroeb      3d5ec65ce: stash: convert apply to builtin Joel Teichroeb      5bf62a19c: stash: convert pop to builtin Joel Teichroeb      700577117: stash: convert drop and clear to builtin Jonathan Tan      1d1243fe6: upload-pack: make want_obj not global Junio C Hamano      c80611169: fetch: replace string-list used as a look-up table with a hashmap Paul-Sebastian Ungureanu      104eb50d1: stash: convert show to builtin Paul-Sebastian Ungureanu      193c3e351: stash: convert `stash--helper.c` into `stash.c` Paul-Sebastian Ungureanu      1a0f0409a: stash: convert push to builtin Paul-Sebastian Ungureanu      813904a0c: stash: convert store to builtin Paul-Sebastian Ungureanu      9f630e748: stash: convert create to builtin Paul-Sebastian Ungureanu      c2cc69f19: stash: make push -q quiet Phillip Wood      08b6ba5cc: add read_author_script() to libgit Stefan Beller      e0a862fda: submodule helper: convert relative URL to absolute URL if needed

Uncovered in next not in master -------------------------------

apply.c eccb5a5f3d 4071) return get_oid_hex(p->old_oid_prefix, oid);

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/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;

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  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"); 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); 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); 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")); 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")); 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/repack.c 2f0c9e9a9b 239) die("repack: Expecting full hex object ID lines only from pack-objects."); 2f0c9e9a9b 411) die("repack: Expecting full hex object ID lines only from pack-objects.");

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));

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

gpg-interface.c 4de9394dcb 155) break;

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

http.c 21084e84a4  316) free(http_ssl_backend); 21084e84a4  317) http_ssl_backend = xstrdup_or_null(value); 21084e84a4  318) return 0; 93aef7c79b  322) http_schannel_check_revoke = git_config_bool(var, value); 93aef7c79b  323) return 0; b67d40adbb  327) http_schannel_use_ssl_cainfo = git_config_bool(var, value); b67d40adbb  328) return 0; 93aef7c79b  833)     !http_schannel_check_revoke) { 93aef7c79b  835) curl_easy_setopt(result, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NO_REVOKE); b67d40adbb  883)     !http_schannel_use_ssl_cainfo) { b67d40adbb  884) curl_easy_setopt(result, CURLOPT_CAINFO, 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 list-objects.c f447a499db 200) ctx->show_object(obj, base->buf, ctx->show_data);

pretty.c 4de9394dcb 1264) if (c->signature_check.primary_key_fingerprint) 4de9394dcb 1265) strbuf_addstr(sb, c->signature_check.primary_key_fingerprint); 4de9394dcb 1266) break;

rebase-interactive.c 64a43cbd5d 62) return error_errno(_("could not read '%s'."), todo_file); 64a43cbd5d 66) strbuf_release(&buf); 64a43cbd5d 67) return -1; a9f5476fbc 75) return error_errno(_("could not read '%s'."), todo_file); a9f5476fbc 79) strbuf_release(&buf); a9f5476fbc 80) return -1; 64a43cbd5d 86) return -1;

ref-filter.c f0062d3b74 1035) v->s = xstrdup(""); f0062d3b74 1298) free((char *)to_free); f0062d3b74 1299) return xstrdup(""); f0062d3b74 1336) free((char *)to_free); f0062d3b74 1337) return xstrdup(""); f0062d3b74 1387) *s = xstrdup("="); f0062d3b74 1389) *s = xstrdup("<"); f0062d3b74 1514) ref->symref = xstrdup(""); f0062d3b74 1583) v->s = xstrdup("");

sequencer.c 65850686cf 2278) return; 65850686cf 2375) write_file(rebase_path_quiet(), "%s\n", quiet); 2c58483a59 3373) return error(_("could not checkout %s"), commit); 4df66c40b0 3387) return error(_("%s: not a valid OID"), orig_head); 71f82465b1 3407) fprintf(stderr, _("Stopped at HEAD\n")); b97e187364 4771) return -1; b97e187364 4774) return -1; b97e187364 4780) return error_errno(_("could not read '%s'."), todo_file); b97e187364 4783) todo_list_release(&todo_list); b97e187364 4784) return error(_("unusable todo list: '%s'"), todo_file); b97e187364 4803) todo_list_release(&todo_list); b97e187364 4804) return -1; b97e187364 4808) return error(_("could not copy '%s' to '%s'."), todo_file, b97e187364 4812) return error(_("could not transform the todo list")); b97e187364 4841) return error(_("could not transform the todo list")); b97e187364 4844) return error(_("could not skip unnecessary pick commands")); b97e187364 4850) return -1;

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

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

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 Brendan Forster      93aef7c79: http: add support for disabling SSL revocation checks in cURL brian m. carlson      2f0c9e9a9: builtin/repack: replace hard-coded constants brian m. carlson      eccb5a5f3: apply: rename new_sha1_prefix and old_sha1_prefix Johannes Schindelin      21084e84a: http: add support for selecting SSL backends at runtime Johannes Schindelin      71f82465b: rebase -i: introduce the 'break' command Johannes Schindelin      b67d40adb: http: when using Secure Channel, ignore sslCAInfo by default Johannes Schindelin      bc24382c2: builtin rebase: prepare for builtin rebase -i Josh Steadmon      e001fd3a5: archive: implement protocol v2 archive command Josh Steadmon      fb19d32f0: archive: allow archive over HTTP(S) with proto v2 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 Michał Górny      4de9394dc: gpg-interface.c: obtain primary key fingerprint as well Olga Telezhnaya      f0062d3b7: ref-filter: free item->value and item->value->s 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      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      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

Uncovered in mater not in master@{1} ------------------------------------

builtin/help.c e6e76baaf4 builtin/help.c 429) if (!exclude_guides || alias[0] == '!') { e6e76baaf4 builtin/help.c 430) printf_ln(_("'%s' is aliased to '%s'"), cmd, alias); e6e76baaf4 builtin/help.c 431) free(alias); e6e76baaf4 builtin/help.c 432) exit(0); e6e76baaf4 builtin/help.c 441) fprintf_ln(stderr, _("'%s' is aliased to '%s'"), cmd, alias); e6e76baaf4 builtin/help.c 442) count = split_cmdline(alias, &argv); e6e76baaf4 builtin/help.c 443) if (count < 0) e6e76baaf4 builtin/help.c 444) die(_("bad alias.%s string: %s"), cmd, e6e76baaf4 builtin/help.c 446) free(argv); e6e76baaf4 builtin/help.c 448) return alias;

git.c a9a60b94cc 322) fprintf_ln(stderr, _("'%s' is aliased to '%s'"),

ident.c 501afcb8b0 172) strbuf_addstr(&git_default_email, email); 501afcb8b0 173) free((char *)email);

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

split-index.c e3d837989e 335) ce->ce_flags |= CE_UPDATE_IN_BASE;

Commits introducing uncovered code: Johannes Schindelin      501afcb8b: mingw: use domain information for default email Josh Steadmon      1127a98cc: fuzz: add fuzz testing for packfile indices. Rasmus Villemoes      a9a60b94c: git.c: handle_alias: prepend alias info when first argument is -h Rasmus Villemoes      e6e76baaf: help: redirect to aliased commands for "git cmd --help" SZEDER Gábor      e3d837989: split-index: don't compare cached data of entries already marked for split index

Junio C Hamano· Oct 27, 2018, 13:55 UTC · re: Derrick Stolee · lore

Re: Git Test Coverage Report (Saturday, Oct 27)

Derrick Stolee <stolee@gmail.com> writes:
Show 5 quoted lines
> 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 ignores lines including "BUG(".
Thanks.
> Uncovered in mater not in master@{1}
> ------------------------------------

Does this typo indicate that some part of the process to produce and send out this report involve manual editing?

I noticed that my name appeared in this report, but I've updated the line to BUG(), so hopefully it would disappear from it again ;-).

Derrick Stolee· Oct 27, 2018, 19:47 UTC · re: Junio C Hamano · lore

Re: Git Test Coverage Report (Saturday, Oct 27)

On 10/27/2018 9:55 AM, Junio C Hamano wrote:
Show 7 quoted lines
> Derrick Stolee <stolee@gmail.com> writes:
>
>
>> Uncovered in mater not in master@{1}
>> ------------------------------------
> Does this typo indicate that some part of the process to produce and
> send out this report involve manual editing?

I kick off four builds with on Azure Pipelines [1], wait for the builds to finish, then copy the appropriate sections out of the output (trimming the timestamps). If I were more familiar with the Pipelines features, I'm pretty sure I could make four parallel jobs inside the same build that ran the tests on each branch, export the logs as artifacts, then auto-assemble the email at the end. I plan to do that soon, but I'm still keeping a close eye on the results to see when and where failures occur.

Thanks, -Stolee

[1] https://dev.azure.com/git/git/_build?definitionId=5
brian m. carlson· Oct 27, 2018, 19:10 UTC · re: Derrick Stolee · lore

Re: Git Test Coverage Report (Saturday, Oct 27)

On Sat, Oct 27, 2018 at 09:27:21AM -0400, Derrick Stolee wrote:
Show 5 quoted lines
> 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 ignores lines
> including "BUG(".
Thanks for producing this.
Show 5 quoted lines
> Commits introducing uncovered code:
> brian m. carlson      2f90b9d9b: sha1-file: provide functions to look up
> hash algorithms
> brian m. carlson      b3a41547c: hex: introduce functions to print arbitrary
> hashes

These two are expected. One this series makes its way to master, I'll send patches that use it in a bunch more places, and these functions will be adequately covered by multiple code paths.

Show 5 quoted lines
> Uncovered in next not in master
> -------------------------------
> 
> apply.c
> eccb5a5f3d 4071) return get_oid_hex(p->old_oid_prefix, oid);

This one is just a name change. However, I think it's interesting that this code path isn't covered in the normal case (and presumably isn't covered before my patch). From the comment, this appears to be limited to the case where the index line in the patch contains the full object ID.

I'll try to see if I can come up with a test to cover this case.
Show 5 quoted lines
> builtin/repack.c
> 2f0c9e9a9b 239) die("repack: Expecting full hex object ID lines only from
> pack-objects.");
> 2f0c9e9a9b 411) die("repack: Expecting full hex object ID lines only from
> pack-objects.");

These are a change solely in text from what was there before. Considering that git pack-objects would have to be modified to produce invalid data in order to trigger these (as discussed in the series that changed them), I think it's okay that these are uncovered.

-- 
brian m. carlson: Houston, Texas, US
OpenPGP: https://keybase.io/bk2204

← back to recent threads