pu 762cccf710b8bb10da04b42e3f40a2c653c92fea
jch 0e8cc1100ca06ca127777cff331ef5a17b5f8f02
next f2820cf01acf778d953a46357a6160ba42711eb1
master 83232e38648b51abbcbdb56c94632b6906cc85a6
master@{1} 14c0f8d3ab6c36672189cd2dd217f4617d12ccba

Uncovered code in 'pu' not in 'jch'

pu 762cccf710b8bb10da04b42e3f40a2c653c92fea
jch 0e8cc1100ca06ca127777cff331ef5a17b5f8f02

blame.c

dfb4ee12 366 continue;
d0738d94 618 ent->ignored == next->ignored &&
a5c91678 619 ent->unblamable == next->unblamable) {
a5c91678 1853 continue;

builtin/blame.c

a5c91678 493 memset(hex, '0', length);
a5c91678 716 return ret;

builtin/cat-file.c

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

builtin/commit.c

5ff7cad9 1674 return 1;

builtin/config.c

a12c1ff3 110 die(_("$HOME not set"));
a12c1ff3 122 given_config_source.file = git_etc_gitconfig();
6f11fd5e 489 BUG("action %d cannot get here", actions);
6f11fd5e 503 die(_("unknown config source"));
6f11fd5e 509 die(_("invalid key pattern: %s"), key);

builtin/fetch-pack.c

bf01639c 249 warning(_("Lockfile created but not reported: %s"),
bf01639c 250 pack_lockfiles.items[i].string);

builtin/gc.c

5ff7cad9 692 return 1;

builtin/pack-objects.c

820a5361 858 BUG("configured exclusion wasn't configured");
820a5361 2795 die(_("value of uploadpack.blobpackfileuri must be "
820a5361 2798 die(_("object already configured in another "

commit-graph.c

d5747681 936 error(_("unsupported commit-graph version %d"),
d5747681 938 return 1;
5ff7cad9 988 error(_("error adding pack %s"), packname.buf);
5ff7cad9 989 res = 1;
5ff7cad9 990 goto cleanup;
5ff7cad9 993 error(_("error opening index for %s"), packname.buf);
5ff7cad9 994 res = 1;
5ff7cad9 995 goto cleanup;
5ff7cad9 1068 error(_("the commit graph format cannot write %d commits"), count_distinct);
5ff7cad9 1069 res = 1;
5ff7cad9 1070 goto cleanup;
5ff7cad9 1104 error(_("too many commits to write graph"));
5ff7cad9 1105 res = 1;
5ff7cad9 1106 goto cleanup;
5ff7cad9 1114 error(_("unable to create leading directories of %s"),
5ff7cad9 1116 res = errno;
5ff7cad9 1117 goto cleanup;

config.c

8f7c7f55 2155 int repo_config_set_gently(struct repository *r,
8f7c7f55 2158 char *path = repo_git_path(r, "config");
8f7c7f55 2159 int ret = git_config_set_multivar_in_file_gently(path, key, value, NULL, 0);
8f7c7f55 2160 free(path);
8f7c7f55 2161 return ret;
8f7c7f55 2164 void repo_config_set(struct repository *r, const char *key, const char *value)
8f7c7f55 2166 if (!repo_config_set_gently(r, key, value))
8f7c7f55 2167 return;
8f7c7f55 2168 if (value)
8f7c7f55 2169 die(_("could not set '%s' to '%s'"), key, value);
8f7c7f55 2171 die(_("could not unset '%s'"), key);
8f7c7f55 2174 int repo_config_set_worktree_gently(struct repository *r,
8f7c7f55 2180 path = get_worktree_config(r);
8f7c7f55 2181 if (!path)
8f7c7f55 2182 return CONFIG_INVALID_FILE;
8f7c7f55 2183 ret = git_config_set_multivar_in_file_gently(path, key, value, NULL, 0);
8f7c7f55 2184 free(path);
8f7c7f55 2185 return ret;

fetch-pack.c

820a5361 1390 die("expected '<hash> <uri>', got: %s\n", reader->line);
820a5361 1395 die("expected DELIM");
820a5361 1522 die("fetch-pack: unable to spawn http-fetch");
820a5361 1526 die("fetch-pack: expected keep then TAB at start of http-fetch output");
820a5361 1531 die("fetch-pack: expected hash then LF at end of http-fetch output");
820a5361 1538 die("fetch-pack: unable to finish http-fetch");
820a5361 1542 die("fetch-pack: pack downloaded from %s does not match expected hash %.*s",
820a5361 1543 uri, (int) the_hash_algo->hexsz,
820a5361 1544 packfile_uris.items[i].string);

http-fetch.c

472fbef8 75 die("couldn't create http pack request");
472fbef8 82 die("Unable to get pack file %s\n%s", preq->url,
472fbef8 86 die("Unable to start request");
472fbef8 101 walker_targets_free(commits, commit_id, write_ref);
472fbef8 104 fprintf(stderr,

http.c

ba81921a 2005 if (fflush((FILE *)result)) {
ba81921a 2009 rewind((FILE *)result);
ba81921a 2010 if (ftruncate(fileno((FILE *)result), 0) < 0) {
07ca07bb 2302 target ? hash_to_hex(target->hash) : base_url,

oidset.c

3486d8d4 69 die_errno("Could not read '%s'", path);

promisor-remote.c

0ba08c05 25 die(_("Remote with no URL"));
54248706 61 warning(_("promisor remote name cannot begin with '/': %s"),
54248706 63 return NULL;
7bdf0926 93 previous->next = r->next;
7b6e1b04 108 return git_config_string(&core_partial_clone_filter_default,
b21a55f3 139 return 0;
dcc8b4e9 202 static int remove_fetched_oids(struct object_id **oids, int oid_nr, int to_free)
dcc8b4e9 204 int i, missing_nr = 0;
dcc8b4e9 205 int *missing = xcalloc(oid_nr, sizeof(*missing));
dcc8b4e9 206 struct object_id *old_oids = *oids;
dcc8b4e9 208 int old_fetch_if_missing = fetch_if_missing;
dcc8b4e9 210 fetch_if_missing = 0;
dcc8b4e9 212 for (i = 0; i < oid_nr; i++)
dcc8b4e9 213 if (oid_object_info_extended(the_repository, &old_oids[i], NULL, 0)) {
dcc8b4e9 214 missing[i] = 1;
dcc8b4e9 215 missing_nr++;
dcc8b4e9 218 fetch_if_missing = old_fetch_if_missing;
dcc8b4e9 220 if (missing_nr) {
dcc8b4e9 221 int j = 0;
dcc8b4e9 222 new_oids = xcalloc(missing_nr, sizeof(*new_oids));
dcc8b4e9 223 for (i = 0; i < oid_nr; i++)
dcc8b4e9 224 if (missing[i])
dcc8b4e9 225 oidcpy(&new_oids[j++], &old_oids[i]);
dcc8b4e9 226 *oids = new_oids;
dcc8b4e9 227 if (to_free)
dcc8b4e9 228 free(old_oids);
dcc8b4e9 231 free(missing);
dcc8b4e9 233 return missing_nr;
dcc8b4e9 248 if (missing_nr == 1)
dcc8b4e9 249 continue;
dcc8b4e9 250 missing_nr = remove_fetched_oids(&missing_oids, missing_nr, to_free);
dcc8b4e9 251 if (missing_nr) {
dcc8b4e9 252 to_free = 1;
dcc8b4e9 253 continue;
dcc8b4e9 261 free(missing_oids);

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

ref-filter.c

3da20422 93 keydata_aka_refname ? keydata_aka_refname : k->wt->head_ref);

remote-curl.c

6da1f1a9 345 return 0;

upload-pack.c

a8d662e3 130 return readsz;
820a5361 149 BUG("packfile_uris requires sideband-all");
a8d662e3 355 send_client_data(1, output_state.buffer, output_state.used);
820a5361 1386 string_list_clear(&data->uri_protocols, 0);

wrapper.c

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

Commits introducing uncovered code:

Barret Rhoden dfb4ee12 blame: use a fingerprint heuristic to match ignored lines
Barret Rhoden d0738d94 blame: add config options to handle output for ignored lines
Barret Rhoden a5c91678 blame: add the ability to ignore commits and their changes
Barret Rhoden 3486d8d4 Move init_skiplist() outside of fsck
Christian Couder e265069a Use promisor_remote_get_direct() and has_promisor_remote()
Christian Couder dcc8b4e9 promisor-remote: implement promisor_remote_get_direct()
Christian Couder b21a55f3 promisor-remote: parse remote.*.partialclonefilter
Christian Couder 7b6e1b04 Move core_partial_clone_filter_default to promisor-remote.c
Christian Couder 7bdf0926 promisor-remote: use repository_format_partial_clone
Christian Couder 54248706 Add initial support for many promisor remotes
Christian Couder 0ba08c05 Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
Dan McGregor ba81921a http: cast result to FILE *
Derrick Stolee d5747681 commit-graph: create new version flags
Derrick Stolee 5ff7cad9 commit-graph: return with errors during write
Jonathan Tan a8d662e3 upload-pack: refactor reading of pack-objects out
Jonathan Tan 820a5361 upload-pack: send part of packfile response as uri
Jonathan Tan bf01639c fetch-pack: support more than one pack lockfile
Jonathan Tan 472fbef8 http-fetch: support fetching packfiles by URL
Josh Steadmon 6da1f1a9 protocol: advertise multiple supported versions
Junio C Hamano 07ca07bb Merge branch 'jt/fetch-cdn-offload' into pu
Martin Koegler 5efde212 zlib.c: use size_t for size
Nguyễn Thái Ngọc Duy 8f7c7f55 config.c: add repo_config_set_worktree_gently()
Nguyễn Thái Ngọc Duy 6f11fd5e config: add --move-to
Nguyễn Thái Ngọc Duy a12c1ff3 config: factor out set_config_source_file()
Nickolai Belakovski 3da20422 ref-filter: add worktreepath atom

Uncovered code in 'jch' not in 'next'

jch 0e8cc1100ca06ca127777cff331ef5a17b5f8f02
next f2820cf01acf778d953a46357a6160ba42711eb1

attr.c

b0c2d613 1167 return 0;

builtin/checkout.c

4de2081d 415 die(_("'%s' cannot be used with updating paths"),
4de2081d 425 die(_("'%s' cannot be used with %s"),
a0f3bbfa 433 die(_("neither '%s' or '%s' is specified"),
a0f3bbfa 437 die(_("'%s' must be used when '%s' is not specified"),
7800c9e6 442 die(_("'%s' or '%s' cannot be used with %s"),
7800c9e6 447 die(_("'%s' or '%s' cannot be used with %s"),
a0f3bbfa 456 patch_mode = "--patch=reset";
af482cb3 460 BUG("either flag must have been set, worktree=%d, index=%d",
a0f3bbfa 536 die(_("unable to write new index file"));
1806c29f 656 BUG("'switch --orphan' should never accept a commit as starting point");
1806c29f 1039 BUG("'switch --orphan' should never accept a commit as starting point");
5c06e269 1176 die(_("only one reference expected"));
7968bef0 1300 const char *ref = to_free;
7968bef0 1302 if (skip_prefix(ref, "refs/tags/", &ref))
7968bef0 1303 die(_("a branch is expected, got tag '%s'"), ref);
7968bef0 1304 if (skip_prefix(ref, "refs/remotes/", &ref))
7968bef0 1305 die(_("a branch is expected, got remote branch '%s'"), ref);
7968bef0 1306 die(_("a branch is expected, got '%s'"), ref);
7968bef0 1314 die(_("a branch is expected, got '%s'"), branch_info->name);
c45f0f52 1329 die(_("cannot switch branch in the middle of an am session\n"
c45f0f52 1333 die(_("cannot switch branch while rebasing\n"
c45f0f52 1337 die(_("cannot switch branch while cherry-picking\n"
c45f0f52 1341 die(_("cannot switch branch while reverting\n"
c45f0f52 1345 die(_("cannot switch branch while bisecting\n"
3ec37ad1 1372 die(_("'%s' cannot be used with '%s'"), "--discard-changes", "--merge");
8c1bf59d 1510 BUG("make up your mind, you need to take _something_");
a0f3bbfa 1542 opts->checkout_index = 0;
a0f3bbfa 1552 BUG("these flags should be non-negative by now");
8c1bf59d 1613 die(_("could not resolve %s"), opts->from_treeish);

builtin/multi-pack-index.c

ab08c40a 52 die(_("--batch-size option is only for 'repack' subcommand"));
ab08c40a 61 die(_("unrecognized subcommand: %s"), argv[0]);

builtin/rebase.c

0609b741 146 static int add_exec_commands(struct string_list *commands)
0609b741 148 const char *todo_file = rebase_path_todo();
0609b741 149 struct todo_list todo_list = TODO_LIST_INIT;
0609b741 152 if (strbuf_read_file(&todo_list.buf, todo_file, 0) < 0)
0609b741 153 return error_errno(_("could not read '%s'."), todo_file);
0609b741 155 if (todo_list_parse_insn_buffer(the_repository, todo_list.buf.buf,
0609b741 157 todo_list_release(&todo_list);
0609b741 158 return error(_("unusable todo list: '%s'"), todo_file);
0609b741 161 todo_list_add_exec_commands(&todo_list, commands);
0609b741 162 res = todo_list_write_to_file(the_repository, &todo_list,
0609b741 164 todo_list_release(&todo_list);
0609b741 166 if (res)
0609b741 167 return error_errno(_("could not write '%s'."), todo_file);
0609b741 168 return 0;
0609b741 171 static int rearrange_squash_in_todo_file(void)
0609b741 173 const char *todo_file = rebase_path_todo();
0609b741 174 struct todo_list todo_list = TODO_LIST_INIT;
0609b741 175 int res = 0;
0609b741 177 if (strbuf_read_file(&todo_list.buf, todo_file, 0) < 0)
0609b741 178 return error_errno(_("could not read '%s'."), todo_file);
0609b741 179 if (todo_list_parse_insn_buffer(the_repository, todo_list.buf.buf,
0609b741 181 todo_list_release(&todo_list);
0609b741 182 return error(_("unusable todo list: '%s'"), todo_file);
0609b741 185 res = todo_list_rearrange_squash(&todo_list);
0609b741 186 if (!res)
0609b741 187 res = todo_list_write_to_file(the_repository, &todo_list,
0609b741 190 todo_list_release(&todo_list);
0609b741 192 if (res)
0609b741 193 return error_errno(_("could not write '%s'."), todo_file);
0609b741 194 return 0;
0609b741 204 return error_errno(_("could not read '%s'."), todo_file);
0609b741 208 todo_list_release(&todo_list);
0609b741 209 return error(_("unusable todo list: '%s'"), todo_file);
0609b741 217 return error_errno(_("could not write '%s'."), todo_file);
0609b741 229 return error_errno(_("could not read '%s'."), todo_file);
0609b741 235 res = error_errno(_("could not write '%s'"), todo_file);
0609b741 252 return error(_("no HEAD?"));
c44c2462 279 return error_errno(_("could not create temporary %s"), merge_dir());
0609b741 285 return error_errno(_("could not mark as interactive"));
0609b741 314 return -1;
0609b741 318 return -1;
0609b741 323 free(revisions);
0609b741 324 free(shortrevisions);
0609b741 326 return -1;
7d3488eb 335 argv_array_push(&make_script_args,
0ea0847e 336 oid_to_hex(&opts->restrict_revision->object.oid));
0609b741 343 error(_("could not generate todo list"));
0609b741 348 BUG("unusable todo list");
460bc3ce 382 die(_("a base commit must be provided with --upstream or --onto"));
460bc3ce 419 ret = rearrange_squash_in_todo_file();
460bc3ce 420 break;
460bc3ce 422 struct string_list commands = STRING_LIST_INIT_DUP;
460bc3ce 424 split_exec_commands(opts->cmd, &commands);
460bc3ce 425 ret = add_exec_commands(&commands);
460bc3ce 426 string_list_clear(&commands, 0);
460bc3ce 427 break;
460bc3ce 430 BUG("invalid command '%d'", command);
0609b741 509 usage_with_options(builtin_rebase_interactive_usage, options);
73fdc535 515 opts.squash_onto = &squash_onto;
0609b741 518 warning(_("--[no-]rebase-cousins has no effect without "
526c03b5 1267 goto done;
10572de1 1283 goto done;

builtin/remote.c

f39a9c65 1551 die(_("--save-to-push cannot be used with other options"));
f39a9c65 1575 die(_("--save-to-push can only be used when only one url is defined"));

builtin/worktree.c

722abec7 297 BUG("How come '%s' becomes empty after sanitization?", sb.buf);

midx.c

5bf52fbc 464 close_pack(packs->info[packs->nr].p);
5bf52fbc 465 FREE_AND_NULL(packs->info[packs->nr].p);
3c9e7185 724 BUG("object %s is in an expired pack with int-id %d",
3c9e7185 851 error(_("did not see pack-file %s to drop"),
3c9e7185 853 drop_index++;
3c9e7185 854 missing_drops++;
3c9e7185 855 i--;
3c9e7185 862 result = 1;
3c9e7185 863 goto cleanup;
3c9e7185 1180 return 0;
3c9e7185 1195 continue;
ab08c40a 1235 return 0;
3dfbc2f0 1261 continue;
3dfbc2f0 1281 continue;
3dfbc2f0 1283 continue;
3dfbc2f0 1315 return 0;
3dfbc2f0 1336 error(_("could not start pack-objects"));
3dfbc2f0 1337 result = 1;
3dfbc2f0 1338 goto cleanup;
3dfbc2f0 1355 error(_("could not finish pack-objects"));
3dfbc2f0 1356 result = 1;
3dfbc2f0 1357 goto cleanup;

packfile.c

91336887 369 strbuf_release(&buf);
91336887 370 return;

parse-options-cb.c

7d3488eb 99 int parse_opt_commit(const struct option *opt, const char *arg, int unset)
7d3488eb 103 struct commit **target = opt->value;
7d3488eb 105 if (!arg)
7d3488eb 106 return -1;
7d3488eb 107 if (get_oid(arg, &oid))
7d3488eb 108 return error("malformed object name %s", arg);
7d3488eb 109 commit = lookup_commit_reference(the_repository, &oid);
7d3488eb 110 if (!commit)
7d3488eb 111 return error("no such commit %s", arg);
7d3488eb 112 *target = commit;
7d3488eb 113 return 0;
33898531 132 int parse_opt_object_id(const struct option *opt, const char *arg, int unset)
33898531 135 struct object_id *target = opt->value;
33898531 137 if (unset) {
33898531 138 *target = null_oid;
33898531 139 return 0;
33898531 141 if (!arg)
33898531 142 return -1;
33898531 143 if (get_oid(arg, &oid))
33898531 144 return error(_("malformed object name '%s'"), arg);
33898531 145 *target = oid;
33898531 146 return 0;

read-cache.c

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

refs.c

722abec7 111 sanitized->buf[sanitized->len-1] = '-';
722abec7 170 if (sanitized)
722abec7 171 strbuf_addch(sanitized, '-');
722abec7 173 return -1;
722abec7 178 strbuf_complete(sanitized, '/');
722abec7 215 BUG("sanitizing refname '%s' check returned error", refname);

sequencer.c

4a72486d 2184 return error_errno("unable to open '%s'", todo_file);
4a72486d 2188 eol--; /* strip Carriage Return */
4a72486d 2190 goto fail;
4a72486d 2196 goto fail;
b07d9bfd 2300 error_errno("unable to open '%s'", todo_path);
b07d9bfd 2301 return 0;

upload-pack.c

6ef255b6 1073 precomposed_unicode = git_config_bool(var, value);

wt-status.c

b6d7dfc5 191 status_printf_ln(s, c, _(" (use \"git rm --staged <file>...\" to unstage)"));

Commits introducing uncovered code:

Denton Liu f39a9c65 remote: add --save-to-push option to git remote set-url
Denton Liu 10572de1 rebase: fast-forward --onto in more cases
Denton Liu 526c03b5 rebase: refactor can_fast_forward into goto tower
Derrick Stolee 91336887 repack: refactor pack deletion for future use
Derrick Stolee 3dfbc2f0 midx: implement midx_repack()
Derrick Stolee 3c9e7185 multi-pack-index: implement 'expire' subcommand
Derrick Stolee 5bf52fbc midx: refactor permutation logic and pack sorting
Derrick Stolee ab08c40a multi-pack-index: prepare 'repack' subcommand
Elijah Newren 6ef255b6 Honor core.precomposeUnicode in more places
Jonathan Nieder ee70c128 index: offer advice for unknown index extensions
Nguyễn Thái Ngọc Duy b0c2d613 Introduce "precious" file concept
Nguyễn Thái Ngọc Duy 722abec7 worktree add: sanitize worktree names
Nguyễn Thái Ngọc Duy b6d7dfc5 rm: add --staged as alias for --cached
Nguyễn Thái Ngọc Duy 1806c29f switch: make --orphan switch to an empty tree
Nguyễn Thái Ngọc Duy 8c1bf59d restore: take tree-ish from --source option instead
Nguyễn Thái Ngọc Duy 4de2081d restore: replace --force with --ignore-unmerged
Nguyễn Thái Ngọc Duy 3ec37ad1 switch: add --discard-changes
Nguyễn Thái Ngọc Duy c45f0f52 switch: reject if some operation is in progress
Nguyễn Thái Ngọc Duy 7968bef0 switch: only allow explicit detached HEAD
Nguyễn Thái Ngọc Duy 5c06e269 switch: stop accepting pathspec
Nguyễn Thái Ngọc Duy af482cb3 restore: support --patch
Nguyễn Thái Ngọc Duy 7800c9e6 restore: reject invalid combinations with --staged
Nguyễn Thái Ngọc Duy a0f3bbfa restore: add --worktree and --staged
Phillip Wood b07d9bfd commit/reset: try to clean up sequencer state
Phillip Wood 4a72486d fix cherry-pick/revert status after commit
Phillip Wood 33898531 rebase -i: use struct object_id for squash_onto
Phillip Wood c44c2462 rebase -i: remove duplication
Phillip Wood 73fdc535 rebase -i: use struct rebase_options to parse args
Phillip Wood 460bc3ce rebase -i: run without forking rebase--interactive
Phillip Wood 7d3488eb rebase -i: use struct commit when parsing options
Phillip Wood 0609b741 rebase -i: combine rebase--interactive.c with rebase.c
Phillip Wood 0ea0847e rebase -i: use struct rebase_options in do_interactive_rebase()

Uncovered code in 'next' not in 'master'

next f2820cf01acf778d953a46357a6160ba42711eb1
master 83232e38648b51abbcbdb56c94632b6906cc85a6

builtin/pull.c

d540b70c 652 argv_array_pushf(&args, "--cleanup=%s", cleanup_arg);

builtin/replace.c

f8e44a81 383 return error(_("could not parse %s as a commit"), argv[i]);
ee521ec4 490 return error(_("new commit is the same as the old one: '%s'"),

builtin/show-branch.c

7fdff474 756 read_ref_at(get_main_ref_store(the_repository),
7fdff474 769 if (read_ref_at(get_main_ref_store(the_repository),

builtin/tag.c

01dc801a 226 die(_("bad object type."));

dir.c

0488481e 2322 BUG("do not know how to check file existence in arbitrary repo");

merge-recursive.c

259ccb6c 322 strbuf_addstr(&opt->obuf, _("(bad commit)\n"));
259ccb6c 345 return err(opt, _("add_cacheinfo failed for path '%s'; merge aborting."), path);
259ccb6c 354 return err(opt, _("add_cacheinfo failed to refresh for path '%s'; merge aborting."), path);
259ccb6c 437 err(opt, _("error building trees"));
259ccb6c 692 ce = index_file_exists(opt->repo->index, path, strlen(path),
259ccb6c 886 return err(opt, msg, path, _(": perhaps a D/F conflict?"));
259ccb6c 887 return err(opt, msg, path, "");
8daec1df 936 return err(opt, _("cannot read object %s '%s'"),
8daec1df 939 ret = err(opt, _("blob expected for %s '%s'"),
259ccb6c 963 ret = err(opt, _("failed to open '%s': %s"),
259ccb6c 974 ret = err(opt, _("failed to symlink '%s': %s"),
259ccb6c 978 ret = err(opt,
8daec1df 980 contents->mode, oid_to_hex(&contents->oid), path);
259ccb6c 1182 output(opt, 1, _("Failed to merge submodule %s (commits not present)"), path);
259ccb6c 1199 } else if (show(opt, 2))
259ccb6c 1200 output(opt, 2, _("Fast-forwarding submodule %s"), path);
259ccb6c 1208 if (show(opt, 3)) {
259ccb6c 1209 output(opt, 3, _("Fast-forwarding submodule %s to the following commit:"), path);
259ccb6c 1210 output_commit_title(opt, commit_a);
259ccb6c 1211 } else if (show(opt, 2))
259ccb6c 1212 output(opt, 2, _("Fast-forwarding submodule %s"), path);
e3de888c 1277 return merge_mode_and_contents(opt, o, b, a,
259ccb6c 1325 ret = err(opt, _("Failed to execute internal merge"));
259ccb6c 1330 ret = err(opt, _("Unable to add %s to database"),
79c47598 1397 return -1;
8c8e5bd6 1408 return -1;
8daec1df 1746 if (update_file(opt, 0, add, a->path))
8daec1df 1753 if (update_file(opt, 0, add, b->path))
259ccb6c 2929 return err(opt, _("cannot read object %s"), oid_to_hex(oid));
259ccb6c 2932 return err(opt, _("object %s is not a blob"), oid_to_hex(oid));
259ccb6c 3068 remove_file_from_index(opt->repo->index, path);
8c8e5bd6 3122 return -1;
8c8e5bd6 3184 BUG("Impossible dir_rename_original_type/clean combination");
8daec1df 3362 } else if (!o_valid && !a_valid && !b_valid) {
8daec1df 3367 remove_file(opt, 1, path, !a->mode);
259ccb6c 3462 unpack_trees_finish(opt);
259ccb6c 3556 return err(opt, _("merge returned no commit"));
259ccb6c 3622 return err(opt, _("Could not parse object '%s'"),
259ccb6c 3638 return err(opt, _("Unable to write index."));
8c8e5bd6 3661 } else if (!strcasecmp(value, "conflict")) {
8c8e5bd6 3662 opt->detect_directory_renames = 1;
259ccb6c 3704 opt->subtree_shift = "";
259ccb6c 3708 opt->xdl_opts = DIFF_WITH_ALG(opt, PATIENCE_DIFF);
259ccb6c 3710 opt->xdl_opts = DIFF_WITH_ALG(opt, HISTOGRAM_DIFF);
259ccb6c 3716 DIFF_XDL_CLR(opt, NEED_MINIMAL);
259ccb6c 3717 opt->xdl_opts &= ~XDF_DIFF_ALGORITHM_MASK;
259ccb6c 3718 opt->xdl_opts |= value;
259ccb6c 3727 DIFF_XDL_SET(opt, IGNORE_CR_AT_EOL);
259ccb6c 3729 opt->renormalize = 1;
259ccb6c 3731 opt->renormalize = 0;

refs.c

56700903 630 refs_reflog_exists(refs, ref))

remote.c

c646d093 1925 BUG("stat_branch_pair: invalid abf '%d'", abf);

sequencer.c

d74f3e58 176 opts->explicit_cleanup = 1;
d74f3e58 179 opts->explicit_cleanup = 1;
dc42e9a8 542 static const char *describe_cleanup_mode(int cleanup_mode)
dc42e9a8 549 if (cleanup_mode < ARRAY_SIZE(modes))
dc42e9a8 550 return modes[cleanup_mode];
dc42e9a8 552 BUG("invalid cleanup_mode provided (%d)", cleanup_mode);
dc42e9a8 2369 else if (!strcmp(key, "options.default-msg-cleanup")) {
dc42e9a8 2370 opts->explicit_cleanup = 1;
dc42e9a8 2371 opts->default_msg_cleanup = get_cleanup_mode(value, 1);
dc42e9a8 2796 res |= git_config_set_in_file_gently(opts_file,
dc42e9a8 2798 describe_cleanup_mode(opts->default_msg_cleanup));

sha1-name.c

c931ba4e 1219 object = deref_tag(cb->repo, object, path,
0daf7ff6 1387 BUG("sorry get_merge_bases() can't take struct repository yet");

t/helper/test-tool.c

6ea18fff 101 die("Could not cd to '%s'", working_directory);

trace2.c

a0897249 448 tr2tls_create_self(thread_name, us_now);

trace2/tr2_dst.c

bce9db6d 16 const char *env_value = tr2_sysenv_get(TR2_SYSENV_DST_DEBUG);
a4d3a283 45 sid = last_slash + 1;
a4d3a283 55 strbuf_setlen(&path, base_path_len);
a4d3a283 56 strbuf_addf(&path, ".%d", attempt_count);
a4d3a283 65 if (tr2_dst_want_warning())
a4d3a283 66 warning("trace2: could not open '%.*s' for '%s' tracing: %s",
a5c08f12 69 strerror(errno));
a4d3a283 71 tr2_dst_trace_disable(dst);
a4d3a283 72 strbuf_release(&path);
a4d3a283 73 return 0;
bce9db6d 93 strerror(errno));
bce9db6d 303 warning("unable to write trace to '%s': %s",

trace2/tr2_sid.c

08881b9a 44 strbuf_add(&tr2sid_buf, "Localhost", 9);

trace2/tr2_sysenv.c

bce9db6d 70 return 0;
bce9db6d 95 BUG("tr2_sysenv_get invalid var '%d'", var);
bce9db6d 113 const char *tr2_sysenv_display_name(enum tr2_sysenv_variable var)
bce9db6d 115 if (var >= TR2_SYSENV_MUST_BE_LAST)
bce9db6d 116 BUG("tr2_sysenv_get invalid var '%d'", var);
bce9db6d 118 return tr2_sysenv_settings[var].env_var_name;

trace2/tr2_tgt_event.c

bce9db6d 56 tr2env_event_max_nesting_levels = max_nesting;
bce9db6d 61 tr2env_event_be_brief = want_brief;
bce9db6d 542 if (ctx->nr_open_regions <= tr2env_event_max_nesting_levels) {

Commits introducing uncovered code:

Christian Couder f8e44a81 replace: peel tag when passing a tag as parent to --graft
Christian Couder ee521ec4 replace: peel tag when passing a tag first to --graft
Damien Robert c646d093 ref-filter: use correct branch for %(push:track)
Denton Liu d540b70c merge: cleanup messages like commit
Denton Liu 01dc801a tag: fix formatting
Elijah Newren 259ccb6c merge-recursive: rename merge_options argument from 'o' to 'opt'
Elijah Newren 8daec1df merge-recursive: switch from (oid,mode) pairs to a diff_filespec
Elijah Newren e3de888c merge-recursive: rename diff_filespec 'one' to 'o'
Elijah Newren 79c47598 merge-recursive: avoid clobbering untracked files with directory renames
Elijah Newren 8c8e5bd6 merge-recursive: switch directory rename detection default
Jeff Hostetler bce9db6d trace2: use system/global config for default trace2 settings
Jeff Hostetler a0897249 trace2: refactor setting process starting time
Jeff Hostetler 08881b9a trace2: make SIDs more unique
Johannes Schindelin 6ea18fff test-tool: handle the `-C ` option just like `git`
Josh Steadmon a4d3a283 trace2: write to directory targets
Junio C Hamano a5c08f12 Merge branch 'jh/trace2-sid-fix' into next
Nguyễn Thái Ngọc Duy c931ba4e sha1-name.c: remove the_repo from handle_one_ref()
Nguyễn Thái Ngọc Duy 0daf7ff6 sha1-name.c: remove the_repo from get_oid_mb()
Nguyễn Thái Ngọc Duy 0488481e sha1-name.c: remove the_repo from diagnose_invalid_index_path()
Nguyễn Thái Ngọc Duy 7fdff474 refs.c: remove the_repo from read_ref_at()
Nguyễn Thái Ngọc Duy 56700903 refs.c: add repo_dwim_log()
Phillip Wood d74f3e58 sequencer: fix cleanup with --signoff and -x
Phillip Wood dc42e9a8 sequencer.c: save and restore cleanup mode

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

master 83232e38648b51abbcbdb56c94632b6906cc85a6
master@{1} 14c0f8d3ab6c36672189cd2dd217f4617d12ccba

builtin/blame.c

a544fb08 1005 die("no such ref: HEAD");

builtin/commit-graph.c

61df89c8 105 die_errno(_("Could not open commit-graph '%s'"), graph_name);
61df89c8 109 return 1;

builtin/difftool.c

ebe4df59 69 return error("expected object ID, got '%s'", p);
ebe4df59 73 return error("expected object ID, got '%s'", p);
20de316e 730 die(_("difftool requires worktree or --no-index"));

builtin/gc.c

bf3d70fe 126 die(_("failed to parse '%s' value '%s'"), var, value);

builtin/get-tar-commit-id.c

3548726c 40 return 1;
3548726c 42 return 1;

builtin/log.c

7954d365 254 static int estimate_commit_count(struct commit_list *list)
7954d365 292 int n = estimate_commit_count(list);
7954d365 336 static void setup_early_output(void)
7954d365 367 int n = estimate_commit_count(rev->commits);
7954d365 379 setup_early_output();

builtin/ls-files.c

7cb7283a 115 printf(" ctime: %u:%u\n", sd->sd_ctime.sec, sd->sd_ctime.nsec);
7cb7283a 116 printf(" mtime: %u:%u\n", sd->sd_mtime.sec, sd->sd_mtime.nsec);
7cb7283a 117 printf(" dev: %u\tino: %u\n", sd->sd_dev, sd->sd_ino);
7cb7283a 118 printf(" uid: %u\tgid: %u\n", sd->sd_uid, sd->sd_gid);
7cb7283a 119 printf(" size: %u\tflags: %x\n", sd->sd_size, ce->ce_flags);

builtin/rebase--interactive.c

1ba204de 17 static int add_exec_commands(struct string_list *commands)
1ba204de 19 const char *todo_file = rebase_path_todo();
1ba204de 20 struct todo_list todo_list = TODO_LIST_INIT;
1ba204de 23 if (strbuf_read_file(&todo_list.buf, todo_file, 0) < 0)
1ba204de 24 return error_errno(_("could not read '%s'."), todo_file);
1ba204de 26 if (todo_list_parse_insn_buffer(the_repository, todo_list.buf.buf,
1ba204de 28 todo_list_release(&todo_list);
1ba204de 29 return error(_("unusable todo list: '%s'"), todo_file);
1ba204de 32 todo_list_add_exec_commands(&todo_list, commands);
1ba204de 33 res = todo_list_write_to_file(the_repository, &todo_list,
1ba204de 35 todo_list_release(&todo_list);
1ba204de 37 if (res)
1ba204de 38 return error_errno(_("could not write '%s'."), todo_file);
1ba204de 39 return 0;
79d7e883 42 static int rearrange_squash_in_todo_file(void)
79d7e883 44 const char *todo_file = rebase_path_todo();
79d7e883 45 struct todo_list todo_list = TODO_LIST_INIT;
79d7e883 46 int res = 0;
79d7e883 48 if (strbuf_read_file(&todo_list.buf, todo_file, 0) < 0)
79d7e883 49 return error_errno(_("could not read '%s'."), todo_file);
79d7e883 50 if (todo_list_parse_insn_buffer(the_repository, todo_list.buf.buf,
79d7e883 52 todo_list_release(&todo_list);
79d7e883 53 return error(_("unusable todo list: '%s'"), todo_file);
79d7e883 56 res = todo_list_rearrange_squash(&todo_list);
79d7e883 57 if (!res)
79d7e883 58 res = todo_list_write_to_file(the_repository, &todo_list,
79d7e883 61 todo_list_release(&todo_list);
79d7e883 63 if (res)
79d7e883 64 return error_errno(_("could not write '%s'."), todo_file);
79d7e883 65 return 0;
ed35d188 75 return error_errno(_("could not read '%s'."), todo_file);
ed35d188 79 todo_list_release(&todo_list);
ed35d188 80 return error(_("unusable todo list: '%s'"), todo_file);
ed35d188 88 return error_errno(_("could not write '%s'."), todo_file);
a930eb03 100 return error_errno(_("could not read '%s'."), todo_file);
a930eb03 106 res = error_errno(_("could not write '%s'"), todo_file);
94bcad79 208 BUG("unusable todo list");
79d7e883 366 ret = rearrange_squash_in_todo_file();
1ba204de 369 ret = add_exec_commands(&commands);

commit-graph.c

61df89c8 89 close(*fd);
61df89c8 90 return 0;
93b4405f 218 error(_("commit-graph improper chunk offset %08x%08x"), (uint32_t)(chunk_offset >> 32),
93b4405f 255 error(_("commit-graph chunk id %08x appears multiple times"), chunk_id);
43d35618 315 die("dying as requested by the '%s' variable on commit-graph load!",
93b4405f 1182 graph_report(_("failed to parse commit %s from commit-graph"),
93b4405f 1248 graph_report(_("commit-graph parent list for commit %s terminates early"),
93b4405f 1253 graph_report(_("commit-graph has generation number zero for commit %s, but non-zero elsewhere"),

diff-no-index.c

16bb3d71 263 warning(_("Not a git repository. Use --no-index to "
16bb3d71 299 return 1;

diff.c

d2d3f273 4806 return error(_("unknown change class '%c' in --diff-filter=%s"),
5a749d9f 4830 return error(_("unknown value after ws-error-highlight=%.*s"),
a75f28cb 4844 return error(_("unable to resolve '%s'"), arg);
59311a98 4924 options->color_moved = COLOR_MOVED_NO;
bb987290 4946 options->color_moved_ws_handling = 0;
bb987290 4947 return 0;

fast-import.c

28d055bd 960 && (pack_size + PACK_SIZE_THRESHOLD + s.total_out) > max_packsize)
28d055bd 1056 if ((max_packsize
28d055bd 1057 && (pack_size + PACK_SIZE_THRESHOLD + len) > max_packsize)
28d055bd 1058 || (pack_size + PACK_SIZE_THRESHOLD + len) < pack_size)
28d055bd 2071 tmp_hex_oid_len > hexsz ||
28d055bd 2085 if (tmp_hex_oid_len == hexsz && !get_oid_hex(hex_oid, &oid)) {
7ffde293 2262 parse_cat_blob(v);
28d055bd 2566 if (!buf || size < the_hash_algo->hexsz + 6)
7ffde293 2640 parse_cat_blob(v);
28d055bd 2855 cat_blob_write(output, the_hash_algo->hexsz + 1);
28d055bd 2885 const unsigned hexsz = the_hash_algo->hexsz;
28d055bd 2920 if (size < hexsz + strlen("object ") ||
28d055bd 2925 if (size < hexsz + strlen("tree ") ||
ef479a12 2957 static void print_ls(int mode, const unsigned char *hash, const char *path)
5056bb76 3326 parse_ls(v, NULL);
7ffde293 3328 parse_cat_blob(v);
cf7b857a 3330 parse_get_mark(v);

fetch-pack.c

1e7d440b 1680 BUG("Protocol V2 does not provide shallows at this point in the fetch");

http-walker.c

2bf1db78 445 hash_to_hex(target->hash));

http.c

05dfc7ca 2094 fprintf(stderr, "Getting index for pack %s\n", hash_to_hex(hash));
ddc56d47 2176 (*data == '\n' || *data == '\0')) {
05dfc7ca 2291 hash_to_hex(target->hash),
eed0e60f 2433 the_hash_algo->init_fn(&freq->c);

pack-bitmap.c

0dd49248 192 error("Duplicate entry in bitmap index: %s", hash_to_hex(hash));
4828ce98 312 goto failed;

pack-revindex.c

4828ce98 166 return -1;
4828ce98 197 return NULL;

packfile.c

fc789156 475 ret = p->pack_name; /* we only have a base */
4828ce98 2038 return -1;

parse-options-cb.c

d8774183 26 v = the_hash_algo->hexsz;

parse-options.c

5205749d 534 static int show_gitcomp(const struct option *opts)
5205749d 613 return show_gitcomp(options);

progress.c

545dc345 127 fprintf(stderr, " %s%*s", counters_sb->buf,
545dc345 130 clear_len = progress->title_len + 1 < cols ?
545dc345 131 cols - progress->title_len : 0;
545dc345 132 fprintf(stderr, "%s:%*s\n %s%s",
545dc345 135 progress->split = 1;

rebase-interactive.c

6ca89c6f 26 warning(_("unrecognized setting %s for option "
a930eb03 105 return error_errno(_("could not write '%s'"), todo_file);
a930eb03 108 return error(_("could not copy '%s' to '%s'."), todo_file,
6ca89c6f 167 goto leave_check;

remote-curl.c

9c9492e8 1123 else if (!*q)

revision.c

8320b1db 956 prio_queue_put(queue, p);

sequencer.c

f59199d5 2683 res |= git_config_set_in_file_gently(opts_file,
f59199d5 2714 res |= git_config_set_in_file_gently(opts_file,
f59199d5 2715 "options.gpg-sign", opts->gpg_sign);
616d7740 4646 strbuf_addstr(buf, " -c");
87805600 4693 res = -1;
6ca89c6f 4694 goto out;
6ca89c6f 4699 goto out;
6ca89c6f 4708 fprintf(stderr, _(edit_todo_list_advice));
6bfeb7f1 4824 todo_list_release(&new_todo);
94bcad79 4830 todo_list_release(&new_todo);
94bcad79 4831 return error_errno(_("could not write '%s'"), todo_file);

server-info.c

4ecbd649 148 } else if (line.buf[0] == 'D') {
4ecbd649 151 } else if (line.buf[0] == 'T') {
b83a3089 153 goto out_stale;

sha1-file.c

95399788 198 return GIT_HASH_UNKNOWN;

unpack-trees.c

191e9d2c 1699 return add_rejected_path(o, error_type, ce->name);
b165fac8 2346 return o->quiet ? -1 :

Commits introducing uncovered code:

Ævar Arnfjörð Bjarmason 61df89c8 commit-graph: don't early exit(1) on e.g. "git status"
Ævar Arnfjörð Bjarmason 43d35618 commit-graph write: don't die if the existing graph is corrupt
Ævar Arnfjörð Bjarmason bf3d70fe gc: handle & check gc.reflogExpire config
Ævar Arnfjörð Bjarmason 93b4405f commit-graph: improve & i18n error messages
Alban Gruin 6bfeb7f1 sequencer: refactor skip_unnecessary_picks() to work on a todo_list
Alban Gruin 616d7740 sequencer: introduce todo_list_write_to_file()
Alban Gruin 94bcad79 sequencer: change complete_action() to use the refactored functions
Alban Gruin a930eb03 rebase-interactive: rewrite edit_todo_list() to handle the initial edit
Alban Gruin 6ca89c6f sequencer: refactor check_todo_list() to work on a todo_list
Alban Gruin ed35d188 rebase--interactive: move transform_todo_file()
Alban Gruin 1ba204de rebase--interactive: move sequencer_add_exec_commands()
Alban Gruin 79d7e883 rebase--interactive: move rearrange_squash_in_todo_file()
brian m. carlson 05dfc7ca http: replace sha1_to_hex
brian m. carlson eed0e60f http: compute hash of downloaded objects using the_hash_algo
brian m. carlson 95399788 hash: add a function to lookup hash algorithm by length
brian m. carlson 0dd49248 pack-bitmap: replace sha1_to_hex
brian m. carlson 2bf1db78 http-walker: replace sha1_to_hex
brian m. carlson ebe4df59 builtin/difftool: use parse_oid_hex
brian m. carlson ef479a12 fast-import: replace sha1_to_hex
brian m. carlson 9c9492e8 remote-curl: make hash size independent
brian m. carlson 28d055bd fast-import: make hash-size independent
Elijah Newren cf7b857a fast-import: fix erroneous handling of get-mark with empty orphan commits
Elijah Newren 5056bb76 fast-import: check most prominent commands first
Elijah Newren 7ffde293 fast-import: only allow cat-blob requests where it makes sense
Jeff King 8320b1db revision: use a prio_queue to hold rewritten parents
Jeff King 5205749d parse-options: drop unused ctx parameter from show_gitcomp()
Jeff King 4828ce98 pack-revindex: open index if necessary
Jeff King 4ecbd649 server-info: use strbuf to read old info/packs file
Jeff King b83a3089 server-info: fix blind pointer arithmetic
Jeff King ddc56d47 http: simplify parsing of remote objects/info/packs
Jeff King 7954d365 log: drop unused rev_info from early output
Jeff King fc789156 packfile: fix pack basename computation
Johannes Schindelin 20de316e difftool: allow running outside Git worktrees with --no-index
Jonathan Tan 1e7d440b fetch-pack: call prepare_shallow_info only if v0
Nguyễn Thái Ngọc Duy b165fac8 unpack-trees: rename "gently" flag to "quiet"
Nguyễn Thái Ngọc Duy 191e9d2c unpack-trees: keep gently check inside add_rejected_path
Nguyễn Thái Ngọc Duy bb987290 diff.c: allow --no-color-moved-ws
Nguyễn Thái Ngọc Duy 59311a98 diff-parseopt: convert --[no-]color-moved
Nguyễn Thái Ngọc Duy a75f28cb diff-parseopt: convert --find-object
Nguyễn Thái Ngọc Duy 5a749d9f diff-parseopt: convert --ws-error-highlight
Nguyễn Thái Ngọc Duy d2d3f273 diff-parseopt: convert --diff-filter
Nguyễn Thái Ngọc Duy 16bb3d71 diff --no-index: use parse_options() instead of diff_opt_parse()
Nguyễn Thái Ngọc Duy d8774183 diff-parseopt: convert --[no-]abbrev
Phillip Wood f59199d5 sequencer: break some long lines
Rene Scharfe 3548726c get-tar-commit-id: parse comment record
René Scharfe 87805600 sequencer: factor out strbuf_read_file_or_whine()
SZEDER Gábor 545dc345 progress: break too long progress bar lines
SZEDER Gábor a544fb08 blame: default to HEAD in a bare repo when no start commit is given
Thomas Gummerer 7cb7283a ls-files: use correct format string