{"thread":{"id":"52081","subject":"Git Test Coverage Report (v2.24.0-rc0)","startedAt":"2019-10-21T14:15:59Z","lastAt":"2019-10-21T14:15:59Z","messageCount":1,"participants":["Derrick Stolee"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"384526","messageId":"ed8e65a2-72e8-210c-d4a4-eacdb5c7b0e8@gmail.com","threadId":"52081","inReplyTo":null,"subject":"Git Test Coverage Report (v2.24.0-rc0)","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2019-10-21T14:15:52Z","receivedAt":"2019-10-21T14:15:59Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"Here is today's test coverage report. You can find it at the normal place [1][2][3].\n\nI set the \"master@{1}\" to be the maint branch, so this should cover all new code that\nis not in the previous release.\n\nThanks,\n-Stolee\n\n[1] https://derrickstolee.github.io/git-test-coverage/reports/2019-10-21.htm\n[2] https://derrickstolee.github.io/git-test-coverage/reports/2019-10-21.txt\n[3] https://derrickstolee.github.io/git-test-coverage/reports/2019-10-21-commits.txt\n\n---\n\npu\t936d5c92bfb989d706cc1899b1cd6afc5bc9c0df\njch\t0926ab8072b48968d05b0ebb9cc3d8043722ddc1\nnext\t954a862665455a25876e1113bd865d43a26facce\nmaster\td966095db01190a2196e31195ea6fa0c722aa732\nmaster@{1}\torigin/maint\n\n\nUncovered code in 'pu' not in 'jch'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nDerrick Stolee\t2a53e0ba clone: add --sparse mode\nbuiltin/clone.c\n2a53e0ba 752) error(_(\"failed to initialize sparse-checkout\"));\n2a53e0ba 753) result = 1;\n2a53e0ba 1138) return 1;\n\nDerrick Stolee\t71b11117 sparse-checkout: update working directory in-process\nbuiltin/sparse-checkout.c\n71b11117 79) die(_(\"You need to resolve your current index first\"));\n71b11117 82) return 0;\n71b11117 327) clear_pattern_list(pl);\n71b11117 328) update_working_directory(NULL);\n71b11117 329) return result;\n\nDerrick Stolee\tf7fc70e0 sparse-checkout: create 'init' subcommand\nbuiltin/sparse-checkout.c\nf7fc70e0 130) error(_(\"failed to set extensions.worktreeConfig setting\"));\nf7fc70e0 131) return 1;\nf7fc70e0 142) error(_(\"failed to enable core.sparseCheckout\"));\nf7fc70e0 143) return 1;\nf7fc70e0 197) return 1;\n\nDerrick Stolee\t60fa6324 sparse-checkout: init and set in cone mode\nbuiltin/sparse-checkout.c\n60fa6324 155) error(_(\"failed to enable core.sparseCheckoutCone\"));\n60fa6324 156) return 1;\n60fa6324 355) return;\n\nDerrick Stolee\t2e706347 sparse-checkout: write using lockfile\nbuiltin/sparse-checkout.c\n2e706347 325) rollback_lock_file(&lk);\n2e706347 326) free(sparse_filename);\n\nDerrick Stolee\tf2882439 sparse-checkout: create 'disable' subcommand\nbuiltin/sparse-checkout.c\nf2882439 435) die(_(\"failed to change config\"));\nf2882439 444) die(_(\"error while refreshing working directory\"));\n\nDerrick Stolee\t1e2b195d sparse-checkout: create builtin with 'list' subcommand\nbuiltin/sparse-checkout.c\n1e2b195d 480) usage_with_options(builtin_sparse_checkout_usage,\n\nDerrick Stolee\t4d4f1c19 sparse-checkout: use hashmaps for cone patterns\ndir.c\n4d4f1c19 656) pl->use_cone_patterns = 0;\n4d4f1c19 657) warning(_(\"unrecognized pattern: '%s'\"), given->pattern);\n4d4f1c19 658) goto clear_hashmaps;\n4d4f1c19 680) hashmap_add(&pl->parent_hashmap, &translated->ent);\n4d4f1c19 681) hashmap_remove(&pl->recursive_hashmap, &translated->ent, &data);\n4d4f1c19 682) free(data);\n4d4f1c19 683) return;\n4d4f1c19 687) warning(_(\"unrecognized negative pattern: '%s'\"),\n4d4f1c19 689) goto clear_hashmaps;\n4d4f1c19 703) warning(_(\"your sparse-checkout file may have issues: pattern '%s' is repeated\"),\n4d4f1c19 705) hashmap_remove(&pl->parent_hashmap, &translated->ent, &data);\n4d4f1c19 706) free(data);\n4d4f1c19 707) free(translated);\n\nJonathan Nieder\tee70c128 index: offer advice for unknown index extensions\nread-cache.c\nee70c128 1745) if (advice_unknown_index_extension) {\nee70c128 1746) warning(_(\"ignoring optional %.4s index extension\"), ext);\nee70c128 1747) advise(_(\"This is likely due to the file having been written by a newer\\n\"\n\nJosh Steadmon\t6da1f1a9 protocol: advertise multiple supported versions\nprotocol.c\n\nremote-curl.c\n6da1f1a9 354) return 0;\n\nMatheus Tavares\tbeebb9d2 object-store: allow threaded access to object reading\npackfile.c\nbeebb9d2 1464) return;\n\nsha1-file.c\nbeebb9d2 1431) return;\nbeebb9d2 1440) return;\n\nRohit Ashiwal\t1406adc0 rebase -i: add --ignore-whitespace flag\nbuiltin/rebase.c\n1406adc0 1904) die(_(\"cannot combine '--rebase-merges' with \"\n\nRohit Ashiwal\t7c5b2e1d sequencer: allow callers of read_author_script() to ignore fields\nsequencer.c\n7c5b2e1d 832) free(kv.items[name_i].util);\n7c5b2e1d 836) free(kv.items[email_i].util);\n7c5b2e1d 840) free(kv.items[date_i].util);\n\nRohit Ashiwal\tccafcb32 rebase -i: support --committer-date-is-author-date\nsequencer.c\nccafcb32 884) static char *read_author_date_or_null(void)\nccafcb32 888) if (read_author_script(rebase_path_author_script(),\nccafcb32 890) return NULL;\nccafcb32 891) return date;\nccafcb32 983) int res = -1;\nccafcb32 984) struct strbuf datebuf = STRBUF_INIT;\nccafcb32 985) char *date = read_author_date_or_null();\nccafcb32 987) if (!date)\nccafcb32 988) return -1;\nccafcb32 990) strbuf_addf(&datebuf, \"@%s\", date);\nccafcb32 991) res = setenv(\"GIT_COMMITTER_DATE\", datebuf.buf, 1);\nccafcb32 993) strbuf_release(&datebuf);\nccafcb32 994) free(date);\nccafcb32 996) if (res)\nccafcb32 997) return -1;\nccafcb32 1425) return error(_(\"malformed ident line\"));\nccafcb32 1427) return error(_(\"corrupted author without date information\"));\nccafcb32 2579) opts->allow_ff = 0;\nccafcb32 2580) opts->committer_date_is_author_date = 1;\n\nRohit Ashiwal\t7258d3d1 rebase -i: support --ignore-date\nsequencer.c\n7258d3d1 902) error(_(\"malformed ident line\"));\n7258d3d1 903) return NULL;\n7258d3d1 912) static void push_dates(struct child_process *child)\n7258d3d1 914) time_t now = time(NULL);\n7258d3d1 915) struct strbuf date = STRBUF_INIT;\n7258d3d1 917) strbuf_addf(&date, \"@%\"PRIuMAX, (uintmax_t)now);\n7258d3d1 918) argv_array_pushf(&child->env_array, \"GIT_AUTHOR_DATE=%s\", date.buf);\n7258d3d1 919) argv_array_pushf(&child->env_array, \"GIT_COMMITTER_DATE=%s\", date.buf);\n7258d3d1 920) strbuf_release(&date);\n7258d3d1 921) }\n7258d3d1 1016) push_dates(&cmd);\n7258d3d1 1485) res = -1;\n7258d3d1 1486) goto out;\n7258d3d1 2584) opts->allow_ff = 0;\n7258d3d1 2585) opts->ignore_date = 1;\n7258d3d1 3610) push_dates(&cmd);\n\n\n\nUncovered code in 'jch' not in 'next'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nJames Coglan\tfbccf255 graph: automatically track display width of graph lines\ngraph.c\nfbccf255 904) graph_line_write_column(line, col, '|');\n\nJames Coglan\t0195285b graph: rename `new_mapping` to `old_mapping`\ngraph.c\n0195285b 421) REALLOC_ARRAY(graph->old_mapping, graph->column_capacity * 2);\n\nJeff King\t86d0d4b8 fsck: don't require object structs for display functions\nbuiltin/fsck.c\n86d0d4b8 64) type = oid_object_info(the_repository, oid, NULL);\n86d0d4b8 309) printf_ln(_(\"unreachable %s %s\"),\n86d0d4b8 310)   printable_type(&obj->oid, obj->type),\n86d0d4b8 311)   describe_object(&obj->oid));\n86d0d4b8 367) fprintf_ln(stderr, _(\"Checking %s\"), describe_object(&obj->oid));\n86d0d4b8 425)    printable_type(&obj->oid, obj->type),\n86d0d4b8 426)    describe_object(&obj->oid));\n86d0d4b8 439)   describe_object(&commit->object.oid));\n\nJeff King\t2eec891d fsck: drop blob struct from fsck_finish()\nfsck.c\n2eec891d 1027) if (is_promisor_object(oid))\n\nJeff King\t61506cb2 fsck: don't require an object struct for report()\nfsck.c\n61506cb2 980) return report(options, NULL, OBJ_NONE, FSCK_MSG_BAD_OBJECT_SHA1, \"no valid object to fsck\");\n61506cb2 991) return report(options, &obj->oid, obj->type,\n61506cb2 994)       obj->type);\n61506cb2 1029) ret |= report(options,\n\nJeff King\t315f8012 fsck: accept an oid instead of a \"struct blob\" for fsck_blob()\nfsck.c\n315f8012 958) return report(options, oid, OBJ_BLOB,\n\nJeff King\tbcc2d814 fsck: accept an oid instead of a \"struct tag\" for fsck_tag()\nfsck.c\nbcc2d814 837) ret = report(options, oid, OBJ_TAG, FSCK_MSG_MISSING_OBJECT, \"invalid format - expected 'object' line\");\nbcc2d814 841) ret = report(options, oid, OBJ_TAG, FSCK_MSG_BAD_OBJECT_SHA1, \"invalid 'object' line format - bad sha1\");\nbcc2d814 848) ret = report(options, oid, OBJ_TAG, FSCK_MSG_MISSING_TYPE_ENTRY, \"invalid format - expected 'type' line\");\nbcc2d814 853) ret = report(options, oid, OBJ_TAG, FSCK_MSG_MISSING_TYPE, \"invalid format - unexpected end after 'type' line\");\nbcc2d814 857) ret = report(options, oid, OBJ_TAG, FSCK_MSG_BAD_TYPE, \"invalid 'type' value\");\nbcc2d814 863) ret = report(options, oid, OBJ_TAG, FSCK_MSG_MISSING_TAG_ENTRY, \"invalid format - expected 'tag' line\");\nbcc2d814 868) ret = report(options, oid, OBJ_TAG, FSCK_MSG_MISSING_TAG, \"invalid format - unexpected end after 'type' line\");\n\nJeff King\t0b0d2303 remember commit/tag parse failures\ntag.c\n0b0d2303 152) FREE_AND_NULL(item->tag);\n\nJeff King\t8c95edfc fsck: accept an oid instead of a \"struct commit\" for fsck_commit()\nfsck.c\n8c95edfc 781) return report(options, oid, OBJ_COMMIT, FSCK_MSG_MISSING_TREE, \"invalid format - expected 'tree' line\");\n8c95edfc 783) err = report(options, oid, OBJ_COMMIT, FSCK_MSG_BAD_TREE_SHA1, \"invalid 'tree' line format - bad sha1\");\n8c95edfc 790) err = report(options, oid, OBJ_COMMIT, FSCK_MSG_BAD_PARENT_SHA1, \"invalid 'parent' line format - bad sha1\");\n8c95edfc 804) err = report(options, oid, OBJ_COMMIT, FSCK_MSG_MISSING_AUTHOR, \"invalid format - expected 'author' line\");\n8c95edfc 810) return report(options, oid, OBJ_COMMIT, FSCK_MSG_MISSING_COMMITTER, \"invalid format - expected 'committer' line\");\n\nJeff King\t8645f45b fsck: don't require an object struct in verify_headers()\nfsck.c\n8645f45b 717) return report(options, oid, type,\n\nJeff King\tcd896131 fsck: accept an oid instead of a \"struct tree\" for fsck_tree()\nfsck.c\ncd896131 622) retval += report(options, oid, OBJ_TREE, FSCK_MSG_BAD_TREE, \"cannot be parsed as a tree\");\ncd896131 669) retval += report(options, oid, OBJ_TREE, FSCK_MSG_FULL_PATHNAME, \"contains full pathnames\");\ncd896131 671) retval += report(options, oid, OBJ_TREE, FSCK_MSG_EMPTY_NAME, \"contains empty pathname\");\ncd896131 679) retval += report(options, oid, OBJ_TREE, FSCK_MSG_ZERO_PADDED_FILEMODE, \"contains zero-padded file modes\");\ncd896131 681) retval += report(options, oid, OBJ_TREE, FSCK_MSG_BAD_FILEMODE, \"contains bad file modes\");\ncd896131 685) retval += report(options, oid, OBJ_TREE, FSCK_MSG_TREE_NOT_SORTED, \"not properly sorted\");\n\nJeff King\ta3f8d23c fsck: unify object-name code\nfsck.c\na3f8d23c 517) error(\"Unknown object type for %s\",\n\nJeff King\tbfd15918 fsck: use oids rather than objects for object_name API\nfsck.c\nbfd15918 400) fsck_put_object_name(options, &entry.oid, \"%s%s/\",\nbfd15918 469) fsck_put_object_name(options, oid, \"%s^%d\",\nbfd15918 472) fsck_put_object_name(options, oid, \"%.*s~%d\",\nbfd15918 495) fsck_put_object_name(options, &tag->tagged->oid, \"%s\", name);\n\nJeff King\tc78fe004 parse_commit_buffer(): treat lookup_commit() failure as parse error\ncommit.c\nc78fe004 466) return error(\"bad graft parent %s in commit %s\",\n\nJeff King\t9828df75 fsck: only provide oid/type in fsck_error callback\nbuiltin/fsck.c\n9828df75 125) BUG(\"%d (FSCK_IGNORE?) should never trigger this callback\",\n\nJeff King\t9f77fdad fsck: don't require an object struct for fsck_ident()\nfsck.c\n9f77fdad 733) return report(options, oid, type, FSCK_MSG_MISSING_NAME_BEFORE_EMAIL, \"invalid author/committer line - missing space before email\");\n9f77fdad 740) return report(options, oid, type, FSCK_MSG_MISSING_SPACE_BEFORE_EMAIL, \"invalid author/committer line - missing space before email\");\n9f77fdad 744) return report(options, oid, type, FSCK_MSG_BAD_EMAIL, \"invalid author/committer line - bad email\");\n9f77fdad 750) return report(options, oid, type, FSCK_MSG_ZERO_PADDED_DATE, \"invalid author/committer line - zero-padded date\");\n9f77fdad 754) return report(options, oid, type, FSCK_MSG_BAD_DATE, \"invalid author/committer line - bad date\");\n9f77fdad 762) return report(options, oid, type, FSCK_MSG_BAD_TIMEZONE, \"invalid author/committer line - bad time zone\");\n\nJeff King\t78d50148 parse_tag_buffer(): treat NULL tag pointer as parse error\ntag.c\n78d50148 179) return error(\"unknown tag type '%s' in %s\",\n\n\n\nUncovered code in 'next' not in 'master'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nbrian m. carlson\t6f119424 remote-curl: pass on atomic capability to remote side\nremote-curl.c\n6f119424 155) else if (!strcmp(value, \"false\"))\n6f119424 156) options.atomic = 0;\n6f119424 158) return -1;\n\ntransport-helper.c\n6f119424 859) die(_(\"helper %s does not support --atomic\"), name);\n\nJeff King\t7c59828b pack-objects: improve partial packfile reuse\nbuiltin/pack-objects.c\n7c59828b 1136) return 1;\n7c59828b 2694) (reuse_packfile_bitmap &&\n7c59828b 2695)  bitmap_walk_contains(bitmap_git, reuse_packfile_bitmap, oid));\n\npack-bitmap.c\n7c59828b 791) return; /* broken packfile, punt */\n7c59828b 808) return;\n7c59828b 811) return;\n7c59828b 823) return;\n7c59828b 861) i = bitmap_git->pack->num_objects / BITS_IN_EWORD;\n\nJeff King\td35b73c5 pack-objects: introduce pack.allowPackReuse\nbuiltin/pack-objects.c\nd35b73c5 2847) allow_pack_reuse = git_config_bool(k, v);\nd35b73c5 2848) return 0;\n\nJeff King\t934b7d0a pack-bitmap: introduce bitmap_walk_contains()\npack-bitmap.c\n934b7d0a 903) return 0;\n\nJonathan Tan\t5374a290 fetch-pack: write fetched refs to .promisor\nfetch-pack.c\n5374a290 770) BUG(\"name of pack lockfile should end with .keep (was '%s')\",\n\nPhillip Wood\t49697cb7 move run_commit_hook() to libgit and use it there\nsequencer.c\n49697cb7 1137) arg1 = \"commit\";\n49697cb7 1138) arg2 = commit;\n\nWilliam Baker\t3444ec2e fsmonitor: don't fill bitmap with entries to be removed\nfsmonitor.c\n3444ec2e 20) BUG(\"fsmonitor_dirty has more entries than the index (%\"PRIuMAX\" >= %u)\",\n3444ec2e 59) BUG(\"fsmonitor_dirty has more entries than the index (%\"PRIuMAX\" > %u)\",\n3444ec2e 87) BUG(\"fsmonitor_dirty has more entries than the index (%\"PRIuMAX\" > %u)\",\n3444ec2e 256) BUG(\"fsmonitor_dirty has more entries than the index (%\"PRIuMAX\" > %u)\",\n\n\n\nUncovered code in 'master' not in 'master@{1}'\n--------------------------------------------------------\n\nCommits introducing uncovered code:\nAlex Henrie\tbaed6bbb diffcore-break: use a goto instead of a redundant if statement\ndiffcore-break.c\nbaed6bbb 295) diff_q(&outq, p);\n\nAli Utku Selen\tddb3c856 shallow.c: don't free unallocated slabs\nshallow.c\nddb3c856 157) continue;\n\nBert Wesarg\tedefc318 format-patch: create leading components of output directory\nbuiltin/log.c\nedefc318 1785) die(_(\"could not create leading directories \"\n\nBrandon Casey\t040a6551 cleanup: use internal memory allocation wrapper functions everywhere\nstable-qsort.c\n040a6551 58) char *tmp = xmalloc(size);\n\nBrian Downing\t43fe901b compat: Add simplified merge sort implementation from glibc\nstable-qsort.c\n43fe901b 59) msort_with_tmp(b, n, s, cmp, tmp);\n43fe901b 60) free(tmp);\n\nbrian m. carlson\t7e0d029f builtin/rev-parse: switch to use the_hash_algo\nbuiltin/rev-parse.c\n7e0d029f 735) abbrev = hexsz;\n\nbrian m. carlson\t8d4d86b0 cache: remove null_sha1\nbuiltin/submodule--helper.c\n8d4d86b0 427) printf(\"%06o %s U\\t\", ce->ce_mode, oid_to_hex(&null_oid));\n\nbrian m. carlson\tce17feb1 path: add a function to check for path suffix\npath.c\nce17feb1 1234) return -1;\nce17feb1 1238) return -1;\nce17feb1 1247) return -1;\n\nbrian m. carlson\t28ba1830 builtin/replace: make hash size independent\nbuiltin/replace.c\n28ba1830 275) if (strbuf_read(&result, cmd.out, the_hash_algo->hexsz + 1) < 0) {\n\nbrian m. carlson\tfabec2c5 builtin/receive-pack: switch to use the_hash_algo\nbuiltin/receive-pack.c\nfabec2c5 433) the_hash_algo->init_fn(&ctx);\nfabec2c5 434) the_hash_algo->update_fn(&ctx, key_in, key_len);\nfabec2c5 435) the_hash_algo->final_fn(key, &ctx);\n\nChristian Couder\tfaf2abf4 promisor-remote: use repository_format_partial_clone\npromisor-remote.c\nfaf2abf4 95) if (previous)\nfaf2abf4 96) previous->next = r->next;\nfaf2abf4 98) promisors = r->next ? r->next : r;\nfaf2abf4 99) r->next = NULL;\nfaf2abf4 100) *promisors_tail = r;\nfaf2abf4 101) promisors_tail = &r->next;\n\nChristian Couder\t9e27beaa promisor-remote: implement promisor_remote_get_direct()\npromisor-remote.c\n9e27beaa 205) static int remove_fetched_oids(struct repository *repo,\n9e27beaa 209) int i, remaining_nr = 0;\n9e27beaa 210) int *remaining = xcalloc(oid_nr, sizeof(*remaining));\n9e27beaa 211) struct object_id *old_oids = *oids;\n9e27beaa 214) for (i = 0; i < oid_nr; i++)\n9e27beaa 215) if (oid_object_info_extended(repo, &old_oids[i], NULL,\n9e27beaa 217) remaining[i] = 1;\n9e27beaa 218) remaining_nr++;\n9e27beaa 221) if (remaining_nr) {\n9e27beaa 222) int j = 0;\n9e27beaa 223) new_oids = xcalloc(remaining_nr, sizeof(*new_oids));\n9e27beaa 224) for (i = 0; i < oid_nr; i++)\n9e27beaa 225) if (remaining[i])\n9e27beaa 226) oidcpy(&new_oids[j++], &old_oids[i]);\n9e27beaa 227) *oids = new_oids;\n9e27beaa 228) if (to_free)\n9e27beaa 229) free(old_oids);\n9e27beaa 232) free(remaining);\n9e27beaa 234) return remaining_nr;\n9e27beaa 251) if (remaining_nr == 1)\n9e27beaa 252) continue;\n9e27beaa 253) remaining_nr = remove_fetched_oids(repo, &remaining_oids,\n9e27beaa 255) if (remaining_nr) {\n9e27beaa 256) to_free = 1;\n9e27beaa 257) continue;\n9e27beaa 265) free(remaining_oids);\n\nChristian Couder\t4ca9474e Move core_partial_clone_filter_default to promisor-remote.c\npromisor-remote.c\n4ca9474e 111) return git_config_string(&core_partial_clone_filter_default,\n\nChristian Couder\tb14ed5ad Use promisor_remote_get_direct() and has_promisor_remote()\nbuiltin/cat-file.c\nb14ed5ad 529) warning(\"This repository uses promisor remotes. Some objects may not be loaded.\");\n\nChristian Couder\tfa3d1b63 promisor-remote: parse remote.*.partialclonefilter\npromisor-remote.c\nfa3d1b63 142) return 0;\n\nChristian Couder\t48de3158 Add initial support for many promisor remotes\npromisor-remote.c\n48de3158 61) warning(_(\"promisor remote name cannot begin with '/': %s\"),\n48de3158 63) return NULL;\n\nChristian Couder\tdb27dca5 Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}\npromisor-remote.c\ndb27dca5 25) die(_(\"Remote with no URL\"));\n\nCorentin BOMPARD\t24bc1a12 pull, fetch: add --set-upstream option\nbuiltin/fetch.c\n24bc1a12 1429) warning(_(\"not setting upstream for a remote remote-tracking branch\"));\n\nDenton Liu\t2b318aa6 rebase: refactor can_fast_forward into goto tower\nbuiltin/rebase.c\n2b318aa6 1273) goto done;\n\nDenton Liu\tc0efb4c1 rebase: fast-forward --onto in more cases\nbuiltin/rebase.c\nc0efb4c1 1289) goto done;\n\nDerrick Stolee\t50f26bd0 fetch: add fetch.writeCommitGraph config setting\nrepo-settings.c\n50f26bd0 57) UPDATE_DEFAULT_BOOL(r->settings.fetch_write_commit_graph, 1);\n\nDerrick Stolee\taaf633c2 repo-settings: create feature.experimental setting\nfetch-pack.c\naaf633c2 913) else if (args->depth > 0 || is_repository_shallow(r))\n\nrepo-settings.c\naaf633c2 43) r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_DEFAULT;\naaf633c2 55) UPDATE_DEFAULT_BOOL(r->settings.pack_use_sparse, 1);\naaf633c2 56) UPDATE_DEFAULT_BOOL(r->settings.fetch_negotiation_algorithm, FETCH_NEGOTIATION_SKIPPING);\n\nElijah Newren\t65c01c64 checkout: provide better conflict hunk description with detached HEAD\nbuiltin/checkout.c\n65c01c64 766) strbuf_add_unique_abbrev(&old_commit_shortname,\n65c01c64 767)  &old_branch_info->commit->object.oid,\n65c01c64 769) o.ancestor = old_commit_shortname.buf;\n\nElijah Newren\t941790d7 fast-export: handle nested tags\nbuiltin/fast-export.c\n941790d7 852) die(_(\"Error: Cannot export nested tags unless --mark-tags is specified.\"));\n941790d7 864) tagged_mark = get_object_mark(tagged);\n\nElijah Newren\t89a1f4aa dir: if our pathspec might match files under a dir, recurse into it\ndir.c\n89a1f4aa 374) return MATCHED_RECURSIVELY_LEADING_PATHSPEC;\n\nElijah Newren\tb8f50e5b fast-import: add support for new 'alias' command\nfast-import.c\nb8f50e5b 2528) die(\"Invalid ref name or SHA1 expression: %s\", objectish);\nb8f50e5b 2554) return 0;\nb8f50e5b 3118) die(_(\"Expected 'mark' command, got %s\"), command_buf.buf);\nb8f50e5b 3123) die(_(\"Expected 'to' command, got %s\"), command_buf.buf);\n\nElijah Newren\t3164e6bd fast-import: fix handling of deleted tags\nfast-import.c\n3164e6bd 2835) first_tag = t->next_tag;\n\nElijah Newren\tff1bfa2c merge-recursive: use common name for ancestors/common/base_list\nmerge-recursive.c\nff1bfa2c 3757)    oid_to_hex(merge_bases[i]));\n\nElijah Newren\t98a1d3d8 merge-recursive: exit early if index != head\nmerge-recursive.c\n98a1d3d8 3692) return -1;\n\nElijah Newren\t208d6924 fast-export: add support for --import-marks-if-exists\nbuiltin/fast-export.c\n208d6924 1220) die(_(\"Cannot pass both --import-marks and --import-marks-if-exists\"));\n\nElijah Newren\t9822175d Ensure index matches head before invoking merge machinery, round N\nbuiltin/merge-recursive.c\n9822175d 68) die_resolve_conflict(\"merge\");\n\nElijah Newren\t724dd767 cache-tree: share code between functions writing an index as a tree\ncache-tree.c\n724dd767 619) cache_tree_free(&index_state->cache_tree);\n724dd767 620) cache_tree_valid = 0;\n724dd767 633) return WRITE_TREE_PREFIX_ERROR;\n724dd767 653) fprintf(stderr, \"BUG: There are unmerged index entries:\\n\");\n724dd767 654) for (i = 0; i < index_state->cache_nr; i++) {\n724dd767 655) const struct cache_entry *ce = index_state->cache[i];\n724dd767 656) if (ce_stage(ce))\n724dd767 657) fprintf(stderr, \"BUG: %d %.*s\\n\", ce_stage(ce),\n724dd767 658) (int)ce_namelen(ce), ce->name);\n724dd767 660) BUG(\"unmerged index entries when writing inmemory index\");\n\nElijah Newren\tf836bf39 merge-recursive: future-proof update_file_flags() against memory leaks\nmerge-recursive.c\nf836bf39 960) ret = err(opt, _(\"cannot read object %s '%s'\"),\nf836bf39 962) goto free_buf;\n\nEric Wong\tc8e424c9 hashmap: introduce hashmap_free_entries\nt/helper/test-hashmap.c\nc8e424c9 113) hashmap_free(&map);\nc8e424c9 133) hashmap_free(&map);\n\nEric Wong\tb94e5c1d hashmap_add takes \"struct hashmap_entry *\"\nt/helper/test-hashmap.c\nb94e5c1d 110) hashmap_add(&map, &entries[i]->ent);\nb94e5c1d 123) hashmap_add(&map, &entries[i]->ent);\n\nEric Wong\t87571c3f hashmap: use *_entry APIs for iteration\nt/helper/test-lazy-init-name-hash.c\n87571c3f 44) hashmap_for_each_entry(&the_index.dir_hash, &iter_dir, dir,\n87571c3f 48) hashmap_for_each_entry(&the_index.name_hash, &iter_cache, ce,\n\nEric Wong\td22245a2 hashmap_entry_init takes \"struct hashmap_entry *\"\nt/helper/test-hashmap.c\nd22245a2 109) hashmap_entry_init(&entries[i]->ent, hashes[i]);\nd22245a2 122) hashmap_entry_init(&entries[i]->ent, hashes[i]);\n\nEric Wong\t28ee7941 hashmap_remove takes \"const struct hashmap_entry *\"\nname-hash.c\n28ee7941 100) hashmap_remove(&istate->dir_hash, &dir->ent, NULL);\n\nJeff Hostetler\te3443055 trace2: cleanup whitespace in normal format\ntrace2/tr2_tgt_normal.c\ne3443055 189) strbuf_addf(&buf_payload, \"alias %s -> \", alias);\ne3443055 190) sq_append_quote_argv_pretty(&buf_payload, argv);\ne3443055 201) strbuf_addf(&buf_payload, \"child_start[%d]\", cmd->trace2_child_id);\ne3443055 204) strbuf_addstr(&buf_payload, \" cd \");\ne3443055 206) strbuf_addstr(&buf_payload, \";\");\ne3443055 214) strbuf_addch(&buf_payload, ' ');\ne3443055 216) strbuf_addstr(&buf_payload, \"git \");\ne3443055 217) sq_append_quote_argv_pretty(&buf_payload, cmd->argv);\ne3443055 242) if (exe) {\ne3443055 244) strbuf_addch(&buf_payload, ' ');\ne3443055 246) sq_append_quote_argv_pretty(&buf_payload, argv);\n\nJeff Hostetler\t371df1be trace2: cleanup column alignment in perf target format\ntrace2/tr2_tgt_perf.c\n371df1be 88) fl_end_col = buf->len + TR2FMT_PERF_FL_WIDTH;\n371df1be 90) if (file && *file) {\n371df1be 91) struct strbuf buf_fl = STRBUF_INIT;\n371df1be 93) strbuf_addf(&buf_fl, \"%s:%d\", file, line);\n371df1be 95) if (buf_fl.len <= TR2FMT_PERF_FL_WIDTH)\n371df1be 96) strbuf_addbuf(buf, &buf_fl);\n371df1be 98) size_t avail = TR2FMT_PERF_FL_WIDTH - 3;\n371df1be 99) strbuf_addstr(buf, \"...\");\n371df1be 100) strbuf_add(buf,\n371df1be 101)    &buf_fl.buf[buf_fl.len - avail],\n371df1be 105) strbuf_release(&buf_fl);\n371df1be 108) while (buf->len < fl_end_col)\n371df1be 111) strbuf_addstr(buf, \" | \");\n\nJeff Hostetler\t742ed633 trace2: cleanup whitespace in perf format\ntrace2/tr2_tgt_perf.c\n742ed633 302) strbuf_addf(&buf_payload, \"alias:%s argv:[\", alias);\n742ed633 303) sq_append_quote_argv_pretty(&buf_payload, argv);\n742ed633 304) strbuf_addch(&buf_payload, ']');\n742ed633 335) strbuf_addstr(&buf_payload, \"git\");\n742ed633 336) if (cmd->argv[0])\n742ed633 337) strbuf_addch(&buf_payload, ' ');\n742ed633 391) strbuf_addstr(&buf_payload, \"argv:[\");\n742ed633 392) if (exe) {\n742ed633 393) strbuf_addstr(&buf_payload, exe);\n742ed633 394) if (argv[0])\n742ed633 395) strbuf_addch(&buf_payload, ' ');\n742ed633 397) sq_append_quote_argv_pretty(&buf_payload, argv);\n742ed633 398) strbuf_addch(&buf_payload, ']');\n\nJeff Hostetler\tda4589ce trace2: trim whitespace in region messages in perf target format\ntrace2/tr2_tgt_perf.c\nda4589ce 459) strbuf_addf(&buf_payload, \"label:%s\", label);\nda4589ce 460) if (fmt && *fmt) {\nda4589ce 461) strbuf_addch(&buf_payload, ' ');\nda4589ce 462) maybe_append_string_va(&buf_payload, fmt, ap);\nda4589ce 479) strbuf_addf(&buf_payload, \"label:%s\", label);\nda4589ce 480) if (fmt && *fmt) {\nda4589ce 481) strbuf_addch(&buf_payload, ' ' );\nda4589ce 482) maybe_append_string_va(&buf_payload, fmt, ap);\n\nJeff King\t5aa02f98 tree-walk: harden make_traverse_path() length computations\ntree-walk.c\n5aa02f98 194) BUG(\"too small buffer passed to make_traverse_path\");\n5aa02f98 199) BUG(\"traverse_info pathlen does not match strings\");\n5aa02f98 208) BUG(\"traverse_info ran out of list items\");\n\nJeff King\t9827d4c1 packfile: drop release_pack_memory()\nwrapper.c\n9827d4c1 31) die(\"Out of memory, strdup failed\");\n9827d4c1 45) if (!gentle)\n9827d4c1 46) die(\"Out of memory, malloc failed (tried to allocate %lu bytes)\",\n9827d4c1 49) error(\"Out of memory, malloc failed (tried to allocate %lu bytes)\",\n9827d4c1 51) return NULL;\n9827d4c1 117) die(\"Out of memory, realloc failed\");\n9827d4c1 133) die(\"Out of memory, calloc failed\");\n\nJeff King\tfbab552a commit-graph: bump DIE_ON_LOAD check to actual load-time\ncommit-graph.c\nfbab552a 483) die(\"dying as requested by the '%s' variable on commit-graph load!\",\n\nJeff King\t90553847 tree-walk: drop oid from traverse_info\nunpack-trees.c\n90553847 1144) if (*info->prev->name)\n90553847 1147) printf(\"%s\", info->name);\n\nJeff King\t3a37876b pack-objects: drop packlist index_pos optimization\npack-objects.c\n3a37876b 185) BUG(\"duplicate object inserted into hash\");\n\nJeff King\t0dfed92d git-am: handle missing \"author\" when parsing commit\nbuiltin/am.c\n0dfed92d 1262) die(_(\"missing author line in commit %s\"),\n0dfed92d 1263)       oid_to_hex(&commit->object.oid));\n\nJohannes Schindelin\tbe5d88e1 test-tool run-command: learn to run (parts of) the testsuite\nt/helper/test-run-command.c\nbe5d88e1 66) static int next_test(struct child_process *cp, struct strbuf *err, void *cb,\nbe5d88e1 69) struct testsuite *suite = cb;\nbe5d88e1 71) if (suite->next >= suite->tests.nr)\nbe5d88e1 72) return 0;\nbe5d88e1 74) test = suite->tests.items[suite->next++].string;\nbe5d88e1 75) argv_array_pushl(&cp->args, \"sh\", test, NULL);\nbe5d88e1 76) if (suite->quiet)\nbe5d88e1 77) argv_array_push(&cp->args, \"--quiet\");\nbe5d88e1 78) if (suite->immediate)\nbe5d88e1 79) argv_array_push(&cp->args, \"-i\");\nbe5d88e1 80) if (suite->verbose)\nbe5d88e1 81) argv_array_push(&cp->args, \"-v\");\nbe5d88e1 82) if (suite->verbose_log)\nbe5d88e1 83) argv_array_push(&cp->args, \"-V\");\nbe5d88e1 84) if (suite->trace)\nbe5d88e1 85) argv_array_push(&cp->args, \"-x\");\nbe5d88e1 86) if (suite->write_junit_xml)\nbe5d88e1 87) argv_array_push(&cp->args, \"--write-junit-xml\");\nbe5d88e1 89) strbuf_addf(err, \"Output of '%s':\\n\", test);\nbe5d88e1 90) *task_cb = (void *)test;\nbe5d88e1 92) return 1;\nbe5d88e1 95) static int test_finished(int result, struct strbuf *err, void *cb,\nbe5d88e1 98) struct testsuite *suite = cb;\nbe5d88e1 99) const char *name = (const char *)task_cb;\nbe5d88e1 101) if (result)\nbe5d88e1 102) string_list_append(&suite->failed, name);\nbe5d88e1 104) strbuf_addf(err, \"%s: '%s'\\n\", result ? \"FAIL\" : \"SUCCESS\", name);\nbe5d88e1 106) return 0;\nbe5d88e1 109) static int test_failed(struct strbuf *out, void *cb, void *task_cb)\nbe5d88e1 111) struct testsuite *suite = cb;\nbe5d88e1 112) const char *name = (const char *)task_cb;\nbe5d88e1 114) string_list_append(&suite->failed, name);\nbe5d88e1 115) strbuf_addf(out, \"FAILED TO START: '%s'\\n\", name);\nbe5d88e1 117) return 0;\nbe5d88e1 125) static int testsuite(int argc, const char **argv)\nbe5d88e1 127) struct testsuite suite = TESTSUITE_INIT;\nbe5d88e1 128) int max_jobs = 1, i, ret;\nbe5d88e1 131) struct option options[] = {\nbe5d88e1 145) memset(&suite, 0, sizeof(suite));\nbe5d88e1 146) suite.tests.strdup_strings = suite.failed.strdup_strings = 1;\nbe5d88e1 148) argc = parse_options(argc, argv, NULL, options,\nbe5d88e1 151) if (max_jobs <= 0)\nbe5d88e1 152) max_jobs = online_cpus();\nbe5d88e1 154) dir = opendir(\".\");\nbe5d88e1 155) if (!dir)\nbe5d88e1 156) die(\"Could not open the current directory\");\nbe5d88e1 157) while ((d = readdir(dir))) {\nbe5d88e1 158) const char *p = d->d_name;\nbe5d88e1 160) if (*p != 't' || !isdigit(p[1]) || !isdigit(p[2]) ||\nbe5d88e1 161)     !isdigit(p[3]) || !isdigit(p[4]) || p[5] != '-' ||\nbe5d88e1 162)     !ends_with(p, \".sh\"))\nbe5d88e1 163) continue;\nbe5d88e1 166) if (!argc) {\nbe5d88e1 167) string_list_append(&suite.tests, p);\nbe5d88e1 168) continue;\nbe5d88e1 171) for (i = 0; i < argc; i++)\nbe5d88e1 172) if (!wildmatch(argv[i], p, 0)) {\nbe5d88e1 173) string_list_append(&suite.tests, p);\nbe5d88e1 174) break;\nbe5d88e1 177) closedir(dir);\nbe5d88e1 179) if (!suite.tests.nr)\nbe5d88e1 180) die(\"No tests match!\");\nbe5d88e1 181) if (max_jobs > suite.tests.nr)\nbe5d88e1 182) max_jobs = suite.tests.nr;\nbe5d88e1 184) fprintf(stderr, \"Running %d tests (%d at a time)\\n\",\nbe5d88e1 187) ret = run_processes_parallel(max_jobs, next_test, test_failed,\nbe5d88e1 190) if (suite.failed.nr > 0) {\nbe5d88e1 191) ret = 1;\nbe5d88e1 192) fprintf(stderr, \"%d tests failed:\\n\\n\", suite.failed.nr);\nbe5d88e1 193) for (i = 0; i < suite.failed.nr; i++)\nbe5d88e1 194) fprintf(stderr, \"\\t%s\\n\", suite.failed.items[i].string);\nbe5d88e1 197) string_list_clear(&suite.tests, 0);\nbe5d88e1 198) string_list_clear(&suite.failed, 0);\nbe5d88e1 200) return !!ret;\nbe5d88e1 209) exit(testsuite(argc - 1, argv + 1));\n\nJohannes Schindelin\te145d993 rebase -r: support merge strategies other than `recursive`\nsequencer.c\ne145d993 3306) (!opts->strategy || !strcmp(opts->strategy, \"recursive\")) ?\n\nJohannes Schindelin\te2683d51 Fix .git/ discovery at the root of UNC shares\nsetup.c\ne2683d51 952)     !is_dir_sep(dir->buf[min_offset - 1])) {\ne2683d51 953) strbuf_addch(dir, '/');\ne2683d51 954) min_offset++;\n\nJohannes Schindelin\td54dea77 fetch: let --jobs=<n> parallelize --multiple, too\nbuiltin/fetch.c\nd54dea77 113) fetch_parallel_config = git_config_int(k, v);\nd54dea77 114) if (fetch_parallel_config < 0)\nd54dea77 115) die(_(\"fetch.parallel cannot be negative\"));\nd54dea77 116) return 0;\nd54dea77 1566) static int fetch_failed_to_start(struct strbuf *out, void *cb, void *task_cb)\nd54dea77 1568) struct parallel_fetch_state *state = cb;\nd54dea77 1569) const char *remote = task_cb;\nd54dea77 1571) state->result = error(_(\"Could not fetch %s\"), remote);\nd54dea77 1573) return 0;\n\nJosh Steadmon\t87db61a4 trace2: write discard message to sentinel files\ntrace2/tr2_dst.c\n87db61a4 136) strbuf_setlen(&path, base_path_len);\n87db61a4 137) strbuf_addf(&path, \".%d\", attempt_count);\n\nJosh Steadmon\t83e57b04 trace2: discard new traces if target directory has too many files\ntrace2/tr2_dst.c\n83e57b04 90) ret = 1;\n83e57b04 91) goto cleanup;\n83e57b04 145) strbuf_release(&path);\n83e57b04 146) if (tr2_dst_want_warning())\n83e57b04 147) warning(\"trace2: not opening %s trace file due to too \"\n83e57b04 151) return 0;\n\nJunio C Hamano\t360c7ba3 transport: push codepath can take arbitrary repository\ntransport.c\n360c7ba3 1200) trace2_region_leave(\"transport_push\", \"push_submodules\", r);\n\nMatthew DeVore\tcf9ceb5a list-objects-filter-options: make filter_spec a string_list\nlist-objects-filter-options.c\ncf9ceb5a 276) BUG(\"no filter_spec available for this filter\");\n\nupload-pack.c\ncf9ceb5a 148) sq_quote_buf(&buf, spec);\n\nMatthew DeVore\tf56f7642 list-objects-filter-options: move error check up\nlist-objects-filter-options.c\nf56f7642 44) BUG(\"filter_options already populated\");\nf56f7642 226) die(_(\"multiple filter-specs cannot be combined\"));\n\nMatthew DeVore\t9430147c list-objects-filter: encapsulate filter components\nlist-objects.c\n9430147c 210) ctx->show_object(obj, base->buf, ctx->show_data);\n\nMatthew DeVore\te987df5f list-objects-filter: implement composite filters\nlist-objects-filter-options.c\ne987df5f 311) return;\n\nlist-objects-filter.c\ne987df5f 594) BUG(\"expected oidset to be cleared already\");\n\nMischa POSLAWSKY\t8b3f33ef ref-filter: initialize empty name or email fields\nref-filter.c\n8b3f33ef 1045) return xstrdup(\"\");\n\nPhillip Wood\ta47ba3c7 rebase -i: check for updated todo after squash and reword\nsequencer.c\na47ba3c7 3917) res = error_errno(_(\"could not stat '%s'\"),\na47ba3c7 3923) res = -1; /* message was printed */\n\nRené Scharfe\t1fd881d4 trace2: use warning() directly in tr2_dst_malformed_warning()\ntrace2/tr2_dst.c\n1fd881d4 307) warning(\"trace2: unknown value for '%s': '%s'\",\n\nRené Scharfe\tdad3f060 tag: factor out get_tagged_oid()\npack-bitmap.c\ndad3f060 712) object = parse_object_or_die(get_tagged_oid(tag), NULL);\n\nRené Scharfe\t5cc6a4be http-push: simplify deleting a list item\nhttp-push.c\n5cc6a4be 984) prev->next = lock->next;\n\nRené Scharfe\t59fa5f5a sha1-name: check for overflow of N in \"foo^N\" and \"foo~N\"\nsha1-name.c\n59fa5f5a 1172) return MISSING_OBJECT;\n59fa5f5a 1178) return MISSING_OBJECT;\n\nRené Scharfe\t71d41ff6 archive-tar: turn length miscalculation warning into BUG\narchive-tar.c\n71d41ff6 161) BUG(\"pax extended header length miscalculated as %\"PRIuMAX\n\nSZEDER Gábor\t2bb74b53 Test the progress display\nt/helper/test-progress.c\n2bb74b53 48) die(\"need a title for the progress output\");\n2bb74b53 59) die(\"invalid input: '%s'\\n\", line.buf);\n2bb74b53 67) die(\"invalid input: '%s'\\n\", line.buf);\n2bb74b53 70) die(\"invalid input: '%s'\\n\", line.buf);\n\nThomas Gummerer\t34933d0e stash: make sure to write refreshed cache\nbuiltin/stash.c\n34933d0e 1139) ret = -1;\n34933d0e 1140) goto done;\n\nThomas Gummerer\t8e4c8af0 push: disallow --all and refspecs when remote.<name>.mirror is set\nbuiltin/push.c\n8e4c8af0 611) die(_(\"bad repository '%s'\"), repo);\n8e4c8af0 627) die(_(\"--all and --tags are incompatible\"));\n8e4c8af0 629) die(_(\"--all can't be combined with refspecs\"));\n8e4c8af0 633) die(_(\"--mirror and --tags are incompatible\"));\n8e4c8af0 638) die(_(\"--all and --mirror are incompatible\"));\n\nThomas Gummerer\t22184497 factor out refresh_and_write_cache function\nbuiltin/am.c\n22184497 1695) die(_(\"unable to write index file\"));\n\nread-cache.c\n22184497 1487) return -1;\n22184497 1491) ret = -1;\n\nTorsten Bögershausen\tebb8d2c9 mingw: support UNC in git clone file://server/share/repo\nconnect.c\nebb8d2c9 921) path = host - 2; /* include the leading \"//\" */\n\n\n"}]}