From: Junio C Hamano Date: Fri, 8 Jan 2021 19:19:12 +0000 (-0800) Subject: What's cooking (2021/01 #02) X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8cb6cac5af20456e459e8a9414e05461a3a87edc;p=thirdparty%2Fgit.git What's cooking (2021/01 #02) --- diff --git a/whats-cooking.txt b/whats-cooking.txt index 49f3a8eebc..6252a27bdc 100644 --- a/whats-cooking.txt +++ b/whats-cooking.txt @@ -1,10 +1,10 @@ To: git@vger.kernel.org Bcc: lwn@lwn.net -Subject: What's cooking in git.git (Jan 2021, #01; Wed, 6) -X-master-at: 71ca53e8125e36efbda17293c50027d31681a41f -X-next-at: d98b1dd5eaa7327399716162c746c9bd3cac3866 +Subject: What's cooking in git.git (Jan 2021, #02; Fri, 8) +X-master-at: 72c4083ddf91b489b7b7b812df67ee8842177d98 +X-next-at: b2714ff1a467d5c50f82988d2216cb7d091f5c2b -What's cooking in git.git (Jan 2021, #01; Wed, 6) +What's cooking in git.git (Jan 2021, #02; Fri, 8) -------------------------------------------------- Here are the topics that have been cooking. Commits prefixed with '-' are @@ -12,8 +12,9 @@ only in 'seen' (formerly 'pu'---proposed updates) while commits prefixed with '+' are in 'next'. The ones marked with '.' do not appear in any of the integration branches, but I am still holding onto them. -https://github.com/git/git/runs/1660876025 shows that with a few -topics excluded the tip of 'seen' passes the CI. Yay. +Many topics that have been cooking in the 'next' branch during the +pre-release freeze at the year end have now been merged to the +'master' branch, and the tip of the 'next' branch has been rewound. Copies of the source code to Git live in many repositories, and the following is a list of the ones I push into or their mirrors. Some @@ -46,10 +47,368 @@ Release tarballs are available at: -------------------------------------------------- [New Topics] -* ab/branch-sort (2021-01-06) 5 commits +* en/ort-directory-rename (2021-01-07) 18 commits + - merge-ort: fix a directory rename detection bug + - merge-ort: process_renames() now needs more defensiveness + - merge-ort: implement apply_directory_rename_modifications() + - merge-ort: add a new toplevel_dir field + - merge-ort: implement handle_path_level_conflicts() + - merge-ort: implement check_for_directory_rename() + - merge-ort: implement apply_dir_rename() and check_dir_renamed() + - merge-ort: implement compute_collisions() + - merge-ort: modify collect_renames() for directory rename handling + - merge-ort: implement handle_directory_level_conflicts() + - merge-ort: implement compute_rename_counts() + - merge-ort: copy get_renamed_dir_portion() from merge-recursive.c + - merge-ort: add outline of get_provisional_directory_renames() + - merge-ort: add outline for computing directory renames + - merge-ort: collect which directories are removed in dirs_removed + - merge-ort: initialize and free new directory rename data structures + - merge-ort: add new data structures for directory rename detection + - Merge branch 'en/merge-ort-3' into en/ort-directory-rename + (this branch uses en/merge-ort-3.) + + ORT merge strategy learns to infer "renamed directory" while + merging. + + +* jk/forbid-lf-in-git-url (2021-01-07) 2 commits + - fsck: reject .gitmodules git:// urls with newlines + - git_connect_git(): forbid newlines in host and path + + Newline characters in the host and path part of git:// URL are + now forbidden. + + Will merge to 'next'. + + +* ps/fetch-atomic (2021-01-07) 2 commits + - fetch: implement support for atomic reference updates + - fetch: allow passing a transaction to `s_update_ref()` + + "git fetch" learns to treat ref updates atomically in all-or-none + fashion, just like "git push" does, with the new "--atomic" option. + + +* jc/sign-off (2021-01-07) 1 commit + - SubmittingPatches: tighten wording on "sign-off" procedure + + Doc update. + + Will merge to 'next'. + +-------------------------------------------------- +[Graduated to 'master'] + +* ab/trailers-extra-format (2020-12-09) 5 commits + (merged to 'next' on 2020-12-14 at 9fc731944e) + + pretty format %(trailers): add a "key_value_separator" + + pretty format %(trailers): add a "keyonly" + + pretty-format %(trailers): fix broken standalone "valueonly" + + pretty format %(trailers) doc: avoid repetition + + pretty format %(trailers) test: split a long line + + The "--format=%(trailers)" mechanism gets enhanced to make it + easier to design output for machine consumption. + + +* en/merge-ort-2 (2020-12-13) 7 commits + (merged to 'next' on 2020-12-21 at ef5b184349) + + merge-ort: add modify/delete handling and delayed output processing + + merge-ort: add die-not-implemented stub handle_content_merge() function + + merge-ort: add function grouping comments + + merge-ort: add a paths_to_free field to merge_options_internal + + merge-ort: add a path_conflict field to merge_options_internal + + merge-ort: add a clear_internal_opts helper + + merge-ort: add a few includes + (this branch is used by en/merge-ort-3, en/merge-ort-recursive and en/ort-conflict-handling; uses en/merge-ort-impl.) + + More "ORT" merge strategy. + + +* en/merge-ort-impl (2020-12-13) 21 commits + (merged to 'next' on 2020-12-21 at c551d7bda9) + + merge-ort: free data structures in merge_finalize() + + merge-ort: add implementation of record_conflicted_index_entries() + + tree: enable cmp_cache_name_compare() to be used elsewhere + + merge-ort: add implementation of checkout() + + merge-ort: basic outline for merge_switch_to_result() + + merge-ort: step 3 of tree writing -- handling subdirectories as we go + + merge-ort: step 2 of tree writing -- function to create tree object + + merge-ort: step 1 of tree writing -- record basenames, modes, and oids + + merge-ort: have process_entries operate in a defined order + + merge-ort: add a preliminary simple process_entries() implementation + + merge-ort: avoid recursing into identical trees + + merge-ort: record stage and auxiliary info for every path + + merge-ort: compute a few more useful fields for collect_merge_info + + merge-ort: avoid repeating fill_tree_descriptor() on the same tree + + merge-ort: implement a very basic collect_merge_info() + + merge-ort: add an err() function similar to one from merge-recursive + + merge-ort: use histogram diff + + merge-ort: port merge_start() from merge-recursive + + merge-ort: add some high-level algorithm structure + + merge-ort: setup basic internal data structures + + Merge branch 'en/strmap' into en/merge-ort-impl + (this branch is used by en/merge-ort-2, en/merge-ort-3, en/merge-ort-recursive and en/ort-conflict-handling.) + + The merge backend "done right" starts to emerge. + + +* en/merge-ort-recursive (2020-12-16) 4 commits + (merged to 'next' on 2020-12-22 at 0dbf60011f) + + merge-ort: implement merge_incore_recursive() + + merge-ort: make clear_internal_opts() aware of partial clearing + + merge-ort: copy a few small helper functions from merge-recursive.c + + commit: move reverse_commit_list() from merge-recursive + (this branch uses en/merge-ort-2 and en/merge-ort-impl; is tangled with en/merge-ort-3 and en/ort-conflict-handling.) + + The ORT merge strategy learned to synthesize virtual ancestor tree + by recursively merging multiple merge bases together, just like the + recursive backend has done for years. + + +* es/perf-export-fix (2020-12-22) 1 commit + (merged to 'next' on 2020-12-22 at d06b0379d9) + + t/perf: avoid unnecessary test_export() recursion + + Tweak unneeded recursion from a test framework helper function. + + +* es/worktree-repair-both-moved (2020-12-21) 1 commit + (merged to 'next' on 2020-12-22 at 9eaae4f5c0) + + worktree: teach `repair` to fix multi-directional breakage + + "git worktree repair" learned to deal with the case where both the + repository and the worktree moved. + + +* fc/pull-merge-rebase (2020-12-15) 5 commits + (merged to 'next' on 2020-12-21 at acce13e5c4) + + pull: display default warning only when non-ff + + pull: correct condition to trigger non-ff advice + + pull: get rid of unnecessary global variable + + pull: give the advice for choosing rebase/merge much later + + pull: refactor fast-forward check + + When a user does not tell "git pull" to use rebase or merge, the + command gives a loud message telling a user to choose between + rebase or merge but creates a merge anyway, forcing users who would + want to rebase to redo the operation. Fix an early part of this + problem by tightening the condition to give the message---there is + no reason to stop or force the user to choose between rebase or + merge if the history fast-forwards. + + +* fc/t6030-bisect-reset-removes-auxiliary-files (2020-12-21) 1 commit + (merged to 'next' on 2020-12-22 at 2ab78ef1e1) + + test: bisect-porcelain: fix location of files + + A 3-year old test that was not testing anything useful has been + corrected. + + +* pk/subsub-fetch-fix-take-2 (2020-12-09) 1 commit + (merged to 'next' on 2020-12-14 at ccc01a5f66) + + submodules: fix of regression on fetching of non-init subsub-repo + + "git fetch --recurse-submodules" fix (second attempt). + + +* tb/pack-bitmap (2020-12-08) 24 commits + (merged to 'next' on 2020-12-15 at 773268c2fb) + + pack-bitmap-write: better reuse bitmaps + + pack-bitmap-write: relax unique revwalk condition + + pack-bitmap-write: use existing bitmaps + + pack-bitmap: factor out 'add_commit_to_bitmap()' + + pack-bitmap: factor out 'bitmap_for_commit()' + + pack-bitmap-write: ignore BITMAP_FLAG_REUSE + + pack-bitmap-write: build fewer intermediate bitmaps + + pack-bitmap.c: check reads more aggressively when loading + + pack-bitmap-write: rename children to reverse_edges + + t5310: add branch-based checks + + commit: implement commit_list_contains() + + bitmap: implement bitmap_is_subset() + + pack-bitmap-write: fill bitmap with commit history + + pack-bitmap-write: pass ownership of intermediate bitmaps + + pack-bitmap-write: reimplement bitmap writing + + ewah: add bitmap_dup() function + + ewah: implement bitmap_or() + + ewah: make bitmap growth less aggressive + + ewah: factor out bitmap growth + + rev-list: die when --test-bitmap detects a mismatch + + t5310: drop size of truncated ewah bitmap + + pack-bitmap: bounds-check size of cache extension + + pack-bitmap: fix header size check + + ewah/ewah_bitmap.c: avoid open-coding ALLOC_GROW() + + Various improvements to the codepath that writes out pack bitmaps. + +-------------------------------------------------- +[Stalled] + +* ss/submodule-add-in-c (2020-12-15) 3 commits + . t7400: add test to check 'submodule add' for tracked paths + . submodule: port submodule subcommand 'add' from shell to C + . dir: change the scope of function 'directory_exists_in_index()' + + "git submodule add" being rewritten in C. + + Expecting a reroll. + The patches are split incorrectly; part of 1/3 belongs to 2/3 + cf. + It seems to introduce a segfault on 'seen'. + cf. + + +* mt/grep-sparse-checkout (2020-12-06) 10 commits + - t7817: do not depend on any specific default branch name + - config: add setting to ignore sparsity patterns in some cmds + - grep: honor sparse checkout patterns + - config: correctly read worktree configs in submodules + - config: make do_git_config_sequence receive a 'struct repository' + - t/helper/test-config: unify exit labels + - t/helper/test-config: diagnose missing arguments + - t/helper/test-config: be consistent with exit codes + - t1308-config-set: avoid false positives when using test-config + - doc: grep: unify info on configuration variables + (this branch is used by mt/rm-sparse-checkout.) + + "git grep" has been tweaked to be limited to the sparse checkout + paths. + + Break out and fast-track bugfix from the remainder of the topic. + cf. + + +* mt/rm-sparse-checkout (2020-12-08) 1 commit + - rm: honor sparse checkout patterns + (this branch uses mt/grep-sparse-checkout.) + + "git rm" follows suit to "git grep" to ignore paths outside the + sparsity pattern when the sparse checkout feature is in use. + + Need to wait for how these fit in larger picture. + cf. + cf. + + +* jk/symlinked-dotgitx-files (2020-10-23) 9 commits + - docs: document symlink restrictions for .git* files + - fsck: complain when .gitattributes or .gitignore is a symlink + - verify_path(): disallow symlinks in .gitattributes and .gitignore + - t0060: test obscured .gitattributes and .gitignore matching + - t7450: test .gitmodules symlink matching against obscured names + - t7450: test verify_path() handling of gitmodules + - t7415: rename to expand scope + - fsck_tree(): wrap some long lines + - fsck_tree(): fix shadowed variable + + "git fsck" and the corresponding check done during the transport + learned to ensure that in-tree files like `.gitignore` and + `.gitattributes` are not symbolic links. + + It seems that there are real projects with .gitignore recorded as + symlinks, which may need to loosen the fsck setting. Do we need to + introduce a class that is separate from symlinked .gitmodules that + has potential consequences that is more/less grave, so that these + projects can opt out of the new checks? + + +* sm/curl-retry (2020-10-13) 3 commits + - http: automatically retry some requests + - replace CURLOPT_FILE With CURLOPT_WRITEDATA + - remote-curl: add testing for intelligent retry for HTTP + + The http transport has been taught to retry a failed request that + may reasonably be retried. + + Expecting a reroll. + cf. <20201015000410.GB328643@google.com> + cf. + + +* sv/t7001-modernize (2020-09-25) 11 commits + - t7001: move cleanup code from outside the tests into them + - t7001: use `test` rather than `[` + - t7001: use here-docs instead of echo + - t7001: put each command on a separate line + - t7001: use ': >' rather than 'touch' + - t7001: change (cd && git foo) to (git -C foo) + - t7001: remove whitespace after redirect operators + - t7001: change the style for cd according to subshell + - t7001: remove unnecessary blank lines + - t7001: use TAB instead of spaces + - t7001: convert tests from the old style to the current style + + Test script modernization. + + Expecting a reroll. + cf. <20200925170256.11490-1-shubhunic@gmail.com> + + +* ar/fetch-transfer-ipversion (2020-09-16) 1 commit + - config: option transfer.ipversion to set transport protocol version for network fetches + + Adds transfer.ipversion configuration variable. + + Needs more work. + + +* jc/war-on-dashed-git (2020-12-21) 2 commits + - fixup??? git: catch an attempt to run "git-foo" + - git: catch an attempt to run "git-foo" + + The first step to remove on-disk binaries for built-in subcommands + by soliciting objections. + + On hold for now. + + +* mk/use-size-t-in-zlib (2018-10-15) 1 commit + - zlib.c: use size_t for size + + The wrapper to call into zlib followed our long tradition to use + "unsigned long" for sizes of regions in memory, which have been + updated to use "size_t". + + +* ag/merge-strategies-in-c (2020-11-24) 13 commits + - sequencer: use the "octopus" merge strategy without forking + - sequencer: use the "resolve" strategy without forking + - merge: use the "octopus" strategy without forking + - merge: use the "resolve" strategy without forking + - merge-octopus: rewrite in C + - merge-recursive: move better_branch_name() to merge.c + - merge-resolve: rewrite in C + - merge-index: don't fork if the requested program is `git-merge-one-file' + - merge-index: libify merge_one_path() and merge_all() + - merge-one-file: rewrite in C + - update-index: move add_cacheinfo() to read-cache.c + - t6060: modify multiple files to expose a possible issue with merge-index + - t6407: modernise tests + + The resolve and octopus merge strategy backends have been rewritten + in C. + + Got enough review comments to get updated. + +-------------------------------------------------- +[Cooking] + +* vv/send-email-with-less-secure-apps-access (2021-01-07) 1 commit + - git-send-email.txt: mention less secure app access with Gmail + + Doc update. + + Will merge to 'next'. + + +* ab/branch-sort (2021-01-07) 7 commits - branch: show "HEAD detached" first under reverse sort - - branch: use the "detached_head_first" sorting option - - ref-filter: add a "detached_head_first" sorting option + - branch: sort detached HEAD based on a flag + - ref-filter: move ref_sorting flags to a bitfield + - ref-filter: move "cmp_fn" assignment into "else if" arm + - ref-filter: add braces to if/else if/else chain - branch tests: add to --sort tests - branch: change "--local" to "--list" in comment @@ -59,7 +418,7 @@ Release tarballs are available at: Will merge to 'next'. -* ab/coc-update-to-2.0 (2021-01-04) 3 commits +* ab/coc-update-to-2.0 (2021-01-07) 3 commits - CoC: update to version 2.0 + local changes - CoC: explicitly take any whitespace breakage - CoC: Update word-wrapping to match upstream @@ -73,27 +432,29 @@ Release tarballs are available at: * ar/t6016-modernise (2021-01-04) 1 commit - - t6016: move to lib-log-graph.sh framework + (merged to 'next' on 2021-01-08 at 45f1b43e88) + + t6016: move to lib-log-graph.sh framework Test update. - Will merge to 'next'. + Will merge to 'master'. -* dl/reflog-with-single-entry (2021-01-06) 2 commits +* dl/reflog-with-single-entry (2021-01-07) 2 commits - refs: allow @{n} to work with n-sized reflog - refs: factor out set_read_ref_cutoffs() After expiring a reflog and making a single commit, the reflog for the branch would record a single entry that knows both @{0} and - @{1}, but we failed to answer "what commit we was on?", i.e. @{1} + @{1}, but we failed to answer "what commit were we on?", i.e. @{1} -* ds/cache-tree-basics (2021-01-04) 9 commits +* ds/cache-tree-basics (2021-01-07) 10 commits - cache-tree: speed up consecutive path comparisons - cache-tree: use ce_namelen() instead of strlen() - index-format: discuss recursion of cached-tree better - - index-format: update preamble to cached tree extension + - index-format: update preamble to cache tree extension + - index-format: use 'cache tree' over 'cached tree' - cache-tree: trace regions for prime_cache_tree - cache-tree: trace regions for I/O - cache-tree: use trace2 in cache_tree_update() @@ -104,20 +465,23 @@ Release tarballs are available at: extension in the index. -* ds/for-each-repo-noopfix (2021-01-06) 1 commit +* ds/for-each-repo-noopfix (2021-01-07) 1 commit - for-each-repo: do nothing on empty config "git for-each-repo --config= " should not run for any repository when the configuration variable is not defined even once. + Will merge to 'next'. + * ds/trace2-topo-walk (2021-01-04) 1 commit - - revision: trace topo-walk statistics + (merged to 'next' on 2021-01-08 at 794c8f37ee) + + revision: trace topo-walk statistics The topological walk codepath is covered by new trace2 stats. - Will merge to 'next'. + Will merge to 'master'. * en/ort-conflict-handling (2021-01-04) 10 commits @@ -131,22 +495,30 @@ Release tarballs are available at: - merge-ort: implement unique_path() helper - merge-ort: handle directory/file conflicts that remain - merge-ort: handle D/F conflict where directory disappears due to merge - (this branch uses en/merge-ort-2 and en/merge-ort-impl; is tangled with en/merge-ort-3 and en/merge-ort-recursive.) + + ORT merge strategy learns more support for merge conflicts. * fc/completion-aliases-support (2021-01-04) 4 commits - - completion: add proper public __git_complete - - test: completion: add tests for __git_complete - - completion: bash: improve function detection - - completion: bash: add __git_have_func helper + (merged to 'next' on 2021-01-08 at b2714ff1a4) + + completion: add proper public __git_complete + + test: completion: add tests for __git_complete + + completion: bash: improve function detection + + completion: bash: add __git_have_func helper + + Bash completion (in contrib/) update to make it easier for + end-users to add completion for their custom "git" subcommands. + + Will merge to 'master'. * ma/doc-pack-format-varint-for-sizes (2021-01-04) 1 commit - - pack-format.txt: document sizes at start of delta data + (merged to 'next' on 2021-01-08 at 8a448c50dd) + + pack-format.txt: document sizes at start of delta data Doc update. - Will merge to 'next'. + Will merge to 'master'. * ma/more-opaque-lock-file (2021-01-06) 5 commits @@ -162,24 +534,26 @@ Release tarballs are available at: * ma/sha1-is-a-hash (2021-01-04) 4 commits - - hash-lookup: rename from sha1-lookup - - sha1-lookup: rename `sha1_pos()` as `hash_pos()` - - object-file.c: rename from sha1-file.c - - object-name.c: rename from sha1-name.c + (merged to 'next' on 2021-01-08 at a25537f7c3) + + hash-lookup: rename from sha1-lookup + + sha1-lookup: rename `sha1_pos()` as `hash_pos()` + + object-file.c: rename from sha1-file.c + + object-name.c: rename from sha1-name.c Retire more names with "sha1" in it. - Will merge to 'next'. + Will merge to 'master'. * ma/t1300-cleanup (2021-01-04) 3 commits - - t1300: don't needlessly work with `core.foo` configs - - t1300: remove duplicate test for `--file no-such-file` - - t1300: remove duplicate test for `--file ../foo` + (merged to 'next' on 2021-01-08 at 51aaae39a1) + + t1300: don't needlessly work with `core.foo` configs + + t1300: remove duplicate test for `--file no-such-file` + + t1300: remove duplicate test for `--file ../foo` Code clean-up. - Will merge to 'next'. + Will merge to 'master'. * mt/t4129-with-setgid-dir (2021-01-06) 1 commit @@ -194,226 +568,68 @@ Release tarballs are available at: * nk/perf-fsmonitor-cleanup (2021-01-06) 1 commit - - p7519: allow running without watchman prereq - - Test fix. - - Will merge to 'next'. - - -* pb/doc-modules-git-work-tree-typofix (2021-01-04) 1 commit - - gitmodules.txt: fix 'GIT_WORK_TREE' variable name - - Doc fix. - - Will merge to 'next'. - - -* pb/mergetool-tool-help-fix (2021-01-06) 1 commit - - mergetool--lib: fix '--tool-help' to correctly show available tools - - Fix 2.29 regression where "git mergetool --tool-help" fails to list - all the available tools. - - Will merge to 'next'. - - -* rs/rebase-commit-validation (2021-01-04) 1 commit - - rebase: verify commit parameter - - Diagnose command line error early. - - Will merge to 'next'. - - -* sg/t7800-difftool-robustify (2021-01-04) 1 commit - . t7800-difftool: don't accidentally match tmp dirs + (merged to 'next' on 2021-01-08 at 1837d6c30b) + + p7519: allow running without watchman prereq Test fix. - Not working on Windows. - cf. https://github.com/git/git/runs/1660588243?check_suite_focus=true#step:7:4186 - - -* ta/doc-typofix (2021-01-04) 1 commit - - doc: fix some typos - - Doc fix. - - Will merge to 'next'. - - -* zh/arg-help-format (2021-01-06) 2 commits - - builtin/*: update usage format - - parse-options: format argh like error messages - - Clean up option descriptions in "git cmd --help". - - Will merge to 'next'. - --------------------------------------------------- -[Stalled] - -* ss/submodule-add-in-c (2020-12-15) 3 commits - . t7400: add test to check 'submodule add' for tracked paths - . submodule: port submodule subcommand 'add' from shell to C - . dir: change the scope of function 'directory_exists_in_index()' - - "git submodule add" being rewritten in C. - - Expecting a reroll. - The patches are split incorrectly; part of 1/3 belongs to 2/3 - cf. - It seems to introduce a segfault on 'seen'. - cf. - - -* mt/grep-sparse-checkout (2020-12-06) 10 commits - - t7817: do not depend on any specific default branch name - - config: add setting to ignore sparsity patterns in some cmds - - grep: honor sparse checkout patterns - - config: correctly read worktree configs in submodules - - config: make do_git_config_sequence receive a 'struct repository' - - t/helper/test-config: unify exit labels - - t/helper/test-config: diagnose missing arguments - - t/helper/test-config: be consistent with exit codes - - t1308-config-set: avoid false positives when using test-config - - doc: grep: unify info on configuration variables - (this branch is used by mt/rm-sparse-checkout.) - - "git grep" has been tweaked to be limited to the sparse checkout - paths. - - -* mt/rm-sparse-checkout (2020-12-08) 1 commit - - rm: honor sparse checkout patterns - (this branch uses mt/grep-sparse-checkout.) - - "git rm" follows suit to "git grep" to ignore paths outside the - sparsity pattern when the sparse checkout feature is in use. - - Need to wait for how these fit in larger picture. - cf. - - -* jk/symlinked-dotgitx-files (2020-10-23) 9 commits - (merged to 'next' on 2020-10-26 at c1dd37b024) - + docs: document symlink restrictions for .git* files - + fsck: complain when .gitattributes or .gitignore is a symlink - + verify_path(): disallow symlinks in .gitattributes and .gitignore - + t0060: test obscured .gitattributes and .gitignore matching - + t7450: test .gitmodules symlink matching against obscured names - + t7450: test verify_path() handling of gitmodules - + t7415: rename to expand scope - + fsck_tree(): wrap some long lines - + fsck_tree(): fix shadowed variable - - Originally merged to 'next' on 2020-10-23 - - "git fsck" and the corresponding check done during the transport - learned to ensure that in-tree files like `.gitignore` and - `.gitattributes` are not symbolic links. - - It seems that there are real projects with .gitignore recorded as - symlinks, which may need to loosen the fsck setting. Do we need to - introduce a class that is separate from symlinked .gitmodules that - probably is with potential consequences that is more/less grave? - - Will eject out of 'next' when rewinding the branch. - - -* sm/curl-retry (2020-10-13) 3 commits - - http: automatically retry some requests - - replace CURLOPT_FILE With CURLOPT_WRITEDATA - - remote-curl: add testing for intelligent retry for HTTP - - The http transport has been taught to retry a failed request that - may reasonably be retried. - - Expecting a reroll. - cf. <20201015000410.GB328643@google.com> - cf. + Will merge to 'master'. -* sv/t7001-modernize (2020-09-25) 11 commits - - t7001: move cleanup code from outside the tests into them - - t7001: use `test` rather than `[` - - t7001: use here-docs instead of echo - - t7001: put each command on a separate line - - t7001: use ': >' rather than 'touch' - - t7001: change (cd && git foo) to (git -C foo) - - t7001: remove whitespace after redirect operators - - t7001: change the style for cd according to subshell - - t7001: remove unnecessary blank lines - - t7001: use TAB instead of spaces - - t7001: convert tests from the old style to the current style +* pb/doc-modules-git-work-tree-typofix (2021-01-04) 1 commit + (merged to 'next' on 2021-01-08 at a67ab3e96a) + + gitmodules.txt: fix 'GIT_WORK_TREE' variable name - Test script modernization. + Doc fix. - Expecting a reroll. - cf. <20200925170256.11490-1-shubhunic@gmail.com> + Will merge to 'master'. -* ar/fetch-transfer-ipversion (2020-09-16) 1 commit - - config: option transfer.ipversion to set transport protocol version for network fetches +* pb/mergetool-tool-help-fix (2021-01-06) 1 commit + - mergetool--lib: fix '--tool-help' to correctly show available tools - Adds transfer.ipversion configuration variable. + Fix 2.29 regression where "git mergetool --tool-help" fails to list + all the available tools. - Needs more work. + Will merge to 'next'. -* vv/send-email-with-less-secure-apps-access (2020-08-29) 1 commit - - Documentation/git-send-email.txt: Mention less secure app access might need to enable. +* rs/rebase-commit-validation (2021-01-04) 1 commit + (merged to 'next' on 2021-01-08 at 2c63eb1cc8) + + rebase: verify commit parameter - Doc update. + Diagnose command line error early. - Expecting a reroll. - cf. - cf. + Will merge to 'master'. -* jc/war-on-dashed-git (2020-12-21) 2 commits - - fixup??? git: catch an attempt to run "git-foo" - - git: catch an attempt to run "git-foo" +* sg/t7800-difftool-robustify (2021-01-04) 1 commit + . t7800-difftool: don't accidentally match tmp dirs - The first step to remove on-disk binaries for built-in subcommands - by soliciting objections. + Test fix. - On hold for now. + Not working on Windows. + cf. https://github.com/git/git/runs/1660588243?check_suite_focus=true#step:7:4186 -* mk/use-size-t-in-zlib (2018-10-15) 1 commit - - zlib.c: use size_t for size +* ta/doc-typofix (2021-01-04) 1 commit + (merged to 'next' on 2021-01-08 at 1e579ef94f) + + doc: fix some typos - The wrapper to call into zlib followed our long tradition to use - "unsigned long" for sizes of regions in memory, which have been - updated to use "size_t". + Doc fix. --------------------------------------------------- -[Needs Review] + Will merge to 'master'. -* ag/merge-strategies-in-c (2020-11-24) 13 commits - - sequencer: use the "octopus" merge strategy without forking - - sequencer: use the "resolve" strategy without forking - - merge: use the "octopus" strategy without forking - - merge: use the "resolve" strategy without forking - - merge-octopus: rewrite in C - - merge-recursive: move better_branch_name() to merge.c - - merge-resolve: rewrite in C - - merge-index: don't fork if the requested program is `git-merge-one-file' - - merge-index: libify merge_one_path() and merge_all() - - merge-one-file: rewrite in C - - update-index: move add_cacheinfo() to read-cache.c - - t6060: modify multiple files to expose a possible issue with merge-index - - t6407: modernise tests - The resolve and octopus merge strategy backends have been rewritten - in C. +* zh/arg-help-format (2021-01-06) 2 commits + (merged to 'next' on 2021-01-08 at 208c98620c) + + builtin/*: update usage format + + parse-options: format argh like error messages - Needs review. + Clean up option descriptions in "git cmd --help". + + Will merge to 'master'. --------------------------------------------------- -[Cooking] * ak/corrected-commit-date (2021-01-04) 11 commits - doc: add corrected commit date info @@ -431,16 +647,8 @@ Release tarballs are available at: The commit-graph learned to use corrected commit dates instead of the generation number to help topological revision traversal. - Getting there. - - -* es/perf-export-fix (2020-12-22) 1 commit - (merged to 'next' on 2020-12-22 at d06b0379d9) - + t/perf: avoid unnecessary test_export() recursion - - Tweak unneeded recursion from a test framework helper function. - - Will merge to 'master'. + Getting there, but not needs more help to find and resolve segv. + cf. <1adabda6-b80b-d543-f6c0-570dadbe589b@gmail.com> * dl/p4-encode-after-kw-expansion (2020-12-23) 1 commit @@ -465,31 +673,12 @@ Release tarballs are available at: * ew/decline-core-abbrev (2020-12-23) 1 commit - - core.abbrev=no disables abbreviations + (merged to 'next' on 2021-01-08 at 630dd186a4) + + core.abbrev=no disables abbreviations Allow the configuration to specify no abbreviation regardless of the hash algorithm. - Will merge to 'next'. - - -* es/worktree-repair-both-moved (2020-12-21) 1 commit - (merged to 'next' on 2020-12-22 at 9eaae4f5c0) - + worktree: teach `repair` to fix multi-directional breakage - - "git worktree repair" learned to deal with the case where both the - repository and the worktree moved. - - Will merge to 'master'. - - -* fc/t6030-bisect-reset-removes-auxiliary-files (2020-12-21) 1 commit - (merged to 'next' on 2020-12-22 at 2ab78ef1e1) - + test: bisect-porcelain: fix location of files - - A 3-year old test that was not testing anything useful has been - corrected. - Will merge to 'master'. @@ -504,6 +693,8 @@ Release tarballs are available at: Piecemeal of rewrite of "git bisect" in C continues. + What's the status of this thing? + * jt/clone-unborn-head (2020-12-22) 3 commits - clone: respect remote unborn HEAD @@ -515,6 +706,8 @@ Release tarballs are available at: did not convey the information necessary to do so when copying an empty repository. The protocol v2 learned how to do so. + What's the status of this thing? + * fc/bash-completion-post-2.29 (2020-12-23) 4 commits - completion: bash: add correct suffix in variables @@ -525,12 +718,6 @@ Release tarballs are available at: Seems to break tests on Windows -* jc/config-pretend-gitdir (2020-12-15) 1 commit - - config: --pretend-git-dir for includeIf:gitdir - - WIP - - * jc/deprecate-pack-redundant (2020-12-15) 1 commit - pack-redundant: gauge the usage before proposing its removal @@ -538,20 +725,7 @@ Release tarballs are available at: stale with almost unusable performance issues, gets used, as we no longer want to recommend its use (instead just "repack -d" instead). - -* en/merge-ort-recursive (2020-12-16) 4 commits - (merged to 'next' on 2020-12-22 at 0dbf60011f) - + merge-ort: implement merge_incore_recursive() - + merge-ort: make clear_internal_opts() aware of partial clearing - + merge-ort: copy a few small helper functions from merge-recursive.c - + commit: move reverse_commit_list() from merge-recursive - (this branch uses en/merge-ort-2 and en/merge-ort-impl; is tangled with en/merge-ort-3 and en/ort-conflict-handling.) - - The ORT merge strategy learned to synthesize virtual ancestor tree - by recursively merging multiple merge bases together, just like the - recursive backend has done for years. - - Will merge to 'master'. + Will merge to 'next'. * mt/parallel-checkout-part-1 (2020-12-16) 9 commits @@ -571,21 +745,24 @@ Release tarballs are available at: * en/merge-ort-3 (2020-12-15) 11 commits - - merge-ort: add implementation of type-changed rename handling - - merge-ort: add implementation of normal rename handling - - merge-ort: add implementation of rename collisions - - merge-ort: add implementation of rename/delete conflicts - - merge-ort: add implementation of both sides renaming differently - - merge-ort: add implementation of both sides renaming identically - - merge-ort: add basic outline for process_renames() - - merge-ort: implement compare_pairs() and collect_renames() - - merge-ort: implement detect_regular_renames() - - merge-ort: add initial outline for basic rename detection - - merge-ort: add basic data structures for handling renames - (this branch uses en/merge-ort-2 and en/merge-ort-impl; is tangled with en/merge-ort-recursive and en/ort-conflict-handling.) + (merged to 'next' on 2021-01-08 at fe481b9627) + + merge-ort: add implementation of type-changed rename handling + + merge-ort: add implementation of normal rename handling + + merge-ort: add implementation of rename collisions + + merge-ort: add implementation of rename/delete conflicts + + merge-ort: add implementation of both sides renaming differently + + merge-ort: add implementation of both sides renaming identically + + merge-ort: add basic outline for process_renames() + + merge-ort: implement compare_pairs() and collect_renames() + + merge-ort: implement detect_regular_renames() + + merge-ort: add initial outline for basic rename detection + + merge-ort: add basic data structures for handling renames + (this branch is used by en/ort-directory-rename.) Rename detection is added to the "ORT" merge strategy. + Will merge to 'master'. + * ps/config-env-pairs (2021-01-06) 8 commits - config: allow specifying config entries via envvar pairs @@ -653,42 +830,13 @@ Release tarballs are available at: * bc/rev-parse-path-format (2020-12-12) 2 commits - - rev-parse: add option for absolute or relative path formatting - - abspath: add a function to resolve paths with missing components + (merged to 'next' on 2021-01-08 at 7d51587b7f) + + rev-parse: add option for absolute or relative path formatting + + abspath: add a function to resolve paths with missing components "git rev-parse" can be explicitly told to give output as absolute or relative path. - Will merge to 'next'. - - -* en/merge-ort-impl (2020-12-13) 21 commits - (merged to 'next' on 2020-12-21 at c551d7bda9) - + merge-ort: free data structures in merge_finalize() - + merge-ort: add implementation of record_conflicted_index_entries() - + tree: enable cmp_cache_name_compare() to be used elsewhere - + merge-ort: add implementation of checkout() - + merge-ort: basic outline for merge_switch_to_result() - + merge-ort: step 3 of tree writing -- handling subdirectories as we go - + merge-ort: step 2 of tree writing -- function to create tree object - + merge-ort: step 1 of tree writing -- record basenames, modes, and oids - + merge-ort: have process_entries operate in a defined order - + merge-ort: add a preliminary simple process_entries() implementation - + merge-ort: avoid recursing into identical trees - + merge-ort: record stage and auxiliary info for every path - + merge-ort: compute a few more useful fields for collect_merge_info - + merge-ort: avoid repeating fill_tree_descriptor() on the same tree - + merge-ort: implement a very basic collect_merge_info() - + merge-ort: add an err() function similar to one from merge-recursive - + merge-ort: use histogram diff - + merge-ort: port merge_start() from merge-recursive - + merge-ort: add some high-level algorithm structure - + merge-ort: setup basic internal data structures - + Merge branch 'en/strmap' into en/merge-ort-impl - (this branch is used by en/merge-ort-2, en/merge-ort-3, en/merge-ort-recursive and en/ort-conflict-handling.) - - The merge backend "done right" starts to emerge. - Will merge to 'master'. @@ -755,48 +903,35 @@ Release tarballs are available at: * ab/mktag (2021-01-06) 23 commits - - mktag: add a --[no-]strict option - - mktag: mark strings for translation - - mktag: convert to parse-options - - mktag: allow omitting the header/body \n separator - - mktag: allow turning off fsck.extraHeaderEntry - - fsck: make fsck_config() re-usable - - mktag: use fsck instead of custom verify_tag() - - mktag: use puts(str) instead of printf("%s\n", str) - - mktag: remove redundant braces in one-line body "if" - - mktag: use default strbuf_read() hint - - mktag tests: test verify_object() with replaced objects - - mktag tests: improve verify_object() test coverage - - mktag tests: test "hash-object" compatibility - - mktag tests: stress test whitespace handling - - mktag tests: run "fsck" after creating "mytag" - - mktag tests: don't create "mytag" twice - - mktag tests: don't redirect stderr to a file needlessly - - mktag tests: remove needless SHA-1 hardcoding - - mktag tests: use "test_commit" helper - - mktag tests: don't needlessly use a subshell - - mktag doc: update to explain why to use this - - mktag doc: grammar fix, when exists -> when it exists - - mktag doc: say not + (merged to 'next' on 2021-01-08 at 6f9e11ad97) + + mktag: add a --[no-]strict option + + mktag: mark strings for translation + + mktag: convert to parse-options + + mktag: allow omitting the header/body \n separator + + mktag: allow turning off fsck.extraHeaderEntry + + fsck: make fsck_config() re-usable + + mktag: use fsck instead of custom verify_tag() + + mktag: use puts(str) instead of printf("%s\n", str) + + mktag: remove redundant braces in one-line body "if" + + mktag: use default strbuf_read() hint + + mktag tests: test verify_object() with replaced objects + + mktag tests: improve verify_object() test coverage + + mktag tests: test "hash-object" compatibility + + mktag tests: stress test whitespace handling + + mktag tests: run "fsck" after creating "mytag" + + mktag tests: don't create "mytag" twice + + mktag tests: don't redirect stderr to a file needlessly + + mktag tests: remove needless SHA-1 hardcoding + + mktag tests: use "test_commit" helper + + mktag tests: don't needlessly use a subshell + + mktag doc: update to explain why to use this + + mktag doc: grammar fix, when exists -> when it exists + + mktag doc: say not "git mktag" validates its input using its own rules before writing a tag object---it has been updated to share the logic with "git fsck". - Will merge to 'next'. - - -* ab/trailers-extra-format (2020-12-09) 5 commits - (merged to 'next' on 2020-12-14 at 9fc731944e) - + pretty format %(trailers): add a "key_value_separator" - + pretty format %(trailers): add a "keyonly" - + pretty-format %(trailers): fix broken standalone "valueonly" - + pretty format %(trailers) doc: avoid repetition - + pretty format %(trailers) test: split a long line - - The "--format=%(trailers)" mechanism gets enhanced to make it - easier to design output for machine consumption. - Will merge to 'master'. @@ -813,91 +948,18 @@ Release tarballs are available at: File-level rename detection updates. - -* en/merge-ort-2 (2020-12-13) 7 commits - (merged to 'next' on 2020-12-21 at ef5b184349) - + merge-ort: add modify/delete handling and delayed output processing - + merge-ort: add die-not-implemented stub handle_content_merge() function - + merge-ort: add function grouping comments - + merge-ort: add a paths_to_free field to merge_options_internal - + merge-ort: add a path_conflict field to merge_options_internal - + merge-ort: add a clear_internal_opts helper - + merge-ort: add a few includes - (this branch is used by en/merge-ort-3, en/merge-ort-recursive and en/ort-conflict-handling; uses en/merge-ort-impl.) - - More "ORT" merge strategy. - - Will merge to 'master'. - - -* fc/pull-merge-rebase (2020-12-15) 5 commits - (merged to 'next' on 2020-12-21 at acce13e5c4) - + pull: display default warning only when non-ff - + pull: correct condition to trigger non-ff advice - + pull: get rid of unnecessary global variable - + pull: give the advice for choosing rebase/merge much later - + pull: refactor fast-forward check - - When a user does not tell "git pull" to use rebase or merge, the - command gives a loud message telling a user to choose between - rebase or merge but creates a merge anyway, forcing users who would - want to rebase to redo the operation. Fix an early part of this - problem by tightening the condition to give the message---there is - no reason to stop or force the user to choose between rebase or - merge if the history fast-forwards. - - Will merge to 'master'. - - -* pk/subsub-fetch-fix-take-2 (2020-12-09) 1 commit - (merged to 'next' on 2020-12-14 at ccc01a5f66) - + submodules: fix of regression on fetching of non-init subsub-repo - - "git fetch --recurse-submodules" fix (second attempt). - - Will merge to 'master'. + Will merge to 'next'. * en/stash-apply-sparse-checkout (2020-12-01) 3 commits - - stash: fix stash application in sparse-checkouts - - stash: remove unnecessary process forking - - t7012: add a testcase demonstrating stash apply bugs in sparse checkouts + (merged to 'next' on 2021-01-08 at cae5b73d99) + + stash: fix stash application in sparse-checkouts + + stash: remove unnecessary process forking + + t7012: add a testcase demonstrating stash apply bugs in sparse checkouts "git stash" did not work well in a sparsely checked out working tree. - Will merge to 'next'. - - -* tb/pack-bitmap (2020-12-08) 24 commits - (merged to 'next' on 2020-12-15 at 773268c2fb) - + pack-bitmap-write: better reuse bitmaps - + pack-bitmap-write: relax unique revwalk condition - + pack-bitmap-write: use existing bitmaps - + pack-bitmap: factor out 'add_commit_to_bitmap()' - + pack-bitmap: factor out 'bitmap_for_commit()' - + pack-bitmap-write: ignore BITMAP_FLAG_REUSE - + pack-bitmap-write: build fewer intermediate bitmaps - + pack-bitmap.c: check reads more aggressively when loading - + pack-bitmap-write: rename children to reverse_edges - + t5310: add branch-based checks - + commit: implement commit_list_contains() - + bitmap: implement bitmap_is_subset() - + pack-bitmap-write: fill bitmap with commit history - + pack-bitmap-write: pass ownership of intermediate bitmaps - + pack-bitmap-write: reimplement bitmap writing - + ewah: add bitmap_dup() function - + ewah: implement bitmap_or() - + ewah: make bitmap growth less aggressive - + ewah: factor out bitmap growth - + rev-list: die when --test-bitmap detects a mismatch - + t5310: drop size of truncated ewah bitmap - + pack-bitmap: bounds-check size of cache extension - + pack-bitmap: fix header size check - + ewah/ewah_bitmap.c: avoid open-coding ALLOC_GROW() - - Various improvements to the codepath that writes out pack bitmaps. - Will merge to 'master'. @@ -939,16 +1001,17 @@ Release tarballs are available at: * ds/maintenance-part-4 (2021-01-05) 4 commits - - maintenance: use Windows scheduled tasks - - maintenance: use launchctl on macOS - - maintenance: include 'cron' details in docs - - maintenance: extract platform-specific scheduling + (merged to 'next' on 2021-01-08 at 1f98c859ea) + + maintenance: use Windows scheduled tasks + + maintenance: use launchctl on macOS + + maintenance: include 'cron' details in docs + + maintenance: extract platform-specific scheduling Follow-up on the "maintenance part-3" which introduced scheduled maintenance tasks to support platforms whose native scheduling methods are not 'cron'. - Will merge to 'next'. + Will merge to 'master'. * sj/untracked-files-in-submodule-directory-is-not-dirty (2020-12-08) 1 commit @@ -959,3 +1022,15 @@ Release tarballs are available at: that the "-dirty" indicator would align with "git describe --dirty", which does not consider having untracked files in the working tree as source of dirtiness. The inconsistency has been fixed. + + Will merge to 'next'. + +-------------------------------------------------- +[Discarded] + +* jc/config-pretend-gitdir (2020-12-15) 1 commit + . config: --pretend-git-dir for includeIf:gitdir + + It turns out that the original "problem" that inspired the feature + was working as designed. + cf.