Here are the topics that have been cooking in my tree. Commits prefixed with '+' are in 'next' (being in 'next' is a sign that a topic is stable enough to be used and are candidate to be in a future release). Commits prefixed with '-' are only in 'seen', which means nothing more than that I have found them of interest for some reason (like "it may have hard-to-resolve conflicts with another topic already in flight" or "this may turn out to be useful"). Do not read too much into a topic being in (or not in) 'seen'. The ones marked with '.' do not appear in any of the integration branches, but I am still holding onto them. 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 repositories have only a subset of branches. With maint, master, next, seen, todo: git://git.kernel.org/pub/scm/git/git.git/ git://repo.or.cz/alt-git.git/ https://kernel.googlesource.com/pub/scm/git/git/ https://github.com/git/git/ https://gitlab.com/git-vcs/git/ With all the integration branches and topics broken out: https://github.com/gitster/git/ Even though the preformatted documentation in HTML and man format are not sources, they are published in these repositories for convenience (replace "htmldocs" with "manpages" for the manual pages): git://git.kernel.org/pub/scm/git/git-htmldocs.git/ https://github.com/gitster/git-htmldocs.git/ Release tarballs are available at: https://www.kernel.org/pub/software/scm/git/ -------------------------------------------------- [New Topics] * ab/bundle-remove-verbose-option (2021-09-23) 1 commit - bundle: remove ignored & undocumented "--verbose" flag Doc update. Will merge to 'next'. * ab/config-based-hooks-1 (2021-09-27) 8 commits - hook-list.h: add a generated list of hooks, like config-list.h - hook.c users: use "hook_exists()" instead of "find_hook()" - hook.c: add a hook_exists() wrapper and use it in bugreport.c - hook.[ch]: move find_hook() from run-command.c to hook.c - Makefile: remove an out-of-date comment - Makefile: don't perform "mv $@+ $@" dance for $(GENERATED_H) - Makefile: stop hardcoding {command,config}-list.h - Makefile: mark "check" target as .PHONY * ab/http-pinned-public-key-mismatch (2021-09-27) 1 commit - http: check CURLE_SSL_PINNEDPUBKEYNOTMATCH when emitting errors HTTPS error handling updates. Will merge to 'next'? * ab/make-compdb-fix (2021-09-27) 1 commit - Makefile: pass -Wno-pendantic under GENERATE_COMPILATION_DATABASE=yes Build update. Will merge to 'next'. * jk/ref-paranoia (2021-09-27) 16 commits - refs: drop "broken" flag from for_each_fullref_in() - ref-filter: drop broken-ref code entirely - ref-filter: stop setting FILTER_REFS_INCLUDE_BROKEN - repack, prune: drop GIT_REF_PARANOIA settings - refs: turn on GIT_REF_PARANOIA by default - refs: omit dangling symrefs when using GIT_REF_PARANOIA - refs: add DO_FOR_EACH_OMIT_DANGLING_SYMREFS flag - refs-internal.h: reorganize DO_FOR_EACH_* flag documentation - refs-internal.h: move DO_FOR_EACH_* flags next to each other - t5312: be more assertive about command failure - t5312: test non-destructive repack - t5312: create bogus ref as necessary - t5312: drop "verbose" helper - t5600: provide detached HEAD for corruption failures - t5516: don't use HEAD ref for invalid ref-deletion tests - t7900: clean up some more broken refs The ref iteration code used to optionally allow dangling refs to be shown, which has been tightened up. Will merge to 'next'? * pw/rebase-reread-todo-after-editing (2021-09-24) 2 commits - rebase: fix todo-list rereading - sequencer.c: factor out a function The code to re-read the edited todo list in "git rebase -i" was made more robust. Will merge to 'next'. * rs/close-pack-leakfix (2021-09-24) 1 commit - packfile: release bad_objects in close_pack() Leakfix. Will merge to 'next'. -------------------------------------------------- [Stalled] * ab/pack-objects-stdin (2021-07-09) 5 commits - pack-objects.c: make use of REV_INFO_STDIN_LINE_PROCESS - pack-objects.c: do stdin parsing via revision.c's API - revision.[ch]: add a "handle_stdin_line" API - revision.h: refactor "disable_stdin" and "read_from_stdin" - upload-pack: run is_repository_shallow() before setup_revisions() Introduce handle_stdin_line callback to revision API and uses it. Expecting a reroll. * es/superproject-aware-submodules (2021-08-19) 5 commits . fixup! introduce submodule.superprojectGitDir record . submodule: record superproject gitdir during 'update' . submodule: record superproject gitdir during absorbgitdirs . introduce submodule.superprojectGitDir record . t7400-submodule-basic: modernize inspect() helper A configuration variable in a submodule points at the location of the superproject it is bound to (RFC). Kicked out of 'seen' tentatively to see how well a conflicting ar/submodule-update topic fares. * ab/fsck-unexpected-type (2021-09-22) 17 commits - fsck: report invalid object type-path combinations - fsck: don't hard die on invalid object types - object-file.c: stop dying in parse_loose_header() - object-file.c: return ULHR_TOO_LONG on "header too long" - object-file.c: use "enum" return type for unpack_loose_header() - object-file.c: simplify unpack_loose_short_header() - object-file.c: make parse_loose_header_extended() public - object-file.c: return -1, not "status" from unpack_loose_header() - object-file.c: don't set "typep" when returning non-zero - cat-file tests: test for current --allow-unknown-type behavior - cat-file tests: add corrupt loose object test - cat-file tests: test for missing/bogus object with -t, -s and -p - cat-file tests: move bogus_* variable declarations earlier - fsck tests: test for garbage appended to a loose object - fsck tests: test current hash/type mismatch behavior - fsck tests: refactor one test to use a sub-repo - fsck tests: add test for fsck-ing an unknown type "git fsck" has been taught to report mismatch between expected and actual types of an object better. Needs review. -------------------------------------------------- [Cooking] * ab/make-clean-depend-dirs (2021-09-22) 1 commit - Makefile: clean .depend dirs under COMPUTE_HEADER_DEPENDENCIES != yes "make clean" has been updated to remove leftover .depend/ directories, even when it is not told to use them to compute header dependencies. Will merge to 'next'. * bs/ls-files-opt-help-text-update (2021-09-22) 1 commit - ls-files: use imperative mood for -X and -z option description Help test for "ls-files" options have been updated. Will merge to 'next'. * ds/perf-test-built-path-fix (2021-09-22) 1 commit - t/perf/run: fix bin-wrappers computation Perf test fix. Will merge to 'next'. * gc/doc-first-contribution-reroll (2021-09-22) 1 commit - MyFirstContribution: Document --range-diff option when writing v2 Doc update. Will merge to 'next'. * jk/grep-haystack-is-read-only (2021-09-22) 5 commits - grep: store grep_source buffer as const - grep: mark "haystack" buffers as const - grep: stop modifying buffer in grep_source_1() - grep: stop modifying buffer in show_line() - grep: stop modifying buffer in strip_timestamp (this branch is used by hm/paint-hits-in-log-grep.) Code clean-up in the "grep" machinery. Will merge to 'next'. * jk/http-redact-fix (2021-09-22) 1 commit - http: match headers case-insensitively when redacting Sensitive data in the HTTP trace were supposed to be redacted, but we failed to do so in HTTP/2 requests. Will merge to 'next'. * js/win-lazyload-buildfix (2021-09-27) 2 commits - lazyload.h: use an even more generic function pointer than FARPROC - lazyload.h: fix warnings about mismatching function pointer types Compilation fix. Will merge to 'next'. * ab/auto-depend-with-pedantic (2021-09-22) 1 commit - Makefile: make COMPUTE_HEADER_DEPENDENCIES=auto work with DEVOPTS=pedantic Improve build procedure for developers. Will merge to 'next'. * ab/make-sparse-for-real (2021-09-22) 1 commit - Makefile: make the "sparse" target non-.PHONY Prevent "make sparse" from running for the source files that haven't been modified. Will merge to 'next'? * bs/difftool-msg-tweak (2021-09-22) 1 commit - difftool: fix word spacing in the usage strings Message tweak. Will merge to 'next'. * ew/midx-doc-update (2021-09-24) 1 commit - doc/technical: update note about core.multiPackIndex Doc tweak. Will merge to 'next'. * jt/no-abuse-alternate-odb-for-submodules (2021-09-22) 10 commits . submodule: trace adding submodule ODB as alternate . refs: change refs_for_each_ref_in() to take repo . submodule: pass repo to check_has_commit() . object-file: only register submodule ODB if needed . merge-{ort,recursive}: remove add_submodule_odb() . refs: teach refs_for_each_ref() arbitrary repos . refs iterator: support non-the_repository advance . refs: add repo paramater to _iterator_peel() . refs: make _advance() check struct repo, not flag . Merge branch 'jt/add-submodule-odb-clean-up' into jt/no-abuse-alternate-odb-for-submodules (this branch uses jt/add-submodule-odb-clean-up.) Follow through the work to use the repo interface to access submodule objects in-process, instead of abusing the alternate object database interface. Expecting a reroll on top of the jk/ref-paranoia topic. * tp/send-email-completion (2021-09-22) 3 commits - send-email docs: add format-patch options - send-email: move bash completions to core script - send-email: terminate --git-completion-helper with LF The command line complation for "git send-email" options have been tweaked to make it easier to keep it in sync with the command itself. * hm/paint-hits-in-log-grep (2021-09-24) 3 commits - pretty: colorize pattern matches in commit messages - grep: refactor next_match() and match_one_pattern() for external use - Merge branch 'jk/grep-haystack-is-read-only' into hm/paint-hits-in-log-grep (this branch uses jk/grep-haystack-is-read-only.) "git log --grep=string --author=name" learns to highlight hits just like "git grep string" does. * ab/repo-settings-cleanup (2021-09-22) 5 commits - repository.h: don't use a mix of int and bitfields - repo-settings.c: simplify the setup - read-cache & fetch-negotiator: check "enum" values in switch() - environment.c: remove test-specific "ignore_untracked..." variable - wrapper.c: add x{un,}setenv(), and use xsetenv() in environment.c Code cleanup. Will merge to 'next'. * ah/connect-parse-feature-v0-fix (2021-09-27) 1 commit - connect: also update offset for features without values Protocol v0 clients can get stuck parsing a malformed feature line. Will merge to 'next'. * ah/unreak-revisions (2021-09-20) 2 commits - log: UNLEAK original pending objects - log: UNLEAK rev to silence a large number of leaks Mark a few structures with UNLEAK() to help leak detection CI jobs. Will merge to 'next'. * ar/submodule-update (2021-09-20) 8 commits - submodule--helper: rename helper functions - submodule--helper: remove unused helpers - submodule--helper: remove update-clone subcommand - submodule: move core cmd_update() logic to C - submodule--helper: refactor get_submodule_displaypath() - submodule--helper: rename helpers for update-clone - submodule--helper: get remote names from any repository - submodule--helper: split up ensure_core_worktree() Rewrite of "git submodule update" in C. Expecting a reroll. Stomps on a handful of other topics and comes with an overly large step. * da/difftool (2021-09-23) 4 commits - difftool: add a missing space to the run_dir_diff() comments - difftool: create a tmpdir path without repeated slashes - Merge branch 'da/difftool-dir-diff-symlink-fix' into da/difftool - Merge branch 'ab/retire-option-argument' into da/difftool (this branch uses da/difftool-dir-diff-symlink-fix.) Code clean-up in "git difftool". Will merge to 'next'? * da/difftool-dir-diff-symlink-fix (2021-09-23) 1 commit - difftool: fix symlink-file writing in dir-diff mode (this branch is used by da/difftool.) "git difftool --dir-diff" mishandled symbolic links. Will merge to 'next'. * en/removing-untracked-fixes (2021-09-27) 12 commits - Documentation: call out commands that nuke untracked files/directories - Comment important codepaths regarding nuking untracked files/dirs - unpack-trees: avoid nuking untracked dir in way of locally deleted file - unpack-trees: avoid nuking untracked dir in way of unmerged file - Change unpack_trees' 'reset' flag into an enum - Remove ignored files by default when they are in the way - unpack-trees: make dir an internal-only struct - unpack-trees: introduce preserve_ignored to unpack_trees_options - read-tree, merge-recursive: overwrite ignored files by default - checkout, read-tree: fix leak of unpack_trees_options.dir - t2500: add various tests for nuking untracked files - Merge branch 'en/am-abort-fix' into en/removing-untracked-fixes Various fixes in code paths that move untracked files away to make room. Will merge to 'next'? * en/typofixes (2021-09-20) 2 commits (merged to 'next' on 2021-09-20 at 48648dafa3) + merge-ort: fix completely wrong comment + trace2.h: fix trivial comment typo Typofixes. Will merge to 'master'. * ks/submodule-add-message-fix (2021-09-20) 1 commit - submodule--helper: fix incorrect newlines in an error message Message regression fix. Will merge to 'next'. * tb/commit-graph-usage-fix (2021-09-22) 2 commits - builtin/multi-pack-index.c: disable top-level --[no-]progress - builtin/commit-graph.c: don't accept common --[no-]progress Regression fix for "git commit-graph" command line parsing. Will merge to 'next'. * ws/refer-to-forkpoint-config-in-rebase-doc (2021-09-20) 1 commit - Document `rebase.forkpoint` in rebase man page Doc update. Will merge to 'next'? * jk/clone-unborn-head-in-bare (2021-09-20) 1 commit (merged to 'next' on 2021-09-20 at 93c93b8d51) + clone: handle unborn branch in bare repos "git clone" from a repository whose HEAD is unborn into a bare repository didn't follow the branch name the other side used, which is corrected. Will merge to 'master'. * jk/reduce-malloc-in-v2-servers (2021-09-15) 12 commits (merged to 'next' on 2021-09-16 at 40cfe41efc) + ls-refs: reject unknown arguments + serve: reject commands used as capabilities + serve: reject bogus v2 "command=ls-refs=foo" + docs/protocol-v2: clarify some ls-refs ref-prefix details + ls-refs: ignore very long ref-prefix counts + serve: drop "keys" strvec + serve: provide "receive" function for session-id capability + serve: provide "receive" function for object-format capability + serve: add "receive" method for v2 capabilities table + serve: return capability "value" from get_capability() + serve: rename is_command() to parse_command() + Merge branch 'ab/serve-cleanup' into jk/reduce-malloc-in-v2-servers Code cleanup to limit memory consumption and tighten protocol message parsing. Will merge to 'master'. * ns/batched-fsync (2021-09-27) 8 commits - core.fsyncobjectfiles: performance tests for add and stash - core.fsyncobjectfiles: tests for batch mode - unpack-objects: use the bulk-checkin infrastructure - update-index: use the bulk-checkin infrastructure - core.fsyncobjectfiles: add windows support for batch mode - core.fsyncobjectfiles: batched disk flushes - bulk-checkin: rename 'state' variable and separate 'plugged' boolean - object-file.c: do not rename in a temp odb The "core.fsyncobjectfiles" configuration variable can now be set to "batch" for improved performance. Will merge to 'next'? * jh/builtin-fsmonitor-part1 (2021-09-20) 7 commits - t/helper/simple-ipc: convert test-simple-ipc to use start_bg_command - run-command: create start_bg_command - simple-ipc/ipc-win32: add Windows ACL to named pipe - simple-ipc/ipc-win32: add trace2 debugging - simple-ipc: move definition of ipc_active_state outside of ifdef - simple-ipc: preparations for supporting binary messages. - trace2: add trace2_child_ready() to report on background children Built-in fsmonitor (part 1). * cb/cvsserver (2021-09-16) 3 commits (merged to 'next' on 2021-09-23 at 98f5f3f9cf) + Documentation: cleanup git-cvsserver + git-cvsserver: protect against NULL in crypt(3) + git-cvsserver: use crypt correctly to compare password hashes "git cvsserver" had a long-standing bug in its authentication code, which has finally been corrected (it is unclear and is a separate question if anybody is seriously using it, though). Will merge to 'master'. * cb/unicode-14 (2021-09-17) 1 commit (merged to 'next' on 2021-09-20 at 7873b310ad) + unicode: update the width tables to Unicode 14 The unicode character width table (used for output alignment) has been updated. Will merge to 'master'. * ab/align-parse-options-help (2021-09-22) 4 commits - parse-options: properly align continued usage output - git rev-parse --parseopt tests: add more usagestr tests - send-pack: properly use parse_options() API for usage string - parse-options API users: align usage output in C-strings When "git cmd -h" shows more than one line of usage text (e.g. the cmd subcommand may take sub-sub-command), parse-options API learned to align these lines, even across i18n/l10n. Will merge to 'next'? * ab/help-config-vars (2021-09-23) 9 commits - help: move column config discovery to help.c library - help / completion: make "git help" do the hard work - help tests: test --config-for-completion option & output - help: simplify by moving to OPT_CMDMODE() - help: correct logic error in combining --all and --guides - help: correct logic error in combining --all and --config - help tests: add test for --config output - help: correct usage & behavior of "git help --guides" - help: correct the usage string in -h and documentation Teach "git help -c" into helping the command line completion of configuration variables. Will merge to 'next'? * tb/repack-write-midx (2021-09-16) 8 commits - builtin/repack.c: pass `--refs-snapshot` when writing bitmaps - builtin/repack.c: make largest pack preferred - builtin/repack.c: support writing a MIDX while repacking - builtin/repack.c: extract showing progress to a variable - builtin/repack.c: keep track of existing packs unconditionally - midx: preliminary support for `--refs-snapshot` - builtin/multi-pack-index.c: support `--stdin-packs` mode - midx: expose `write_midx_file_only()` publicly "git repack" has been taught to generate multi-pack reachability bitmaps. Under review. cf. <YU0TS+KsWY36oeKU@nand.local> * ds/add-rm-with-sparse-index (2021-09-24) 13 commits - advice: update message to suggest '--sparse' - mv: refuse to move sparse paths - rm: skip sparse paths with missing SKIP_WORKTREE - rm: add --sparse option - add: update --renormalize to skip sparse paths - add: update --chmod to skip sparse paths - add: implement the --sparse option - add: skip tracked paths outside sparse-checkout cone - add: fail when adding an untracked sparse file - dir: fix pattern matching on dirs - dir: select directories correctly - t1092: behavior for adding sparse files - t3705: test that 'sparse_entry' is unstaged "git add", "git mv", and "git rm" have been adjusted to avoid updating paths outside of the sparse-checkout definition unless the user specifies a "--sparse" option. Will merge to 'next'? * tb/midx-write-propagate-namehash (2021-09-17) 7 commits - t5326: test propagating hashcache values - p5326: generate pack bitmaps before writing the MIDX bitmap - p5326: don't set core.multiPackIndex unnecessarily - p5326: create missing 'perf-tag' tag - midx.c: respect 'pack.writeBitmapHashcache' when writing bitmaps - pack-bitmap.c: propagate namehash values from existing bitmaps - t/helper/test-bitmap.c: add 'dump-hashes' mode "git multi-pack-index write --bitmap" learns to propagate the hashcache from original bitmap to resulting bitmap. Will merge to 'next'. * pw/rebase-of-a-tag-fix (2021-09-22) 10 commits - rebase: dereference tags - rebase: use lookup_commit_reference_by_name() - rebase: use our standard error return value - t3407: rework rebase --quit tests - t3407: strengthen rebase --abort tests - t3407: use test_path_is_missing - t3407: rename a variable - t3407: use test_cmp_rev - t3407: use test_commit - t3407: run tests in $TEST_DIRECTORY "git rebase <upstream> <tag>" failed when aborted in the middle, as it mistakenly tried to write the tag object instead of peeling it to HEAD. Will merge to 'next'. * en/zdiff3 (2021-09-20) 2 commits - update documentation for new zdiff3 conflictStyle - xdiff: implement a zealous diff3, or "zdiff3" "Zealous diff3" style of merge conflict presentation has been added. * en/stash-df-fix (2021-09-10) 3 commits (merged to 'next' on 2021-09-20 at 513c11fb11) + stash: restore untracked files AFTER restoring tracked files + stash: avoid feeding directories to update-index + t3903: document a pair of directory/file bugs Fix "git stash" corner case where the tentative change involves changing a directory to a file (or vice versa). Will merge to 'master'. * jt/add-submodule-odb-clean-up (2021-09-09) 3 commits - revision: remove "submodule" from opt struct - repository: support unabsorbed in repo_submodule_init - submodule: remove unnecessary unabsorbed fallback (this branch is used by jt/no-abuse-alternate-odb-for-submodules.) More code paths that uses the hack to add submodule's object database to the set of alternate object store have been cleaned up. Will merge to 'next'. * jx/ci-l10n (2021-09-09) 1 commit (merged to 'next' on 2021-09-23 at b2d7f5eecb) + ci: new github-action for git-l10n code review CI help for l10n. Will merge to 'master'. * js/scalar (2021-09-14) 15 commits - scalar: accept -C and -c options before the subcommand - scalar: implement the `version` command - scalar: implement the `delete` command - scalar: teach 'reconfigure' to optionally handle all registered enlistments - scalar: allow reconfiguring an existing enlistment - scalar: implement the `run` command - scalar: teach 'clone' to support the --single-branch option - scalar: implement the `clone` subcommand - scalar: implement 'scalar list' - scalar: let 'unregister' handle a deleted enlistment directory gracefully - scalar: 'unregister' stops background maintenance - scalar: 'register' sets recommended config and starts maintenance - scalar: create test infrastructure - scalar: start documenting the command - scalar: create a rudimentary executable Add pieces from "scalar" to contrib/. Will merge to 'next'? * ab/sanitize-leak-ci (2021-09-23) 2 commits - tests: add a test mode for SANITIZE=leak, run it in CI - Makefile: add SANITIZE=leak flag to GIT-BUILD-OPTIONS CI learns to run the leak sanitizer builds. Will merge to 'next'? * ms/customizable-ident-expansion (2021-09-01) 1 commit - keyword expansion: make "$Id$" string configurable Instead of "$Id$", user-specified string (like $FreeBSD$) can be used as an in-blob placeholder for keyword expansion. * js/retire-preserve-merges (2021-09-07) 11 commits (merged to 'next' on 2021-09-10 at f645ffd7a3) + sequencer: restrict scope of a formerly public function + rebase: remove a no-longer-used function + rebase: stop mentioning the -p option in comments + rebase: remove obsolete code comment + rebase: drop the internal `rebase--interactive` command + git-svn: drop support for `--preserve-merges` + rebase: drop support for `--preserve-merges` + pull: remove support for `--rebase=preserve` + tests: stop testing `git rebase --preserve-merges` + remote: warn about unhandled branch.<name>.rebase values + t5520: do not use `pull.rebase=preserve` The "--preserve-merges" option of "git rebase" has been removed. Will cook in 'next'. * en/remerge-diff (2021-08-31) 7 commits - doc/diff-options: explain the new --remerge-diff option - show, log: provide a --remerge-diff capability - tmp-objdir: new API for creating and removing primary object dirs - merge-ort: capture and print ll-merge warnings in our preferred fashion - ll-merge: add API for capturing warnings in a strbuf instead of stderr - merge-ort: add ability to record conflict messages in a file - merge-ort: mark a few more conflict messages as omittable A new presentation for two-parent merge "--remerge-diff" can be used to show the difference between mechanical (and possibly conflicted) merge results and the recorded resolution. Will merge to 'next'? * sg/test-split-index-fix (2021-09-07) 7 commits - read-cache: fix GIT_TEST_SPLIT_INDEX - tests: disable GIT_TEST_SPLIT_INDEX for sparse index tests - read-cache: look for shared index files next to the index, too - t1600-index: disable GIT_TEST_SPLIT_INDEX - t1600-index: don't run git commands upstream of a pipe - t1600-index: remove unnecessary redirection - Merge branch 'ds/sparse-index-ignored-files' into sg/test-split-index-fix Test updates. Will merge to 'next'? * ab/refs-errno-cleanup (2021-08-25) 4 commits - refs: make errno output explicit for refs_resolve_ref_unsafe - refs: explicitly return failure_errno from parse_loose_ref_contents - branch tests: test for errno propagating on failing read - refs: add failure_errno to refs_read_raw_ref() signature (this branch uses ab/refs-files-cleanup and hn/refs-errno-cleanup.) The "remainder" of hn/refs-errno-cleanup topic. * ab/lib-subtest (2021-09-22) 9 commits - test-lib tests: get rid of copy/pasted mock test code - test-lib tests: assert 1 exit code, not non-zero - test-lib tests: refactor common part of check_sub_test_lib_test*() - test-lib tests: avoid subshell for "test_cmp" for readability - test-lib tests: don't provide a description for the sub-tests - test-lib tests: split up "write and run" into two functions - test-lib tests: move "run_sub_test" to a new lib-subtest.sh - Merge branch 'ps/t0000-output-directory-fix' into ab/lib-subtest - Merge branch 'jk/t0000-subtests-fix' into ab/lib-subtest Updates to the tests in t0000 to test the test framework. Will merge to 'next'? * ab/only-single-progress-at-once (2021-09-22) 8 commits - progress.c: add & assert a "global_progress" variable - pack-bitmap-write.c: add a missing stop_progress() - progress.c: add temporary variable from progress struct - progress.c: stop eagerly fflush(stderr) when not a terminal - progress.c: call progress_interval() from progress_test_force_update() - progress.c: move signal handler functions lower - progress.c tests: test some invalid usage - progress.c tests: make start/stop verbs on stdin Further tweaks on progress API. * fs/ssh-signing (2021-09-10) 9 commits - ssh signing: test that gpg fails for unknown keys - ssh signing: tests for logs, tags & push certs - ssh signing: duplicate t7510 tests for commits - ssh signing: verify signatures using ssh-keygen - ssh signing: provide a textual signing_key_id - ssh signing: retrieve a default key from ssh-agent - ssh signing: add ssh key format and signing code - ssh signing: add test prereqs - ssh signing: preliminary refactoring and clean-up Use ssh public crypto for object and push-cert signing. On hold. cf. <pull.1041.v8.git.git.1631304462.gitgitgadget@xxxxxxxxx> cf. <532d97e7-8c91-df6a-6d90-70668256f513@xxxxxxxxxxxx> * cf/fetch-set-upstream-while-detached (2021-07-06) 1 commit - fetch: fix segfault on --set-upstream while on a detached HEAD "git fetch --set-upstream" while on detached HEAD segfaulted instead of noticing that such an operation did not make sense. Expecting a reroll. cf. <xmqqsg0ri5mq.fsf@gitster.g> * pw/diff-color-moved-fix (2021-08-05) 13 commits - diff: drop unused options parameter from cmp_in_block_with_wsd() - diff --color-moved: intern strings - diff: use designated initializers for emitted_diff_symbol - diff --color-moved-ws=allow-indentation-change: improve hash lookups - diff --color-moved: stop clearing potential moved blocks - diff --color-moved: shrink potential moved blocks as we go - diff --color-moved: unify moved block growth functions - diff --color-moved: call comparison function directly - diff --color-moved-ws=allow-indentation-change: simplify and optimize - diff: simplify allow-indentation-change delta calculation - diff --color-moved: avoid false short line matches and bad zerba coloring - diff --color-moved=zebra: fix alternate coloring - diff --color-moved: add perf tests Originally merged to 'next' on 2021-08-05 Long-overdue correctness and performance update to "diff --color-moved" feature. Expecting a reroll. cf. <8bec1a6d-5052-50c3-4100-e6348289d581@xxxxxxxxx> * hn/reftable (2021-09-10) 20 commits - fixup! reftable: implement stack, a mutable database of reftable files. - Add "test-tool dump-reftable" command. - reftable: add dump utility - reftable: implement stack, a mutable database of reftable files. - reftable: implement refname validation - reftable: add merged table view - reftable: add a heap-based priority queue for reftable records - reftable: reftable file level tests - reftable: read reftable files - reftable: generic interface to tables - reftable: write reftable files - reftable: a generic binary tree implementation - reftable: reading/writing blocks - Provide zlib's uncompress2 from compat/zlib-compat.c - reftable: (de)serialization for the polymorphic record type. - reftable: add blocksource, an abstraction for random access reads - reftable: utility functions - reftable: add error related functionality - reftable: RFC: add LICENSE - hash.h: provide constants for the hash IDs The "reftable" backend for the refs API, without integrating into the refs subsystem. Will merge to 'next'? * ab/refs-files-cleanup (2021-08-25) 13 commits (merged to 'next' on 2021-09-23 at eb5668523f) + refs/files: remove unused "errno != ENOTDIR" condition + refs/files: remove unused "errno == EISDIR" code + refs/files: remove unused "oid" in lock_ref_oid_basic() + refs API: remove OID argument to reflog_expire() + reflog expire: don't lock reflogs using previously seen OID + refs/files: add a comment about refs_reflog_exists() call + refs: make repo_dwim_log() accept a NULL oid + refs/debug: re-indent argument list for "prepare" + refs/files: remove unused "skip" in lock_raw_ref() too + refs/files: remove unused "extras/skip" in lock_ref_oid_basic() + refs: drop unused "flags" parameter to lock_ref_oid_basic() + refs/files: remove unused REF_DELETING in lock_ref_oid_basic() + refs/packet: add missing BUG() invocations to reflog callbacks (this branch is used by ab/refs-errno-cleanup and hn/refs-errno-cleanup.) Continued work on top of the hn/refs-errno-cleanup topic. Will merge to 'master'. * hn/refs-errno-cleanup (2021-08-25) 4 commits (merged to 'next' on 2021-09-23 at 502e6b6b08) + refs: make errno output explicit for read_raw_ref_fn + refs/files-backend: stop setting errno from lock_ref_oid_basic + refs: remove EINVAL errno output from specification of read_raw_ref_fn + refs file backend: move raceproof_create_file() here (this branch is used by ab/refs-errno-cleanup; uses ab/refs-files-cleanup.) Futz with the way 'errno' is relied on in the refs API to carry the failure modes up the call chain. Will merge to 'master'. -------------------------------------------------- [Discarded] * ao/p4-avoid-decoding (2021-04-12) 2 commits . git-p4: do not decode data from perforce by default . git-p4: avoid decoding more data from perforce "git p4" in Python-2 days used to accept a lot more kinds of data from Perforce server as uninterrupted byte sequence, but after switching to Python-3, too many things are expected to be in UTF-8, which broke traditional use cases. Have been stalled for too long. cf. <20210504220153.1d9f0cb2@ado-tr> * tv/p4-fallback-encoding (2021-04-30) 1 commit . git-p4: git-p4.fallbackEncoding to specify non UTF-8 charset "git p4" learns the fallbackEncoding configuration variable to safely accept changeset descriptions that aren't written in UTF-8. Have been stalled for too long. cf. <CAKu1iLUaLuAZWqjNK4tfhhR=YaSt4MdQ+90ZY-JcEh_SeHyYCw@xxxxxxxxxxxxxx> * jh/builtin-fsmonitor (2021-09-03) 37 commits . fixup! fsmonitor--daemon: implement handle_client callback . SQUASH??? https://github.com/git/git/runs/3438543601?check_suite_focus=true#step:5:136 . BANDAID: sparse fixes . t7527: test FS event reporing on MacOS WRT case and Unicode . fsmonitor: handle shortname for .git . t7527: test status with untracked-cache and fsmonitor--daemon . fsmonitor: force update index after large responses . fsmonitor: enhance existing comments . fsmonitor--daemon: use a cookie file to sync with file system . fsmonitor--daemon: periodically truncate list of modified files . t7527: create test for fsmonitor--daemon . t/perf/p7519: add fsmonitor--daemon test cases . t/perf: avoid copying builtin fsmonitor files into test repo . t/perf/p7519: speed up test using "test-tool touch" . t/helper/test-touch: add helper to touch a series of files . fsmonitor--daemon: implement handle_client callback . fsmonitor-fs-listen-macos: implement FSEvent listener on MacOS . fsmonitor-fs-listen-macos: add macos header files for FSEvent . fsmonitor-fs-listen-win32: implement FSMonitor backend on Windows . fsmonitor--daemon: create token-based changed path cache . fsmonitor--daemon: define token-ids . fsmonitor--daemon: add pathname classification . fsmonitor: do not try to operate on bare repos . fsmonitor--daemon: implement 'start' command . fsmonitor--daemon: implement 'run' command . fsmonitor-fs-listen-macos: stub in backend for MacOS . fsmonitor-fs-listen-win32: stub in backend for Windows . t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon . fsmonitor--daemon: implement 'stop' and 'status' commands . fsmonitor--daemon: add a built-in fsmonitor daemon . fsmonitor: use IPC to query the builtin FSMonitor daemon . fsmonitor: config settings are repository-specific . help: include fsmonitor--daemon feature flag in version info . fsmonitor-ipc: create client routines for git-fsmonitor--daemon . fsmonitor--daemon: update fsmonitor documentation . fsmonitor--daemon: man page . simple-ipc: preparations for supporting binary messages. An attempt to write and ship with a watchman equivalent tailored for our use. Will be rerolled in pieces. * ab/config-based-hooks-base (2021-09-09) 36 commits . hooks: fix a TOCTOU in "did we run a hook?" heuristic . receive-pack: convert receive hooks to hook.h . post-update: use hook.h library . receive-pack: convert 'update' hook to hook.h . hooks: allow callers to capture output . run-command: allow capturing of collated output . reference-transaction: use hook.h to run hooks . hook tests: use a modern style for "pre-push" tests . hook tests: test for exact "pre-push" hook input . transport: convert pre-push hook to hook.h . hook: convert 'post-rewrite' hook in sequencer.c to hook.h . hook: provide stdin by string_list or callback . run-command: add stdin callback for parallelization . am: convert 'post-rewrite' hook to hook.h . hook: support passing stdin to hooks . run-command: allow stdin for run_processes_parallel . run-command: remove old run_hook_{le,ve}() hook API . receive-pack: convert push-to-checkout hook to hook.h . read-cache: convert post-index-change to use hook.h . commit: convert {pre-commit,prepare-commit-msg} hook to hook.h . git-p4: use 'git hook' to run hooks . send-email: use 'git hook run' for 'sendemail-validate' . git hook run: add an --ignore-missing flag . merge: convert post-merge to use hook.h . hooks: convert 'post-checkout' hook to hook library . am: convert applypatch to use hook.h . rebase: convert pre-rebase to use hook.h . gc: use hook library for pre-auto-gc hook . hook: add 'run' subcommand . hook-list.h: add a generated list of hooks, like config-list.h . hook.c users: use "hook_exists()" instead of "find_hook()" . hook.c: add a hook_exists() wrapper and use it in bugreport.c . hook.[ch]: move find_hook() from run-command.c to hook.c . Makefile: remove an out-of-date comment . Makefile: stop hardcoding {command,config}-list.h . Makefile: mark "check" target as .PHONY (this branch is used by es/config-based-hooks.) Restructuring of (a subset of) Emily's config-based-hooks series, to demonstrate that a series can be presented as a more logical and focused progression. Will be rerolled in pieces. * es/config-based-hooks (2021-09-09) 6 commits . hook: allow out-of-repo 'git hook' invocations . hook: include hooks from the config . hook: introduce "git hook list" . hook: allow parallel hook execution . fixup! hook: run a list of hooks instead . hook: run a list of hooks instead (this branch uses ab/config-based-hooks-base.) Revamp the hooks subsystem to allow multiple of them to trigger upon the same event and control via the configuration variables. * cb/make-compdb-fix (2021-09-22) 1 commit . Makefile: avoid breaking compilation database generation with DEVELOPER Adjust to recent change to use -pedantic for developer builds. Replaced by the ab/make-compdb-fix topic that uses the same approach as the ab/auto-depend-with-pedantic topic.