pu 936d5c92bfb989d706cc1899b1cd6afc5bc9c0df
jch 0926ab8072b48968d05b0ebb9cc3d8043722ddc1
next 954a862665455a25876e1113bd865d43a26facce
master d966095db01190a2196e31195ea6fa0c722aa732
master@{1} origin/maint

Uncovered code in 'pu' not in 'jch'

pu 936d5c92bfb989d706cc1899b1cd6afc5bc9c0df
jch 0926ab8072b48968d05b0ebb9cc3d8043722ddc1

builtin/clone.c

2a53e0ba 752 error(_("failed to initialize sparse-checkout"));
2a53e0ba 753 result = 1;
2a53e0ba 1138 return 1;

builtin/rebase.c

1406adc0 1904 die(_("cannot combine '--rebase-merges' with "

builtin/sparse-checkout.c

71b11117 79 die(_("You need to resolve your current index first"));
71b11117 82 return 0;
f7fc70e0 130 error(_("failed to set extensions.worktreeConfig setting"));
f7fc70e0 131 return 1;
f7fc70e0 142 error(_("failed to enable core.sparseCheckout"));
f7fc70e0 143 return 1;
60fa6324 155 error(_("failed to enable core.sparseCheckoutCone"));
60fa6324 156 return 1;
f7fc70e0 197 return 1;
2e706347 325 rollback_lock_file(&lk);
2e706347 326 free(sparse_filename);
71b11117 327 clear_pattern_list(pl);
71b11117 328 update_working_directory(NULL);
71b11117 329 return result;
60fa6324 355 return;
f2882439 435 die(_("failed to change config"));
f2882439 444 die(_("error while refreshing working directory"));
1e2b195d 480 usage_with_options(builtin_sparse_checkout_usage,

dir.c

4d4f1c19 656 pl->use_cone_patterns = 0;
4d4f1c19 657 warning(_("unrecognized pattern: '%s'"), given->pattern);
4d4f1c19 658 goto clear_hashmaps;
4d4f1c19 680 hashmap_add(&pl->parent_hashmap, &translated->ent);
4d4f1c19 681 hashmap_remove(&pl->recursive_hashmap, &translated->ent, &data);
4d4f1c19 682 free(data);
4d4f1c19 683 return;
4d4f1c19 687 warning(_("unrecognized negative pattern: '%s'"),
4d4f1c19 689 goto clear_hashmaps;
4d4f1c19 703 warning(_("your sparse-checkout file may have issues: pattern '%s' is repeated"),
4d4f1c19 705 hashmap_remove(&pl->parent_hashmap, &translated->ent, &data);
4d4f1c19 706 free(data);
4d4f1c19 707 free(translated);

packfile.c

beebb9d2 1464 return;

protocol.c

6da1f1a9 37 die(_("Unrecognized protocol version"));
6da1f1a9 39 die(_("Unrecognized protocol_version"));
6da1f1a9 74 BUG("late attempt to register an allowed protocol version");

read-cache.c

ee70c128 1745 if (advice_unknown_index_extension) {
ee70c128 1746 warning(_("ignoring optional %.4s index extension"), ext);
ee70c128 1747 advise(_("This is likely due to the file having been written by a newer\n"

remote-curl.c

6da1f1a9 354 return 0;

sequencer.c

7c5b2e1d 832 free(kv.items[name_i].util);
7c5b2e1d 836 free(kv.items[email_i].util);
7c5b2e1d 840 free(kv.items[date_i].util);
ccafcb32 884 static char *read_author_date_or_null(void)
ccafcb32 888 if (read_author_script(rebase_path_author_script(),
ccafcb32 890 return NULL;
ccafcb32 891 return date;
7258d3d1 902 error(_("malformed ident line"));
7258d3d1 903 return NULL;
7258d3d1 912 static void push_dates(struct child_process *child)
7258d3d1 914 time_t now = time(NULL);
7258d3d1 915 struct strbuf date = STRBUF_INIT;
7258d3d1 917 strbuf_addf(&date, "@%"PRIuMAX, (uintmax_t)now);
7258d3d1 918 argv_array_pushf(&child->env_array, "GIT_AUTHOR_DATE=%s", date.buf);
7258d3d1 919 argv_array_pushf(&child->env_array, "GIT_COMMITTER_DATE=%s", date.buf);
7258d3d1 920 strbuf_release(&date);
7258d3d1 921 }
ccafcb32 983 int res = -1;
ccafcb32 984 struct strbuf datebuf = STRBUF_INIT;
ccafcb32 985 char *date = read_author_date_or_null();
ccafcb32 987 if (!date)
ccafcb32 988 return -1;
ccafcb32 990 strbuf_addf(&datebuf, "@%s", date);
ccafcb32 991 res = setenv("GIT_COMMITTER_DATE", datebuf.buf, 1);
ccafcb32 993 strbuf_release(&datebuf);
ccafcb32 994 free(date);
ccafcb32 996 if (res)
ccafcb32 997 return -1;
7258d3d1 1016 push_dates(&cmd);
ccafcb32 1425 return error(_("malformed ident line"));
ccafcb32 1427 return error(_("corrupted author without date information"));
7258d3d1 1485 res = -1;
7258d3d1 1486 goto out;
ccafcb32 2579 opts->allow_ff = 0;
ccafcb32 2580 opts->committer_date_is_author_date = 1;
7258d3d1 2584 opts->allow_ff = 0;
7258d3d1 2585 opts->ignore_date = 1;
7258d3d1 3610 push_dates(&cmd);

sha1-file.c

beebb9d2 1431 return;
beebb9d2 1440 return;

Commits introducing uncovered code:

Derrick Stolee 2a53e0ba clone: add --sparse mode
Derrick Stolee 71b11117 sparse-checkout: update working directory in-process
Derrick Stolee f7fc70e0 sparse-checkout: create 'init' subcommand
Derrick Stolee 60fa6324 sparse-checkout: init and set in cone mode
Derrick Stolee 2e706347 sparse-checkout: write using lockfile
Derrick Stolee f2882439 sparse-checkout: create 'disable' subcommand
Derrick Stolee 1e2b195d sparse-checkout: create builtin with 'list' subcommand
Derrick Stolee 4d4f1c19 sparse-checkout: use hashmaps for cone patterns
Jonathan Nieder ee70c128 index: offer advice for unknown index extensions
Josh Steadmon 6da1f1a9 protocol: advertise multiple supported versions
Matheus Tavares beebb9d2 object-store: allow threaded access to object reading
Rohit Ashiwal 1406adc0 rebase -i: add --ignore-whitespace flag
Rohit Ashiwal 7c5b2e1d sequencer: allow callers of read_author_script() to ignore fields
Rohit Ashiwal ccafcb32 rebase -i: support --committer-date-is-author-date
Rohit Ashiwal 7258d3d1 rebase -i: support --ignore-date

Uncovered code in 'jch' not in 'next'

jch 0926ab8072b48968d05b0ebb9cc3d8043722ddc1
next 954a862665455a25876e1113bd865d43a26facce

builtin/fsck.c

86d0d4b8 64 type = oid_object_info(the_repository, oid, NULL);
9828df75 125 BUG("%d (FSCK_IGNORE?) should never trigger this callback",
86d0d4b8 309 printf_ln(_("unreachable %s %s"),
86d0d4b8 310 printable_type(&obj->oid, obj->type),
86d0d4b8 311 describe_object(&obj->oid));
86d0d4b8 367 fprintf_ln(stderr, _("Checking %s"), describe_object(&obj->oid));
86d0d4b8 425 printable_type(&obj->oid, obj->type),
86d0d4b8 426 describe_object(&obj->oid));
86d0d4b8 439 describe_object(&commit->object.oid));

commit.c

c78fe004 466 return error("bad graft parent %s in commit %s",

fsck.c

bfd15918 400 fsck_put_object_name(options, &entry.oid, "%s%s/",
bfd15918 469 fsck_put_object_name(options, oid, "%s^%d",
bfd15918 472 fsck_put_object_name(options, oid, "%.*s~%d",
bfd15918 495 fsck_put_object_name(options, &tag->tagged->oid, "%s", name);
a3f8d23c 517 error("Unknown object type for %s",
cd896131 622 retval += report(options, oid, OBJ_TREE, FSCK_MSG_BAD_TREE, "cannot be parsed as a tree");
cd896131 669 retval += report(options, oid, OBJ_TREE, FSCK_MSG_FULL_PATHNAME, "contains full pathnames");
cd896131 671 retval += report(options, oid, OBJ_TREE, FSCK_MSG_EMPTY_NAME, "contains empty pathname");
cd896131 679 retval += report(options, oid, OBJ_TREE, FSCK_MSG_ZERO_PADDED_FILEMODE, "contains zero-padded file modes");
cd896131 681 retval += report(options, oid, OBJ_TREE, FSCK_MSG_BAD_FILEMODE, "contains bad file modes");
cd896131 685 retval += report(options, oid, OBJ_TREE, FSCK_MSG_TREE_NOT_SORTED, "not properly sorted");
8645f45b 717 return report(options, oid, type,
9f77fdad 733 return report(options, oid, type, FSCK_MSG_MISSING_NAME_BEFORE_EMAIL, "invalid author/committer line - missing space before email");
9f77fdad 740 return report(options, oid, type, FSCK_MSG_MISSING_SPACE_BEFORE_EMAIL, "invalid author/committer line - missing space before email");
9f77fdad 744 return report(options, oid, type, FSCK_MSG_BAD_EMAIL, "invalid author/committer line - bad email");
9f77fdad 750 return report(options, oid, type, FSCK_MSG_ZERO_PADDED_DATE, "invalid author/committer line - zero-padded date");
9f77fdad 754 return report(options, oid, type, FSCK_MSG_BAD_DATE, "invalid author/committer line - bad date");
9f77fdad 762 return report(options, oid, type, FSCK_MSG_BAD_TIMEZONE, "invalid author/committer line - bad time zone");
8c95edfc 781 return report(options, oid, OBJ_COMMIT, FSCK_MSG_MISSING_TREE, "invalid format - expected 'tree' line");
8c95edfc 783 err = report(options, oid, OBJ_COMMIT, FSCK_MSG_BAD_TREE_SHA1, "invalid 'tree' line format - bad sha1");
8c95edfc 790 err = report(options, oid, OBJ_COMMIT, FSCK_MSG_BAD_PARENT_SHA1, "invalid 'parent' line format - bad sha1");
8c95edfc 804 err = report(options, oid, OBJ_COMMIT, FSCK_MSG_MISSING_AUTHOR, "invalid format - expected 'author' line");
8c95edfc 810 return report(options, oid, OBJ_COMMIT, FSCK_MSG_MISSING_COMMITTER, "invalid format - expected 'committer' line");
bcc2d814 837 ret = report(options, oid, OBJ_TAG, FSCK_MSG_MISSING_OBJECT, "invalid format - expected 'object' line");
bcc2d814 841 ret = report(options, oid, OBJ_TAG, FSCK_MSG_BAD_OBJECT_SHA1, "invalid 'object' line format - bad sha1");
bcc2d814 848 ret = report(options, oid, OBJ_TAG, FSCK_MSG_MISSING_TYPE_ENTRY, "invalid format - expected 'type' line");
bcc2d814 853 ret = report(options, oid, OBJ_TAG, FSCK_MSG_MISSING_TYPE, "invalid format - unexpected end after 'type' line");
bcc2d814 857 ret = report(options, oid, OBJ_TAG, FSCK_MSG_BAD_TYPE, "invalid 'type' value");
bcc2d814 863 ret = report(options, oid, OBJ_TAG, FSCK_MSG_MISSING_TAG_ENTRY, "invalid format - expected 'tag' line");
bcc2d814 868 ret = report(options, oid, OBJ_TAG, FSCK_MSG_MISSING_TAG, "invalid format - unexpected end after 'type' line");
315f8012 958 return report(options, oid, OBJ_BLOB,
61506cb2 980 return report(options, NULL, OBJ_NONE, FSCK_MSG_BAD_OBJECT_SHA1, "no valid object to fsck");
61506cb2 991 return report(options, &obj->oid, obj->type,
61506cb2 994 obj->type);
2eec891d 1027 if (is_promisor_object(oid))
61506cb2 1029 ret |= report(options,

graph.c

0195285b 421 REALLOC_ARRAY(graph->old_mapping, graph->column_capacity * 2);
fbccf255 904 graph_line_write_column(line, col, '|');

tag.c

0b0d2303 152 FREE_AND_NULL(item->tag);
78d50148 179 return error("unknown tag type '%s' in %s",

Commits introducing uncovered code:

James Coglan fbccf255 graph: automatically track display width of graph lines
James Coglan 0195285b graph: rename `new_mapping` to `old_mapping`
Jeff King 86d0d4b8 fsck: don't require object structs for display functions
Jeff King 2eec891d fsck: drop blob struct from fsck_finish()
Jeff King 61506cb2 fsck: don't require an object struct for report()
Jeff King 315f8012 fsck: accept an oid instead of a "struct blob" for fsck_blob()
Jeff King bcc2d814 fsck: accept an oid instead of a "struct tag" for fsck_tag()
Jeff King 0b0d2303 remember commit/tag parse failures
Jeff King 8c95edfc fsck: accept an oid instead of a "struct commit" for fsck_commit()
Jeff King 8645f45b fsck: don't require an object struct in verify_headers()
Jeff King cd896131 fsck: accept an oid instead of a "struct tree" for fsck_tree()
Jeff King a3f8d23c fsck: unify object-name code
Jeff King bfd15918 fsck: use oids rather than objects for object_name API
Jeff King c78fe004 parse_commit_buffer(): treat lookup_commit() failure as parse error
Jeff King 9828df75 fsck: only provide oid/type in fsck_error callback
Jeff King 9f77fdad fsck: don't require an object struct for fsck_ident()
Jeff King 78d50148 parse_tag_buffer(): treat NULL tag pointer as parse error

Uncovered code in 'next' not in 'master'

next 954a862665455a25876e1113bd865d43a26facce
master d966095db01190a2196e31195ea6fa0c722aa732

builtin/pack-objects.c

7c59828b 1136 return 1;
7c59828b 2694 (reuse_packfile_bitmap &&
7c59828b 2695 bitmap_walk_contains(bitmap_git, reuse_packfile_bitmap, oid));
d35b73c5 2847 allow_pack_reuse = git_config_bool(k, v);
d35b73c5 2848 return 0;

fetch-pack.c

5374a290 770 BUG("name of pack lockfile should end with .keep (was '%s')",

fsmonitor.c

3444ec2e 20 BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" >= %u)",
3444ec2e 59 BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
3444ec2e 87 BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
3444ec2e 256 BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",

pack-bitmap.c

7c59828b 791 return; /* broken packfile, punt */
7c59828b 808 return;
7c59828b 811 return;
7c59828b 823 return;
7c59828b 861 i = bitmap_git->pack->num_objects / BITS_IN_EWORD;
934b7d0a 903 return 0;

remote-curl.c

6f119424 155 else if (!strcmp(value, "false"))
6f119424 156 options.atomic = 0;
6f119424 158 return -1;

sequencer.c

49697cb7 1137 arg1 = "commit";
49697cb7 1138 arg2 = commit;

transport-helper.c

6f119424 859 die(_("helper %s does not support --atomic"), name);

Commits introducing uncovered code:

brian m. carlson 6f119424 remote-curl: pass on atomic capability to remote side
Jeff King 7c59828b pack-objects: improve partial packfile reuse
Jeff King d35b73c5 pack-objects: introduce pack.allowPackReuse
Jeff King 934b7d0a pack-bitmap: introduce bitmap_walk_contains()
Jonathan Tan 5374a290 fetch-pack: write fetched refs to .promisor
Phillip Wood 49697cb7 move run_commit_hook() to libgit and use it there
William Baker 3444ec2e fsmonitor: don't fill bitmap with entries to be removed

Uncovered code in 'master' not in 'master@{1}'

master d966095db01190a2196e31195ea6fa0c722aa732
master@{1} origin/maint

archive-tar.c

71d41ff6 161 BUG("pax extended header length miscalculated as %"PRIuMAX

builtin/am.c

0dfed92d 1262 die(_("missing author line in commit %s"),
0dfed92d 1263 oid_to_hex(&commit->object.oid));
22184497 1695 die(_("unable to write index file"));

builtin/cat-file.c

b14ed5ad 529 warning("This repository uses promisor remotes. Some objects may not be loaded.");

builtin/checkout.c

65c01c64 766 strbuf_add_unique_abbrev(&old_commit_shortname,
65c01c64 767 &old_branch_info->commit->object.oid,
65c01c64 769 o.ancestor = old_commit_shortname.buf;

builtin/fast-export.c

941790d7 852 die(_("Error: Cannot export nested tags unless --mark-tags is specified."));
941790d7 864 tagged_mark = get_object_mark(tagged);
208d6924 1220 die(_("Cannot pass both --import-marks and --import-marks-if-exists"));

builtin/fetch.c

d54dea77 113 fetch_parallel_config = git_config_int(k, v);
d54dea77 114 if (fetch_parallel_config < 0)
d54dea77 115 die(_("fetch.parallel cannot be negative"));
d54dea77 116 return 0;
24bc1a12 1429 warning(_("not setting upstream for a remote remote-tracking branch"));
d54dea77 1566 static int fetch_failed_to_start(struct strbuf *out, void *cb, void *task_cb)
d54dea77 1568 struct parallel_fetch_state *state = cb;
d54dea77 1569 const char *remote = task_cb;
d54dea77 1571 state->result = error(_("Could not fetch %s"), remote);
d54dea77 1573 return 0;

builtin/log.c

edefc318 1785 die(_("could not create leading directories "

builtin/merge-recursive.c

9822175d 68 die_resolve_conflict("merge");

builtin/push.c

8e4c8af0 611 die(_("bad repository '%s'"), repo);
8e4c8af0 627 die(_("--all and --tags are incompatible"));
8e4c8af0 629 die(_("--all can't be combined with refspecs"));
8e4c8af0 633 die(_("--mirror and --tags are incompatible"));
8e4c8af0 638 die(_("--all and --mirror are incompatible"));

builtin/rebase.c

2b318aa6 1273 goto done;
c0efb4c1 1289 goto done;

builtin/receive-pack.c

fabec2c5 433 the_hash_algo->init_fn(&ctx);
fabec2c5 434 the_hash_algo->update_fn(&ctx, key_in, key_len);
fabec2c5 435 the_hash_algo->final_fn(key, &ctx);

builtin/replace.c

28ba1830 275 if (strbuf_read(&result, cmd.out, the_hash_algo->hexsz + 1) < 0) {

builtin/rev-parse.c

7e0d029f 735 abbrev = hexsz;

builtin/stash.c

34933d0e 1139 ret = -1;
34933d0e 1140 goto done;

builtin/submodule--helper.c

8d4d86b0 427 printf("%06o %s U\t", ce->ce_mode, oid_to_hex(&null_oid));

cache-tree.c

724dd767 619 cache_tree_free(&index_state->cache_tree);
724dd767 620 cache_tree_valid = 0;
724dd767 633 return WRITE_TREE_PREFIX_ERROR;
724dd767 653 fprintf(stderr, "BUG: There are unmerged index entries:\n");
724dd767 654 for (i = 0; i < index_state->cache_nr; i++) {
724dd767 655 const struct cache_entry *ce = index_state->cache[i];
724dd767 656 if (ce_stage(ce))
724dd767 657 fprintf(stderr, "BUG: %d %.*s\n", ce_stage(ce),
724dd767 658 (int)ce_namelen(ce), ce->name);
724dd767 660 BUG("unmerged index entries when writing inmemory index");

commit-graph.c

fbab552a 483 die("dying as requested by the '%s' variable on commit-graph load!",

connect.c

ebb8d2c9 921 path = host - 2; /* include the leading "//" */

diffcore-break.c

baed6bbb 295 diff_q(&outq, p);

dir.c

89a1f4aa 374 return MATCHED_RECURSIVELY_LEADING_PATHSPEC;

fast-import.c

b8f50e5b 2528 die("Invalid ref name or SHA1 expression: %s", objectish);
b8f50e5b 2554 return 0;
3164e6bd 2835 first_tag = t->next_tag;
b8f50e5b 3118 die(_("Expected 'mark' command, got %s"), command_buf.buf);
b8f50e5b 3123 die(_("Expected 'to' command, got %s"), command_buf.buf);

fetch-pack.c

aaf633c2 913 else if (args->depth > 0 || is_repository_shallow(r))

http-push.c

5cc6a4be 984 prev->next = lock->next;

list-objects-filter-options.c

f56f7642 44 BUG("filter_options already populated");
f56f7642 226 die(_("multiple filter-specs cannot be combined"));
cf9ceb5a 276 BUG("no filter_spec available for this filter");
e987df5f 311 return;

list-objects-filter.c

e987df5f 594 BUG("expected oidset to be cleared already");

list-objects.c

9430147c 210 ctx->show_object(obj, base->buf, ctx->show_data);

merge-recursive.c

f836bf39 960 ret = err(opt, _("cannot read object %s '%s'"),
f836bf39 962 goto free_buf;
98a1d3d8 3692 return -1;
ff1bfa2c 3757 oid_to_hex(merge_bases[i]));

name-hash.c

28ee7941 100 hashmap_remove(&istate->dir_hash, &dir->ent, NULL);

pack-bitmap.c

dad3f060 712 object = parse_object_or_die(get_tagged_oid(tag), NULL);

pack-objects.c

3a37876b 185 BUG("duplicate object inserted into hash");

path.c

ce17feb1 1234 return -1;
ce17feb1 1238 return -1;
ce17feb1 1247 return -1;

promisor-remote.c

db27dca5 25 die(_("Remote with no URL"));
48de3158 61 warning(_("promisor remote name cannot begin with '/': %s"),
48de3158 63 return NULL;
faf2abf4 95 if (previous)
faf2abf4 96 previous->next = r->next;
faf2abf4 98 promisors = r->next ? r->next : r;
faf2abf4 99 r->next = NULL;
faf2abf4 100 *promisors_tail = r;
faf2abf4 101 promisors_tail = &r->next;
4ca9474e 111 return git_config_string(&core_partial_clone_filter_default,
fa3d1b63 142 return 0;
9e27beaa 205 static int remove_fetched_oids(struct repository *repo,
9e27beaa 209 int i, remaining_nr = 0;
9e27beaa 210 int *remaining = xcalloc(oid_nr, sizeof(*remaining));
9e27beaa 211 struct object_id *old_oids = *oids;
9e27beaa 214 for (i = 0; i < oid_nr; i++)
9e27beaa 215 if (oid_object_info_extended(repo, &old_oids[i], NULL,
9e27beaa 217 remaining[i] = 1;
9e27beaa 218 remaining_nr++;
9e27beaa 221 if (remaining_nr) {
9e27beaa 222 int j = 0;
9e27beaa 223 new_oids = xcalloc(remaining_nr, sizeof(*new_oids));
9e27beaa 224 for (i = 0; i < oid_nr; i++)
9e27beaa 225 if (remaining[i])
9e27beaa 226 oidcpy(&new_oids[j++], &old_oids[i]);
9e27beaa 227 *oids = new_oids;
9e27beaa 228 if (to_free)
9e27beaa 229 free(old_oids);
9e27beaa 232 free(remaining);
9e27beaa 234 return remaining_nr;
9e27beaa 251 if (remaining_nr == 1)
9e27beaa 252 continue;
9e27beaa 253 remaining_nr = remove_fetched_oids(repo, &remaining_oids,
9e27beaa 255 if (remaining_nr) {
9e27beaa 256 to_free = 1;
9e27beaa 257 continue;
9e27beaa 265 free(remaining_oids);

read-cache.c

22184497 1487 return -1;
22184497 1491 ret = -1;

ref-filter.c

8b3f33ef 1045 return xstrdup("");

repo-settings.c

aaf633c2 43 r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_DEFAULT;
aaf633c2 55 UPDATE_DEFAULT_BOOL(r->settings.pack_use_sparse, 1);
aaf633c2 56 UPDATE_DEFAULT_BOOL(r->settings.fetch_negotiation_algorithm, FETCH_NEGOTIATION_SKIPPING);
50f26bd0 57 UPDATE_DEFAULT_BOOL(r->settings.fetch_write_commit_graph, 1);

sequencer.c

e145d993 3306 (!opts->strategy || !strcmp(opts->strategy, "recursive")) ?
a47ba3c7 3917 res = error_errno(_("could not stat '%s'"),
a47ba3c7 3923 res = -1; /* message was printed */

setup.c

e2683d51 952 !is_dir_sep(dir->buf[min_offset - 1])) {
e2683d51 953 strbuf_addch(dir, '/');
e2683d51 954 min_offset++;

sha1-name.c

59fa5f5a 1172 return MISSING_OBJECT;
59fa5f5a 1178 return MISSING_OBJECT;

shallow.c

ddb3c856 157 continue;

stable-qsort.c

040a6551 58 char *tmp = xmalloc(size);
43fe901b 59 msort_with_tmp(b, n, s, cmp, tmp);
43fe901b 60 free(tmp);

t/helper/test-hashmap.c

d22245a2 109 hashmap_entry_init(&entries[i]->ent, hashes[i]);
b94e5c1d 110 hashmap_add(&map, &entries[i]->ent);
c8e424c9 113 hashmap_free(&map);
d22245a2 122 hashmap_entry_init(&entries[i]->ent, hashes[i]);
b94e5c1d 123 hashmap_add(&map, &entries[i]->ent);
c8e424c9 133 hashmap_free(&map);

t/helper/test-lazy-init-name-hash.c

87571c3f 44 hashmap_for_each_entry(&the_index.dir_hash, &iter_dir, dir,
87571c3f 48 hashmap_for_each_entry(&the_index.name_hash, &iter_cache, ce,

t/helper/test-progress.c

2bb74b53 48 die("need a title for the progress output");
2bb74b53 59 die("invalid input: '%s'\n", line.buf);
2bb74b53 67 die("invalid input: '%s'\n", line.buf);
2bb74b53 70 die("invalid input: '%s'\n", line.buf);

t/helper/test-run-command.c

be5d88e1 66 static int next_test(struct child_process *cp, struct strbuf *err, void *cb,
be5d88e1 69 struct testsuite *suite = cb;
be5d88e1 71 if (suite->next >= suite->tests.nr)
be5d88e1 72 return 0;
be5d88e1 74 test = suite->tests.items[suite->next++].string;
be5d88e1 75 argv_array_pushl(&cp->args, "sh", test, NULL);
be5d88e1 76 if (suite->quiet)
be5d88e1 77 argv_array_push(&cp->args, "--quiet");
be5d88e1 78 if (suite->immediate)
be5d88e1 79 argv_array_push(&cp->args, "-i");
be5d88e1 80 if (suite->verbose)
be5d88e1 81 argv_array_push(&cp->args, "-v");
be5d88e1 82 if (suite->verbose_log)
be5d88e1 83 argv_array_push(&cp->args, "-V");
be5d88e1 84 if (suite->trace)
be5d88e1 85 argv_array_push(&cp->args, "-x");
be5d88e1 86 if (suite->write_junit_xml)
be5d88e1 87 argv_array_push(&cp->args, "--write-junit-xml");
be5d88e1 89 strbuf_addf(err, "Output of '%s':\n", test);
be5d88e1 90 *task_cb = (void *)test;
be5d88e1 92 return 1;
be5d88e1 95 static int test_finished(int result, struct strbuf *err, void *cb,
be5d88e1 98 struct testsuite *suite = cb;
be5d88e1 99 const char *name = (const char *)task_cb;
be5d88e1 101 if (result)
be5d88e1 102 string_list_append(&suite->failed, name);
be5d88e1 104 strbuf_addf(err, "%s: '%s'\n", result ? "FAIL" : "SUCCESS", name);
be5d88e1 106 return 0;
be5d88e1 109 static int test_failed(struct strbuf *out, void *cb, void *task_cb)
be5d88e1 111 struct testsuite *suite = cb;
be5d88e1 112 const char *name = (const char *)task_cb;
be5d88e1 114 string_list_append(&suite->failed, name);
be5d88e1 115 strbuf_addf(out, "FAILED TO START: '%s'\n", name);
be5d88e1 117 return 0;
be5d88e1 125 static int testsuite(int argc, const char **argv)
be5d88e1 127 struct testsuite suite = TESTSUITE_INIT;
be5d88e1 128 int max_jobs = 1, i, ret;
be5d88e1 131 struct option options[] = {
be5d88e1 145 memset(&suite, 0, sizeof(suite));
be5d88e1 146 suite.tests.strdup_strings = suite.failed.strdup_strings = 1;
be5d88e1 148 argc = parse_options(argc, argv, NULL, options,
be5d88e1 151 if (max_jobs <= 0)
be5d88e1 152 max_jobs = online_cpus();
be5d88e1 154 dir = opendir(".");
be5d88e1 155 if (!dir)
be5d88e1 156 die("Could not open the current directory");
be5d88e1 157 while ((d = readdir(dir))) {
be5d88e1 158 const char *p = d->d_name;
be5d88e1 160 if (*p != 't' || !isdigit(p[1]) || !isdigit(p[2]) ||
be5d88e1 161 !isdigit(p[3]) || !isdigit(p[4]) || p[5] != '-' ||
be5d88e1 162 !ends_with(p, ".sh"))
be5d88e1 163 continue;
be5d88e1 166 if (!argc) {
be5d88e1 167 string_list_append(&suite.tests, p);
be5d88e1 168 continue;
be5d88e1 171 for (i = 0; i < argc; i++)
be5d88e1 172 if (!wildmatch(argv[i], p, 0)) {
be5d88e1 173 string_list_append(&suite.tests, p);
be5d88e1 174 break;
be5d88e1 177 closedir(dir);
be5d88e1 179 if (!suite.tests.nr)
be5d88e1 180 die("No tests match!");
be5d88e1 181 if (max_jobs > suite.tests.nr)
be5d88e1 182 max_jobs = suite.tests.nr;
be5d88e1 184 fprintf(stderr, "Running %d tests (%d at a time)\n",
be5d88e1 187 ret = run_processes_parallel(max_jobs, next_test, test_failed,
be5d88e1 190 if (suite.failed.nr > 0) {
be5d88e1 191 ret = 1;
be5d88e1 192 fprintf(stderr, "%d tests failed:\n\n", suite.failed.nr);
be5d88e1 193 for (i = 0; i < suite.failed.nr; i++)
be5d88e1 194 fprintf(stderr, "\t%s\n", suite.failed.items[i].string);
be5d88e1 197 string_list_clear(&suite.tests, 0);
be5d88e1 198 string_list_clear(&suite.failed, 0);
be5d88e1 200 return !!ret;
be5d88e1 209 exit(testsuite(argc - 1, argv + 1));

trace2/tr2_dst.c

83e57b04 90 ret = 1;
83e57b04 91 goto cleanup;
87db61a4 136 strbuf_setlen(&path, base_path_len);
87db61a4 137 strbuf_addf(&path, ".%d", attempt_count);
83e57b04 145 strbuf_release(&path);
83e57b04 146 if (tr2_dst_want_warning())
83e57b04 147 warning("trace2: not opening %s trace file due to too "
83e57b04 151 return 0;
1fd881d4 307 warning("trace2: unknown value for '%s': '%s'",

trace2/tr2_tgt_normal.c

e3443055 189 strbuf_addf(&buf_payload, "alias %s -> ", alias);
e3443055 190 sq_append_quote_argv_pretty(&buf_payload, argv);
e3443055 201 strbuf_addf(&buf_payload, "child_start[%d]", cmd->trace2_child_id);
e3443055 204 strbuf_addstr(&buf_payload, " cd ");
e3443055 206 strbuf_addstr(&buf_payload, ";");
e3443055 214 strbuf_addch(&buf_payload, ' ');
e3443055 216 strbuf_addstr(&buf_payload, "git ");
e3443055 217 sq_append_quote_argv_pretty(&buf_payload, cmd->argv);
e3443055 242 if (exe) {
e3443055 244 strbuf_addch(&buf_payload, ' ');
e3443055 246 sq_append_quote_argv_pretty(&buf_payload, argv);

trace2/tr2_tgt_perf.c

371df1be 88 fl_end_col = buf->len + TR2FMT_PERF_FL_WIDTH;
371df1be 90 if (file && *file) {
371df1be 91 struct strbuf buf_fl = STRBUF_INIT;
371df1be 93 strbuf_addf(&buf_fl, "%s:%d", file, line);
371df1be 95 if (buf_fl.len <= TR2FMT_PERF_FL_WIDTH)
371df1be 96 strbuf_addbuf(buf, &buf_fl);
371df1be 98 size_t avail = TR2FMT_PERF_FL_WIDTH - 3;
371df1be 99 strbuf_addstr(buf, "...");
371df1be 100 strbuf_add(buf,
371df1be 101 &buf_fl.buf[buf_fl.len - avail],
371df1be 105 strbuf_release(&buf_fl);
371df1be 108 while (buf->len < fl_end_col)
371df1be 111 strbuf_addstr(buf, " | ");
742ed633 302 strbuf_addf(&buf_payload, "alias:%s argv:[", alias);
742ed633 303 sq_append_quote_argv_pretty(&buf_payload, argv);
742ed633 304 strbuf_addch(&buf_payload, ']');
742ed633 335 strbuf_addstr(&buf_payload, "git");
742ed633 336 if (cmd->argv[0])
742ed633 337 strbuf_addch(&buf_payload, ' ');
742ed633 391 strbuf_addstr(&buf_payload, "argv:[");
742ed633 392 if (exe) {
742ed633 393 strbuf_addstr(&buf_payload, exe);
742ed633 394 if (argv[0])
742ed633 395 strbuf_addch(&buf_payload, ' ');
742ed633 397 sq_append_quote_argv_pretty(&buf_payload, argv);
742ed633 398 strbuf_addch(&buf_payload, ']');
da4589ce 459 strbuf_addf(&buf_payload, "label:%s", label);
da4589ce 460 if (fmt && *fmt) {
da4589ce 461 strbuf_addch(&buf_payload, ' ');
da4589ce 462 maybe_append_string_va(&buf_payload, fmt, ap);
da4589ce 479 strbuf_addf(&buf_payload, "label:%s", label);
da4589ce 480 if (fmt && *fmt) {
da4589ce 481 strbuf_addch(&buf_payload, ' ' );
da4589ce 482 maybe_append_string_va(&buf_payload, fmt, ap);

transport.c

360c7ba3 1200 trace2_region_leave("transport_push", "push_submodules", r);

tree-walk.c

5aa02f98 194 BUG("too small buffer passed to make_traverse_path");
5aa02f98 199 BUG("traverse_info pathlen does not match strings");
5aa02f98 208 BUG("traverse_info ran out of list items");

unpack-trees.c

90553847 1144 if (*info->prev->name)
90553847 1147 printf("%s", info->name);

upload-pack.c

cf9ceb5a 148 sq_quote_buf(&buf, spec);

wrapper.c

9827d4c1 31 die("Out of memory, strdup failed");
9827d4c1 45 if (!gentle)
9827d4c1 46 die("Out of memory, malloc failed (tried to allocate %lu bytes)",
9827d4c1 49 error("Out of memory, malloc failed (tried to allocate %lu bytes)",
9827d4c1 51 return NULL;
9827d4c1 117 die("Out of memory, realloc failed");
9827d4c1 133 die("Out of memory, calloc failed");

Commits introducing uncovered code:

Alex Henrie baed6bbb diffcore-break: use a goto instead of a redundant if statement
Ali Utku Selen ddb3c856 shallow.c: don't free unallocated slabs
Bert Wesarg edefc318 format-patch: create leading components of output directory
Brandon Casey 040a6551 cleanup: use internal memory allocation wrapper functions everywhere
Brian Downing 43fe901b compat: Add simplified merge sort implementation from glibc
brian m. carlson 7e0d029f builtin/rev-parse: switch to use the_hash_algo
brian m. carlson 8d4d86b0 cache: remove null_sha1
brian m. carlson ce17feb1 path: add a function to check for path suffix
brian m. carlson 28ba1830 builtin/replace: make hash size independent
brian m. carlson fabec2c5 builtin/receive-pack: switch to use the_hash_algo
Christian Couder faf2abf4 promisor-remote: use repository_format_partial_clone
Christian Couder 9e27beaa promisor-remote: implement promisor_remote_get_direct()
Christian Couder 4ca9474e Move core_partial_clone_filter_default to promisor-remote.c
Christian Couder b14ed5ad Use promisor_remote_get_direct() and has_promisor_remote()
Christian Couder fa3d1b63 promisor-remote: parse remote.*.partialclonefilter
Christian Couder 48de3158 Add initial support for many promisor remotes
Christian Couder db27dca5 Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
Corentin BOMPARD 24bc1a12 pull, fetch: add --set-upstream option
Denton Liu 2b318aa6 rebase: refactor can_fast_forward into goto tower
Denton Liu c0efb4c1 rebase: fast-forward --onto in more cases
Derrick Stolee 50f26bd0 fetch: add fetch.writeCommitGraph config setting
Derrick Stolee aaf633c2 repo-settings: create feature.experimental setting
Elijah Newren 65c01c64 checkout: provide better conflict hunk description with detached HEAD
Elijah Newren 941790d7 fast-export: handle nested tags
Elijah Newren 89a1f4aa dir: if our pathspec might match files under a dir, recurse into it
Elijah Newren b8f50e5b fast-import: add support for new 'alias' command
Elijah Newren 3164e6bd fast-import: fix handling of deleted tags
Elijah Newren ff1bfa2c merge-recursive: use common name for ancestors/common/base_list
Elijah Newren 98a1d3d8 merge-recursive: exit early if index != head
Elijah Newren 208d6924 fast-export: add support for --import-marks-if-exists
Elijah Newren 9822175d Ensure index matches head before invoking merge machinery, round N
Elijah Newren 724dd767 cache-tree: share code between functions writing an index as a tree
Elijah Newren f836bf39 merge-recursive: future-proof update_file_flags() against memory leaks
Eric Wong c8e424c9 hashmap: introduce hashmap_free_entries
Eric Wong b94e5c1d hashmap_add takes "struct hashmap_entry *"
Eric Wong 87571c3f hashmap: use *_entry APIs for iteration
Eric Wong d22245a2 hashmap_entry_init takes "struct hashmap_entry *"
Eric Wong 28ee7941 hashmap_remove takes "const struct hashmap_entry *"
Jeff Hostetler e3443055 trace2: cleanup whitespace in normal format
Jeff Hostetler 371df1be trace2: cleanup column alignment in perf target format
Jeff Hostetler 742ed633 trace2: cleanup whitespace in perf format
Jeff Hostetler da4589ce trace2: trim whitespace in region messages in perf target format
Jeff King 5aa02f98 tree-walk: harden make_traverse_path() length computations
Jeff King 9827d4c1 packfile: drop release_pack_memory()
Jeff King fbab552a commit-graph: bump DIE_ON_LOAD check to actual load-time
Jeff King 90553847 tree-walk: drop oid from traverse_info
Jeff King 3a37876b pack-objects: drop packlist index_pos optimization
Jeff King 0dfed92d git-am: handle missing "author" when parsing commit
Johannes Schindelin be5d88e1 test-tool run-command: learn to run (parts of) the testsuite
Johannes Schindelin e145d993 rebase -r: support merge strategies other than `recursive`
Johannes Schindelin e2683d51 Fix .git/ discovery at the root of UNC shares
Johannes Schindelin d54dea77 fetch: let --jobs= parallelize --multiple, too
Josh Steadmon 87db61a4 trace2: write discard message to sentinel files
Josh Steadmon 83e57b04 trace2: discard new traces if target directory has too many files
Junio C Hamano 360c7ba3 transport: push codepath can take arbitrary repository
Matthew DeVore cf9ceb5a list-objects-filter-options: make filter_spec a string_list
Matthew DeVore f56f7642 list-objects-filter-options: move error check up
Matthew DeVore 9430147c list-objects-filter: encapsulate filter components
Matthew DeVore e987df5f list-objects-filter: implement composite filters
Mischa POSLAWSKY 8b3f33ef ref-filter: initialize empty name or email fields
Phillip Wood a47ba3c7 rebase -i: check for updated todo after squash and reword
René Scharfe 1fd881d4 trace2: use warning() directly in tr2_dst_malformed_warning()
René Scharfe dad3f060 tag: factor out get_tagged_oid()
René Scharfe 5cc6a4be http-push: simplify deleting a list item
René Scharfe 59fa5f5a sha1-name: check for overflow of N in "foo^N" and "foo~N"
René Scharfe 71d41ff6 archive-tar: turn length miscalculation warning into BUG
SZEDER Gábor 2bb74b53 Test the progress display
Thomas Gummerer 34933d0e stash: make sure to write refreshed cache
Thomas Gummerer 8e4c8af0 push: disallow --all and refspecs when remote..mirror is set
Thomas Gummerer 22184497 factor out refresh_and_write_cache function
Torsten Bögershausen ebb8d2c9 mingw: support UNC in git clone file://server/share/repo