{"thread":{"id":"50981","subject":"Git Test Coverage Report (April 23)","startedAt":"2019-04-24T01:40:33Z","lastAt":"2019-04-24T01:40:33Z","messageCount":1,"participants":["Derrick Stolee"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"374360","messageId":"b67443ff-7269-60ae-f553-8c63b55b020e@gmail.com","threadId":"50981","inReplyTo":null,"subject":"Git Test Coverage Report (April 23)","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2019-04-24T01:40:24Z","receivedAt":"2019-04-24T01:40:33Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"Hello! The Git Test Coverage Report returns. You can view it online [1] with\nlinks to the associated commits on GitHub, or the text report [2] also copied\nbelow.\n\nThanks,\n-Stolee\n\n[1] https://derrickstolee.github.io/git-test-coverage/reports/2019-04-23.htm\n[2] https://derrickstolee.github.io/git-test-coverage/reports/2019-04-23.txt\n\n---\n\npu\t10106b3182f67f26aca845f309ac34197630ae3d\njch\t7817e26e80e7a31d173cc239a27d2b619fe18685\nnext\tbc5ef9b4584fe30aba4dab265bba44254d0b5df0\nmaster\t14c0f8d3ab6c36672189cd2dd217f4617d12ccba\nmaster@{1}\taeb582a98374c094361cba1bd756dc6307432c42\n\n\nUncovered code in 'pu' not in 'jch'\n--------------------------------------------------------\n\nblame.c\ndfb4ee12 366) continue;\nd0738d94 618)     ent->ignored == next->ignored &&\na5c91678 619)     ent->unblamable == next->unblamable) {\na5c91678 1853) continue;\n\nbuiltin/blame.c\na5c91678 493) memset(hex, '0', length);\na5c91678 716) return ret;\n\nbuiltin/cat-file.c\ne265069a 528) warning(\"This repository uses promisor remotes. Some objects may not be loaded.\");\n\nbuiltin/commit.c\n8e7e6c05 1674) return 1;\n\nbuiltin/config.c\na12c1ff3 110) die(_(\"$HOME not set\"));\na12c1ff3 122) given_config_source.file = git_etc_gitconfig();\n6f11fd5e 489) BUG(\"action %d cannot get here\", actions);\n6f11fd5e 503) die(_(\"unknown config source\"));\n6f11fd5e 509) die(_(\"invalid key pattern: %s\"), key);\n\nbuiltin/fetch-pack.c\nbf01639c 249) warning(_(\"Lockfile created but not reported: %s\"),\nbf01639c 250) pack_lockfiles.items[i].string);\n\nbuiltin/gc.c\n8e7e6c05 692) return 1;\n\nbuiltin/pack-objects.c\n820a5361 858) BUG(\"configured exclusion wasn't configured\");\n820a5361 2795) die(_(\"value of uploadpack.blobpackfileuri must be \"\n820a5361 2798) die(_(\"object already configured in another \"\n\nbuiltin/rebase.c\n0609b741 146) static int add_exec_commands(struct string_list *commands)\n0609b741 148) const char *todo_file = rebase_path_todo();\n0609b741 149) struct todo_list todo_list = TODO_LIST_INIT;\n0609b741 152) if (strbuf_read_file(&todo_list.buf, todo_file, 0) < 0)\n0609b741 153) return error_errno(_(\"could not read '%s'.\"), todo_file);\n0609b741 155) if (todo_list_parse_insn_buffer(the_repository, todo_list.buf.buf,\n0609b741 157) todo_list_release(&todo_list);\n0609b741 158) return error(_(\"unusable todo list: '%s'\"), todo_file);\n0609b741 161) todo_list_add_exec_commands(&todo_list, commands);\n0609b741 162) res = todo_list_write_to_file(the_repository, &todo_list,\n0609b741 164) todo_list_release(&todo_list);\n0609b741 166) if (res)\n0609b741 167) return error_errno(_(\"could not write '%s'.\"), todo_file);\n0609b741 168) return 0;\n0609b741 171) static int rearrange_squash_in_todo_file(void)\n0609b741 173) const char *todo_file = rebase_path_todo();\n0609b741 174) struct todo_list todo_list = TODO_LIST_INIT;\n0609b741 175) int res = 0;\n0609b741 177) if (strbuf_read_file(&todo_list.buf, todo_file, 0) < 0)\n0609b741 178) return error_errno(_(\"could not read '%s'.\"), todo_file);\n0609b741 179) if (todo_list_parse_insn_buffer(the_repository, todo_list.buf.buf,\n0609b741 181) todo_list_release(&todo_list);\n0609b741 182) return error(_(\"unusable todo list: '%s'\"), todo_file);\n0609b741 185) res = todo_list_rearrange_squash(&todo_list);\n0609b741 186) if (!res)\n0609b741 187) res = todo_list_write_to_file(the_repository, &todo_list,\n0609b741 190) todo_list_release(&todo_list);\n0609b741 192) if (res)\n0609b741 193) return error_errno(_(\"could not write '%s'.\"), todo_file);\n0609b741 194) return 0;\n0609b741 204) return error_errno(_(\"could not read '%s'.\"), todo_file);\n0609b741 208) todo_list_release(&todo_list);\n0609b741 209) return error(_(\"unusable todo list: '%s'\"), todo_file);\n0609b741 217) return error_errno(_(\"could not write '%s'.\"), todo_file);\n0609b741 229) return error_errno(_(\"could not read '%s'.\"), todo_file);\n0609b741 235) res = error_errno(_(\"could not write '%s'\"), todo_file);\n0609b741 252) return error(_(\"no HEAD?\"));\nc44c2462 279) return error_errno(_(\"could not create temporary %s\"), merge_dir());\n0609b741 285) return error_errno(_(\"could not mark as interactive\"));\n0609b741 314) return -1;\n0609b741 318) return -1;\n0609b741 323) free(revisions);\n0609b741 324) free(shortrevisions);\n0609b741 326) return -1;\n7d3488eb 335) argv_array_push(&make_script_args,\n0ea0847e 336) oid_to_hex(&opts->restrict_revision->object.oid));\n0609b741 343) error(_(\"could not generate todo list\"));\n0609b741 348) BUG(\"unusable todo list\");\n460bc3ce 382) die(_(\"a base commit must be provided with --upstream or --onto\"));\n460bc3ce 419) ret = rearrange_squash_in_todo_file();\n460bc3ce 420) break;\n460bc3ce 422) struct string_list commands = STRING_LIST_INIT_DUP;\n460bc3ce 424) split_exec_commands(opts->cmd, &commands);\n460bc3ce 425) ret = add_exec_commands(&commands);\n460bc3ce 426) string_list_clear(&commands, 0);\n460bc3ce 427) break;\n460bc3ce 430) BUG(\"invalid command '%d'\", command);\n0609b741 509) usage_with_options(builtin_rebase_interactive_usage, options);\n73fdc535 515) opts.squash_onto = &squash_onto;\n0609b741 518) warning(_(\"--[no-]rebase-cousins has no effect without \"\n\ncommit-graph.c\nb1beb050 936) error(_(\"unsupported commit-graph version %d\"),\nb1beb050 938) return 1;\n8e7e6c05 988) error(_(\"error adding pack %s\"), packname.buf);\n8e7e6c05 989) res = 1;\n8e7e6c05 990) goto cleanup;\n8e7e6c05 993) error(_(\"error opening index for %s\"), packname.buf);\n8e7e6c05 994) res = 1;\n8e7e6c05 995) goto cleanup;\n8e7e6c05 1068) error(_(\"the commit graph format cannot write %d commits\"), count_distinct);\n8e7e6c05 1069) res = 1;\n8e7e6c05 1070) goto cleanup;\n8e7e6c05 1104) error(_(\"too many commits to write graph\"));\n8e7e6c05 1105) res = 1;\n8e7e6c05 1106) goto cleanup;\n8e7e6c05 1114) error(_(\"unable to create leading directories of %s\"),\n8e7e6c05 1116) res = errno;\n8e7e6c05 1117) goto cleanup;\n\nconfig.c\n8f7c7f55 2155) int repo_config_set_gently(struct repository *r,\n8f7c7f55 2158) char *path = repo_git_path(r, \"config\");\n8f7c7f55 2159) int ret = git_config_set_multivar_in_file_gently(path, key, value, NULL, 0);\n8f7c7f55 2160) free(path);\n8f7c7f55 2161) return ret;\n8f7c7f55 2164) void repo_config_set(struct repository *r, const char *key, const char *value)\n8f7c7f55 2166) if (!repo_config_set_gently(r, key, value))\n8f7c7f55 2167) return;\n8f7c7f55 2168) if (value)\n8f7c7f55 2169) die(_(\"could not set '%s' to '%s'\"), key, value);\n8f7c7f55 2171) die(_(\"could not unset '%s'\"), key);\n8f7c7f55 2174) int repo_config_set_worktree_gently(struct repository *r,\n8f7c7f55 2180) path = get_worktree_config(r);\n8f7c7f55 2181) if (!path)\n8f7c7f55 2182) return CONFIG_INVALID_FILE;\n8f7c7f55 2183) ret = git_config_set_multivar_in_file_gently(path, key, value, NULL, 0);\n8f7c7f55 2184) free(path);\n8f7c7f55 2185) return ret;\n\nfetch-pack.c\n820a5361 1390) die(\"expected '<hash> <uri>', got: %s\\n\", reader->line);\n820a5361 1395) die(\"expected DELIM\");\n820a5361 1522) die(\"fetch-pack: unable to spawn http-fetch\");\n820a5361 1526) die(\"fetch-pack: expected keep then TAB at start of http-fetch output\");\n820a5361 1531) die(\"fetch-pack: expected hash then LF at end of http-fetch output\");\n820a5361 1538) die(\"fetch-pack: unable to finish http-fetch\");\n820a5361 1542) die(\"fetch-pack: pack downloaded from %s does not match expected hash %.*s\",\n820a5361 1543)     uri, (int) the_hash_algo->hexsz,\n820a5361 1544)     packfile_uris.items[i].string);\n\nhttp-fetch.c\n472fbef8 75) die(\"couldn't create http pack request\");\n472fbef8 82) die(\"Unable to get pack file %s\\n%s\", preq->url,\n472fbef8 86) die(\"Unable to start request\");\n472fbef8 101) walker_targets_free(commits, commit_id, write_ref);\n472fbef8 104) fprintf(stderr,\n\nhttp.c\nba81921a 2005) if (fflush((FILE *)result)) {\nba81921a 2009) rewind((FILE *)result);\nba81921a 2010) if (ftruncate(fileno((FILE *)result), 0) < 0) {\n8b13ff27 2302) target ? hash_to_hex(target->hash) : base_url,\n\noidset.c\n3486d8d4 69) die_errno(\"Could not read '%s'\", path);\n\nparse-options-cb.c\n7d3488eb 99) int parse_opt_commit(const struct option *opt, const char *arg, int unset)\n7d3488eb 103) struct commit **target = opt->value;\n7d3488eb 105) if (!arg)\n7d3488eb 106) return -1;\n7d3488eb 107) if (get_oid(arg, &oid))\n7d3488eb 108) return error(\"malformed object name %s\", arg);\n7d3488eb 109) commit = lookup_commit_reference(the_repository, &oid);\n7d3488eb 110) if (!commit)\n7d3488eb 111) return error(\"no such commit %s\", arg);\n7d3488eb 112) *target = commit;\n7d3488eb 113) return 0;\n33898531 132) int parse_opt_object_id(const struct option *opt, const char *arg, int unset)\n33898531 135) struct object_id *target = opt->value;\n33898531 137) if (unset) {\n33898531 138) *target = null_oid;\n33898531 139) return 0;\n33898531 141) if (!arg)\n33898531 142) return -1;\n33898531 143) if (get_oid(arg, &oid))\n33898531 144) return error(_(\"malformed object name '%s'\"), arg);\n33898531 145) *target = oid;\n33898531 146) return 0;\n\npromisor-remote.c\n0ba08c05 25) die(_(\"Remote with no URL\"));\n54248706 61) warning(_(\"promisor remote name cannot begin with '/': %s\"),\n54248706 63) return NULL;\n7bdf0926 93) previous->next = r->next;\n7b6e1b04 108) return git_config_string(&core_partial_clone_filter_default,\nb21a55f3 139) return 0;\ndcc8b4e9 202) static int remove_fetched_oids(struct object_id **oids, int oid_nr, int to_free)\ndcc8b4e9 204) int i, missing_nr = 0;\ndcc8b4e9 205) int *missing = xcalloc(oid_nr, sizeof(*missing));\ndcc8b4e9 206) struct object_id *old_oids = *oids;\ndcc8b4e9 208) int old_fetch_if_missing = fetch_if_missing;\ndcc8b4e9 210) fetch_if_missing = 0;\ndcc8b4e9 212) for (i = 0; i < oid_nr; i++)\ndcc8b4e9 213) if (oid_object_info_extended(the_repository, &old_oids[i], NULL, 0)) {\ndcc8b4e9 214) missing[i] = 1;\ndcc8b4e9 215) missing_nr++;\ndcc8b4e9 218) fetch_if_missing = old_fetch_if_missing;\ndcc8b4e9 220) if (missing_nr) {\ndcc8b4e9 221) int j = 0;\ndcc8b4e9 222) new_oids = xcalloc(missing_nr, sizeof(*new_oids));\ndcc8b4e9 223) for (i = 0; i < oid_nr; i++)\ndcc8b4e9 224) if (missing[i])\ndcc8b4e9 225) oidcpy(&new_oids[j++], &old_oids[i]);\ndcc8b4e9 226) *oids = new_oids;\ndcc8b4e9 227) if (to_free)\ndcc8b4e9 228) free(old_oids);\ndcc8b4e9 231) free(missing);\ndcc8b4e9 233) return missing_nr;\ndcc8b4e9 248) if (missing_nr == 1)\ndcc8b4e9 249) continue;\ndcc8b4e9 250) missing_nr = remove_fetched_oids(&missing_oids, missing_nr, to_free);\ndcc8b4e9 251) if (missing_nr) {\ndcc8b4e9 252) to_free = 1;\ndcc8b4e9 253) continue;\ndcc8b4e9 261) free(missing_oids);\n\nprotocol.c\n6da1f1a9 37) die(_(\"Unrecognized protocol version\"));\n6da1f1a9 39) die(_(\"Unrecognized protocol_version\"));\n6da1f1a9 74) BUG(\"late attempt to register an allowed protocol version\");\n\nref-filter.c\n3da20422 93) keydata_aka_refname ? keydata_aka_refname : k->wt->head_ref);\n\nremote-curl.c\n6da1f1a9 345) return 0;\n\nsequencer.c\n4a72486d 2184) return error_errno(\"unable to open '%s'\", todo_file);\n4a72486d 2188) eol--; /* strip Carriage Return */\n4a72486d 2190) goto fail;\n4a72486d 2196) goto fail;\nb07d9bfd 2300) error_errno(\"unable to open '%s'\", todo_path);\nb07d9bfd 2301) return 0;\n\nupload-pack.c\na8d662e3 130) return readsz;\n820a5361 149) BUG(\"packfile_uris requires sideband-all\");\na8d662e3 355) send_client_data(1, output_state.buffer, output_state.used);\n820a5361 1384) string_list_clear(&data->uri_protocols, 0);\n\nwrapper.c\n5efde212 70) die(\"Out of memory, malloc failed (tried to allocate %\" PRIuMAX \" bytes)\",\n5efde212 73) error(\"Out of memory, malloc failed (tried to allocate %\" PRIuMAX \" bytes)\",\n\nCommits introducting uncovered code:\nBarret Rhoden\tdfb4ee12 blame: use a fingerprint heuristic to match ignored lines\nBarret Rhoden\td0738d94 blame: add config options to handle output for ignored lines\nBarret Rhoden\ta5c91678 blame: add the ability to ignore commits and their changes\nBarret Rhoden\t3486d8d4 Move init_skiplist() outside of fsck\nChristian Couder\t0ba08c05 Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}\nChristian Couder\t54248706 Add initial support for many promisor remotes\nChristian Couder\t7bdf0926 promisor-remote: use repository_format_partial_clone\nChristian Couder\t7b6e1b04 Move core_partial_clone_filter_default to promisor-remote.c\nChristian Couder\tb21a55f3 promisor-remote: parse remote.*.partialclonefilter\nChristian Couder\tdcc8b4e9 promisor-remote: implement promisor_remote_get_direct()\nChristian Couder\te265069a Use promisor_remote_get_direct() and has_promisor_remote()\nDan McGregor\tba81921a http: cast result to FILE *\nDerrick Stolee\t8e7e6c05 commit-graph: return with errors during write\nDerrick Stolee\tb1beb050 commit-graph: create new version flags\nJonathan Tan\tbf01639c fetch-pack: support more than one pack lockfile\nJonathan Tan\ta8d662e3 upload-pack: refactor reading of pack-objects out\nJonathan Tan\t472fbef8 http-fetch: support fetching packfiles by URL\nJonathan Tan\t820a5361 upload-pack: send part of packfile response as uri\nJosh Steadmon\t6da1f1a9 protocol: advertise multiple supported versions\nJunio C Hamano\t8b13ff27 Merge branch 'jt/fetch-cdn-offload' into pu\nMartin Koegler\t5efde212 zlib.c: use size_t for size\nNguyễn Thái Ngọc Duy\t6f11fd5e config: add --move-to\nNguyễn Thái Ngọc Duy\ta12c1ff3 config: factor out set_config_source_file()\nNguyễn Thái Ngọc Duy\t8f7c7f55 config.c: add repo_config_set_worktree_gently()\nNickolai Belakovski\t3da20422 ref-filter: add worktreepath atom\nPhillip Wood\t33898531 rebase -i: use struct object_id for squash_onto\nPhillip Wood\t460bc3ce rebase -i: run without forking rebase--interactive\nPhillip Wood\t0ea0847e rebase -i: use struct rebase_options in do_interactive_rebase()\nPhillip Wood\t7d3488eb rebase -i: use struct commit when parsing options\nPhillip Wood\tc44c2462 rebase -i: remove duplication\nPhillip Wood\t0609b741 rebase -i: combine rebase--interactive.c with rebase.c\nPhillip Wood\t4a72486d fix cherry-pick/revert status after commit\nPhillip Wood\tb07d9bfd commit/reset: try to clean up sequencer state\nPhillip Wood\t73fdc535 rebase -i: use struct rebase_options to parse args\n\n\nUncovered code in 'jch' not in 'next'\n--------------------------------------------------------\n\nattr.c\nb0c2d613 1167) return 0;\n\nbuiltin/checkout.c\n4de2081d 415) die(_(\"'%s' cannot be used with updating paths\"),\n4de2081d 425) die(_(\"'%s' cannot be used with %s\"),\na0f3bbfa 433) die(_(\"neither '%s' or '%s' is specified\"),\na0f3bbfa 437) die(_(\"'%s' must be used when '%s' is not specified\"),\n7800c9e6 442) die(_(\"'%s' or '%s' cannot be used with %s\"),\n7800c9e6 447) die(_(\"'%s' or '%s' cannot be used with %s\"),\na0f3bbfa 456) patch_mode = \"--patch=reset\";\naf482cb3 460) BUG(\"either flag must have been set, worktree=%d, index=%d\",\na0f3bbfa 536) die(_(\"unable to write new index file\"));\n1806c29f 656) BUG(\"'switch --orphan' should never accept a commit as starting point\");\n1806c29f 1039) BUG(\"'switch --orphan' should never accept a commit as starting point\");\n5c06e269 1176) die(_(\"only one reference expected\"));\n7968bef0 1300) const char *ref = to_free;\n7968bef0 1302) if (skip_prefix(ref, \"refs/tags/\", &ref))\n7968bef0 1303) die(_(\"a branch is expected, got tag '%s'\"), ref);\n7968bef0 1304) if (skip_prefix(ref, \"refs/remotes/\", &ref))\n7968bef0 1305) die(_(\"a branch is expected, got remote branch '%s'\"), ref);\n7968bef0 1306) die(_(\"a branch is expected, got '%s'\"), ref);\n7968bef0 1314) die(_(\"a branch is expected, got '%s'\"), branch_info->name);\nc45f0f52 1329) die(_(\"cannot switch branch in the middle of an am session\\n\"\nc45f0f52 1333) die(_(\"cannot switch branch while rebasing\\n\"\nc45f0f52 1337) die(_(\"cannot switch branch while cherry-picking\\n\"\nc45f0f52 1341) die(_(\"cannot switch branch while reverting\\n\"\nc45f0f52 1345) die(_(\"cannot switch branch while bisecting\\n\"\n3ec37ad1 1372) die(_(\"'%s' cannot be used with '%s'\"), \"--discard-changes\", \"--merge\");\n8c1bf59d 1510) BUG(\"make up your mind, you need to take _something_\");\na0f3bbfa 1542) opts->checkout_index = 0;\na0f3bbfa 1552) BUG(\"these flags should be non-negative by now\");\n8c1bf59d 1613) die(_(\"could not resolve %s\"), opts->from_treeish);\n\nbuiltin/multi-pack-index.c\n467ae6f9 52) die(_(\"--batch-size option is only for 'repack' subcommand\"));\n467ae6f9 61) die(_(\"unrecognized subcommand: %s\"), argv[0]);\n\nbuiltin/pull.c\nd540b70c 652) argv_array_pushf(&args, \"--cleanup=%s\", cleanup_arg);\n\nbuiltin/rebase.c\n9999ed57 890) goto done;\n6ddf3d44 906) goto done;\n\nbuiltin/remote.c\nf39a9c65 1551) die(_(\"--save-to-push cannot be used with other options\"));\nf39a9c65 1575) die(_(\"--save-to-push can only be used when only one url is defined\"));\n\nbuiltin/replace.c\nf8e44a81 383) return error(_(\"could not parse %s as a commit\"), argv[i]);\nee521ec4 490) return error(_(\"new commit is the same as the old one: '%s'\"),\n\nbuiltin/show-branch.c\n7fdff474 756) read_ref_at(get_main_ref_store(the_repository),\n7fdff474 769) if (read_ref_at(get_main_ref_store(the_repository),\n\nbuiltin/tag.c\n01dc801a 226) die(_(\"bad object type.\"));\n\nbuiltin/worktree.c\n722abec7 297) BUG(\"How come '%s' becomes empty after sanitization?\", sb.buf);\n\ndir.c\n0488481e 2322) BUG(\"do not know how to check file existence in arbitrary repo\");\n\nmerge-recursive.c\n259ccb6c 322) strbuf_addstr(&opt->obuf, _(\"(bad commit)\\n\"));\n259ccb6c 345) return err(opt, _(\"add_cacheinfo failed for path '%s'; merge aborting.\"), path);\n259ccb6c 354) return err(opt, _(\"add_cacheinfo failed to refresh for path '%s'; merge aborting.\"), path);\n259ccb6c 437) err(opt, _(\"error building trees\"));\n259ccb6c 692) ce = index_file_exists(opt->repo->index, path, strlen(path),\n259ccb6c 886) return err(opt, msg, path, _(\": perhaps a D/F conflict?\"));\n259ccb6c 887) return err(opt, msg, path, \"\");\n8daec1df 936) return err(opt, _(\"cannot read object %s '%s'\"),\n8daec1df 939) ret = err(opt, _(\"blob expected for %s '%s'\"),\n259ccb6c 963) ret = err(opt, _(\"failed to open '%s': %s\"),\n259ccb6c 974) ret = err(opt, _(\"failed to symlink '%s': %s\"),\n259ccb6c 978) ret = err(opt,\n8daec1df 980)   contents->mode, oid_to_hex(&contents->oid), path);\n259ccb6c 1182) output(opt, 1, _(\"Failed to merge submodule %s (commits not present)\"), path);\n259ccb6c 1199) } else if (show(opt, 2))\n259ccb6c 1200) output(opt, 2, _(\"Fast-forwarding submodule %s\"), path);\n259ccb6c 1208) if (show(opt, 3)) {\n259ccb6c 1209) output(opt, 3, _(\"Fast-forwarding submodule %s to the following commit:\"), path);\n259ccb6c 1210) output_commit_title(opt, commit_a);\n259ccb6c 1211) } else if (show(opt, 2))\n259ccb6c 1212) output(opt, 2, _(\"Fast-forwarding submodule %s\"), path);\ne3de888c 1277) return merge_mode_and_contents(opt, o, b, a,\n259ccb6c 1325) ret = err(opt, _(\"Failed to execute internal merge\"));\n259ccb6c 1330) ret = err(opt, _(\"Unable to add %s to database\"),\n79c47598 1397) return -1;\n8c8e5bd6 1408) return -1;\n8daec1df 1746) if (update_file(opt, 0, add, a->path))\n8daec1df 1753) if (update_file(opt, 0, add, b->path))\n259ccb6c 2929) return err(opt, _(\"cannot read object %s\"), oid_to_hex(oid));\n259ccb6c 2932) return err(opt, _(\"object %s is not a blob\"), oid_to_hex(oid));\n259ccb6c 3068) remove_file_from_index(opt->repo->index, path);\n8c8e5bd6 3122) return -1;\n8c8e5bd6 3184) BUG(\"Impossible dir_rename_original_type/clean combination\");\n8daec1df 3362) } else if (!o_valid && !a_valid && !b_valid) {\n8daec1df 3367) remove_file(opt, 1, path, !a->mode);\n259ccb6c 3462) unpack_trees_finish(opt);\n259ccb6c 3556) return err(opt, _(\"merge returned no commit\"));\n259ccb6c 3622) return err(opt, _(\"Could not parse object '%s'\"),\n259ccb6c 3638) return err(opt, _(\"Unable to write index.\"));\n8c8e5bd6 3661) } else if (!strcasecmp(value, \"conflict\")) {\n8c8e5bd6 3662) opt->detect_directory_renames = 1;\n259ccb6c 3704) opt->subtree_shift = \"\";\n259ccb6c 3708) opt->xdl_opts = DIFF_WITH_ALG(opt, PATIENCE_DIFF);\n259ccb6c 3710) opt->xdl_opts = DIFF_WITH_ALG(opt, HISTOGRAM_DIFF);\n259ccb6c 3716) DIFF_XDL_CLR(opt, NEED_MINIMAL);\n259ccb6c 3717) opt->xdl_opts &= ~XDF_DIFF_ALGORITHM_MASK;\n259ccb6c 3718) opt->xdl_opts |= value;\n259ccb6c 3727) DIFF_XDL_SET(opt, IGNORE_CR_AT_EOL);\n259ccb6c 3729) opt->renormalize = 1;\n259ccb6c 3731) opt->renormalize = 0;\n\nmidx.c\n5bf52fbc 464) close_pack(packs->info[packs->nr].p);\n5bf52fbc 465) FREE_AND_NULL(packs->info[packs->nr].p);\n3c9e7185 724) BUG(\"object %s is in an expired pack with int-id %d\",\n3c9e7185 851) error(_(\"did not see pack-file %s to drop\"),\n3c9e7185 853) drop_index++;\n3c9e7185 854) missing_drops++;\n3c9e7185 855) i--;\n3c9e7185 862) result = 1;\n3c9e7185 863) goto cleanup;\n3c9e7185 1180) return 0;\n3c9e7185 1195) continue;\n467ae6f9 1234) return 0;\n19c239d4 1249) return 0;\n19c239d4 1258) continue;\n19c239d4 1271) continue;\n19c239d4 1294) error(_(\"could not start pack-objects\"));\n19c239d4 1295) result = 1;\n19c239d4 1296) goto cleanup;\n19c239d4 1313) error(_(\"could not finish pack-objects\"));\n19c239d4 1314) result = 1;\n19c239d4 1315) goto cleanup;\n\npackfile.c\n91336887 369) strbuf_release(&buf);\n91336887 370) return;\n\nread-cache.c\nee70c128 1723) if (advice_unknown_index_extension) {\nee70c128 1724) warning(_(\"ignoring optional %.4s index extension\"), ext);\nee70c128 1725) advise(_(\"This is likely due to the file having been written by a newer\\n\"\n\nrefs.c\n722abec7 111) sanitized->buf[sanitized->len-1] = '-';\n722abec7 170) if (sanitized)\n722abec7 171) strbuf_addch(sanitized, '-');\n722abec7 173) return -1;\n722abec7 178) strbuf_complete(sanitized, '/');\n722abec7 215) BUG(\"sanitizing refname '%s' check returned error\", refname);\n56700903 700)  refs_reflog_exists(refs, ref))\n\nremote.c\nc646d093 1925) BUG(\"stat_branch_pair: invalid abf '%d'\", abf);\n\nsequencer.c\nd74f3e58 176) opts->explicit_cleanup = 1;\nd74f3e58 179) opts->explicit_cleanup = 1;\ndc42e9a8 542) static const char *describe_cleanup_mode(int cleanup_mode)\ndc42e9a8 549) if (cleanup_mode < ARRAY_SIZE(modes))\ndc42e9a8 550) return modes[cleanup_mode];\ndc42e9a8 552) BUG(\"invalid cleanup_mode provided (%d)\", cleanup_mode);\ndc42e9a8 2369) else if (!strcmp(key, \"options.default-msg-cleanup\")) {\ndc42e9a8 2370) opts->explicit_cleanup = 1;\ndc42e9a8 2371) opts->default_msg_cleanup = get_cleanup_mode(value, 1);\ndc42e9a8 2796) res |= git_config_set_in_file_gently(opts_file,\ndc42e9a8 2798) describe_cleanup_mode(opts->default_msg_cleanup));\n\nsha1-name.c\nc931ba4e 1219) object = deref_tag(cb->repo, object, path,\n0daf7ff6 1387) BUG(\"sorry get_merge_bases() can't take struct repository yet\");\n\nt/helper/test-tool.c\n6ea18fff 101) die(\"Could not cd to '%s'\", working_directory);\n\ntrace2.c\na0897249 448) tr2tls_create_self(thread_name, us_now);\n\ntrace2/tr2_dst.c\nbce9db6d 16) const char *env_value = tr2_sysenv_get(TR2_SYSENV_DST_DEBUG);\na4d3a283 45) sid = last_slash + 1;\na4d3a283 55) strbuf_setlen(&path, base_path_len);\na4d3a283 56) strbuf_addf(&path, \".%d\", attempt_count);\na4d3a283 65) if (tr2_dst_want_warning())\na4d3a283 66) warning(\"trace2: could not open '%.*s' for '%s' tracing: %s\",\nd86ca9e2 69) strerror(errno));\na4d3a283 71) tr2_dst_trace_disable(dst);\na4d3a283 72) strbuf_release(&path);\na4d3a283 73) return 0;\nbce9db6d 93) strerror(errno));\nbce9db6d 303) warning(\"unable to write trace to '%s': %s\",\n\ntrace2/tr2_sid.c\n08881b9a 44) strbuf_add(&tr2sid_buf, \"Localhost\", 9);\n\ntrace2/tr2_sysenv.c\nbce9db6d 70) return 0;\nbce9db6d 95) BUG(\"tr2_sysenv_get invalid var '%d'\", var);\nbce9db6d 113) const char *tr2_sysenv_display_name(enum tr2_sysenv_variable var)\nbce9db6d 115) if (var >= TR2_SYSENV_MUST_BE_LAST)\nbce9db6d 116) BUG(\"tr2_sysenv_get invalid var '%d'\", var);\nbce9db6d 118) return tr2_sysenv_settings[var].env_var_name;\n\ntrace2/tr2_tgt_event.c\nbce9db6d 56) tr2env_event_max_nesting_levels = max_nesting;\nbce9db6d 61) tr2env_event_be_brief = want_brief;\nbce9db6d 542) if (ctx->nr_open_regions <= tr2env_event_max_nesting_levels) {\n\nwt-status.c\nb6d7dfc5 190) status_printf_ln(s, c, _(\"  (use \\\"git rm --staged <file>...\\\" to unstage)\"));\n\nCommits introducting uncovered code:\nChristian Couder\tee521ec4 replace: peel tag when passing a tag first to --graft\nChristian Couder\tf8e44a81 replace: peel tag when passing a tag as parent to --graft\nDamien Robert\tc646d093 ref-filter: use correct branch for %(push:track)\nDenton Liu\t9999ed57 rebase: refactor can_fast_forward into goto tower\nDenton Liu\t01dc801a tag: fix formatting\nDenton Liu\tf39a9c65 remote: add --save-to-push option to git remote set-url\nDenton Liu\t6ddf3d44 rebase: fast-forward --onto in more cases\nDenton Liu\td540b70c merge: cleanup messages like commit\nDerrick Stolee\t3c9e7185 multi-pack-index: implement 'expire' subcommand\nDerrick Stolee\t19c239d4 midx: implement midx_repack()\nDerrick Stolee\t91336887 repack: refactor pack deletion for future use\nDerrick Stolee\t5bf52fbc midx: refactor permutation logic and pack sorting\nDerrick Stolee\t467ae6f9 multi-pack-index: prepare 'repack' subcommand\nElijah Newren\t8c8e5bd6 merge-recursive: switch directory rename detection default\nElijah Newren\t8daec1df merge-recursive: switch from (oid,mode) pairs to a diff_filespec\nElijah Newren\te3de888c merge-recursive: rename diff_filespec 'one' to 'o'\nElijah Newren\t79c47598 merge-recursive: avoid clobbering untracked files with directory renames\nElijah Newren\t259ccb6c merge-recursive: rename merge_options argument from 'o' to 'opt'\nJeff Hostetler\ta0897249 trace2: refactor setting process starting time\nJeff Hostetler\tbce9db6d trace2: use system/global config for default trace2 settings\nJeff Hostetler\t08881b9a trace2: make SIDs more unique\nJohannes Schindelin\t6ea18fff test-tool: handle the `-C <directory>` option just like `git`\nJonathan Nieder\tee70c128 index: offer advice for unknown index extensions\nJosh Steadmon\ta4d3a283 trace2: write to directory targets\nJunio C Hamano\td86ca9e2 Merge branch 'jh/trace2-sid-fix' into jch\nNguyễn Thái Ngọc Duy\t56700903 refs.c: add repo_dwim_log()\nNguyễn Thái Ngọc Duy\tc931ba4e sha1-name.c: remove the_repo from handle_one_ref()\nNguyễn Thái Ngọc Duy\t0daf7ff6 sha1-name.c: remove the_repo from get_oid_mb()\nNguyễn Thái Ngọc Duy\tb0c2d613 Introduce \"precious\" file concept\nNguyễn Thái Ngọc Duy\t722abec7 worktree add: sanitize worktree names\nNguyễn Thái Ngọc Duy\t7fdff474 refs.c: remove the_repo from read_ref_at()\nNguyễn Thái Ngọc Duy\t8c1bf59d restore: take tree-ish from --source option instead\nNguyễn Thái Ngọc Duy\t3ec37ad1 switch: add --discard-changes\nNguyễn Thái Ngọc Duy\tc45f0f52 switch: reject if some operation is in progress\nNguyễn Thái Ngọc Duy\t7968bef0 switch: only allow explicit detached HEAD\nNguyễn Thái Ngọc Duy\t5c06e269 switch: stop accepting pathspec\nNguyễn Thái Ngọc Duy\t1806c29f switch: make --orphan switch to an empty tree\nNguyễn Thái Ngọc Duy\taf482cb3 restore: support --patch\nNguyễn Thái Ngọc Duy\t7800c9e6 restore: reject invalid combinations with --staged\nNguyễn Thái Ngọc Duy\ta0f3bbfa restore: add --worktree and --staged\nNguyễn Thái Ngọc Duy\t4de2081d restore: replace --force with --ignore-unmerged\nNguyễn Thái Ngọc Duy\t0488481e sha1-name.c: remove the_repo from diagnose_invalid_index_path()\nNguyễn Thái Ngọc Duy\tb6d7dfc5 rm: add --staged as alias for --cached\nPhillip Wood\td74f3e58 sequencer: fix cleanup with --signoff and -x\nPhillip Wood\tdc42e9a8 sequencer.c: save and restore cleanup mode\n\n\nUncovered code in 'next' not in 'master'\n--------------------------------------------------------\n\nbuiltin/blame.c\na544fb08 1005) die(\"no such ref: HEAD\");\n\nbuiltin/commit-graph.c\n61df89c8 105) die_errno(_(\"Could not open commit-graph '%s'\"), graph_name);\n61df89c8 109) return 1;\n\nbuiltin/difftool.c\nebe4df59 69) return error(\"expected object ID, got '%s'\", p);\nebe4df59 73) return error(\"expected object ID, got '%s'\", p);\n20de316e 730) die(_(\"difftool requires worktree or --no-index\"));\n\nbuiltin/gc.c\nbf3d70fe 126) die(_(\"failed to parse '%s' value '%s'\"), var, value);\n\nbuiltin/get-tar-commit-id.c\n3548726c 40) return 1;\n3548726c 42) return 1;\n\nbuiltin/log.c\n7954d365 254) static int estimate_commit_count(struct commit_list *list)\n7954d365 292) int n = estimate_commit_count(list);\n7954d365 336) static void setup_early_output(void)\n7954d365 367) int n = estimate_commit_count(rev->commits);\n7954d365 379) setup_early_output();\n\nbuiltin/ls-files.c\n7cb7283a 115) printf(\"  ctime: %u:%u\\n\", sd->sd_ctime.sec, sd->sd_ctime.nsec);\n7cb7283a 116) printf(\"  mtime: %u:%u\\n\", sd->sd_mtime.sec, sd->sd_mtime.nsec);\n7cb7283a 117) printf(\"  dev: %u\\tino: %u\\n\", sd->sd_dev, sd->sd_ino);\n7cb7283a 118) printf(\"  uid: %u\\tgid: %u\\n\", sd->sd_uid, sd->sd_gid);\n7cb7283a 119) printf(\"  size: %u\\tflags: %x\\n\", sd->sd_size, ce->ce_flags);\n\nbuiltin/rebase--interactive.c\n1ba204de 17) static int add_exec_commands(struct string_list *commands)\n1ba204de 19) const char *todo_file = rebase_path_todo();\n1ba204de 20) struct todo_list todo_list = TODO_LIST_INIT;\n1ba204de 23) if (strbuf_read_file(&todo_list.buf, todo_file, 0) < 0)\n1ba204de 24) return error_errno(_(\"could not read '%s'.\"), todo_file);\n1ba204de 26) if (todo_list_parse_insn_buffer(the_repository, todo_list.buf.buf,\n1ba204de 28) todo_list_release(&todo_list);\n1ba204de 29) return error(_(\"unusable todo list: '%s'\"), todo_file);\n1ba204de 32) todo_list_add_exec_commands(&todo_list, commands);\n1ba204de 33) res = todo_list_write_to_file(the_repository, &todo_list,\n1ba204de 35) todo_list_release(&todo_list);\n1ba204de 37) if (res)\n1ba204de 38) return error_errno(_(\"could not write '%s'.\"), todo_file);\n1ba204de 39) return 0;\n79d7e883 42) static int rearrange_squash_in_todo_file(void)\n79d7e883 44) const char *todo_file = rebase_path_todo();\n79d7e883 45) struct todo_list todo_list = TODO_LIST_INIT;\n79d7e883 46) int res = 0;\n79d7e883 48) if (strbuf_read_file(&todo_list.buf, todo_file, 0) < 0)\n79d7e883 49) return error_errno(_(\"could not read '%s'.\"), todo_file);\n79d7e883 50) if (todo_list_parse_insn_buffer(the_repository, todo_list.buf.buf,\n79d7e883 52) todo_list_release(&todo_list);\n79d7e883 53) return error(_(\"unusable todo list: '%s'\"), todo_file);\n79d7e883 56) res = todo_list_rearrange_squash(&todo_list);\n79d7e883 57) if (!res)\n79d7e883 58) res = todo_list_write_to_file(the_repository, &todo_list,\n79d7e883 61) todo_list_release(&todo_list);\n79d7e883 63) if (res)\n79d7e883 64) return error_errno(_(\"could not write '%s'.\"), todo_file);\n79d7e883 65) return 0;\ned35d188 75) return error_errno(_(\"could not read '%s'.\"), todo_file);\ned35d188 79) todo_list_release(&todo_list);\ned35d188 80) return error(_(\"unusable todo list: '%s'\"), todo_file);\ned35d188 88) return error_errno(_(\"could not write '%s'.\"), todo_file);\na930eb03 100) return error_errno(_(\"could not read '%s'.\"), todo_file);\na930eb03 106) res = error_errno(_(\"could not write '%s'\"), todo_file);\n94bcad79 208) BUG(\"unusable todo list\");\n79d7e883 366) ret = rearrange_squash_in_todo_file();\n1ba204de 369) ret = add_exec_commands(&commands);\n\ncommit-graph.c\n61df89c8 89) close(*fd);\n61df89c8 90) return 0;\n93b4405f 218) error(_(\"commit-graph improper chunk offset %08x%08x\"), (uint32_t)(chunk_offset >> 32),\n93b4405f 255) error(_(\"commit-graph chunk id %08x appears multiple times\"), chunk_id);\n43d35618 315) die(\"dying as requested by the '%s' variable on commit-graph load!\",\n93b4405f 1182) graph_report(_(\"failed to parse commit %s from commit-graph\"),\n93b4405f 1248) graph_report(_(\"commit-graph parent list for commit %s terminates early\"),\n93b4405f 1253) graph_report(_(\"commit-graph has generation number zero for commit %s, but non-zero elsewhere\"),\n\ndiff-no-index.c\n16bb3d71 263) warning(_(\"Not a git repository. Use --no-index to \"\n16bb3d71 299) return 1;\n\ndiff.c\nd2d3f273 4806) return error(_(\"unknown change class '%c' in --diff-filter=%s\"),\n5a749d9f 4830) return error(_(\"unknown value after ws-error-highlight=%.*s\"),\na75f28cb 4844) return error(_(\"unable to resolve '%s'\"), arg);\n59311a98 4924) options->color_moved = COLOR_MOVED_NO;\nbb987290 4946) options->color_moved_ws_handling = 0;\nbb987290 4947) return 0;\n\nfast-import.c\n28d055bd 960) && (pack_size + PACK_SIZE_THRESHOLD + s.total_out) > max_packsize)\n28d055bd 1056) if ((max_packsize\n28d055bd 1057) && (pack_size + PACK_SIZE_THRESHOLD + len) > max_packsize)\n28d055bd 1058) || (pack_size + PACK_SIZE_THRESHOLD + len) < pack_size)\n28d055bd 2071)     tmp_hex_oid_len > hexsz ||\n28d055bd 2085) if (tmp_hex_oid_len == hexsz && !get_oid_hex(hex_oid, &oid)) {\n7ffde293 2262) parse_cat_blob(v);\n28d055bd 2566) if (!buf || size < the_hash_algo->hexsz + 6)\n7ffde293 2640) parse_cat_blob(v);\n28d055bd 2855) cat_blob_write(output, the_hash_algo->hexsz + 1);\n28d055bd 2885) const unsigned hexsz = the_hash_algo->hexsz;\n28d055bd 2920) if (size < hexsz + strlen(\"object \") ||\n28d055bd 2925) if (size < hexsz + strlen(\"tree \") ||\nef479a12 2957) static void print_ls(int mode, const unsigned char *hash, const char *path)\n5056bb76 3326) parse_ls(v, NULL);\n7ffde293 3328) parse_cat_blob(v);\ncf7b857a 3330) parse_get_mark(v);\n\nfetch-pack.c\n1e7d440b 1680) BUG(\"Protocol V2 does not provide shallows at this point in the fetch\");\n\nhttp-walker.c\n2bf1db78 445) hash_to_hex(target->hash));\n\nhttp.c\n05dfc7ca 2094) fprintf(stderr, \"Getting index for pack %s\\n\", hash_to_hex(hash));\nddc56d47 2176)     (*data == '\\n' || *data == '\\0')) {\n05dfc7ca 2291) hash_to_hex(target->hash),\need0e60f 2433) the_hash_algo->init_fn(&freq->c);\n\npack-bitmap.c\n0dd49248 192) error(\"Duplicate entry in bitmap index: %s\", hash_to_hex(hash));\n4828ce98 312) goto failed;\n\npack-revindex.c\n4828ce98 166) return -1;\n4828ce98 197) return NULL;\n\npackfile.c\nfc789156 475) ret = p->pack_name; /* we only have a base */\n4828ce98 2038) return -1;\n\nparse-options-cb.c\nd8774183 26) v = the_hash_algo->hexsz;\n\nparse-options.c\n5205749d 534) static int show_gitcomp(const struct option *opts)\n5205749d 613) return show_gitcomp(options);\n\nprogress.c\n545dc345 127) fprintf(stderr, \"  %s%*s\", counters_sb->buf,\n545dc345 130) clear_len = progress->title_len + 1 < cols ?\n545dc345 131)     cols - progress->title_len : 0;\n545dc345 132) fprintf(stderr, \"%s:%*s\\n  %s%s\",\n545dc345 135) progress->split = 1;\n\nrebase-interactive.c\n6ca89c6f 26) warning(_(\"unrecognized setting %s for option \"\na930eb03 105) return error_errno(_(\"could not write '%s'\"), todo_file);\na930eb03 108) return error(_(\"could not copy '%s' to '%s'.\"), todo_file,\n6ca89c6f 167) goto leave_check;\n\nremote-curl.c\n9c9492e8 1123) else if (!*q)\n\nrevision.c\n8320b1db 956) prio_queue_put(queue, p);\n\nsequencer.c\nf59199d5 2683) res |= git_config_set_in_file_gently(opts_file,\nf59199d5 2714) res |= git_config_set_in_file_gently(opts_file,\nf59199d5 2715) \"options.gpg-sign\", opts->gpg_sign);\n616d7740 4646) strbuf_addstr(buf, \" -c\");\n87805600 4693) res = -1;\n6ca89c6f 4694) goto out;\n6ca89c6f 4699) goto out;\n6ca89c6f 4708) fprintf(stderr, _(edit_todo_list_advice));\n6bfeb7f1 4824) todo_list_release(&new_todo);\n94bcad79 4830) todo_list_release(&new_todo);\n94bcad79 4831) return error_errno(_(\"could not write '%s'\"), todo_file);\n\nserver-info.c\n4ecbd649 148) } else if (line.buf[0] == 'D') {\n4ecbd649 151) } else if (line.buf[0] == 'T') {\nb83a3089 153) goto out_stale;\n\nsha1-file.c\n95399788 198) return GIT_HASH_UNKNOWN;\n\nunpack-trees.c\n191e9d2c 1699) return add_rejected_path(o, error_type, ce->name);\nb165fac8 2346) return o->quiet ? -1 :\n\nCommits introducting uncovered code:\nÆvar Arnfjörð Bjarmason\t61df89c8 commit-graph: don't early exit(1) on e.g. \"git status\"\nÆvar Arnfjörð Bjarmason\t43d35618 commit-graph write: don't die if the existing graph is corrupt\nÆvar Arnfjörð Bjarmason\tbf3d70fe gc: handle & check gc.reflogExpire config\nÆvar Arnfjörð Bjarmason\t93b4405f commit-graph: improve & i18n error messages\nAlban Gruin\t6bfeb7f1 sequencer: refactor skip_unnecessary_picks() to work on a todo_list\nAlban Gruin\t616d7740 sequencer: introduce todo_list_write_to_file()\nAlban Gruin\t94bcad79 sequencer: change complete_action() to use the refactored functions\nAlban Gruin\ta930eb03 rebase-interactive: rewrite edit_todo_list() to handle the initial edit\nAlban Gruin\t6ca89c6f sequencer: refactor check_todo_list() to work on a todo_list\nAlban Gruin\ted35d188 rebase--interactive: move transform_todo_file()\nAlban Gruin\t1ba204de rebase--interactive: move sequencer_add_exec_commands()\nAlban Gruin\t79d7e883 rebase--interactive: move rearrange_squash_in_todo_file()\nbrian m. carlson\t05dfc7ca http: replace sha1_to_hex\nbrian m. carlson\teed0e60f http: compute hash of downloaded objects using the_hash_algo\nbrian m. carlson\t95399788 hash: add a function to lookup hash algorithm by length\nbrian m. carlson\t0dd49248 pack-bitmap: replace sha1_to_hex\nbrian m. carlson\t2bf1db78 http-walker: replace sha1_to_hex\nbrian m. carlson\tebe4df59 builtin/difftool: use parse_oid_hex\nbrian m. carlson\tef479a12 fast-import: replace sha1_to_hex\nbrian m. carlson\t9c9492e8 remote-curl: make hash size independent\nbrian m. carlson\t28d055bd fast-import: make hash-size independent\nElijah Newren\tcf7b857a fast-import: fix erroneous handling of get-mark with empty orphan commits\nElijah Newren\t5056bb76 fast-import: check most prominent commands first\nElijah Newren\t7ffde293 fast-import: only allow cat-blob requests where it makes sense\nJeff King\t8320b1db revision: use a prio_queue to hold rewritten parents\nJeff King\t5205749d parse-options: drop unused ctx parameter from show_gitcomp()\nJeff King\t4828ce98 pack-revindex: open index if necessary\nJeff King\t4ecbd649 server-info: use strbuf to read old info/packs file\nJeff King\tb83a3089 server-info: fix blind pointer arithmetic\nJeff King\tddc56d47 http: simplify parsing of remote objects/info/packs\nJeff King\t7954d365 log: drop unused rev_info from early output\nJeff King\tfc789156 packfile: fix pack basename computation\nJohannes Schindelin\t20de316e difftool: allow running outside Git worktrees with --no-index\nJonathan Tan\t1e7d440b fetch-pack: call prepare_shallow_info only if v0\nNguyễn Thái Ngọc Duy\tb165fac8 unpack-trees: rename \"gently\" flag to \"quiet\"\nNguyễn Thái Ngọc Duy\t191e9d2c unpack-trees: keep gently check inside add_rejected_path\nNguyễn Thái Ngọc Duy\tbb987290 diff.c: allow --no-color-moved-ws\nNguyễn Thái Ngọc Duy\t59311a98 diff-parseopt: convert --[no-]color-moved\nNguyễn Thái Ngọc Duy\ta75f28cb diff-parseopt: convert --find-object\nNguyễn Thái Ngọc Duy\t5a749d9f diff-parseopt: convert --ws-error-highlight\nNguyễn Thái Ngọc Duy\td2d3f273 diff-parseopt: convert --diff-filter\nNguyễn Thái Ngọc Duy\t16bb3d71 diff --no-index: use parse_options() instead of diff_opt_parse()\nNguyễn Thái Ngọc Duy\td8774183 diff-parseopt: convert --[no-]abbrev\nPhillip Wood\tf59199d5 sequencer: break some long lines\nRene Scharfe\t3548726c get-tar-commit-id: parse comment record\nRené Scharfe\t87805600 sequencer: factor out strbuf_read_file_or_whine()\nSZEDER Gábor\t545dc345 progress: break too long progress bar lines\nSZEDER Gábor\ta544fb08 blame: default to HEAD in a bare repo when no start commit is given\nThomas Gummerer\t7cb7283a ls-files: use correct format string\n\n\nUncovered code in 'master' not in 'master@{1}'\n--------------------------------------------------------\n\nbuiltin/branch.c\n0ecb1fc7 452) die(_(\"could not resolve HEAD\"));\n0ecb1fc7 458) die(_(\"HEAD (%s) points outside of refs/heads/\"), refname);\n\nbuiltin/checkout.c\n091e04bc 303) return;\n091e04bc 1292) die(_(\"'%s' cannot be used with switching branches\"),\n\nbuiltin/commit-tree.c\ncbdeab98 56) die(_(\"not a valid object name %s\"), arg);\ncbdeab98 71) strbuf_addch(buf, '\\n');\ncbdeab98 78) static int parse_file_arg_callback(const struct option *opt,\ncbdeab98 82) struct strbuf *buf = opt->value;\ncbdeab98 84) BUG_ON_OPT_NEG_NOARG(unset, arg);\ncbdeab98 86) if (buf->len)\ncbdeab98 87) strbuf_addch(buf, '\\n');\ncbdeab98 88) if (!strcmp(arg, \"-\"))\ncbdeab98 89) fd = 0;\ncbdeab98 91) fd = open(arg, O_RDONLY);\ncbdeab98 92) if (fd < 0)\ncbdeab98 93) die_errno(_(\"git commit-tree: failed to open '%s'\"), arg);\ncbdeab98 95) if (strbuf_read(buf, fd, 0) < 0)\ncbdeab98 96) die_errno(_(\"git commit-tree: failed to read '%s'\"), arg);\ncbdeab98 97) if (fd && close(fd))\ncbdeab98 98) die_errno(_(\"git commit-tree: failed to close '%s'\"), arg);\ncbdeab98 100) return 0;\ncbdeab98 133) die(_(\"must give exactly one tree\"));\ncbdeab98 140) die_errno(_(\"git commit-tree: failed to read\"));\n\nbuiltin/fsck.c\n8d8c2a5a 271) static int mark_packed_unreachable_referents(const struct object_id *oid,\n8d8c2a5a 276) mark_unreachable_referents(oid);\n8d8c2a5a 277) return 0;\n\nbuiltin/log.c\nbc208ae3 520) die(_(\"not a valid object name %s\"), obj_name);\nbc208ae3 544) return error(_(\"could not read object %s\"), oid_to_hex(oid));\nbc208ae3 663) ret = error(_(\"unknown type: %d\"), o->type);\nbc208ae3 918) die(_(\"need exactly one range\"));\nbc208ae3 928) die(_(\"not a range\"));\nbc208ae3 1051) die(_(\"cover letter needs email format\"));\nbc208ae3 1221) die(_(\"two output directories?\"));\nbc208ae3 1332) die(_(\"unknown commit %s\"), base_commit);\nbc208ae3 1342) die(_(\"failed to resolve '%s' as a valid ref\"), upstream);\nbc208ae3 1351) die(_(\"failed to get upstream, if you want to record base commit automatically,\\n\"\nbc208ae3 1371) die(_(\"failed to find exact merge base\"));\nbc208ae3 1750) die_errno(_(\"could not create directory '%s'\"),\nbc208ae3 1952) die(_(\"failed to create output files\"));\nbc208ae3 2076) die(_(\"unknown commit %s\"), head);\nbc208ae3 2078) die(_(\"unknown commit %s\"), upstream);\nbc208ae3 2090) die(_(\"unknown commit %s\"), limit);\n\nbuiltin/prune-packed.c\n9b0bd87e 67) usage_msg_opt(_(\"too many arguments\"),\n\nbuiltin/prune.c\nd55a30bb 43) progress = start_delayed_progress(_(\"Checking connectivity\"), 0);\n\nbuiltin/rebase.c\ncbd29ead 448) } else if (old_orig)\ncbd29ead 449) delete_ref(NULL, \"ORIG_HEAD\", old_orig, 0);\nb3a5d5a8 1205) if (is_interactive(&options))\nb3a5d5a8 1206) trace2_cmd_mode(\"interactive\");\nb3a5d5a8 1207) else if (exec.nr)\nb3a5d5a8 1208) trace2_cmd_mode(\"interactive-exec\");\nb3a5d5a8 1210) trace2_cmd_mode(action_names[action]);\n\nbuiltin/stash.c\n8a0fc8d1 127) die(_(\"'%s' is not a stash-like commit\"), revision);\n8a0fc8d1 160) free_stash_info(info);\n8a0fc8d1 161) fprintf_ln(stderr, _(\"No stash entries found.\"));\n8a0fc8d1 162) return -1;\n8a0fc8d1 197) free_stash_info(info);\n4e2dd393 224) return error(_(\"git stash clear with parameters is \"\n8a0fc8d1 240) return -1;\n8a0fc8d1 248) return -1;\n8a0fc8d1 264) return error(_(\"unable to write new index file\"));\n8a0fc8d1 372) remove_path(stash_index_path.buf);\n8a0fc8d1 373) return -1;\n8a0fc8d1 400) return -1;\n8a0fc8d1 403) return error(_(\"cannot apply a stash in the middle of a merge\"));\n8a0fc8d1 413) strbuf_release(&out);\n8a0fc8d1 414) return error(_(\"could not generate diff %s^!.\"),\n8a0fc8d1 421) return error(_(\"conflicts in index.\"\n8a0fc8d1 427) return error(_(\"could not save index tree\"));\n8a0fc8d1 434) return error(_(\"could not restore untracked files from stash\"));\n8a0fc8d1 465) return -1;\n8a0fc8d1 470) strbuf_release(&out);\n8a0fc8d1 475) strbuf_release(&out);\n8a0fc8d1 476) return -1;\n4e2dd393 552) return error(_(\"%s: Could not drop stash entry\"),\nc4de61d7 627) printf_ln(_(\"The stash entry is kept in case \"\ndc7bd382 761) free_stash_info(&info);\n40af1468 762) usage_with_options(git_stash_show_usage, options);\n41e0dd55 782) stash_msg = \"Created via \\\"git stash store\\\".\";\n41e0dd55 788) if (!quiet) {\n41e0dd55 789) fprintf_ln(stderr, _(\"Cannot update %s with %s\"),\n41e0dd55 792) return -1;\n41e0dd55 816) if (!quiet)\n41e0dd55 817) fprintf_ln(stderr, _(\"\\\"git stash store\\\" requires one \"\n41e0dd55 819) return -1;\nd4788af8 902) return -1;\nd4788af8 967) ret = -1;\nd4788af8 968) goto done;\nd4788af8 973) ret = -1;\nd4788af8 974) goto done;\nd4788af8 979) ret = -1;\nd4788af8 980) goto done;\nd4788af8 1006) ret = -1;\nd4788af8 1007) goto done;\nd4788af8 1018) ret = -1;\nd4788af8 1019) goto done;\nd4788af8 1025) ret = -1;\nd4788af8 1026) goto done;\nd4788af8 1033) ret = -1;\nd4788af8 1034) goto done;\nd4788af8 1072) ret = -1;\nd4788af8 1073) goto done;\nd4788af8 1079) ret = -1;\nd4788af8 1080) goto done;\nd4788af8 1091) ret = -1;\nd4788af8 1092) goto done;\nd4788af8 1097) ret = -1;\nd4788af8 1098) goto done;\n1ac528c0 1135) fprintf_ln(stderr, _(\"You do not have \"\nd4788af8 1144) ret = 1;\nd4788af8 1145) goto done;\n1ac528c0 1161) if (!quiet)\n1ac528c0 1162) fprintf_ln(stderr, _(\"Cannot save the current \"\nd4788af8 1164) ret = -1;\nd4788af8 1165) goto done;\n1ac528c0 1170) if (!quiet)\n1ac528c0 1171) fprintf_ln(stderr, _(\"Cannot save \"\nd4788af8 1173) ret = -1;\nd4788af8 1174) goto done;\n1ac528c0 1181) if (!quiet)\n1ac528c0 1182) fprintf_ln(stderr, _(\"Cannot save the current \"\nd4788af8 1184) goto done;\n1ac528c0 1218) if (!quiet)\n1ac528c0 1219) fprintf_ln(stderr, _(\"Cannot record \"\nd4788af8 1221) ret = -1;\nd4788af8 1222) goto done;\nd553f538 1293) ret = -1;\nd553f538 1294) goto done;\nd553f538 1304) ret = -1;\n1ac528c0 1305) if (!quiet)\n1ac528c0 1306) fprintf_ln(stderr, _(\"Cannot initialize stash\"));\nd553f538 1307) goto done;\nd553f538 1319) ret = -1;\n1ac528c0 1320) if (!quiet)\n1ac528c0 1321) fprintf_ln(stderr, _(\"Cannot save the current status\"));\nd553f538 1322) goto done;\nd553f538 1339) ret = -1;\nd553f538 1359) ret = -1;\nd553f538 1360) goto done;\nd553f538 1369) ret = -1;\nd553f538 1370) goto done;\nd553f538 1378) ret = -1;\nd553f538 1387) ret = -1;\nd553f538 1398) ret = -1;\nd553f538 1399) goto done;\nd553f538 1408) ret = -1;\nd553f538 1409) goto done;\nd553f538 1417) ret = -1;\nd553f538 1443) ret = -1;\n7906af0c 1536) return env;\n90a46272 1564) const char *path = mkpath(\"%s/git-legacy-stash\",\n90a46272 1567) if (sane_execvp(path, (char **)argv) < 0)\n90a46272 1568) die_errno(_(\"could not exec %s\"), path);\n90a46272 1570) BUG(\"sane_execvp() returned???\");\n40af1468 1611) usage_msg_opt(xstrfmt(_(\"unknown subcommand: %s\"), argv[0]),\n40af1468 1639) continue;\n\nbuiltin/worktree.c\n7af01f23 302) die_errno(_(\"could not create directory of '%s'\"),\n\ncombine-diff.c\nd76ce4f7 89)     filename_changed(p->parent[j].status))\nd76ce4f7 90) strbuf_release(&p->parent[j].path);\nd76ce4f7 992) dump_quoted_path(\"--- \", \"\", \"/dev/null\",\nd76ce4f7 1000) dump_quoted_path(\"--- \", \"\", \"/dev/null\",\nd76ce4f7 1273) write_name_quoted(p->path, stdout,\n\ndiff.c\n84b5089e 4741) count = strtoul(end+1, &end, 10);\n84b5089e 4743) return error(_(\"invalid --stat value: %s\"), value);\n84b5089e 4748) return error(_(\"%s expects a numerical value\"),\n84b5089e 4753) return error(_(\"%s expects a numerical value\"),\n84b5089e 4758) return error(_(\"%s expects a numerical value\"),\n84b5089e 4763) return error(_(\"%s expects a numerical value\"),\n84b5089e 4766) BUG(\"%s should not get here\", opt->long_name);\nced4e179 4938) else if (*arg != '/')\nced4e179 4939) return error(_(\"%s expects <n>/<m> form\"), opt->long_name);\nced4e179 4941) arg++;\nced4e179 4942) opt2 = parse_rename_score(&arg);\nced4e179 4945) return error(_(\"%s expects <n>/<m> form\"), opt->long_name);\naf2f3680 4957) return error(_(\"%s expects a character, got '%s'\"),\n7d7942b7 4982) options->flags.stat_with_summary = 0;\n10f35b1c 4990) static int diff_opt_diff_algorithm(const struct option *opt,\n10f35b1c 4993) struct diff_options *options = opt->value;\n10f35b1c 4994) long value = parse_algorithm_value(arg);\n10f35b1c 4996) BUG_ON_OPT_NEG(unset);\n10f35b1c 4997) if (value < 0)\n10f35b1c 4998) return error(_(\"option diff-algorithm accepts \\\"myers\\\", \"\n10f35b1c 5002) DIFF_XDL_CLR(options, NEED_MINIMAL);\n10f35b1c 5003) options->xdl_opts &= ~XDF_DIFF_ALGORITHM_MASK;\n10f35b1c 5004) options->xdl_opts |= value;\n10f35b1c 5005) return 0;\n4ce7aab5 5016) BUG(\"how come --cumulative take a value?\");\n7f64850d 5034) return error(_(\"invalid argument to %s\"), opt->long_name);\nf476308b 5054) return error(_(\"invalid argument to %s\"), opt->long_name);\n125dcea9 5146) return error(_(\"failed to parse --submodule option parameter: '%s'\"),\nd473e2e0 5176) return error(_(\"%s expects a numerical value\"), \"--unified\");\ne9fb39b6 5200) return error(_(\"bad --word-diff argument: %s\"), arg);\n\nentry.c\n536ec183 450) BUG(\"Can't remove entry to a path\");\n\nfetch-pack.c\n37c80012 196) die_errno(_(\"unable to write to remote\"));\n37c80012 1169) die_errno(_(\"unable to write request to remote\"));\n\ngit.c\nee4512ed 162) trace2_cmd_name(\"_query_\");\nee4512ed 166) trace2_cmd_name(\"_query_\");\nee4512ed 170) trace2_cmd_name(\"_query_\");\n\nhelp.c\n057ab54b 389) if (sb.buf[0] == '-')\n057ab54b 390) string_list_remove(list, sb.buf + 1, 0);\n\nident.c\n39ab4d09 452) break;\n39ab4d09 454) name = getenv(\"GIT_AUTHOR_NAME\");\n39ab4d09 455) email = getenv(\"GIT_AUTHOR_EMAIL\");\n39ab4d09 456) break;\n39ab4d09 515) return config_error_nonbool(var);\n39ab4d09 525) return config_error_nonbool(var);\n39ab4d09 535) return config_error_nonbool(var);\n39ab4d09 545) return config_error_nonbool(var);\n\npack-objects.c\nc409d108 122) void oe_map_new_pack(struct packing_data *pack)\n\npager.c\neee73d1d 103) pager_process->trace2_child_class = \"pager\";\n\nparse-options.c\nf62470c6 118) BUG(\"BITOP can't have unset form\");\n3ebbe289 257) rc = (*numopt->ll_callback)(p, numopt, arg, 0);\n3ebbe289 438) BUG(\"OPTION_CALLBACK needs one callback\");\n3ebbe289 440) BUG(\"OPTION_CALLBACK can't have two callbacks\");\nbf3ff338 444) BUG(\"OPTION_LOWLEVEL_CALLBACK needs a callback\");\nbf3ff338 446) BUG(\"OPTION_LOWLEVEL_CALLBACK needs no high level callback\");\n202fbb33 481) BUG(\"Can't keep argv0 if you don't have it\");\nf41179f1 628) BUG(\"parse_short_opt() cannot return these\");\nf41179f1 653) BUG(\"parse_short_opt() cannot return these\");\nf41179f1 682) BUG(\"parse_long_opt() cannot return these\");\n\npkt-line.c\n37c80012 92) die_errno(_(\"unable to write flush packet\"));\n37c80012 99) die_errno(_(\"unable to write delim packet\"));\n\npretty.c\n4f732e0f 1079) return 0;\n4f732e0f 1116) return 0;\n\nprogress.c\n9d81ecb5 243) struct progress *start_delayed_sparse_progress(const char *title,\n9d81ecb5 246) return start_progress_delay(title, total, 2, 1);\n\nprotocol.c\n8cbeba06 38) die(\"unknown value for %s: %s\", git_test_k, git_test_v);\n\nreachable.c\nfde67d68 162) static void *lookup_object_by_type(struct repository *r,\nfde67d68 166) switch (type) {\nfde67d68 168) return lookup_commit(r, oid);\nfde67d68 170) return lookup_tree(r, oid);\nfde67d68 172) return lookup_tag(r, oid);\nfde67d68 174) return lookup_blob(r, oid);\nfde67d68 176) die(\"BUG: unknown object type %d\", type);\nfde67d68 180) static int mark_object_seen(const struct object_id *oid,\nfde67d68 187) struct object *obj = lookup_object_by_type(the_repository, oid, type);\nfde67d68 188) if (!obj)\nfde67d68 189) die(\"unable to create object '%s'\", oid_to_hex(oid));\nfde67d68 191) obj->flags |= SEEN;\nfde67d68 192) return 0;\nfde67d68 228) traverse_bitmap_commit_list(bitmap_git, mark_object_seen);\nfde67d68 229) free_bitmap_index(bitmap_git);\nfde67d68 230) return;\n\nremote-curl.c\ned8b4132 157) die(_(\"invalid quoting in push-option value: '%s'\"), value);\naa1edf14 355) die(_(\"invalid server response; expected service, got flush packet\"));\ned8b4132 446) die(_(\"repository '%s' not found\"),\nc1284b21 447)     transport_anonymize_url(url.buf));\naa1edf14 584) die(_(\"shouldn't have EOF when not gentle on EOF\"));\na97d0079 615) BUG(\"The entire rpc->buf should be larger than LARGE_PACKET_MAX\");\ned8b4132 664) error(_(\"unable to rewind rpc post data - try increasing http.postBuffer\"));\ned8b4132 764) die(_(\"cannot handle pushes this big\"));\ned8b4132 879) die(_(\"cannot deflate request; zlib deflate error %d\"), ret);\ned8b4132 883) die(_(\"cannot deflate request; zlib end error %d\"), ret);\ned8b4132 1014) die(_(\"dumb http transport does not support shallow capabilities\"));\ned8b4132 1076) die(_(\"cannot fetch by sha1 over smart http\"));\ned8b4132 1119) die(_(\"protocol error: expected sha/ref, got %s'\"), p);\ned8b4132 1125) die(_(\"protocol error: expected sha/ref, got %s'\"), p);\ned8b4132 1137) die(_(\"http transport does not support %s\"), buf->buf);\ned8b4132 1251) die(_(\"http transport does not support %s\"), buf->buf);\na97d0079 1304) rpc.protocol_header = NULL;\na97d0079 1305) strbuf_release(&buf);\na97d0079 1332) BUG(\"The entire rpc->buf should be larger than LARGE_PACKET_MAX\");\ned8b4132 1359) error(_(\"remote-curl: usage: git remote-curl <remote> [<url>]\"));\ned8b4132 1391) error(_(\"remote-curl: error reading command stream from git\"));\ned8b4132 1398) die(_(\"remote-curl: fetch attempted without a local repo\"));\ned8b4132 1438) error(_(\"remote-curl: unknown command '%s' from git\"), buf.buf);\n\nrevision.c\nd76ce4f7 2654) die(\"--combined-all-paths makes no sense without -c or --cc\");\n\nrun-command.c\nee4512ed 239) int ec = errno;\nee4512ed 240) trace2_exec_result(exec_id, ec);\nee4512ed 241) errno = ec;\nee4512ed 997) int ret = wait_or_whine(cmd->pid, cmd->argv[0], 1);\nee4512ed 998) trace2_child_exit(cmd, ret);\nee4512ed 999) return ret;\nee4512ed 1021) int run_command_v_opt_tr2(const char **argv, int opt, const char *tr2_class)\nee4512ed 1023) return run_command_v_opt_cd_env_tr2(argv, opt, NULL, NULL, tr2_class);\n\nstrbuf.c\n5ef264db 259) die(\"`pos' is too far after the end of the buffer\");\n5ef264db 264) BUG(\"your vsnprintf is broken (returned %d)\", len);\n5ef264db 266) return; /* nothing to do */\n5ef264db 268) die(\"you want to use way too much memory\");\n5ef264db 276) BUG(\"your vsnprintf is broken (returns inconsistent lengths)\");\nfd2015b3 448) return 0;\n\nt/helper/test-trace2.c\na15860dc 24) return MyError;\na15860dc 28) return MyError;\na15860dc 52) die(\"expect <exit_code>\");\na15860dc 72) die(\"expect <exit_code>\");\na15860dc 92) die(\"expect <error_message>\");\na15860dc 142) return 0;\na15860dc 169) static int ut_005exec(int argc, const char **argv)\na15860dc 173) if (!argc)\na15860dc 174) return 0;\na15860dc 176) result = execv_git_cmd(argv);\na15860dc 177) return result;\na15860dc 186) die(\"%s\", usage_error);\na15860dc 191) die(\"%s\", usage_error);\na15860dc 227) static int print_usage(void)\na15860dc 232) fprintf(stderr, \"usage:\\n\");\na15860dc 233) for_each_ut (k, ut_k)\na15860dc 234) fprintf(stderr, \"\\t%s %s %s\\n\", USAGE_PREFIX, ut_k->ut_name,\na15860dc 237) return 129;\na15860dc 272) return print_usage();\n\ntrace2.c\nee4512ed 127) static void tr2main_signal_handler(int signo)\nee4512ed 134) us_now = getnanotime() / 1000;\nee4512ed 135) us_elapsed_absolute = tr2tls_absolute_elapsed(us_now);\nee4512ed 137) for_each_wanted_builtin (j, tgt_j)\nee4512ed 138) if (tgt_j->pfn_signal)\nee4512ed 139) tgt_j->pfn_signal(us_elapsed_absolute, signo);\nee4512ed 141) sigchain_pop(signo);\nee4512ed 142) raise(signo);\nee4512ed 143) }\nee4512ed 151) return;\nee4512ed 232) void trace2_cmd_path_fl(const char *file, int line, const char *pathname)\nee4512ed 237) if (!trace2_enabled)\nee4512ed 238) return;\nee4512ed 240) for_each_wanted_builtin (j, tgt_j)\nee4512ed 241) if (tgt_j->pfn_command_path_fl)\nee4512ed 242) tgt_j->pfn_command_path_fl(file, line, pathname);\nee4512ed 270) for_each_wanted_builtin (j, tgt_j)\nee4512ed 271) if (tgt_j->pfn_command_mode_fl)\nee4512ed 272) tgt_j->pfn_command_mode_fl(file, line, mode);\nee4512ed 284) for_each_wanted_builtin (j, tgt_j)\nee4512ed 285) if (tgt_j->pfn_alias_fl)\nee4512ed 286) tgt_j->pfn_alias_fl(file, line, alias, argv);\nee4512ed 303) tr2_cfg_set_fl(file, line, key, value);\nee4512ed 347) us_elapsed_child = 0;\nee4512ed 370) us_now = getnanotime() / 1000;\nee4512ed 371) us_elapsed_absolute = tr2tls_absolute_elapsed(us_now);\nee4512ed 373) exec_id = tr2tls_locked_increment(&tr2_next_exec_id);\nee4512ed 375) for_each_wanted_builtin (j, tgt_j)\nee4512ed 376) if (tgt_j->pfn_exec_fl)\nee4512ed 377) tgt_j->pfn_exec_fl(file, line, us_elapsed_absolute,\nee4512ed 380) return exec_id;\nee4512ed 383) void trace2_exec_result_fl(const char *file, int line, int exec_id, int code)\nee4512ed 390) if (!trace2_enabled)\nee4512ed 391) return;\nee4512ed 393) us_now = getnanotime() / 1000;\nee4512ed 394) us_elapsed_absolute = tr2tls_absolute_elapsed(us_now);\nee4512ed 396) for_each_wanted_builtin (j, tgt_j)\nee4512ed 397) if (tgt_j->pfn_exec_result_fl)\nee4512ed 398) tgt_j->pfn_exec_result_fl(\nee4512ed 402) void trace2_thread_start_fl(const char *file, int line, const char *thread_name)\nee4512ed 409) if (!trace2_enabled)\nee4512ed 410) return;\nee4512ed 412) if (tr2tls_is_main_thread()) {\nee4512ed 422) trace2_region_enter_printf_fl(file, line, NULL, NULL, NULL,\nee4512ed 425) return;\nee4512ed 428) us_now = getnanotime() / 1000;\nee4512ed 429) us_elapsed_absolute = tr2tls_absolute_elapsed(us_now);\nee4512ed 431) tr2tls_create_self(thread_name);\nee4512ed 433) for_each_wanted_builtin (j, tgt_j)\nee4512ed 434) if (tgt_j->pfn_thread_start_fl)\nee4512ed 435) tgt_j->pfn_thread_start_fl(file, line,\nee4512ed 439) void trace2_thread_exit_fl(const char *file, int line)\nee4512ed 447) if (!trace2_enabled)\nee4512ed 448) return;\nee4512ed 450) if (tr2tls_is_main_thread()) {\nee4512ed 461) trace2_region_leave_printf_fl(file, line, NULL, NULL, NULL,\nee4512ed 463) return;\nee4512ed 466) us_now = getnanotime() / 1000;\nee4512ed 467) us_elapsed_absolute = tr2tls_absolute_elapsed(us_now);\nee4512ed 474) tr2tls_pop_unwind_self();\nee4512ed 475) us_elapsed_thread = tr2tls_region_elasped_self(us_now);\nee4512ed 477) for_each_wanted_builtin (j, tgt_j)\nee4512ed 478) if (tgt_j->pfn_thread_exit_fl)\nee4512ed 479) tgt_j->pfn_thread_exit_fl(file, line,\nee4512ed 483) tr2tls_unset_self();\nee4512ed 493) return;\nee4512ed 508) if (repo->trace2_repo_id)\nee4512ed 509) return;\nee4512ed 511) repo->trace2_repo_id = tr2tls_locked_increment(&tr2_next_repo_id);\nee4512ed 513) for_each_wanted_builtin (j, tgt_j)\nee4512ed 514) if (tgt_j->pfn_repo_fl)\nee4512ed 515) tgt_j->pfn_repo_fl(file, line, repo);\nee4512ed 531) us_now = getnanotime() / 1000;\nee4512ed 532) us_elapsed_absolute = tr2tls_absolute_elapsed(us_now);\nee4512ed 541) for_each_wanted_builtin (j, tgt_j)\nee4512ed 542) if (tgt_j->pfn_region_enter_printf_va_fl)\nee4512ed 543) tgt_j->pfn_region_enter_printf_va_fl(\nee4512ed 547) tr2tls_push_self(us_now);\nee4512ed 602) us_now = getnanotime() / 1000;\nee4512ed 603) us_elapsed_absolute = tr2tls_absolute_elapsed(us_now);\nee4512ed 611) us_elapsed_region = tr2tls_region_elasped_self(us_now);\nee4512ed 613) tr2tls_pop_self();\nee4512ed 619) for_each_wanted_builtin (j, tgt_j)\nee4512ed 620) if (tgt_j->pfn_region_leave_printf_va_fl)\nee4512ed 621) tgt_j->pfn_region_leave_printf_va_fl(\nee4512ed 675) return;\nee4512ed 697) strbuf_addf(&buf_string, \"%\" PRIdMAX, value);\nee4512ed 698) trace2_data_string_fl(file, line, category, repo, key, buf_string.buf);\nee4512ed 699) strbuf_release(&buf_string);\nee4512ed 702) void trace2_data_json_fl(const char *file, int line, const char *category,\nee4512ed 712) if (!trace2_enabled)\nee4512ed 713) return;\nee4512ed 715) us_now = getnanotime() / 1000;\nee4512ed 716) us_elapsed_absolute = tr2tls_absolute_elapsed(us_now);\nee4512ed 717) us_elapsed_region = tr2tls_region_elasped_self(us_now);\nee4512ed 719) for_each_wanted_builtin (j, tgt_j)\nee4512ed 720) if (tgt_j->pfn_data_fl)\nee4512ed 721) tgt_j->pfn_data_json_fl(file, line, us_elapsed_absolute,\nee4512ed 726) void trace2_printf_va_fl(const char *file, int line, const char *fmt,\nee4512ed 734) if (!trace2_enabled)\nee4512ed 735) return;\nee4512ed 737) us_now = getnanotime() / 1000;\nee4512ed 738) us_elapsed_absolute = tr2tls_absolute_elapsed(us_now);\nee4512ed 744) for_each_wanted_builtin (j, tgt_j)\nee4512ed 745) if (tgt_j->pfn_printf_va_fl)\nee4512ed 746) tgt_j->pfn_printf_va_fl(file, line, us_elapsed_absolute,\nee4512ed 750) void trace2_printf_fl(const char *file, int line, const char *fmt, ...)\nee4512ed 754) va_start(ap, fmt);\nee4512ed 755) trace2_printf_va_fl(file, line, fmt, ap);\nee4512ed 756) va_end(ap);\nee4512ed 757) }\n\ntrace2/tr2_cfg.c\nee4512ed 21) return tr2_cfg_count_patterns;\nee4512ed 33) strbuf_setlen(buf, buf->len - 1);\nee4512ed 83) void tr2_cfg_set_fl(const char *file, int line, const char *key,\nee4512ed 86) struct tr2_cfg_data data = { file, line };\nee4512ed 88) if (tr2_cfg_load_patterns() > 0)\nee4512ed 89) tr2_cfg_cb(key, value, &data);\nee4512ed 90) }\n\ntrace2/tr2_dst.c\nee4512ed 15) static int tr2_dst_want_warning(void)\nee4512ed 19) if (tr2env_dst_debug == -1) {\nee4512ed 20) const char *env_value = getenv(TR2_ENVVAR_DST_DEBUG);\nee4512ed 21) if (!env_value || !*env_value)\nee4512ed 22) tr2env_dst_debug = 0;\nee4512ed 24) tr2env_dst_debug = atoi(env_value) > 0;\nee4512ed 27) return tr2env_dst_debug;\nee4512ed 43) if (tr2_dst_want_warning())\nee4512ed 44) warning(\"trace2: could not open '%s' for '%s' tracing: %s\",\nee4512ed 45) tgt_value, dst->env_var_name, strerror(errno));\nee4512ed 47) tr2_dst_trace_disable(dst);\nee4512ed 48) return 0;\nee4512ed 63) static int tr2_dst_try_uds_connect(const char *path, int sock_type, int *out_fd)\nee4512ed 68) fd = socket(AF_UNIX, sock_type, 0);\nee4512ed 69) if (fd == -1)\nee4512ed 70) return errno;\nee4512ed 72) sa.sun_family = AF_UNIX;\nee4512ed 73) strlcpy(sa.sun_path, path, sizeof(sa.sun_path));\nee4512ed 75) if (connect(fd, (struct sockaddr *)&sa, sizeof(sa)) == -1) {\nee4512ed 76) int e = errno;\nee4512ed 77) close(fd);\nee4512ed 78) return e;\nee4512ed 81) *out_fd = fd;\nee4512ed 82) return 0;\nee4512ed 88) static int tr2_dst_try_unix_domain_socket(struct tr2_dst *dst,\nee4512ed 91) unsigned int uds_try = 0;\nee4512ed 94) const char *path = NULL;\nee4512ed 107) if (skip_prefix(tgt_value, PREFIX_AF_UNIX_STREAM, &path))\nee4512ed 108) uds_try |= TR2_DST_UDS_TRY_STREAM;\nee4512ed 110) else if (skip_prefix(tgt_value, PREFIX_AF_UNIX_DGRAM, &path))\nee4512ed 111) uds_try |= TR2_DST_UDS_TRY_DGRAM;\nee4512ed 113) else if (skip_prefix(tgt_value, PREFIX_AF_UNIX, &path))\nee4512ed 114) uds_try |= TR2_DST_UDS_TRY_STREAM | TR2_DST_UDS_TRY_DGRAM;\nee4512ed 116) if (!path || !*path) {\nee4512ed 117) if (tr2_dst_want_warning())\nee4512ed 118) warning(\"trace2: invalid AF_UNIX value '%s' for '%s' tracing\",\nee4512ed 121) tr2_dst_trace_disable(dst);\nee4512ed 122) return 0;\nee4512ed 125) if (!is_absolute_path(path) ||\nee4512ed 126)     strlen(path) >= sizeof(((struct sockaddr_un *)0)->sun_path)) {\nee4512ed 127) if (tr2_dst_want_warning())\nee4512ed 128) warning(\"trace2: invalid AF_UNIX path '%s' for '%s' tracing\",\nee4512ed 131) tr2_dst_trace_disable(dst);\nee4512ed 132) return 0;\nee4512ed 135) if (uds_try & TR2_DST_UDS_TRY_STREAM) {\nee4512ed 136) e = tr2_dst_try_uds_connect(path, SOCK_STREAM, &fd);\nee4512ed 137) if (!e)\nee4512ed 138) goto connected;\nee4512ed 139) if (e != EPROTOTYPE)\nee4512ed 140) goto error;\nee4512ed 142) if (uds_try & TR2_DST_UDS_TRY_DGRAM) {\nee4512ed 143) e = tr2_dst_try_uds_connect(path, SOCK_DGRAM, &fd);\nee4512ed 144) if (!e)\nee4512ed 145) goto connected;\nee4512ed 149) if (tr2_dst_want_warning())\nee4512ed 150) warning(\"trace2: could not connect to socket '%s' for '%s' tracing: %s\",\nee4512ed 153) tr2_dst_trace_disable(dst);\nee4512ed 154) return 0;\nee4512ed 157) dst->fd = fd;\nee4512ed 158) dst->need_close = 1;\nee4512ed 159) dst->initialized = 1;\nee4512ed 161) return dst->fd;\nee4512ed 165) static void tr2_dst_malformed_warning(struct tr2_dst *dst,\nee4512ed 168) struct strbuf buf = STRBUF_INIT;\nee4512ed 170) strbuf_addf(&buf, \"trace2: unknown value for '%s': '%s'\",\nee4512ed 172) warning(\"%s\", buf.buf);\nee4512ed 174) strbuf_release(&buf);\nee4512ed 175) }\nee4512ed 196) dst->fd = STDERR_FILENO;\nee4512ed 197) return dst->fd;\nee4512ed 201) dst->fd = atoi(tgt_value);\nee4512ed 202) return dst->fd;\nee4512ed 209) if (starts_with(tgt_value, PREFIX_AF_UNIX))\nee4512ed 210) return tr2_dst_try_unix_domain_socket(dst, tgt_value);\nee4512ed 214) tr2_dst_malformed_warning(dst, tgt_value);\nee4512ed 215) tr2_dst_trace_disable(dst);\nee4512ed 216) return 0;\nee4512ed 248) if (tr2_dst_want_warning())\nee4512ed 249) warning(\"unable to write trace to '%s': %s\", dst->env_var_name,\nee4512ed 250) strerror(errno));\nee4512ed 251) tr2_dst_trace_disable(dst);\n\ntrace2/tr2_sid.c\nee4512ed 27) return;\nee4512ed 59) tr2_sid_compute();\n\ntrace2/tr2_tgt_event.c\nee4512ed 57) tr2env_event_nesting_wanted = want_nesting;\nee4512ed 61) tr2env_event_brief = want_brief;\nee4512ed 96)     !strcmp(event_name, \"atexit\")) {\nee4512ed 158) static void fn_signal(uint64_t us_elapsed_absolute, int signo)\nee4512ed 160) const char *event_name = \"signal\";\nee4512ed 161) struct json_writer jw = JSON_WRITER_INIT;\nee4512ed 162) double t_abs = (double)us_elapsed_absolute / 1000000.0;\nee4512ed 164) jw_object_begin(&jw, 0);\nee4512ed 165) event_fmt_prepare(event_name, __FILE__, __LINE__, NULL, &jw);\nee4512ed 166) jw_object_double(&jw, \"t_abs\", 6, t_abs);\nee4512ed 167) jw_object_intmax(&jw, \"signo\", signo);\nee4512ed 168) jw_end(&jw);\nee4512ed 170) tr2_dst_write_line(&tr2dst_event, &jw.json);\nee4512ed 171) jw_release(&jw);\nee4512ed 172) }\nee4512ed 206) if (fmt && *fmt) {\nee4512ed 207) jw_object_string(jw, field_name, fmt);\nee4512ed 208) return;\nee4512ed 235) static void fn_command_path_fl(const char *file, int line, const char *pathname)\nee4512ed 237) const char *event_name = \"cmd_path\";\nee4512ed 238) struct json_writer jw = JSON_WRITER_INIT;\nee4512ed 240) jw_object_begin(&jw, 0);\nee4512ed 241) event_fmt_prepare(event_name, file, line, NULL, &jw);\nee4512ed 242) jw_object_string(&jw, \"path\", pathname);\nee4512ed 243) jw_end(&jw);\nee4512ed 245) tr2_dst_write_line(&tr2dst_event, &jw.json);\nee4512ed 246) jw_release(&jw);\nee4512ed 247) }\nee4512ed 266) static void fn_command_mode_fl(const char *file, int line, const char *mode)\nee4512ed 268) const char *event_name = \"cmd_mode\";\nee4512ed 269) struct json_writer jw = JSON_WRITER_INIT;\nee4512ed 271) jw_object_begin(&jw, 0);\nee4512ed 272) event_fmt_prepare(event_name, file, line, NULL, &jw);\nee4512ed 273) jw_object_string(&jw, \"name\", mode);\nee4512ed 274) jw_end(&jw);\nee4512ed 276) tr2_dst_write_line(&tr2dst_event, &jw.json);\nee4512ed 277) jw_release(&jw);\nee4512ed 278) }\nee4512ed 280) static void fn_alias_fl(const char *file, int line, const char *alias,\nee4512ed 283) const char *event_name = \"alias\";\nee4512ed 284) struct json_writer jw = JSON_WRITER_INIT;\nee4512ed 286) jw_object_begin(&jw, 0);\nee4512ed 287) event_fmt_prepare(event_name, file, line, NULL, &jw);\nee4512ed 288) jw_object_string(&jw, \"alias\", alias);\nee4512ed 289) jw_object_inline_begin_array(&jw, \"argv\");\nee4512ed 290) jw_array_argv(&jw, argv);\nee4512ed 291) jw_end(&jw);\nee4512ed 292) jw_end(&jw);\nee4512ed 294) tr2_dst_write_line(&tr2dst_event, &jw.json);\nee4512ed 295) jw_release(&jw);\nee4512ed 296) }\nee4512ed 309) jw_object_string(&jw, \"child_class\", \"hook\");\nee4512ed 310) jw_object_string(&jw, \"hook_name\", cmd->trace2_hook_name);\nee4512ed 317) jw_object_string(&jw, \"cd\", cmd->dir);\nee4512ed 321) jw_array_string(&jw, \"git\");\nee4512ed 351) static void fn_thread_start_fl(const char *file, int line,\nee4512ed 354) const char *event_name = \"thread_start\";\nee4512ed 355) struct json_writer jw = JSON_WRITER_INIT;\nee4512ed 357) jw_object_begin(&jw, 0);\nee4512ed 358) event_fmt_prepare(event_name, file, line, NULL, &jw);\nee4512ed 359) jw_end(&jw);\nee4512ed 361) tr2_dst_write_line(&tr2dst_event, &jw.json);\nee4512ed 362) jw_release(&jw);\nee4512ed 363) }\nee4512ed 365) static void fn_thread_exit_fl(const char *file, int line,\nee4512ed 369) const char *event_name = \"thread_exit\";\nee4512ed 370) struct json_writer jw = JSON_WRITER_INIT;\nee4512ed 371) double t_rel = (double)us_elapsed_thread / 1000000.0;\nee4512ed 373) jw_object_begin(&jw, 0);\nee4512ed 374) event_fmt_prepare(event_name, file, line, NULL, &jw);\nee4512ed 375) jw_object_double(&jw, \"t_rel\", 6, t_rel);\nee4512ed 376) jw_end(&jw);\nee4512ed 378) tr2_dst_write_line(&tr2dst_event, &jw.json);\nee4512ed 379) jw_release(&jw);\nee4512ed 380) }\nee4512ed 382) static void fn_exec_fl(const char *file, int line, uint64_t us_elapsed_absolute,\nee4512ed 385) const char *event_name = \"exec\";\nee4512ed 386) struct json_writer jw = JSON_WRITER_INIT;\nee4512ed 388) jw_object_begin(&jw, 0);\nee4512ed 389) event_fmt_prepare(event_name, file, line, NULL, &jw);\nee4512ed 390) jw_object_intmax(&jw, \"exec_id\", exec_id);\nee4512ed 391) if (exe)\nee4512ed 392) jw_object_string(&jw, \"exe\", exe);\nee4512ed 393) jw_object_inline_begin_array(&jw, \"argv\");\nee4512ed 394) jw_array_argv(&jw, argv);\nee4512ed 395) jw_end(&jw);\nee4512ed 396) jw_end(&jw);\nee4512ed 398) tr2_dst_write_line(&tr2dst_event, &jw.json);\nee4512ed 399) jw_release(&jw);\nee4512ed 400) }\nee4512ed 402) static void fn_exec_result_fl(const char *file, int line,\nee4512ed 406) const char *event_name = \"exec_result\";\nee4512ed 407) struct json_writer jw = JSON_WRITER_INIT;\nee4512ed 409) jw_object_begin(&jw, 0);\nee4512ed 410) event_fmt_prepare(event_name, file, line, NULL, &jw);\nee4512ed 411) jw_object_intmax(&jw, \"exec_id\", exec_id);\nee4512ed 412) jw_object_intmax(&jw, \"code\", code);\nee4512ed 413) jw_end(&jw);\nee4512ed 415) tr2_dst_write_line(&tr2dst_event, &jw.json);\nee4512ed 416) jw_release(&jw);\nee4512ed 417) }\nee4512ed 435) static void fn_repo_fl(const char *file, int line,\nee4512ed 438) const char *event_name = \"def_repo\";\nee4512ed 439) struct json_writer jw = JSON_WRITER_INIT;\nee4512ed 441) jw_object_begin(&jw, 0);\nee4512ed 442) event_fmt_prepare(event_name, file, line, repo, &jw);\nee4512ed 443) jw_object_string(&jw, \"worktree\", repo->worktree);\nee4512ed 444) jw_end(&jw);\nee4512ed 446) tr2_dst_write_line(&tr2dst_event, &jw.json);\nee4512ed 447) jw_release(&jw);\nee4512ed 448) }\nee4512ed 450) static void fn_region_enter_printf_va_fl(const char *file, int line,\nee4512ed 457) const char *event_name = \"region_enter\";\nee4512ed 458) struct tr2tls_thread_ctx *ctx = tr2tls_get_self();\nee4512ed 459) if (ctx->nr_open_regions <= tr2env_event_nesting_wanted) {\nee4512ed 460) struct json_writer jw = JSON_WRITER_INIT;\nee4512ed 462) jw_object_begin(&jw, 0);\nee4512ed 463) event_fmt_prepare(event_name, file, line, repo, &jw);\nee4512ed 464) jw_object_intmax(&jw, \"nesting\", ctx->nr_open_regions);\nee4512ed 465) if (category)\nee4512ed 466) jw_object_string(&jw, \"category\", category);\nee4512ed 467) if (label)\nee4512ed 468) jw_object_string(&jw, \"label\", label);\nee4512ed 469) maybe_add_string_va(&jw, \"msg\", fmt, ap);\nee4512ed 470) jw_end(&jw);\nee4512ed 472) tr2_dst_write_line(&tr2dst_event, &jw.json);\nee4512ed 473) jw_release(&jw);\nee4512ed 475) }\nee4512ed 477) static void fn_region_leave_printf_va_fl(\nee4512ed 482) const char *event_name = \"region_leave\";\nee4512ed 483) struct tr2tls_thread_ctx *ctx = tr2tls_get_self();\nee4512ed 484) if (ctx->nr_open_regions <= tr2env_event_nesting_wanted) {\nee4512ed 485) struct json_writer jw = JSON_WRITER_INIT;\nee4512ed 486) double t_rel = (double)us_elapsed_region / 1000000.0;\nee4512ed 488) jw_object_begin(&jw, 0);\nee4512ed 489) event_fmt_prepare(event_name, file, line, repo, &jw);\nee4512ed 490) jw_object_double(&jw, \"t_rel\", 6, t_rel);\nee4512ed 491) jw_object_intmax(&jw, \"nesting\", ctx->nr_open_regions);\nee4512ed 492) if (category)\nee4512ed 493) jw_object_string(&jw, \"category\", category);\nee4512ed 494) if (label)\nee4512ed 495) jw_object_string(&jw, \"label\", label);\nee4512ed 496) maybe_add_string_va(&jw, \"msg\", fmt, ap);\nee4512ed 497) jw_end(&jw);\nee4512ed 499) tr2_dst_write_line(&tr2dst_event, &jw.json);\nee4512ed 500) jw_release(&jw);\nee4512ed 502) }\nee4512ed 531) static void fn_data_json_fl(const char *file, int line,\nee4512ed 537) const char *event_name = \"data_json\";\nee4512ed 538) struct tr2tls_thread_ctx *ctx = tr2tls_get_self();\nee4512ed 539) if (ctx->nr_open_regions <= tr2env_event_nesting_wanted) {\nee4512ed 540) struct json_writer jw = JSON_WRITER_INIT;\nee4512ed 541) double t_abs = (double)us_elapsed_absolute / 1000000.0;\nee4512ed 542) double t_rel = (double)us_elapsed_region / 1000000.0;\nee4512ed 544) jw_object_begin(&jw, 0);\nee4512ed 545) event_fmt_prepare(event_name, file, line, repo, &jw);\nee4512ed 546) jw_object_double(&jw, \"t_abs\", 6, t_abs);\nee4512ed 547) jw_object_double(&jw, \"t_rel\", 6, t_rel);\nee4512ed 548) jw_object_intmax(&jw, \"nesting\", ctx->nr_open_regions);\nee4512ed 549) jw_object_string(&jw, \"category\", category);\nee4512ed 550) jw_object_string(&jw, \"key\", key);\nee4512ed 551) jw_object_sub_jw(&jw, \"value\", value);\nee4512ed 552) jw_end(&jw);\nee4512ed 554) tr2_dst_write_line(&tr2dst_event, &jw.json);\nee4512ed 555) jw_release(&jw);\nee4512ed 557) }\n\ntrace2/tr2_tgt_normal.c\nee4512ed 105) static void fn_signal(uint64_t us_elapsed_absolute, int signo)\nee4512ed 107) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 108) double elapsed = (double)us_elapsed_absolute / 1000000.0;\nee4512ed 110) strbuf_addf(&buf_payload, \"signal elapsed:%.6f code:%d\", elapsed,\nee4512ed 112) normal_io_write_fl(__FILE__, __LINE__, &buf_payload);\nee4512ed 113) strbuf_release(&buf_payload);\nee4512ed 114) }\nee4512ed 138) if (fmt && *fmt) {\nee4512ed 139) strbuf_addstr(buf, fmt);\nee4512ed 140) return;\nee4512ed 155) static void fn_command_path_fl(const char *file, int line, const char *pathname)\nee4512ed 157) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 159) strbuf_addf(&buf_payload, \"cmd_path %s\", pathname);\nee4512ed 160) normal_io_write_fl(file, line, &buf_payload);\nee4512ed 161) strbuf_release(&buf_payload);\nee4512ed 162) }\nee4512ed 176) static void fn_command_mode_fl(const char *file, int line, const char *mode)\nee4512ed 178) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 180) strbuf_addf(&buf_payload, \"cmd_mode %s\", mode);\nee4512ed 181) normal_io_write_fl(file, line, &buf_payload);\nee4512ed 182) strbuf_release(&buf_payload);\nee4512ed 183) }\nee4512ed 185) static void fn_alias_fl(const char *file, int line, const char *alias,\nee4512ed 188) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 190) strbuf_addf(&buf_payload, \"alias %s ->\", alias);\nee4512ed 191) sq_quote_argv_pretty(&buf_payload, argv);\nee4512ed 192) normal_io_write_fl(file, line, &buf_payload);\nee4512ed 193) strbuf_release(&buf_payload);\nee4512ed 194) }\nee4512ed 196) static void fn_child_start_fl(const char *file, int line,\nee4512ed 200) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 202) strbuf_addf(&buf_payload, \"child_start[%d] \", cmd->trace2_child_id);\nee4512ed 204) if (cmd->dir) {\nee4512ed 205) strbuf_addstr(&buf_payload, \" cd\");\nee4512ed 206) sq_quote_buf_pretty(&buf_payload, cmd->dir);\nee4512ed 207) strbuf_addstr(&buf_payload, \"; \");\nee4512ed 215) if (cmd->git_cmd)\nee4512ed 216) strbuf_addstr(&buf_payload, \"git\");\nee4512ed 217) sq_quote_argv_pretty(&buf_payload, cmd->argv);\nee4512ed 219) normal_io_write_fl(file, line, &buf_payload);\nee4512ed 220) strbuf_release(&buf_payload);\nee4512ed 221) }\nee4512ed 223) static void fn_child_exit_fl(const char *file, int line,\nee4512ed 227) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 228) double elapsed = (double)us_elapsed_child / 1000000.0;\nee4512ed 230) strbuf_addf(&buf_payload, \"child_exit[%d] pid:%d code:%d elapsed:%.6f\",\nee4512ed 232) normal_io_write_fl(file, line, &buf_payload);\nee4512ed 233) strbuf_release(&buf_payload);\nee4512ed 234) }\nee4512ed 236) static void fn_exec_fl(const char *file, int line, uint64_t us_elapsed_absolute,\nee4512ed 239) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 241) strbuf_addf(&buf_payload, \"exec[%d] \", exec_id);\nee4512ed 242) if (exe)\nee4512ed 243) strbuf_addstr(&buf_payload, exe);\nee4512ed 244) sq_quote_argv_pretty(&buf_payload, argv);\nee4512ed 245) normal_io_write_fl(file, line, &buf_payload);\nee4512ed 246) strbuf_release(&buf_payload);\nee4512ed 247) }\nee4512ed 249) static void fn_exec_result_fl(const char *file, int line,\nee4512ed 253) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 255) strbuf_addf(&buf_payload, \"exec_result[%d] code:%d\", exec_id, code);\nee4512ed 256) if (code > 0)\nee4512ed 257) strbuf_addf(&buf_payload, \" err:%s\", strerror(code));\nee4512ed 258) normal_io_write_fl(file, line, &buf_payload);\nee4512ed 259) strbuf_release(&buf_payload);\nee4512ed 260) }\nee4512ed 262) static void fn_param_fl(const char *file, int line, const char *param,\nee4512ed 265) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 267) strbuf_addf(&buf_payload, \"def_param %s=%s\", param, value);\nee4512ed 268) normal_io_write_fl(file, line, &buf_payload);\nee4512ed 269) strbuf_release(&buf_payload);\nee4512ed 270) }\nee4512ed 272) static void fn_repo_fl(const char *file, int line,\nee4512ed 275) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 277) strbuf_addstr(&buf_payload, \"worktree \");\nee4512ed 278) sq_quote_buf_pretty(&buf_payload, repo->worktree);\nee4512ed 279) normal_io_write_fl(file, line, &buf_payload);\nee4512ed 280) strbuf_release(&buf_payload);\nee4512ed 281) }\nee4512ed 283) static void fn_printf_va_fl(const char *file, int line,\nee4512ed 287) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 289) maybe_append_string_va(&buf_payload, fmt, ap);\nee4512ed 290) normal_io_write_fl(file, line, &buf_payload);\nee4512ed 291) strbuf_release(&buf_payload);\nee4512ed 292) }\n\ntrace2/tr2_tgt_perf.c\nee4512ed 102) strbuf_addf(buf, \"r%d \", repo->trace2_repo_id);\nee4512ed 125) strbuf_addbuf(buf, &dots);\nee4512ed 126) len_indent -= dots.len;\nee4512ed 187) static void fn_signal(uint64_t us_elapsed_absolute, int signo)\nee4512ed 189) const char *event_name = \"signal\";\nee4512ed 190) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 192) strbuf_addf(&buf_payload, \"signo:%d\", signo);\nee4512ed 194) perf_io_write_fl(__FILE__, __LINE__, event_name, NULL,\nee4512ed 196) strbuf_release(&buf_payload);\nee4512ed 197) }\nee4512ed 223) if (fmt && *fmt) {\nee4512ed 224) strbuf_addstr(buf, fmt);\nee4512ed 225) return;\nee4512ed 242) static void fn_command_path_fl(const char *file, int line, const char *pathname)\nee4512ed 244) const char *event_name = \"cmd_path\";\nee4512ed 245) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 247) strbuf_addstr(&buf_payload, pathname);\nee4512ed 249) perf_io_write_fl(file, line, event_name, NULL, NULL, NULL, NULL,\nee4512ed 251) strbuf_release(&buf_payload);\nee4512ed 252) }\nee4512ed 269) static void fn_command_mode_fl(const char *file, int line, const char *mode)\nee4512ed 271) const char *event_name = \"cmd_mode\";\nee4512ed 272) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 274) strbuf_addstr(&buf_payload, mode);\nee4512ed 276) perf_io_write_fl(file, line, event_name, NULL, NULL, NULL, NULL,\nee4512ed 278) strbuf_release(&buf_payload);\nee4512ed 279) }\nee4512ed 281) static void fn_alias_fl(const char *file, int line, const char *alias,\nee4512ed 284) const char *event_name = \"alias\";\nee4512ed 285) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 287) strbuf_addf(&buf_payload, \"alias:%s argv:\", alias);\nee4512ed 288) sq_quote_argv_pretty(&buf_payload, argv);\nee4512ed 290) perf_io_write_fl(file, line, event_name, NULL, NULL, NULL, NULL,\nee4512ed 292) strbuf_release(&buf_payload);\nee4512ed 293) }\nee4512ed 303) strbuf_addf(&buf_payload, \"[ch%d] class:hook hook:%s\",\nee4512ed 313) strbuf_addstr(&buf_payload, \" cd:\");\nee4512ed 314) sq_quote_buf_pretty(&buf_payload, cmd->dir);\nee4512ed 319) strbuf_addstr(&buf_payload, \" git\");\nee4512ed 341) static void fn_thread_start_fl(const char *file, int line,\nee4512ed 344) const char *event_name = \"thread_start\";\nee4512ed 345) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 347) perf_io_write_fl(file, line, event_name, NULL, &us_elapsed_absolute,\nee4512ed 349) strbuf_release(&buf_payload);\nee4512ed 350) }\nee4512ed 352) static void fn_thread_exit_fl(const char *file, int line,\nee4512ed 356) const char *event_name = \"thread_exit\";\nee4512ed 357) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 359) perf_io_write_fl(file, line, event_name, NULL, &us_elapsed_absolute,\nee4512ed 361) strbuf_release(&buf_payload);\nee4512ed 362) }\nee4512ed 364) static void fn_exec_fl(const char *file, int line, uint64_t us_elapsed_absolute,\nee4512ed 367) const char *event_name = \"exec\";\nee4512ed 368) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 370) strbuf_addf(&buf_payload, \"id:%d \", exec_id);\nee4512ed 371) strbuf_addstr(&buf_payload, \"argv:\");\nee4512ed 372) if (exe)\nee4512ed 373) strbuf_addf(&buf_payload, \" %s\", exe);\nee4512ed 374) sq_quote_argv_pretty(&buf_payload, argv);\nee4512ed 376) perf_io_write_fl(file, line, event_name, NULL, &us_elapsed_absolute,\nee4512ed 378) strbuf_release(&buf_payload);\nee4512ed 379) }\nee4512ed 381) static void fn_exec_result_fl(const char *file, int line,\nee4512ed 385) const char *event_name = \"exec_result\";\nee4512ed 386) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 388) strbuf_addf(&buf_payload, \"id:%d code:%d\", exec_id, code);\nee4512ed 389) if (code > 0)\nee4512ed 390) strbuf_addf(&buf_payload, \" err:%s\", strerror(code));\nee4512ed 392) perf_io_write_fl(file, line, event_name, NULL, &us_elapsed_absolute,\nee4512ed 394) strbuf_release(&buf_payload);\nee4512ed 395) }\nee4512ed 397) static void fn_param_fl(const char *file, int line, const char *param,\nee4512ed 400) const char *event_name = \"def_param\";\nee4512ed 401) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 403) strbuf_addf(&buf_payload, \"%s:%s\", param, value);\nee4512ed 405) perf_io_write_fl(file, line, event_name, NULL, NULL, NULL, NULL,\nee4512ed 407) strbuf_release(&buf_payload);\nee4512ed 408) }\nee4512ed 410) static void fn_repo_fl(const char *file, int line,\nee4512ed 413) const char *event_name = \"def_repo\";\nee4512ed 414) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 416) strbuf_addstr(&buf_payload, \"worktree:\");\nee4512ed 417) sq_quote_buf_pretty(&buf_payload, repo->worktree);\nee4512ed 419) perf_io_write_fl(file, line, event_name, repo, NULL, NULL, NULL,\nee4512ed 421) strbuf_release(&buf_payload);\nee4512ed 422) }\nee4512ed 424) static void fn_region_enter_printf_va_fl(const char *file, int line,\nee4512ed 431) const char *event_name = \"region_enter\";\nee4512ed 432) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 434) if (label)\nee4512ed 435) strbuf_addf(&buf_payload, \"label:%s \", label);\nee4512ed 436) maybe_append_string_va(&buf_payload, fmt, ap);\nee4512ed 438) perf_io_write_fl(file, line, event_name, repo, &us_elapsed_absolute,\nee4512ed 440) strbuf_release(&buf_payload);\nee4512ed 441) }\nee4512ed 443) static void fn_region_leave_printf_va_fl(\nee4512ed 448) const char *event_name = \"region_leave\";\nee4512ed 449) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 451) if (label)\nee4512ed 452) strbuf_addf(&buf_payload, \"label:%s \", label);\nee4512ed 453) maybe_append_string_va(&buf_payload, fmt, ap);\nee4512ed 455) perf_io_write_fl(file, line, event_name, repo, &us_elapsed_absolute,\nee4512ed 457) strbuf_release(&buf_payload);\nee4512ed 458) }\nee4512ed 460) static void fn_data_fl(const char *file, int line, uint64_t us_elapsed_absolute,\nee4512ed 465) const char *event_name = \"data\";\nee4512ed 466) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 468) strbuf_addf(&buf_payload, \"%s:%s\", key, value);\nee4512ed 470) perf_io_write_fl(file, line, event_name, repo, &us_elapsed_absolute,\nee4512ed 472) strbuf_release(&buf_payload);\nee4512ed 473) }\nee4512ed 475) static void fn_data_json_fl(const char *file, int line,\nee4512ed 481) const char *event_name = \"data_json\";\nee4512ed 482) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 484) strbuf_addf(&buf_payload, \"%s:%s\", key, value->json.buf);\nee4512ed 486) perf_io_write_fl(file, line, event_name, repo, &us_elapsed_absolute,\nee4512ed 488) strbuf_release(&buf_payload);\nee4512ed 489) }\nee4512ed 491) static void fn_printf_va_fl(const char *file, int line,\nee4512ed 495) const char *event_name = \"printf\";\nee4512ed 496) struct strbuf buf_payload = STRBUF_INIT;\nee4512ed 498) maybe_append_string_va(&buf_payload, fmt, ap);\nee4512ed 500) perf_io_write_fl(file, line, event_name, NULL, &us_elapsed_absolute,\nee4512ed 502) strbuf_release(&buf_payload);\nee4512ed 503) }\n\ntrace2/tr2_tls.c\nee4512ed 38) strbuf_addf(&ctx->thread_name, \"th%02d:\", ctx->thread_id);\nee4512ed 41) strbuf_setlen(&ctx->thread_name, TR2_MAX_THREAD_NAME);\nee4512ed 58) ctx = tr2tls_create_self(\"unknown\");\nee4512ed 63) int tr2tls_is_main_thread(void)\nee4512ed 65) struct tr2tls_thread_ctx *ctx = pthread_getspecific(tr2tls_key);\nee4512ed 67) return ctx == tr2tls_thread_main;\nee4512ed 82) void tr2tls_push_self(uint64_t us_now)\nee4512ed 84) struct tr2tls_thread_ctx *ctx = tr2tls_get_self();\nee4512ed 86) ALLOC_GROW(ctx->array_us_start, ctx->nr_open_regions + 1, ctx->alloc);\nee4512ed 87) ctx->array_us_start[ctx->nr_open_regions++] = us_now;\nee4512ed 88) }\nee4512ed 90) void tr2tls_pop_self(void)\nee4512ed 92) struct tr2tls_thread_ctx *ctx = tr2tls_get_self();\nee4512ed 94) if (!ctx->nr_open_regions)\nee4512ed 95) BUG(\"no open regions in thread '%s'\", ctx->thread_name.buf);\nee4512ed 97) ctx->nr_open_regions--;\nee4512ed 98) }\nee4512ed 105) tr2tls_pop_self();\nee4512ed 115) return 0;\nee4512ed 125) return 0;\n\nworktree.c\ne8805af1 465) clear_repository_format(&format);\n\nCommits introducting uncovered code:\nAnders Waldenborg\tfd2015b3 strbuf: separate callback for strbuf_expand:ing literals\nAnders Waldenborg\t4f732e0f pretty: allow %(trailers) options with explicit value\nBrandon Richardson\tcbdeab98 commit-tree: utilize parse-options api\nDaniels Umanovskis\t0ecb1fc7 branch: introduce --show-current display option\nElijah Newren\td76ce4f7 log,diff-tree: add --combined-all-paths option\nJeff Hostetler\tee4512ed trace2: create new combined trace facility\nJeff Hostetler\teee73d1d trace2:data: add editor/pager child classification\nJeff Hostetler\t9d81ecb5 progress: add sparse mode to force 100% complete message\nJeff Hostetler\ta15860dc trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh\nJeff Hostetler\tb3a5d5a8 trace2:data: add subverb for rebase\nJeff King\t8d8c2a5a fsck: always compute USED flags for unreachable objects\nJeff King\t37c80012 fetch: avoid calling write_or_die()\nJeff King\t057ab54b completion: fix multiple command removals\nJeff King\tfde67d68 prune: use bitmaps for reachability traversal\nJeff King\tc409d108 pack-objects: drop unused parameter from oe_map_new_pack()\nJeff King\td55a30bb prune: lazily perform reachability traversal\nJoel Teichroeb\t8a0fc8d1 stash: convert apply to builtin\nJoel Teichroeb\t4e2dd393 stash: convert drop and clear to builtin\nJoel Teichroeb\tc4de61d7 stash: convert pop to builtin\nJohannes Schindelin\t7906af0c tests: add a special setup where stash.useBuiltin is off\nJohannes Schindelin\tcbd29ead built-in rebase: set ORIG_HEAD just once, before the rebase\nJohannes Schindelin\ted8b4132 remote-curl: mark all error messages for translation\nJohannes Schindelin\tc1284b21 curl: anonymize URLs in error messages and warnings\nJohannes Schindelin\t90a46272 stash: optionally use the scripted version again\nJonathan Tan\ta97d0079 remote-curl: use post_rpc() for protocol v2 also\nJonathan Tan\t8cbeba06 tests: define GIT_TEST_PROTOCOL_VERSION\nJunio C Hamano\tbc208ae3 builtin/log: downcase the beginning of error messages\nJunio C Hamano\taa1edf14 Merge branch 'js/remote-curl-i18n'\nMartin Ågren\te8805af1 setup: fix memory leaks with `struct repository_format`\nMichal Suchanek\t7af01f23 worktree: fix worktree add race\nNguyễn Thái Ngọc Duy\tf476308b diff-parseopt: convert -M|--find-renames\nNguyễn Thái Ngọc Duy\tf41179f1 parse-options: avoid magic return codes\nNguyễn Thái Ngọc Duy\t202fbb33 parse-options: add one-shot mode\nNguyễn Thái Ngọc Duy\t4ce7aab5 diff-parseopt: convert --dirstat and friends\nNguyễn Thái Ngọc Duy\t3ebbe289 parse-options: allow ll_callback with OPTION_CALLBACK\nNguyễn Thái Ngọc Duy\tf62470c6 parse-options: add OPT_BITOP()\nNguyễn Thái Ngọc Duy\t84b5089e diff-parseopt: convert --stat*\nNguyễn Thái Ngọc Duy\tced4e179 diff-parseopt: convert -B|--break-rewrites\nNguyễn Thái Ngọc Duy\tbf3ff338 parse-options: stop abusing 'callback' for lowlevel callbacks\nNguyễn Thái Ngọc Duy\taf2f3680 diff-parseopt: convert --output-*\nNguyễn Thái Ngọc Duy\t125dcea9 diff-parseopt: convert --submodule\nNguyễn Thái Ngọc Duy\td473e2e0 diff.c: convert -U|--unified\nNguyễn Thái Ngọc Duy\te9fb39b6 diff-parseopt: convert --word-diff\nNguyễn Thái Ngọc Duy\t7f64850d diff-parseopt: convert -C|--find-copies\nNguyễn Thái Ngọc Duy\t10f35b1c diff-parseopt: convert --diff-algorithm\nNguyễn Thái Ngọc Duy\t7d7942b7 diff-parseopt: convert --[no-]compact-summary\nPaul-Sebastian Ungureanu\td553f538 stash: convert push to builtin\nPaul-Sebastian Ungureanu\td4788af8 stash: convert create to builtin\nPaul-Sebastian Ungureanu\t41e0dd55 stash: convert store to builtin\nPaul-Sebastian Ungureanu\t40af1468 stash: convert `stash--helper.c` into `stash.c`\nPaul-Sebastian Ungureanu\tdc7bd382 stash: convert show to builtin\nPaul-Sebastian Ungureanu\t5ef264db strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`\nPaul-Sebastian Ungureanu\t1ac528c0 stash: make push -q quiet\nRamsay Jones\t9b0bd87e prune-packed: check for too many arguments\nThomas Gummerer\t091e04bc checkout: introduce --{,no-}overlay option\nThomas Gummerer\t536ec183 entry: support CE_WT_REMOVE flag in checkout_entry\nWilliam Hubbs\t39ab4d09 config: allow giving separate author and committer idents\n\n"}]}