{"thread":{"id":"56212","subject":"What's cooking in git.git (Aug 2021, #02; Tue, 3)","startedAt":"2021-08-04T07:03:06Z","lastAt":"2021-08-30T21:03:42Z","messageCount":18,"participants":["Junio C Hamano","Ævar Arnfjörð Bjarmason","Derrick Stolee","SZEDER Gábor","Jeff King","Taylor Blau","Phillip Wood"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"431941","messageId":"xmqqfsvpr8t5.fsf@gitster.g","threadId":"56212","inReplyTo":null,"subject":"What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2021-08-04T07:03:02Z","receivedAt":"2021-08-04T07:03:06Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Here are the topics that have been cooking in my tree.  Commits\nprefixed with '+' are in 'next' (being in 'next' is a sign that a\ntopic is stable enough to be used and are candidate to be in a\nfuture release).  Commits prefixed with '-' are only in 'seen',\nwhich means nothing more than that I have found them of interest for\nsome reason (like \"it may have hard-to-resolve conflicts with\nanother topic already in flight\" or \"this may turn out to be\nuseful\").  Do not read too much into a topic being in (or not in)\n'seen'.  The ones marked with '.' do not appear in any of the\nintegration branches, but I am still holding onto them.\n\nA preview release Git 2.33-rc0 has been tagged.\n\nCopies of the source code to Git live in many repositories, and the\nfollowing is a list of the ones I push into or their mirrors.  Some\nrepositories have only a subset of branches.\n\nWith maint, master, next, seen, todo:\n\n\tgit://git.kernel.org/pub/scm/git/git.git/\n\tgit://repo.or.cz/alt-git.git/\n\thttps://kernel.googlesource.com/pub/scm/git/git/\n\thttps://github.com/git/git/\n\thttps://gitlab.com/git-vcs/git/\n\nWith all the integration branches and topics broken out:\n\n\thttps://github.com/gitster/git/\n\nEven though the preformatted documentation in HTML and man format\nare not sources, they are published in these repositories for\nconvenience (replace \"htmldocs\" with \"manpages\" for the manual\npages):\n\n\tgit://git.kernel.org/pub/scm/git/git-htmldocs.git/\n\thttps://github.com/gitster/git-htmldocs.git/\n\nRelease tarballs are available at:\n\n\thttps://www.kernel.org/pub/software/scm/git/\n\n--------------------------------------------------\n[Graduated to 'master']\n\n* ab/bundle-tests (2021-07-22) 2 commits\n  (merged to 'next' on 2021-07-22 at 053b5d0ecf)\n + bundle tests: use test_cmp instead of grep\n + bundle tests: use \">file\" not \": >file\"\n\n \"git bundle\" gained more test coverage.\n\n\n* fc/pull-no-rebase-merges-theirs-into-ours (2021-07-21) 1 commit\n  (merged to 'next' on 2021-07-28 at f8e6567082)\n + doc: pull: fix rebase=false documentation\n\n Documentation fix for \"git pull --rebase=no\".\n\n\n* jk/check-pack-valid-before-opening-bitmap (2021-07-23) 1 commit\n  (merged to 'next' on 2021-07-28 at 98d5b4dc68)\n + pack-bitmap: check pack validity when opening bitmap\n\n A race between repacking and using pack bitmaps has been corrected.\n\n\n* jk/config-env-doc (2021-07-20) 3 commits\n  (merged to 'next' on 2021-07-22 at 45616c831e)\n + doc/git-config: simplify \"override\" advice for FILES section\n + doc/git-config: clarify GIT_CONFIG environment variable\n + doc/git-config: explain --file instead of referring to GIT_CONFIG\n\n Documentation around GIT_CONFIG has been updated.\n\n\n* js/ci-check-whitespace-updates (2021-07-14) 2 commits\n  (merged to 'next' on 2021-07-22 at cdc9aa0622)\n + ci(check-whitespace): restrict to the intended commits\n + ci(check-whitespace): stop requiring a read/write token\n\n CI update.\n\n\n* jt/bulk-prefetch (2021-07-23) 2 commits\n  (merged to 'next' on 2021-07-28 at 26e28cab21)\n + cache-tree: prefetch in partial clone read-tree\n + unpack-trees: refactor prefetching code\n\n \"git read-tree\" had a codepath where blobs are fetched one-by-one\n from the promisor remote, which has been corrected to fetch in bulk.\n\n\n* pb/submodule-recurse-doc (2021-07-20) 1 commit\n  (merged to 'next' on 2021-07-22 at 4129e89833)\n + doc: clarify description of 'submodule.recurse'\n\n Doc update.\n\n\n* ps/perf-with-separate-output-directory (2021-07-02) 1 commit\n  (merged to 'next' on 2021-07-22 at af51ca0a39)\n + perf: fix when running with TEST_OUTPUT_DIRECTORY\n\n Test update.\n\n\n* tb/bitmap-type-filter-comment-fix (2021-07-20) 1 commit\n  (merged to 'next' on 2021-07-22 at 8428556149)\n + pack-bitmap: clarify comment in filter_bitmap_exclude_type()\n\n In-code comment update.\n\n--------------------------------------------------\n[New Topics]\n\n* ab/test-columns (2021-08-02) 3 commits\n - test-lib.sh: use GIT_TEST_COLUMNS over COLUMNS\n - test-lib-functions.sh: add a test_with_columns function\n - test-lib-functions.sh: rename test_must_fail_acceptable()\n\n\n* cb/reftable-fixup (2021-08-02) 3 commits\n - openbsd: allow reftable building with zlib 1.2.3\n - reftable: clarify zlib version dependency\n - fixup! Provide zlib's uncompress2 from compat/zlib-compat.c\n (this branch uses hn/reftable.)\n\n\n* cb/t7508-regexp-fix (2021-08-02) 1 commit\n - t7508: avoid non POSIX BRE\n\n\n* en/merge-strategy-docs (2021-08-03) 10 commits\n - Update error message and code comment\n - merge-strategies.txt: add coverage of the `ort` merge strategy\n - git-rebase.txt: correct out-of-date and misleading text about renames\n - merge-strategies.txt: fix simple capitalization error\n - merge-strategies.txt: avoid giving special preference to patience algorithm\n - merge-strategies.txt: do not imply using copy detection is desired\n - merge-strategies.txt: update wording for the resolve strategy\n - Documentation: edit awkward references to `git merge-recursive`\n - directory-rename-detection.txt: small updates due to merge-ort optimizations\n - git-rebase.txt: correct antiquated claims about --rebase-merges\n (this branch is used by en/ort-becomes-the-default.)\n\n\n* en/ort-becomes-the-default (2021-08-03) 2 commits\n - Change default merge backend from recursive to ort\n - Update docs for change of default merge backend\n (this branch uses en/merge-strategy-docs.)\n\n\n* js/log-protocol-version (2021-08-03) 1 commit\n - connect, protocol: log negotiated protocol version\n\n\n* ow/clone-bare-origin (2021-08-03) 1 commit\n - clone: Allow combining --bare and --origin\n\n--------------------------------------------------\n[Stalled]\n\n* gh/gitweb-branch-sort (2021-06-10) 1 commit\n - gitweb: use HEAD as secondary sort key in git_get_heads_list()\n\n Tie-break branches that point at the same object in the list of\n branches on GitWeb to show the one pointed at by HEAD early.\n\n Waiting for reviews.\n\n\n* lh/systemd-timers (2021-07-02) 3 commits\n - maintenance: add support for systemd timers on Linux\n - maintenance: `git maintenance run` learned `--scheduler=<scheduler>`\n - cache.h: Introduce a generic \"xdg_config_home_for(…)\" function\n\n \"git maintenance\" scheduler learned to use systemd timers as a\n possible backend.\n\n Waiting for reviews.\n\n\n* fc/completion-updates (2021-06-07) 4 commits\n - completion: bash: add correct suffix in variables\n - completion: bash: fix for multiple dash commands\n - completion: bash: fix for suboptions with value\n - completion: bash: fix prefix detection in branch.*\n\n Command line completion updates.\n\n Expecting a reroll.\n cf. <60be6f7fa4435_db80d208f2@natae.notmuch>\n\n\n* es/superproject-aware-submodules (2021-06-16) 5 commits\n - SQUASH???\n - submodule: cache superproject gitdir during 'update'\n - submodule: cache superproject gitdir during absorbgitdirs\n - introduce submodule.superprojectGitDir cache\n - t7400-submodule-basic: modernize inspect() helper\n\n A configuration variable in a submodule points at the location of\n the superproject it is bound to (RFC).\n\n Waiting for reviews.\n\n\n* en/zdiff3 (2021-06-15) 2 commits\n - update documentation for new zdiff3 conflictStyle\n - xdiff: implement a zealous diff3, or \"zdiff3\"\n\n \"Zealous diff3\" style of merge conflict presentation has been added.\n\n Expecting a reroll.\n cf. <CABPp-BE7-E03+x38EK-=AE5mwwdST+d50hiiud2eY2Nsf3rM5g@mail.gmail.com>\n\n\n* ao/p4-avoid-decoding (2021-04-12) 2 commits\n - git-p4: do not decode data from perforce by default\n - git-p4: avoid decoding more data from perforce\n\n \"git p4\" in Python-2 days used to accept a lot more kinds of data\n from Perforce server as uninterrupted byte sequence, but after\n switching to Python-3, too many things are expected to be in UTF-8,\n which broke traditional use cases.\n\n Waiting for reviews.\n\n\n* tv/p4-fallback-encoding (2021-04-30) 1 commit\n - git-p4: git-p4.fallbackEncoding to specify non UTF-8 charset\n\n \"git p4\" learns the fallbackEncoding configuration variable to\n safely accept changeset descriptions that aren't written in UTF-8.\n\n Waiting for reviews.\n\n--------------------------------------------------\n[Cooking]\n\n* tb/mingw-rmdir-symlink-to-directory (2021-08-02) 1 commit\n  (merged to 'next' on 2021-08-03 at a027d43cca)\n + mingw: align symlinks-related rmdir() behavior with Linux\n\n Windows rmdir() equivalent behaves differently from POSIX ones in\n that when used on a symbolic link that points at a directory, the\n target directory gets removed, which has been corrected.\n\n Will merge to 'master'.\n\n\n* ab/getcwd-test (2021-07-30) 1 commit\n  (merged to 'next' on 2021-08-02 at 22ecd02929)\n + t0001: fix broken not-quite getcwd(3) test in bed67874e2\n\n Portability test update.\n\n Will merge to 'master'.\n\n\n* ar/doc-markup-fix (2021-07-30) 1 commit\n  (merged to 'next' on 2021-08-02 at b99073fa75)\n + Documentation: render special characters correctly\n\n Doc mark-up fix.\n\n Will merge to 'master'.\n\n\n* rs/use-fspathhash (2021-07-30) 1 commit\n  (merged to 'next' on 2021-08-02 at 72c388e867)\n + use fspathhash() everywhere\n\n Code simplification.\n\n Will merge to 'master'.\n\n\n* jc/bisect-sans-show-branch (2021-07-28) 2 commits\n  (merged to 'next' on 2021-08-02 at 89a8d9a47b)\n + bisect: simplify return code from bisect_checkout()\n + bisect: do not run show-branch just to show the current commit\n\n \"git bisect\" spawned \"git show-branch\" only to pretty-print the\n title of the commit after checking out the next version to be\n tested; this has been rewritten in C.\n\n Will cook in 'next'.\n\n\n* jc/trivial-threeway-binary-merge (2021-07-28) 1 commit\n - ll-merge: teach ll_binary_merge() a trivial three-way merge\n\n The built-in merge driver for binary files learned to resolve\n trivial three-way merges (e.g. apply change, which turns A into B,\n to content A) by itself, which would help \"git apply --3way\" used\n when there is no need to use \"--3way\".\n\n Will discard.\n Replace with a trivial-merge logic in apply.c::try_treeway() or\n apply.c::three_way_merge().\n\n\n* ab/http-drop-old-curl (2021-07-30) 5 commits\n  (merged to 'next' on 2021-08-02 at b382ac042f)\n + http: rename CURLOPT_FILE to CURLOPT_WRITEDATA\n + http: drop support for curl < 7.19.3 and < 7.17.0 (again)\n + http: drop support for curl < 7.19.4\n + http: drop support for curl < 7.16.0\n + http: drop support for curl < 7.11.1\n\n Support for ancient versions of cURL library has been dropped.\n\n Will cook in 'next'.\n\n\n* ab/lib-subtest (2021-07-21) 10 commits\n - test-lib tests: assert 1 exit code, not non-zero\n - test-lib tests: refactor common part of check_sub_test_lib_test*()\n - test-lib tests: avoid subshell for \"test_cmp\" for readability\n - test-lib tests: get rid of copy/pasted mock test code\n - test-lib tests: don't provide a description for the sub-tests\n - test-lib tests: stop using a subshell in write_sub_test_lib_test()\n - test-lib tests: split up \"write and run\" into two functions\n - test-lib tests: move \"run_sub_test\" to a new lib-subtest.sh\n - Merge branch 'ps/t0000-output-directory-fix' into ab/lib-subtest\n - Merge branch 'jk/t0000-subtests-fix' into ab/lib-subtest\n\n Updates to the tests in t0000 to test the test framework.\n\n\n* ds/add-with-sparse-index (2021-07-29) 5 commits\n  (merged to 'next' on 2021-08-02 at ee3e1323bb)\n + add: remove ensure_full_index() with --renormalize\n + add: ignore outside the sparse-checkout in refresh()\n + pathspec: stop calling ensure_full_index\n + add: allow operating on a sparse-only index\n + t1092: test merge conflicts outside cone\n (this branch uses ds/commit-and-checkout-with-sparse-index.)\n\n \"git add\" can work better with the sparse index.\n\n Will cook in 'next'.\n\n\n* ab/only-single-progress-at-once (2021-07-23) 8 commits\n - progress.c: add & assert a \"global_progress\" variable\n - pack-bitmap-write.c: add a missing stop_progress()\n - progress.c: add temporary variable from progress struct\n - progress.c: stop eagerly fflush(stderr) when not a terminal\n - progress.c: call progress_interval() from progress_test_force_update()\n - progress.c: move signal handler functions lower\n - progress.c tests: test some invalid usage\n - progress.c tests: make start/stop verbs on stdin\n\n Further tweaks on progress API.\n\n\n* ab/progress-users-adjust-counters (2021-07-23) 3 commits\n - entry: show finer-grained counter in \"Filtering content\" progress line\n - midx: don't provide a total for QSORT() progress\n - commit-graph: fix bogus counter in \"Scanning merged commits\" progress line\n\n The code to show progress indicator in a few codepaths did not\n cover between 0-100%, which has been corrected.\n\n Waiting for a clarification.\n cf. <xmqqbl6slmer.fsf@gitster.g>\n\n\n* ar/submodule-add-config (2021-07-28) 1 commit\n - submodule--helper: introduce add-config subcommand\n (this branch uses ar/submodule-add.)\n\n Large part of \"git submodule add\" gets rewritten in C.\n\n\n* en/ort-perf-batch-15 (2021-08-03) 9 commits\n - merge-ort: remove compile-time ability to turn off usage of memory pools\n - merge-ort: reuse path strings in pool_alloc_filespec\n - merge-ort: store filepairs and filespecs in our mem_pool\n - diffcore-rename, merge-ort: add wrapper functions for filepair alloc/dealloc\n - merge-ort: switch our strmaps over to using memory pools\n - merge-ort: set up a memory pool\n - merge-ort: add pool_alloc, pool_calloc, and pool_strndup wrappers\n - diffcore-rename: use a mem_pool for exact rename detection's hashmap\n - merge-ort: rename str{map,intmap,set}_func()\n (this branch uses en/ort-perf-batch-14.)\n\n Final batch for \"merge -sort\" optimization.\n\n Will merge to 'next'.\n\n\n* pb/merge-autostash-more (2021-07-23) 4 commits\n  (merged to 'next' on 2021-07-30 at bfc8b41932)\n + merge: apply autostash if merge strategy fails\n + merge: apply autostash if fast-forward fails\n + Documentation: define 'MERGE_AUTOSTASH'\n + merge: add missing word \"strategy\" to a message\n\n The local changes stashed by \"git merge --autostash\" were lost when\n the merge failed in certain ways, which has been corrected.\n\n Will merge to 'master'.\n\n\n* ah/plugleaks (2021-07-26) 12 commits\n  (merged to 'next' on 2021-07-28 at fa15f6d1f4)\n + reset: clear_unpack_trees_porcelain to plug leak\n + builtin/rebase: fix options.strategy memory lifecycle\n + builtin/merge: free found_ref when done\n + builtin/mv: free or UNLEAK multiple pointers at end of cmd_mv\n + convert: release strbuf to avoid leak\n + read-cache: call diff_setup_done to avoid leak\n + ref-filter: also free head for ATOM_HEAD to avoid leak\n + diffcore-rename: move old_dir/new_dir definition to plug leak\n + builtin/for-each-repo: remove unnecessary argv copy to plug leak\n + builtin/submodule--helper: release unused strbuf to avoid leak\n + environment: move strbuf into block to plug leak\n + fmt-merge-msg: free newly allocated temporary strings when done\n\n Leak plugging.\n\n Will merge to 'master'.\n\n\n* js/expand-runtime-prefix (2021-07-26) 6 commits\n - expand_user_path: allow in-flight topics to keep using the old name\n - interpolate_path(): allow specifying paths relative to the runtime prefix\n - Use a better name for the function interpolating paths\n - expand_user_path(): clarify the role of the `real_home` parameter\n - expand_user_path(): remove stale part of the comment\n - tests: exercise the RUNTIME_PREFIX feature\n\n Pathname expansion (like \"~username/\") learned a way to specify a\n location relative to Git installation (e.g. its $sharedir which is\n $(prefix)/share), with \"%(prefix)\".\n\n Will merge to 'next'.\n\n\n* zh/cherry-pick-help-is-only-for-sequencer (2021-08-03) 2 commits\n - cherry-pick: use better advice message\n - cherry-pick: fix bug when used with GIT_CHERRY_PICK_HELP\n\n \"git cherry-pick\" loses its state file when a stray\n GIT_CHERRY_PICK_HELP environment is present, which has been\n corrected.\n\n Will merge to 'next'.\n\n\n* dt/submodule-diff-fixes (2021-08-02) 3 commits\n - diff --submodule=diff: Don't print failure message twice\n - diff --submodule=diff: do not fail on ever-initialied deleted submodules\n - t4060: remove unused variable\n\n \"git diff --submodule=diff\" showed failure from run_command() when\n trying to run diff inside a submodule, when the user manually\n removes the submodule directory.\n\n Comments?\n\n\n* fs/ssh-signing (2021-08-03) 9 commits\n - ssh signing: test that gpg fails for unkown keys\n - ssh signing: tests for logs, tags & push certs\n - ssh signing: duplicate t7510 tests for commits\n - ssh signing: verify signatures using ssh-keygen\n - ssh signing: provide a textual signing_key_id\n - ssh signing: retrieve a default key from ssh-agent\n - ssh signing: add ssh key format and signing code\n - ssh signing: add test prereqs\n - ssh signing: preliminary refactoring and clean-up\n\n Use ssh public crypto for object and push-cert signing.\n\n Comments?\n\n\n* hn/refs-test-cleanup (2021-08-02) 11 commits\n - t6001: avoid direct file system access\n - t6500: use \"ls -1\" to snapshot ref database state\n - t7064: use update-ref -d to remove upstream branch\n - t1410: mark test as REFFILES\n - t1405: mark test for 'git pack-refs' as REFFILES\n - t1405: use 'git reflog exists' to check reflog existence\n - t2402: use ref-store test helper to create broken symlink\n - t3320: use git-symbolic-ref rather than filesystem access\n - t6120: use git-update-ref rather than filesystem access\n - t1503: mark symlink test as REFFILES\n - t6050: use git-update-ref rather than filesystem access\n\n A handful of tests that assumed implementation details of files\n backend for refs have been cleaned up.\n\n Will merge to 'next'.\n\n\n* hn/reftable (2021-07-20) 26 commits\n - t7004: avoid direct filesystem access\n - t1404: annotate test cases with REFFILES\n - t1401,t2011: parameterize HEAD.lock for REFFILES\n - t1301: document what needs to be done for reftable\n - Add \"test-tool dump-reftable\" command.\n - git-prompt: prepare for reftable refs backend\n - refs: RFC: Reftable support for git-core\n - reftable: add dump utility\n - reftable: implement stack, a mutable database of reftable files.\n - reftable: implement refname validation\n - reftable: add merged table view\n - reftable: add a heap-based priority queue for reftable records\n - reftable: reftable file level tests\n - reftable: read reftable files\n - reftable: generic interface to tables\n - reftable: write reftable files\n - reftable: a generic binary tree implementation\n - reftable: reading/writing blocks\n - Provide zlib's uncompress2 from compat/zlib-compat.c\n - reftable: (de)serialization for the polymorphic record type.\n - reftable: add blocksource, an abstraction for random access reads\n - reftable: utility functions\n - reftable: add error related functionality\n - reftable: RFC: add LICENSE\n - init-db: set the_repository->hash_algo early on\n - hash.h: provide constants for the hash IDs\n (this branch is used by cb/reftable-fixup.)\n\n The \"reftable\" backend for the refs API.\n\n Seems to break CI jobs in 'seen'.\n\n\n* ab/refs-files-cleanup (2021-08-02) 11 commits\n - refs/files: remove unused \"errno != ENOTDIR\" condition\n - refs/files: remove unused \"errno == EISDIR\" code\n - refs/files: remove unused \"oid\" in lock_ref_oid_basic()\n - reflog expire: don't lock reflogs using previously seen OID\n - refs/files: add a comment about refs_reflog_exists() call\n - refs: make repo_dwim_log() accept a NULL oid\n - refs/debug: re-indent argument list for \"prepare\"\n - refs/files: remove unused \"skip\" in lock_raw_ref() too\n - refs/files: remove unused \"extras/skip\" in lock_ref_oid_basic()\n - refs/files: remove unused REF_DELETING in lock_ref_oid_basic()\n - refs/packet: add missing BUG() invocations to reflog callbacks\n (this branch is used by hn/refs-errno-cleanup.)\n\n Will merge to 'next'.\n\n\n* en/pull-conflicting-options (2021-07-22) 8 commits\n - pull: fix handling of multiple heads\n - pull: update docs & code for option compatibility with rebasing\n - pull: abort by default when fast-forwarding is not possible\n - pull: make --rebase and --no-rebase override pull.ff=only\n - pull: since --ff-only overrides, handle it first\n - pull: abort if --ff-only is given and fast-forwarding is impossible\n - t7601: add tests of interactions with multiple merge heads and config\n - t7601: test interaction of merge/rebase/fast-forward flags and options\n\n \"git pull\" had various corner cases that were not well thought out\n around its --rebase backend, e.g. \"git pull --ff-only\" did not stop\n but went ahead and rebased when the history on other side is not a\n descendant of our history.  The series tries to fix them up.\n\n Comments?\n\n\n* bc/inactive-submodules (2021-07-02) 1 commit\n - submodule: mark submodules with update=none as inactive\n\n Usability update for inactive submodules.\n\n Comments?\n cf. <fc5ec100-1d42-4199-236e-7a99c9218f38@gmail.com>\n cf. <bf1893ee-6973-d8b2-659e-bb239a0a9ae2@gmail.com>\n\n\n* en/ort-perf-batch-14 (2021-07-20) 7 commits\n  (merged to 'next' on 2021-07-30 at 89cfdc4513)\n + merge-ort: restart merge with cached renames to reduce process entry cost\n + merge-ort: avoid recursing into directories when we don't need to\n + merge-ort: defer recursing into directories when merge base is matched\n + merge-ort: add a handle_deferred_entries() helper function\n + merge-ort: add data structures for allowable trivial directory resolves\n + merge-ort: add some more explanations in collect_merge_info_callback()\n + merge-ort: resolve paths early when we have sufficient information\n (this branch is used by en/ort-perf-batch-15.)\n\n Further optimization on \"merge -sort\" backend.\n\n Will merge to 'master'.\n\n\n* cf/fetch-set-upstream-while-detached (2021-07-06) 1 commit\n - fetch: fix segfault on --set-upstream while on a detached HEAD\n\n \"git fetch --set-upstream\" while on detached HEAD segfaulted\n instead of noticing that such an operation did not make sense.\n\n Expecting a reroll.\n cf. <xmqqsg0ri5mq.fsf@gitster.g>\n\n\n* ab/bundle-doc (2021-08-02) 4 commits\n - bundle doc: replace \"basis\" with \"prerequsite(s)\"\n - bundle doc: elaborate on rev<->ref restriction\n - bundle doc: elaborate on object prerequisites\n - bundle doc: rewrite the \"DESCRIPTION\" section\n\n Doc update.\n\n Will merge to 'next'.\n\n\n* ab/pack-stdin-packs-fix (2021-07-09) 2 commits\n - pack-objects: fix segfault in --stdin-packs option\n - pack-objects tests: cover blindspots in stdin handling\n\n Input validation of \"git pack-objects --stdin-packs\" has been\n corrected.\n\n Will merge to 'next'.\n\n\n* ds/commit-and-checkout-with-sparse-index (2021-07-20) 7 commits\n  (merged to 'next' on 2021-07-30 at 52ed1b0091)\n + unpack-trees: resolve sparse-directory/file conflicts\n + t1092: document bad 'git checkout' behavior\n + checkout: stop expanding sparse indexes\n + sparse-index: recompute cache-tree\n + commit: integrate with sparse-index\n + p2000: compress repo names\n + p2000: add 'git checkout -' test and decrease depth\n (this branch is used by ds/add-with-sparse-index.)\n\n \"git checkout\" and \"git commit\" learn to work without unnecessarily\n expanding sparse indexes.\n\n Will merge to 'master'.\n\n\n* jt/push-negotiation-fixes (2021-07-15) 3 commits\n - fetch: die on invalid --negotiation-tip hash\n - send-pack: fix push nego. when remote has refs\n - send-pack: fix push.negotiate with remote helper\n\n Bugfix for common ancestor negotiation recently introduced in \"git\n push\" codepath.\n\n Needs review.\n\n\n* ab/make-tags-cleanup (2021-07-22) 5 commits\n - Makefile: normalize clobbering & xargs for tags targets\n - Makefile: the \"cscope\" target always creates a \"cscope.out\"\n - Makefile: don't use \"FORCE\" for tags targets\n - Makefile: add QUIET_GEN to \"cscope\" target\n - Makefile: move \".PHONY: cscope\" near its target\n\n Build clean-up for \"make tags\" and friends.\n\n Expecting a reroll.\n 4/5 may want a minor tweak to the log and the patch text but otherwise looks good.\n\n\n* tb/multi-pack-bitmaps (2021-07-27) 25 commits\n - p5326: perf tests for MIDX bitmaps\n - p5310: extract full and partial bitmap tests\n - midx: respect 'GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP'\n - t7700: update to work with MIDX bitmap test knob\n - t5319: don't write MIDX bitmaps in t5319\n - t5310: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP\n - t0410: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP\n - t5326: test multi-pack bitmap behavior\n - t/helper/test-read-midx.c: add --checksum mode\n - t5310: move some tests to lib-bitmap.sh\n - pack-bitmap: write multi-pack bitmaps\n - pack-bitmap: read multi-pack bitmaps\n - pack-bitmap.c: avoid redundant calls to try_partial_reuse\n - pack-bitmap.c: introduce 'bitmap_is_preferred_refname()'\n - pack-bitmap.c: introduce 'nth_bitmap_object_oid()'\n - pack-bitmap.c: introduce 'bitmap_num_objects()'\n - midx: avoid opening multiple MIDXs when writing\n - midx: close linked MIDXs, avoid leaking memory\n - midx: infer preferred pack when not given one\n - midx: reject empty `--preferred-pack`'s\n - midx: clear auxiliary .rev after replacing the MIDX\n - Documentation: describe MIDX-based bitmaps\n - pack-bitmap-write.c: free existing bitmaps\n - pack-bitmap-write.c: gracefully fail to write non-closed bitmaps\n - pack-bitmap.c: harden 'test_bitmap_walk()' to check type bitmaps\n\n The reachability bitmap file used to be generated only for a single\n pack, but now we've learned to generate bitmaps for history that\n span across multiple packfiles.\n\n Comments?\n\n\n* ab/config-based-hooks-base (2021-08-03) 36 commits\n - hooks: fix a TOCTOU in \"did we run a hook?\" heuristic\n - receive-pack: convert receive hooks to hook.h\n - post-update: use hook.h library\n - receive-pack: convert 'update' hook to hook.h\n - hooks: allow callers to capture output\n - run-command: allow capturing of collated output\n - reference-transaction: use hook.h to run hooks\n - hook tests: use a modern style for \"pre-push\" tests\n - hook tests: test for exact \"pre-push\" hook input\n - transport: convert pre-push hook to hook.h\n - hook: convert 'post-rewrite' hook in sequencer.c to hook.h\n - hook: provide stdin by string_list or callback\n - run-command: add stdin callback for parallelization\n - am: convert 'post-rewrite' hook to hook.h\n - hook: support passing stdin to hooks\n - run-command: allow stdin for run_processes_parallel\n - run-command: remove old run_hook_{le,ve}() hook API\n - receive-pack: convert push-to-checkout hook to hook.h\n - read-cache: convert post-index-change to use hook.h\n - commit: convert {pre-commit,prepare-commit-msg} hook to hook.h\n - git-p4: use 'git hook' to run hooks\n - send-email: use 'git hook run' for 'sendemail-validate'\n - git hook run: add an --ignore-missing flag\n - merge: convert post-merge to use hook.h\n - hooks: convert 'post-checkout' hook to hook library\n - am: convert applypatch to use hook.h\n - rebase: convert pre-rebase to use hook.h\n - gc: use hook library for pre-auto-gc hook\n - hook: add 'run' subcommand\n - hook-list.h: add a generated list of hooks, like config-list.h\n - hook.c users: use \"hook_exists()\" insted of \"find_hook()\"\n - hook.c: add a hook_exists() wrapper and use it in bugreport.c\n - hook.[ch]: move find_hook() to this new library\n - Makefile: remove an out-of-date comment\n - Makefile: stop hardcoding {command,config}-list.h\n - Makefile: mark \"check\" target as .PHONY\n\n Restructuring of (a subset of) Emily's config-based-hooks series,\n to demonstrate that a series can be presented as a more logical and\n focused progression.\n\n Waiting for reviews.\n\n\n* ab/serve-cleanup (2021-08-03) 13 commits\n - fixup! {upload,receive}-pack tests: add --advertise-refs tests\n - serve.[ch]: don't pass \"struct strvec *keys\" to commands\n - upload-pack.c: convert to new serve.c \"startup\" config cb\n - upload-pack: document and rename --advertise-refs\n - {upload,receive}-pack tests: add --advertise-refs tests\n - serve.[ch]: remove \"serve_options\", split up --advertise-refs code\n - serve.c: move version line to advertise_capabilities()\n - serve: add support for a \"startup\" git_config() callback\n - serve.c: add call_{advertise,command}() indirection\n - serve: use designated initializers\n - transport: use designated initializers\n - transport: rename \"fetch\" in transport_vtable to \"fetch_refs\"\n - serve: mark has_capability() as static\n\n Code clean-up around \"git serve\".\n\n\n* pw/diff-color-moved-fix (2021-07-20) 12 commits\n - diff --color-moved: intern strings\n - diff: use designated initializers for emitted_diff_symbol\n - diff --color-moved-ws=allow-indentation-change: improve hash lookups\n - diff --color-moved: stop clearing potential moved blocks\n - diff --color-moved: shrink potential moved blocks as we go\n - diff --color-moved: unify moved block growth functions\n - diff --color-moved: call comparison function directly\n - diff --color-moved-ws=allow-indentation-change: simplify and optimize\n - diff: simplify allow-indentation-change delta calculation\n - diff --color-moved: avoid false short line matches and bad zerba coloring\n - diff --color-moved=zebra: fix alternate coloring\n - diff --color-moved: add perf tests\n\n Long-overdue correctness and performance update to \"diff\n --color-moved\" feature.\n\n Will merge to 'next'.\n\n\n* hn/refs-errno-cleanup (2021-08-02) 7 commits\n - refs: make errno output explicit for refs_resolve_ref_unsafe\n - refs: explicitly return failure_errno from parse_loose_ref_contents\n - refs: add failure_errno to refs_read_raw_ref() signature\n - refs: make errno output explicit for read_raw_ref_fn\n - refs/files-backend: stop setting errno from lock_ref_oid_basic\n - refs: remove EINVAL errno output from specification of read_raw_ref_fn\n - refs file backend: move raceproof_create_file() here\n (this branch uses ab/refs-files-cleanup.)\n\n Futz with the way 'errno' is relied on in the refs API to carry the\n failure modes up the callchain.\n\n Will merge to 'next'.\n\n\n* ab/test-tool-cache-cleanup (2021-06-08) 4 commits\n - read-cache perf: add a perf test for refresh_index()\n - test-tool: migrate read-cache-again to parse_options()\n - test-tool: migrate read-cache-perf to parse_options()\n - test-tool: split up test-tool read-cache\n\n Test code shuffling.\n\n Waiting for reviews.\n\n\n* ab/pack-objects-stdin (2021-07-09) 5 commits\n - pack-objects.c: make use of REV_INFO_STDIN_LINE_PROCESS\n - pack-objects.c: do stdin parsing via revision.c's API\n - revision.[ch]: add a \"handle_stdin_line\" API\n - revision.h: refactor \"disable_stdin\" and \"read_from_stdin\"\n - upload-pack: run is_repository_shallow() before setup_revisions()\n\n Introduce handle_stdin_line callback to revision API and uses it.\n\n\n* ar/submodule-add (2021-07-26) 5 commits\n  (merged to 'next' on 2021-07-28 at 7d315a0f67)\n + submodule: drop unused sm_name parameter from show_fetch_remotes()\n  (merged to 'next' on 2021-07-22 at b8b636c9a1)\n + submodule--helper: introduce add-clone subcommand\n + submodule--helper: refactor module_clone()\n + submodule: prefix die messages with 'fatal'\n + t7400: test failure to add submodule in tracked path\n (this branch is used by ar/submodule-add-config.)\n\n Rewrite of \"git submodule\" in C continues.\n\n Will merge to 'master'.\n\n\n* ab/update-submitting-patches (2021-07-22) 2 commits\n  (merged to 'next' on 2021-07-30 at 9ae2de7f7a)\n + SubmittingPatches: replace discussion of Travis with GitHub Actions\n + SubmittingPatches: move discussion of Signed-off-by above \"send\"\n\n Reorganize and update the SubmitingPatches document.\n\n Will merge to 'master'.\n\n\n* zh/ref-filter-raw-data (2021-07-26) 6 commits\n - ref-filter: add %(rest) atom\n - ref-filter: use non-const ref_format in *_atom_parser()\n - ref-filter: --format=%(raw) support --perl\n - ref-filter: add %(raw) atom\n - ref-filter: add obj-type check in grab contents\n - Merge branch 'zh/cat-file-batch-fix' into zh/ref-filter-raw-data\n\n Prepare the \"ref-filter\" machinery that drives the \"--format\"\n option of \"git for-each-ref\" and its friends to be used in \"git\n cat-file --batch\".\n\n Will merge to 'next'.\n\n\n* jh/builtin-fsmonitor (2021-07-12) 35 commits\n - BANDAID: sparse fixes\n - t7527: test FS event reporing on MacOS WRT case and Unicode\n - fsmonitor: handle shortname for .git\n - t7527: test status with untracked-cache and fsmonitor--daemon\n - fsmonitor: force update index after large responses\n - fsmonitor: enhance existing comments\n - fsmonitor--daemon: use a cookie file to sync with file system\n - fsmonitor--daemon: periodically truncate list of modified files\n - t7527: create test for fsmonitor--daemon\n - t/perf/p7519: add fsmonitor--daemon test cases\n - t/perf: avoid copying builtin fsmonitor files into test repo\n - t/perf/p7519: speed up test using \"test-tool touch\"\n - t/helper/test-touch: add helper to touch a series of files\n - fsmonitor--daemon: implement handle_client callback\n - fsmonitor-fs-listen-macos: implement FSEvent listener on MacOS\n - fsmonitor-fs-listen-macos: add macos header files for FSEvent\n - fsmonitor-fs-listen-win32: implement FSMonitor backend on Windows\n - fsmonitor--daemon: create token-based changed path cache\n - fsmonitor--daemon: define token-ids\n - fsmonitor--daemon: add pathname classification\n - fsmonitor: do not try to operate on bare repos\n - fsmonitor--daemon: implement 'start' command\n - fsmonitor--daemon: implement 'run' command\n - fsmonitor-fs-listen-macos: stub in backend for MacOS\n - fsmonitor-fs-listen-win32: stub in backend for Windows\n - t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon\n - fsmonitor--daemon: implement 'stop' and 'status' commands\n - fsmonitor--daemon: add a built-in fsmonitor daemon\n - fsmonitor: use IPC to query the builtin FSMonitor daemon\n - fsmonitor: config settings are repository-specific\n - help: include fsmonitor--daemon feature flag in version info\n - fsmonitor-ipc: create client routines for git-fsmonitor--daemon\n - fsmonitor--daemon: update fsmonitor documentation\n - fsmonitor--daemon: man page\n - simple-ipc: preparations for supporting binary messages.\n\n An attempt to write and ship with a watchman equivalent tailored\n for our use.\n\n Expecting a reroll post 2.33 release.\n\n\n* es/trace2-log-parent-process-name (2021-07-22) 2 commits\n - tr2: log parent process name\n - tr2: make process info collection platform-generic\n\n trace2 logs learned to show parent process name to see in what\n context Git was invoked.\n\n Will merge to 'next'.\n\n\n* ab/fsck-unexpected-type (2021-07-12) 21 commits\n - fsck: report invalid object type-path combinations\n - fsck: report invalid types recorded in objects\n - object-store.h: move read_loose_object() below 'struct object_info'\n - fsck: don't hard die on invalid object types\n - object-file.c: return -2 on \"header too long\" in unpack_loose_header()\n - object-file.c: return -1, not \"status\" from unpack_loose_header()\n - object-file.c: guard against future bugs in loose_object_info()\n - object-file.c: stop dying in parse_loose_header()\n - object-file.c: split up ternary in parse_loose_header()\n - object-file.c: simplify unpack_loose_short_header()\n - object-file.c: add missing braces to loose_object_info()\n - object-file.c: make parse_loose_header_extended() public\n - object-file.c: don't set \"typep\" when returning non-zero\n - cache.h: move object functions to object-store.h\n - cat-file tests: test for current --allow-unknown-type behavior\n - cat-file tests: add corrupt loose object test\n - rev-list tests: test for behavior with invalid object types\n - cat-file tests: test that --allow-unknown-type isn't on by default\n - cat-file tests: test for missing object with -t and -s\n - fsck tests: add test for fsck-ing an unknown type\n - fsck tests: refactor one test to use a sub-repo\n\n \"git fsck\" has been taught to report mismatch between expected and\n actual types of an object better.\n\n Needs review.\n\n--------------------------------------------------\n[Discarded]\n\n* ab/doc-retire-alice-bob (2021-06-16) 6 commits\n . pack-protocol doc: use \"www-data\" in place of \"alice\"\n . doc: replace \"alice\" and \"bob\" with \"jdoe\" and \"msmith\"\n . fast-import doc: change \"bob\" in an example to \"file.txt\"\n . daemon doc + code comments: reword \"alice\" example\n . gitcvs-migration doc: replace \"alice\" and \"bob\" with \"you\" and \"www-data\"\n . gittutorial doc: replace \"alice\" and \"bob\" with \"you\" and \"www-data\"\n\n Documentation update to avoid Alice and Bob in contexts where Eve\n does not appear in.\n\n Will discard.\n Let's shelve this one for now, as it does not seem to solve any\n real problems (other than ceasing to use Alice and Bob in contexts\n that do not call for Eve).\n\n\n* hn/refs-test-cleanup-contd (2021-07-22) 11 commits\n  (merged to 'next' on 2021-07-28 at dd3af04939)\n + t6001: avoid direct file system access\n + t6500: use \"ls -1\" to snapshot ref database state\n + t7064: use update-ref -d to remove upstream branch\n + t1410: mark test as REFFILES\n + t1405: mark test for 'git pack-refs' as REFFILES\n + t1405: use 'git reflog exists' to check reflog existence\n  (merged to 'next' on 2021-07-22 at 2ab8bc259a)\n + t2402: use ref-store test helper to create broken symlink\n + t3320: use git-symbolic-ref rather than filesystem access\n + t6120: use git-update-ref rather than filesystem access\n + t1503: mark symlink test as REFFILES\n + t6050: use git-update-ref rather than filesystem access\n\n Absorbed by the hn/refs-test-cleanup topic.\n\n\n* os/bisect-runs-show-branch-without-pager (2021-07-27) 1 commit\n - bisect: disable pager while invoking show-branch\n\n When \"git bisect\" spawns \"git show-branch\" to pretty-print the\n title of the commit to be tested, it could have invoked user's\n pager if user configured to run pager while running show-branch.\n The invocation of show-branch has been changed to disable pager,\n even if one is configured.\n\n Will discard.\n This probably is unnecessary with the rewrite to get rid of the\n show-branch invocation altogether.\n\n\n* es/config-based-hooks (2021-07-20) 9 commits\n - hook: implement hookcmd.<name>.skip\n - hook: teach 'hookcmd' config to alias hook scripts\n - hook: allow out-of-repo 'git hook' invocations\n - hook: include hooks from the config\n - hook: allow running non-native hooks\n - hook: treat hookdir hook specially\n - hook: introduce \"git hook list\"\n - hook: allow parallel hook execution\n - hook: run a list of hooks instead\n\n Discarded to give room for updated ab/config-based-hooks-base.\n"},{"id":"431949","messageId":"87wnp1mqv2.fsf@evledraar.gmail.com","threadId":"56212","inReplyTo":"xmqqfsvpr8t5.fsf@gitster.g","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-08-04T10:22:44Z","receivedAt":"2021-08-04T10:44:24Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Wed, Aug 04 2021, Junio C Hamano wrote:\n\nComments on my topics & other things I've got feedback on:\n\n> * ab/bundle-tests (2021-07-22) 2 commits\n>   (merged to 'next' on 2021-07-22 at 053b5d0ecf)\n>  + bundle tests: use test_cmp instead of grep\n>  + bundle tests: use \">file\" not \": >file\"\n>\n>  \"git bundle\" gained more test coverage.\n\nThanks!\n\n> * ab/test-columns (2021-08-02) 3 commits\n>  - test-lib.sh: use GIT_TEST_COLUMNS over COLUMNS\n>  - test-lib-functions.sh: add a test_with_columns function\n>  - test-lib-functions.sh: rename test_must_fail_acceptable()\n\nWe're going to need this or another solution to the v2.33.0-rc0\nregression in c49a177beca (test-lib.sh: set COLUMNS=80 for --verbose\nrepeatability, 2021-06-29) before the final v2.33.0.\n\nI think whatever we do we should act on that soon so it's in master\nbefore rc1, or at least in rc1, so we can get testing of the fix well\nbefore the release...\n\n> * ab/getcwd-test (2021-07-30) 1 commit\n>   (merged to 'next' on 2021-08-02 at 22ecd02929)\n>  + t0001: fix broken not-quite getcwd(3) test in bed67874e2\n>\n>  Portability test update.\n>\n>  Will merge to 'master'.\n\nThanks!\n\n> * ab/http-drop-old-curl (2021-07-30) 5 commits\n>   (merged to 'next' on 2021-08-02 at b382ac042f)\n>  + http: rename CURLOPT_FILE to CURLOPT_WRITEDATA\n>  + http: drop support for curl < 7.19.3 and < 7.17.0 (again)\n>  + http: drop support for curl < 7.19.4\n>  + http: drop support for curl < 7.16.0\n>  + http: drop support for curl < 7.11.1\n>\n>  Support for ancient versions of cURL library has been dropped.\n>\n>  Will cook in 'next'.\n\nMakes sense, thanks. So post-release.\n\n> * ab/lib-subtest (2021-07-21) 10 commits\n>  - test-lib tests: assert 1 exit code, not non-zero\n>  - test-lib tests: refactor common part of check_sub_test_lib_test*()\n>  - test-lib tests: avoid subshell for \"test_cmp\" for readability\n>  - test-lib tests: get rid of copy/pasted mock test code\n>  - test-lib tests: don't provide a description for the sub-tests\n>  - test-lib tests: stop using a subshell in write_sub_test_lib_test()\n>  - test-lib tests: split up \"write and run\" into two functions\n>  - test-lib tests: move \"run_sub_test\" to a new lib-subtest.sh\n>  - Merge branch 'ps/t0000-output-directory-fix' into ab/lib-subtest\n>  - Merge branch 'jk/t0000-subtests-fix' into ab/lib-subtest\n>\n>  Updates to the tests in t0000 to test the test framework.\n>\n> [...]\n>\n> * ab/only-single-progress-at-once (2021-07-23) 8 commits\n>  - progress.c: add & assert a \"global_progress\" variable\n>  - pack-bitmap-write.c: add a missing stop_progress()\n>  - progress.c: add temporary variable from progress struct\n>  - progress.c: stop eagerly fflush(stderr) when not a terminal\n>  - progress.c: call progress_interval() from progress_test_force_update()\n>  - progress.c: move signal handler functions lower\n>  - progress.c tests: test some invalid usage\n>  - progress.c tests: make start/stop verbs on stdin\n>\n>  Further tweaks on progress API.\n\nThanks, it would be great to have both of these move soon after the\nrelease. I think the chances of unexpected breakage here are minimal\ngiven their nature.\n\n> * ab/progress-users-adjust-counters (2021-07-23) 3 commits\n>  - entry: show finer-grained counter in \"Filtering content\" progress line\n>  - midx: don't provide a total for QSORT() progress\n>  - commit-graph: fix bogus counter in \"Scanning merged commits\" progress line\n>\n>  The code to show progress indicator in a few codepaths did not\n>  cover between 0-100%, which has been corrected.\n>\n>  Waiting for a clarification.\n>  cf. <xmqqbl6slmer.fsf@gitster.g>\n\nI think that what SZEDER had to say in\nhttps://lore.kernel.org/git/20210802220506.GF23408@szeder.dev/ should be\nenough to clear this to proceed forward.\n\nI.e. this topic is missing his subsequent\nhttps://lore.kernel.org/git/20210620200303.2328957-7-szeder.dev@gmail.com/\npatch.\n\nBut as he notes we only encounter this in one of our tests (and are\nunlikely to in the wild).\n\nBetween this topic and my ab/only-single-progress-at-once I think we're\nbetter off getting those basic fixes in before proceeding with any\ntricky additions of BUG() and other assertions, per what I noted in\nhttps://public-inbox.org/git/cover-00.25-00000000000-20210623T155626Z-avarab@gmail.com/;\ni.e. that some of those assertions were themselves buggy.\n\n> * ab/refs-files-cleanup (2021-08-02) 11 commits\n>  - refs/files: remove unused \"errno != ENOTDIR\" condition\n>  - refs/files: remove unused \"errno == EISDIR\" code\n>  - refs/files: remove unused \"oid\" in lock_ref_oid_basic()\n>  - reflog expire: don't lock reflogs using previously seen OID\n>  - refs/files: add a comment about refs_reflog_exists() call\n>  - refs: make repo_dwim_log() accept a NULL oid\n>  - refs/debug: re-indent argument list for \"prepare\"\n>  - refs/files: remove unused \"skip\" in lock_raw_ref() too\n>  - refs/files: remove unused \"extras/skip\" in lock_ref_oid_basic()\n>  - refs/files: remove unused REF_DELETING in lock_ref_oid_basic()\n>  - refs/packet: add missing BUG() invocations to reflog callbacks\n>  (this branch is used by hn/refs-errno-cleanup.)\n>\n>  Will merge to 'next'.\n\nThanks!\n\n> * ab/bundle-doc (2021-08-02) 4 commits\n>  - bundle doc: replace \"basis\" with \"prerequsite(s)\"\n>  - bundle doc: elaborate on rev<->ref restriction\n>  - bundle doc: elaborate on object prerequisites\n>  - bundle doc: rewrite the \"DESCRIPTION\" section\n>\n>  Doc update.\n>\n>  Will merge to 'next'.\n\nYay, we finally got this in good enough shape :)\n\n> * ab/pack-stdin-packs-fix (2021-07-09) 2 commits\n>  - pack-objects: fix segfault in --stdin-packs option\n>  - pack-objects tests: cover blindspots in stdin handling\n>\n>  Input validation of \"git pack-objects --stdin-packs\" has been\n>  corrected.\n>\n>  Will merge to 'next'.\n\nThanks!\n\n> * ab/make-tags-cleanup (2021-07-22) 5 commits\n>  - Makefile: normalize clobbering & xargs for tags targets\n>  - Makefile: the \"cscope\" target always creates a \"cscope.out\"\n>  - Makefile: don't use \"FORCE\" for tags targets\n>  - Makefile: add QUIET_GEN to \"cscope\" target\n>  - Makefile: move \".PHONY: cscope\" near its target\n>\n>  Build clean-up for \"make tags\" and friends.\n>\n>  Expecting a reroll.\n>  4/5 may want a minor tweak to the log and the patch text but otherwise looks good.\n\nThis is the 3rd What's Cooking where I comment to the effect that I\ndon't think we need a re-roll (previously at\nhttps://lore.kernel.org/git/87sg00qfbp.fsf@evledraar.gmail.com/ &\nhttps://lore.kernel.org/git/87wnp4p4xo.fsf@evledraar.gmail.com/).\n\nI.e. my comment in\nhttps://lore.kernel.org/git/87k0lit57x.fsf@evledraar.gmail.com/ of:\n    \n    As long as we have no user of a -q flag ever, what's the point of\n    forever carrying the \"rm foo*\" when we know it's foo.out, just\n    because a future Makefile change might add foo.blah?\n    \n    Doesn't seem like something we'd trip over, and the .gitignore/rm\n    rule is just misleading now...\n\nSo I think this is fine as-is, if you or Taylor still feel it should be\nkept I can re-roll it, seems rather weird as long as we have no\n$(CSCOPE_FLAGS), but whatever.\n\n> * ab/config-based-hooks-base (2021-08-03) 36 commits\n>  - hooks: fix a TOCTOU in \"did we run a hook?\" heuristic\n>  - receive-pack: convert receive hooks to hook.h\n>  - post-update: use hook.h library\n>  - receive-pack: convert 'update' hook to hook.h\n>  - hooks: allow callers to capture output\n>  - run-command: allow capturing of collated output\n>  - reference-transaction: use hook.h to run hooks\n>  - hook tests: use a modern style for \"pre-push\" tests\n>  - hook tests: test for exact \"pre-push\" hook input\n>  - transport: convert pre-push hook to hook.h\n>  - hook: convert 'post-rewrite' hook in sequencer.c to hook.h\n>  - hook: provide stdin by string_list or callback\n>  - run-command: add stdin callback for parallelization\n>  - am: convert 'post-rewrite' hook to hook.h\n>  - hook: support passing stdin to hooks\n>  - run-command: allow stdin for run_processes_parallel\n>  - run-command: remove old run_hook_{le,ve}() hook API\n>  - receive-pack: convert push-to-checkout hook to hook.h\n>  - read-cache: convert post-index-change to use hook.h\n>  - commit: convert {pre-commit,prepare-commit-msg} hook to hook.h\n>  - git-p4: use 'git hook' to run hooks\n>  - send-email: use 'git hook run' for 'sendemail-validate'\n>  - git hook run: add an --ignore-missing flag\n>  - merge: convert post-merge to use hook.h\n>  - hooks: convert 'post-checkout' hook to hook library\n>  - am: convert applypatch to use hook.h\n>  - rebase: convert pre-rebase to use hook.h\n>  - gc: use hook library for pre-auto-gc hook\n>  - hook: add 'run' subcommand\n>  - hook-list.h: add a generated list of hooks, like config-list.h\n>  - hook.c users: use \"hook_exists()\" insted of \"find_hook()\"\n>  - hook.c: add a hook_exists() wrapper and use it in bugreport.c\n>  - hook.[ch]: move find_hook() to this new library\n>  - Makefile: remove an out-of-date comment\n>  - Makefile: stop hardcoding {command,config}-list.h\n>  - Makefile: mark \"check\" target as .PHONY\n>\n>  Restructuring of (a subset of) Emily's config-based-hooks series,\n>  to demonstrate that a series can be presented as a more logical and\n>  focused progression.\n>\n>  Waiting for reviews.\n\nIndeed: https://lore.kernel.org/git/87zgtxms4s.fsf@evledraar.gmail.com/\n\n> * ab/serve-cleanup (2021-08-03) 13 commits\n>  - fixup! {upload,receive}-pack tests: add --advertise-refs tests\n>  - serve.[ch]: don't pass \"struct strvec *keys\" to commands\n>  - upload-pack.c: convert to new serve.c \"startup\" config cb\n>  - upload-pack: document and rename --advertise-refs\n>  - {upload,receive}-pack tests: add --advertise-refs tests\n>  - serve.[ch]: remove \"serve_options\", split up --advertise-refs code\n>  - serve.c: move version line to advertise_capabilities()\n>  - serve: add support for a \"startup\" git_config() callback\n>  - serve.c: add call_{advertise,command}() indirection\n>  - serve: use designated initializers\n>  - transport: use designated initializers\n>  - transport: rename \"fetch\" in transport_vtable to \"fetch_refs\"\n>  - serve: mark has_capability() as static\n>\n>  Code clean-up around \"git serve\".\n\nIt seems the reception to the \"config callback\" part of this was rather\nlukewarm. I'll re-roll to eject those changes and see if it's better\nreceived.\n\n> * hn/refs-errno-cleanup (2021-08-02) 7 commits\n>  - refs: make errno output explicit for refs_resolve_ref_unsafe\n>  - refs: explicitly return failure_errno from parse_loose_ref_contents\n>  - refs: add failure_errno to refs_read_raw_ref() signature\n>  - refs: make errno output explicit for read_raw_ref_fn\n>  - refs/files-backend: stop setting errno from lock_ref_oid_basic\n>  - refs: remove EINVAL errno output from specification of read_raw_ref_fn\n>  - refs file backend: move raceproof_create_file() here\n>  (this branch uses ab/refs-files-cleanup.)\n>\n>  Futz with the way 'errno' is relied on in the refs API to carry the\n>  failure modes up the callchain.\n>\n>  Will merge to 'next'.\n\nYay!\n\n> * ab/test-tool-cache-cleanup (2021-06-08) 4 commits\n>  - read-cache perf: add a perf test for refresh_index()\n>  - test-tool: migrate read-cache-again to parse_options()\n>  - test-tool: migrate read-cache-perf to parse_options()\n>  - test-tool: split up test-tool read-cache\n>\n>  Test code shuffling.\n>\n>  Waiting for reviews.\n\nBeen saying I'll re-roll this one, willdo....\n\n> * ab/pack-objects-stdin (2021-07-09) 5 commits\n>  - pack-objects.c: make use of REV_INFO_STDIN_LINE_PROCESS\n>  - pack-objects.c: do stdin parsing via revision.c's API\n>  - revision.[ch]: add a \"handle_stdin_line\" API\n>  - revision.h: refactor \"disable_stdin\" and \"read_from_stdin\"\n>  - upload-pack: run is_repository_shallow() before setup_revisions()\n>\n>  Introduce handle_stdin_line callback to revision API and uses it.\n\nStill keeen to get this moving, if there's any takers for reviews...\n\n> * ab/update-submitting-patches (2021-07-22) 2 commits\n>   (merged to 'next' on 2021-07-30 at 9ae2de7f7a)\n>  + SubmittingPatches: replace discussion of Travis with GitHub Actions\n>  + SubmittingPatches: move discussion of Signed-off-by above \"send\"\n>\n>  Reorganize and update the SubmitingPatches document.\n>\n>  Will merge to 'master'.\n\nThanks...\n\n> * ab/fsck-unexpected-type (2021-07-12) 21 commits\n>  - fsck: report invalid object type-path combinations\n>  - fsck: report invalid types recorded in objects\n>  - object-store.h: move read_loose_object() below 'struct object_info'\n>  - fsck: don't hard die on invalid object types\n>  - object-file.c: return -2 on \"header too long\" in unpack_loose_header()\n>  - object-file.c: return -1, not \"status\" from unpack_loose_header()\n>  - object-file.c: guard against future bugs in loose_object_info()\n>  - object-file.c: stop dying in parse_loose_header()\n>  - object-file.c: split up ternary in parse_loose_header()\n>  - object-file.c: simplify unpack_loose_short_header()\n>  - object-file.c: add missing braces to loose_object_info()\n>  - object-file.c: make parse_loose_header_extended() public\n>  - object-file.c: don't set \"typep\" when returning non-zero\n>  - cache.h: move object functions to object-store.h\n>  - cat-file tests: test for current --allow-unknown-type behavior\n>  - cat-file tests: add corrupt loose object test\n>  - rev-list tests: test for behavior with invalid object types\n>  - cat-file tests: test that --allow-unknown-type isn't on by default\n>  - cat-file tests: test for missing object with -t and -s\n>  - fsck tests: add test for fsck-ing an unknown type\n>  - fsck tests: refactor one test to use a sub-repo\n>\n>  \"git fsck\" has been taught to report mismatch between expected and\n>  actual types of an object better.\n>\n>  Needs review.\n\n...ditto a call-out for reviewer interest...\n\n> * es/config-based-hooks (2021-07-20) 9 commits\n>  - hook: implement hookcmd.<name>.skip\n>  - hook: teach 'hookcmd' config to alias hook scripts\n>  - hook: allow out-of-repo 'git hook' invocations\n>  - hook: include hooks from the config\n>  - hook: allow running non-native hooks\n>  - hook: treat hookdir hook specially\n>  - hook: introduce \"git hook list\"\n>  - hook: allow parallel hook execution\n>  - hook: run a list of hooks instead\n>\n>  Discarded to give room for updated ab/config-based-hooks-base.\n\nI understand that Emily is re-rolling this on top of my\nab/config-based-hooks-base.\n"},{"id":"431956","messageId":"4aed0293-6a48-d370-3b72-496b7c631cb5@gmail.com","threadId":"56212","inReplyTo":"xmqqfsvpr8t5.fsf@gitster.g","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2021-08-04T14:22:41Z","receivedAt":"2021-08-04T14:22:46Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 8/4/2021 3:03 AM, Junio C Hamano wrote:\n...\n> --------------------------------------------------\n> [Stalled]\n...\n> * lh/systemd-timers (2021-07-02) 3 commits\n>  - maintenance: add support for systemd timers on Linux\n>  - maintenance: `git maintenance run` learned `--scheduler=<scheduler>`\n>  - cache.h: Introduce a generic \"xdg_config_home_for(…)\" function\n> \n>  \"git maintenance\" scheduler learned to use systemd timers as a\n>  possible backend.\n> \n>  Waiting for reviews.\n\nI just took another look at this series and see that there were a few\nitems that have yet to be addressed. CC'ing Lénaïc and reviewers to\nsee if those items will come in a v8. Here is a quick summary of my\nunderstanding:\n\n* There are some non-ASCII characters in a code comment that are a\n  bit non-standard and could be replaced with ASCII representations.\n  (nit, but if re-rolling already this might be worth doing.)\n\n* There is some discussion about using string_list_split() instead\n  of hand-rolling a string splitter. Discussion decided that we\n  should _not_ use strbuf_split_buf(). It would be nice to later\n  create a version of strvec_split() that takes an arbitrary \n  delimiter, but isn't necessary for this series.\n\n* There was some discussion about using #ifdef to make certain\n  logic be compiled in or not. This seems (to me) less important\n  in the case of returning 0 or 1, but in the third patch there\n  is a large set of logic that is only compiled on Linux, which\n  seems like it should match the pattern of the other methods,\n  if possible.\n\nAgain, this is just my drive-by summary, but hopefully it renews\nwork on this topic.\n\nThanks,\n-Stolee\n"},{"id":"431970","messageId":"xmqq8s1hozy8.fsf@gitster.g","threadId":"56212","inReplyTo":"87wnp1mqv2.fsf@evledraar.gmail.com","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2021-08-04T17:57:19Z","receivedAt":"2021-08-04T17:57:22Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n\n>> * ab/test-columns (2021-08-02) 3 commits\n>>  - test-lib.sh: use GIT_TEST_COLUMNS over COLUMNS\n>>  - test-lib-functions.sh: add a test_with_columns function\n>>  - test-lib-functions.sh: rename test_must_fail_acceptable()\n>\n> We're going to need this or another solution to the v2.33.0-rc0\n> regression in c49a177beca (test-lib.sh: set COLUMNS=80 for --verbose\n> repeatability, 2021-06-29) before the final v2.33.0.\n\nYeah, this is ugly but not so ugly as the original version ;-)\nThanks for prodding.\n\n>> * ab/lib-subtest (2021-07-21) 10 commits\n>> * ab/only-single-progress-at-once (2021-07-23) 8 commits\n>\n> Thanks, it would be great to have both of these move soon after the\n> release. I think the chances of unexpected breakage here are minimal\n> given their nature.\n\nHave they seen enough eyeballs already to gain support?\n\n>> * ab/progress-users-adjust-counters (2021-07-23) 3 commits\n> ...\n> I think that what SZEDER had to say in\n> https://lore.kernel.org/git/20210802220506.GF23408@szeder.dev/ should be\n> enough to clear this to proceed forward.\n\nOK, thanks.\n\n>> * ab/make-tags-cleanup (2021-07-22) 5 commits\n> ...\n>     As long as we have no user of a -q flag ever, what's the point of\n>     forever carrying the \"rm foo*\" when we know it's foo.out, just\n>     because a future Makefile change might add foo.blah?\n\nThat is not a forward-looking thinking.  A cheap and easy way to\nfuture-proof was suggested by a reviewer.  Why ignore repeated\nsuggestions?\n\n>> * ab/serve-cleanup (2021-08-03) 13 commits\n>>  - fixup! {upload,receive}-pack tests: add --advertise-refs tests\n>>  - serve.[ch]: don't pass \"struct strvec *keys\" to commands\n>>  - upload-pack.c: convert to new serve.c \"startup\" config cb\n>>  - upload-pack: document and rename --advertise-refs\n>>  - {upload,receive}-pack tests: add --advertise-refs tests\n>>  - serve.[ch]: remove \"serve_options\", split up --advertise-refs code\n>>  - serve.c: move version line to advertise_capabilities()\n>>  - serve: add support for a \"startup\" git_config() callback\n>>  - serve.c: add call_{advertise,command}() indirection\n>>  - serve: use designated initializers\n>>  - transport: use designated initializers\n>>  - transport: rename \"fetch\" in transport_vtable to \"fetch_refs\"\n>>  - serve: mark has_capability() as static\n>>\n>>  Code clean-up around \"git serve\".\n>\n> It seems the reception to the \"config callback\" part of this was rather\n> lukewarm. I'll re-roll to eject those changes and see if it's better\n> received.\n\nI'll eject this topic and other \"will reroll\" topics until the\nfinal, with the hope to restart post release, then.  Our focus ought\nto be to stabilize the upcoming release and having more topics or\ntopics that won't be near 'next' updated adds to distraction.\n\nThanks.\n"},{"id":"431971","messageId":"xmqq4kc5ozi7.fsf@gitster.g","threadId":"56212","inReplyTo":"87wnp1mqv2.fsf@evledraar.gmail.com","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2021-08-04T18:06:56Z","receivedAt":"2021-08-04T18:07:00Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n\n>> * ab/test-columns (2021-08-02) 3 commits\n>>  - test-lib.sh: use GIT_TEST_COLUMNS over COLUMNS\n>>  - test-lib-functions.sh: add a test_with_columns function\n>>  - test-lib-functions.sh: rename test_must_fail_acceptable()\n>\n> We're going to need this or another solution to the v2.33.0-rc0\n> regression in c49a177beca (test-lib.sh: set COLUMNS=80 for --verbose\n> repeatability, 2021-06-29) before the final v2.33.0.\n\nJust a question.  Is that true?  Wouldn't a system that needs these\non top of c49a177beca already break the tests without c49a177beca?\n\nIOW, is c49a177beca truly a \"regression\", or is it merely \"a half\nsolution that solves for most but not all platforms\"?\n"},{"id":"431972","messageId":"20210804180658.GG23408@szeder.dev","threadId":"56212","inReplyTo":"87wnp1mqv2.fsf@evledraar.gmail.com","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"SZEDER Gábor","fromEmail":"szeder.dev@gmail.com","sentAt":"2021-08-04T18:06:58Z","receivedAt":"2021-08-04T18:07:08Z","isPatch":false,"sender":{"key":"szeder.dev@gmail.com","avatar":"https://avatars.githubusercontent.com/u/116324?v=4"},"body":"On Wed, Aug 04, 2021 at 12:22:44PM +0200, Ævar Arnfjörð Bjarmason wrote:\n> > * ab/progress-users-adjust-counters (2021-07-23) 3 commits\n> >  - entry: show finer-grained counter in \"Filtering content\" progress line\n> >  - midx: don't provide a total for QSORT() progress\n> >  - commit-graph: fix bogus counter in \"Scanning merged commits\" progress line\n> >\n> >  The code to show progress indicator in a few codepaths did not\n> >  cover between 0-100%, which has been corrected.\n> >\n> >  Waiting for a clarification.\n> >  cf. <xmqqbl6slmer.fsf@gitster.g>\n> \n> I think that what SZEDER had to say in\n> https://lore.kernel.org/git/20210802220506.GF23408@szeder.dev/ should be\n> enough to clear this to proceed forward.\n\nNote that I also pointed out errors in the commit messages that should\nbe addressed before this patch series advances; see:\n\n  https://public-inbox.org/git/20210802210759.GD23408@szeder.dev/\n  https://public-inbox.org/git/20210802214827.GE23408@szeder.dev/\n\nBut none of these patches fixes regressions introduced in this release\ncycle, so it's not urgent.\n\n\n> I.e. this topic is missing his subsequent\n> https://lore.kernel.org/git/20210620200303.2328957-7-szeder.dev@gmail.com/\n> patch.\n> \n> But as he notes we only encounter this in one of our tests (and are\n> unlikely to in the wild).\n> \n> Between this topic and my ab/only-single-progress-at-once I think we're\n> better off getting those basic fixes in before proceeding with any\n> tricky additions of BUG() and other assertions, per what I noted in\n> https://public-inbox.org/git/cover-00.25-00000000000-20210623T155626Z-avarab@gmail.com/;\n> i.e. that some of those assertions were themselves buggy.\n"},{"id":"431974","messageId":"87lf5hm0v7.fsf@evledraar.gmail.com","threadId":"56212","inReplyTo":"xmqq4kc5ozi7.fsf@gitster.g","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-08-04T19:53:02Z","receivedAt":"2021-08-04T20:05:53Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Wed, Aug 04 2021, Junio C Hamano wrote:\n\n> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n>\n>>> * ab/test-columns (2021-08-02) 3 commits\n>>>  - test-lib.sh: use GIT_TEST_COLUMNS over COLUMNS\n>>>  - test-lib-functions.sh: add a test_with_columns function\n>>>  - test-lib-functions.sh: rename test_must_fail_acceptable()\n>>\n>> We're going to need this or another solution to the v2.33.0-rc0\n>> regression in c49a177beca (test-lib.sh: set COLUMNS=80 for --verbose\n>> repeatability, 2021-06-29) before the final v2.33.0.\n>\n> Just a question.  Is that true?  Wouldn't a system that needs these\n> on top of c49a177beca already break the tests without c49a177beca?\n>\n> IOW, is c49a177beca truly a \"regression\", or is it merely \"a half\n> solution that solves for most but not all platforms\"?\n\nYes, because with c49a177beca your tests only break if you use the\n--verbose option, i.e. if your stderr is connected to a terminal. I.e.:\n\n    ./t0500-progress-display.sh --verbose\n\nSo in practice it mostly affects git developers who run with --verbose,\nbut probably nobody doing a build in the wild.\n\nWith c49a177beca they break on e.g.:\n\n    /bin/bash ./t0500-progress-display.sh\n\nIf your bash is recent enough, so \"make test\" if you're on a system with\na recent bash whose /bin/sh is /bin/bash.\n\nThis is because post-c49a177beca we don't \"unset\" COLUMNS anymore, which\nbash takes as license to update it.\n\nSo we really do need that series in before the release to avoid that\ncommon annoyance, a revert of c49a177beca is also possible, i.e. it\nwould still leave things broken under --verbose, but that breakage is\nrare and existed before v2.33.\n\nI think given the triviality of the fixes and that the cause is\nwell-understood it makes sense to go forward in this case.\n"},{"id":"431975","messageId":"xmqqzgtxnf7c.fsf@gitster.g","threadId":"56212","inReplyTo":"87lf5hm0v7.fsf@evledraar.gmail.com","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2021-08-04T20:10:47Z","receivedAt":"2021-08-04T20:10:54Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n\n> This is because post-c49a177beca we don't \"unset\" COLUMNS anymore, which\n> bash takes as license to update it.\n\nAh, OK.\n\nThanks.\n"},{"id":"431982","messageId":"YQsAuvPwoSb/J4X3@coredump.intra.peff.net","threadId":"56212","inReplyTo":"4aed0293-6a48-d370-3b72-496b7c631cb5@gmail.com","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2021-08-04T21:03:54Z","receivedAt":"2021-08-04T21:03:57Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Aug 04, 2021 at 10:22:41AM -0400, Derrick Stolee wrote:\n\n> > * lh/systemd-timers (2021-07-02) 3 commits\n> >  - maintenance: add support for systemd timers on Linux\n> >  - maintenance: `git maintenance run` learned `--scheduler=<scheduler>`\n> >  - cache.h: Introduce a generic \"xdg_config_home_for(…)\" function\n> > \n> >  \"git maintenance\" scheduler learned to use systemd timers as a\n> >  possible backend.\n> > \n> >  Waiting for reviews.\n> \n> I just took another look at this series and see that there were a few\n> items that have yet to be addressed. CC'ing Lénaïc and reviewers to\n> see if those items will come in a v8. Here is a quick summary of my\n> understanding:\n> \n> * There are some non-ASCII characters in a code comment that are a\n>   bit non-standard and could be replaced with ASCII representations.\n>   (nit, but if re-rolling already this might be worth doing.)\n> \n> * There is some discussion about using string_list_split() instead\n>   of hand-rolling a string splitter. Discussion decided that we\n>   should _not_ use strbuf_split_buf(). It would be nice to later\n>   create a version of strvec_split() that takes an arbitrary \n>   delimiter, but isn't necessary for this series.\n\nI think this strvec part was the only thing I had commented on\npreviously. I agree with your summary here (especially that we can punt\non refactoring strvec_split() for this series).\n\n-Peff\n"},{"id":"431985","messageId":"20210804212825.GH23408@szeder.dev","threadId":"56212","inReplyTo":"87lf5hm0v7.fsf@evledraar.gmail.com","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"SZEDER Gábor","fromEmail":"szeder.dev@gmail.com","sentAt":"2021-08-04T21:28:25Z","receivedAt":"2021-08-04T21:28:36Z","isPatch":false,"sender":{"key":"szeder.dev@gmail.com","avatar":"https://avatars.githubusercontent.com/u/116324?v=4"},"body":"On Wed, Aug 04, 2021 at 09:53:02PM +0200, Ævar Arnfjörð Bjarmason wrote:\n> \n> On Wed, Aug 04 2021, Junio C Hamano wrote:\n> \n> > Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n> >\n> >>> * ab/test-columns (2021-08-02) 3 commits\n> >>>  - test-lib.sh: use GIT_TEST_COLUMNS over COLUMNS\n> >>>  - test-lib-functions.sh: add a test_with_columns function\n> >>>  - test-lib-functions.sh: rename test_must_fail_acceptable()\n> >>\n> >> We're going to need this or another solution to the v2.33.0-rc0\n> >> regression in c49a177beca (test-lib.sh: set COLUMNS=80 for --verbose\n> >> repeatability, 2021-06-29) before the final v2.33.0.\n> >\n> > Just a question.  Is that true?  Wouldn't a system that needs these\n> > on top of c49a177beca already break the tests without c49a177beca?\n> >\n> > IOW, is c49a177beca truly a \"regression\", or is it merely \"a half\n> > solution that solves for most but not all platforms\"?\n> \n> Yes, because with c49a177beca your tests only break if you use the\n> --verbose option, i.e. if your stderr is connected to a terminal. I.e.:\n> \n>     ./t0500-progress-display.sh --verbose\n> \n> So in practice it mostly affects git developers who run with --verbose,\n> but probably nobody doing a build in the wild.\n> \n> With c49a177beca they break on e.g.:\n> \n>     /bin/bash ./t0500-progress-display.sh\n> \n> If your bash is recent enough, so \"make test\" if you're on a system with\n> a recent bash whose /bin/sh is /bin/bash.\n> \n> This is because post-c49a177beca we don't \"unset\" COLUMNS anymore, which\n> bash takes as license to update it.\n> \n> So we really do need that series in before the release to avoid that\n> common annoyance, a revert of c49a177beca is also possible, i.e. it\n> would still leave things broken under --verbose, but that breakage is\n> rare and existed before v2.33.\n> \n> I think given the triviality of the fixes and that the cause is\n> well-understood it makes sense to go forward in this case.\n\nOn one hand, there is feedback to be addressed:\n\n  https://public-inbox.org/git/20210802171429.GC23408@szeder.dev/\n\nOTOH, setting the checkwinsize is the truly trivial, minimal, reliable\nand uncontroversial fix for this issue, and IMO that should go into\nthe next release.\n\nThis fix in this patch series is not trivial: it introduces yet\nanother GIT_TEST variable and a helper function that developers will\nhave to remember to use in the future.  Worse, this means that despite\naiming for future proofing I can't consider this approach future\nproof, because it's easy to forget about such a rarely used test\nhelper function, and if anyone introduces yet another test setting\nCOLUMNS, then that will be prone to similar failures when run with\nBash.\n\nI don't think that in this case we should aim for future proofing when\nthe cost is the additional cognitive load of yet another helper\nfunction.  I would instead prefer to go with the really trivial fix\nfor now and wait whether this issue pops up again with other shell or\nterminal, hoping that this issue is a \"one-hit-wonder\" [1] and it\nwon't happen ever again.\n\n\n[1] \"one-hit-wonder\" as in:\n    https://en.wikipedia.org/wiki/Bloom_filter#Cache_filtering\n\n"},{"id":"431987","messageId":"20210804213626.GI23408@szeder.dev","threadId":"56212","inReplyTo":"20210804212825.GH23408@szeder.dev","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"SZEDER Gábor","fromEmail":"szeder.dev@gmail.com","sentAt":"2021-08-04T21:36:26Z","receivedAt":"2021-08-04T21:36:32Z","isPatch":false,"sender":{"key":"szeder.dev@gmail.com","avatar":"https://avatars.githubusercontent.com/u/116324?v=4"},"body":"On Wed, Aug 04, 2021 at 11:28:25PM +0200, SZEDER Gábor wrote:\n> On Wed, Aug 04, 2021 at 09:53:02PM +0200, Ævar Arnfjörð Bjarmason wrote:\n> > \n> > On Wed, Aug 04 2021, Junio C Hamano wrote:\n> > \n> > > Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n> > >\n> > >>> * ab/test-columns (2021-08-02) 3 commits\n> > >>>  - test-lib.sh: use GIT_TEST_COLUMNS over COLUMNS\n> > >>>  - test-lib-functions.sh: add a test_with_columns function\n> > >>>  - test-lib-functions.sh: rename test_must_fail_acceptable()\n> > >>\n> > >> We're going to need this or another solution to the v2.33.0-rc0\n> > >> regression in c49a177beca (test-lib.sh: set COLUMNS=80 for --verbose\n> > >> repeatability, 2021-06-29) before the final v2.33.0.\n> > >\n> > > Just a question.  Is that true?  Wouldn't a system that needs these\n> > > on top of c49a177beca already break the tests without c49a177beca?\n> > >\n> > > IOW, is c49a177beca truly a \"regression\", or is it merely \"a half\n> > > solution that solves for most but not all platforms\"?\n> > \n> > Yes, because with c49a177beca your tests only break if you use the\n> > --verbose option, i.e. if your stderr is connected to a terminal. I.e.:\n> > \n> >     ./t0500-progress-display.sh --verbose\n> > \n> > So in practice it mostly affects git developers who run with --verbose,\n> > but probably nobody doing a build in the wild.\n> > \n> > With c49a177beca they break on e.g.:\n> > \n> >     /bin/bash ./t0500-progress-display.sh\n> > \n> > If your bash is recent enough, so \"make test\" if you're on a system with\n> > a recent bash whose /bin/sh is /bin/bash.\n> > \n> > This is because post-c49a177beca we don't \"unset\" COLUMNS anymore, which\n> > bash takes as license to update it.\n> > \n> > So we really do need that series in before the release to avoid that\n> > common annoyance, a revert of c49a177beca is also possible, i.e. it\n> > would still leave things broken under --verbose, but that breakage is\n> > rare and existed before v2.33.\n> > \n> > I think given the triviality of the fixes and that the cause is\n> > well-understood it makes sense to go forward in this case.\n> \n> On one hand, there is feedback to be addressed:\n> \n>   https://public-inbox.org/git/20210802171429.GC23408@szeder.dev/\n> \n> OTOH, setting the checkwinsize is the truly trivial, minimal, reliable\n\nOh, this should have been s/setting/turning off/\n\n> and uncontroversial fix for this issue, and IMO that should go into\n> the next release.\n> \n> This fix in this patch series is not trivial: it introduces yet\n> another GIT_TEST variable and a helper function that developers will\n> have to remember to use in the future.  Worse, this means that despite\n> aiming for future proofing I can't consider this approach future\n> proof, because it's easy to forget about such a rarely used test\n> helper function, and if anyone introduces yet another test setting\n> COLUMNS, then that will be prone to similar failures when run with\n> Bash.\n> \n> I don't think that in this case we should aim for future proofing when\n> the cost is the additional cognitive load of yet another helper\n> function.  I would instead prefer to go with the really trivial fix\n> for now and wait whether this issue pops up again with other shell or\n> terminal, hoping that this issue is a \"one-hit-wonder\" [1] and it\n> won't happen ever again.\n> \n> \n> [1] \"one-hit-wonder\" as in:\n>     https://en.wikipedia.org/wiki/Bloom_filter#Cache_filtering\n> \n"},{"id":"431999","messageId":"87im0kn983.fsf@evledraar.gmail.com","threadId":"56212","inReplyTo":"xmqq8s1hozy8.fsf@gitster.g","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-08-04T20:06:15Z","receivedAt":"2021-08-04T22:20:01Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Wed, Aug 04 2021, Junio C Hamano wrote:\n\n> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n>>> * ab/make-tags-cleanup (2021-07-22) 5 commits\n>> ...\n>>     As long as we have no user of a -q flag ever, what's the point of\n>>     forever carrying the \"rm foo*\" when we know it's foo.out, just\n>>     because a future Makefile change might add foo.blah?\n>\n> That is not a forward-looking thinking.  A cheap and easy way to\n> future-proof was suggested by a reviewer.  Why ignore repeated\n> suggestions?\n\nRaising it repeatedly is an odd way to ignore it :)\n\nBut sure, all I was looking for was some reply to\nhttps://lore.kernel.org/git/87k0lit57x.fsf@evledraar.gmail.com/; if you\nwant to keep it sure, I'll keep it. Will re-roll.\n\n\n"},{"id":"432012","messageId":"87fsvon5xm.fsf@evledraar.gmail.com","threadId":"56212","inReplyTo":"20210804212825.GH23408@szeder.dev","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-08-04T23:06:55Z","receivedAt":"2021-08-04T23:31:07Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Wed, Aug 04 2021, SZEDER Gábor wrote:\n\n> On Wed, Aug 04, 2021 at 09:53:02PM +0200, Ævar Arnfjörð Bjarmason wrote:\n>> \n>> On Wed, Aug 04 2021, Junio C Hamano wrote:\n>> \n>> > Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n>> >\n>> >>> * ab/test-columns (2021-08-02) 3 commits\n>> >>>  - test-lib.sh: use GIT_TEST_COLUMNS over COLUMNS\n>> >>>  - test-lib-functions.sh: add a test_with_columns function\n>> >>>  - test-lib-functions.sh: rename test_must_fail_acceptable()\n>> >>\n>> >> We're going to need this or another solution to the v2.33.0-rc0\n>> >> regression in c49a177beca (test-lib.sh: set COLUMNS=80 for --verbose\n>> >> repeatability, 2021-06-29) before the final v2.33.0.\n>> >\n>> > Just a question.  Is that true?  Wouldn't a system that needs these\n>> > on top of c49a177beca already break the tests without c49a177beca?\n>> >\n>> > IOW, is c49a177beca truly a \"regression\", or is it merely \"a half\n>> > solution that solves for most but not all platforms\"?\n>> \n>> Yes, because with c49a177beca your tests only break if you use the\n>> --verbose option, i.e. if your stderr is connected to a terminal. I.e.:\n>> \n>>     ./t0500-progress-display.sh --verbose\n>> \n>> So in practice it mostly affects git developers who run with --verbose,\n>> but probably nobody doing a build in the wild.\n>> \n>> With c49a177beca they break on e.g.:\n>> \n>>     /bin/bash ./t0500-progress-display.sh\n>> \n>> If your bash is recent enough, so \"make test\" if you're on a system with\n>> a recent bash whose /bin/sh is /bin/bash.\n>> \n>> This is because post-c49a177beca we don't \"unset\" COLUMNS anymore, which\n>> bash takes as license to update it.\n>> \n>> So we really do need that series in before the release to avoid that\n>> common annoyance, a revert of c49a177beca is also possible, i.e. it\n>> would still leave things broken under --verbose, but that breakage is\n>> rare and existed before v2.33.\n>> \n>> I think given the triviality of the fixes and that the cause is\n>> well-understood it makes sense to go forward in this case.\n>\n> On one hand, there is feedback to be addressed:\n>\n>   https://public-inbox.org/git/20210802171429.GC23408@szeder.dev/\n\nI read that a couple of days ago, but managed to forget about it. Sorry,\nre-rolled with it addressed:\nhttps://lore.kernel.org/git/cover-v3-0.3-00000000000-20210804T230335Z-avarab@gmail.com/\n\n> OTOH, setting the checkwinsize is the truly trivial, minimal, reliable\n> and uncontroversial fix for this issue, and IMO that should go into\n> the next release.\n\nAddressed below.\n\n> This fix in this patch series is not trivial: it introduces yet\n> another GIT_TEST variable and a helper function that developers will\n> have to remember to use in the future.  Worse, this means that despite\n> aiming for future proofing I can't consider this approach future\n> proof, because it's easy to forget about such a rarely used test\n> helper function, and if anyone introduces yet another test setting\n> COLUMNS, then that will be prone to similar failures when run with\n> Bash.\n\nHow would it be forgotten? If you introduce tests like the ones changed\nin 1/3 of the series and expect git to pay attention to COLUMNS you'll\nfind that they won't work, because if you set COLUMNS=123 we won't take\nit over the GIT_TEST_COLUMNS=80 set in test-lib.sh.\n\nSo it seems like a fairly easy-to-discover thing. You'll grep for that\nsetting and find test_with_columns().\n\nMost tests (such as t0500-progress-display.sh) won't need to concern\nthemselves with the new helper, it's only for those tests that want to\ncheck how git itself behaves with a custom COLUMNS value, as opposed to\njust wanting consistent repeatable results.\n\nIn any case, I didn't think a helper was needed in this case, it's\nsomething Junio requested:\nhttps://lore.kernel.org/git/xmqqzgu7b6of.fsf@gitster.g/ ...\n\n> I don't think that in this case we should aim for future proofing when\n> the cost is the additional cognitive load of yet another helper\n> function.  I would instead prefer to go with the really trivial fix\n> for now and wait whether this issue pops up again with other shell or\n> terminal, hoping that this issue is a \"one-hit-wonder\" [1] and it\n> won't happen ever again.\n\n...I'd be happy to remove the helper if Junio would take that version of\nthe patch; :)\n\nBut in the topic of the overall approach, I think it's worth\nfuture-proofing here mainly because it's useful to be able to reliably\nrun \"make test\" on old commits for bisecting, which is a property we\nmostly manage to uphold.\n\nBy narrowly targeting a fix at one specific shell's cleverness around\nCOLUMNS we'll leave open a window where we'll fail on other shells if\nthey introduce similar cleverness.\n\nIt hardly seems like a stretch that once bash starts doing that sort of\nthing other shells might think to follow suit, and all have their own\nnon-standard way to turn it off.\n\nYou also didn't address the other rationale for it, namely that it's\nalso future-proofing us for submarine breakages in non-git programs\nwhich'll understand the new COLUMNS=10, but not GIT_TEST_COLUMNS=80.\n\nI.e. should our tests rely on their output, and those programs\nthemselves change how they treat e.g. COLUMNS v.s. TIOCGWINSZ any tests\nrelying on their output will change their behavior.\n"},{"id":"432041","messageId":"YQtAzPjkSHfVrLmK@nand.local","threadId":"56212","inReplyTo":"xmqqfsvpr8t5.fsf@gitster.g","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2021-08-05T01:37:16Z","receivedAt":"2021-08-05T01:37:21Z","isPatch":false,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Wed, Aug 04, 2021 at 12:03:02AM -0700, Junio C Hamano wrote:\n> * tb/multi-pack-bitmaps (2021-07-27) 25 commits\n>\n>  The reachability bitmap file used to be generated only for a single\n>  pack, but now we've learned to generate bitmaps for history that\n>  span across multiple packfiles.\n>\n>  Comments?\n\nPeff completed a thorough review of the most substantial patches. We\nfound a few issues, which I addressed in v3. I'd like to have him read\nthrough the tests, although I expect there to be far fewer changes\nthere, so I would anticipate that v4 would be suitable for merging.\n\nBut let's definitely wait until post-release to move this along further,\nsince we should be dedicating our efforts to polishing the release until\nthen. Feel free to eject it in the meantime if it's more convenient\n\nThanks,\nTaylor\n"},{"id":"432045","messageId":"xmqq4kc4myme.fsf@gitster.g","threadId":"56212","inReplyTo":"87fsvon5xm.fsf@evledraar.gmail.com","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2021-08-05T02:08:57Z","receivedAt":"2021-08-05T02:09:01Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n\n> How would it be forgotten? If you introduce tests like the ones changed\n> in 1/3 of the series and expect git to pay attention to COLUMNS you'll\n> find that they won't work, because if you set COLUMNS=123 we won't take\n> it over the GIT_TEST_COLUMNS=80 set in test-lib.sh.\n> ...\n> ...I'd be happy to remove the helper if Junio would take that version of\n> the patch; :)\n\nFWIW, I didn't *request* it; the resulting test scripts that set and\nunset both the standard COLUMNS and another test-only environment\nvariable looked typo-prone and hard to read, and that is why I\nsuggested to hide that behind a helper.\n\nIf we do not have to add a test-only enviroment variable at all, I\ndo not see the reason why we need a helper.\n\n> By narrowly targeting a fix at one specific shell's cleverness around\n> COLUMNS we'll leave open a window where we'll fail on other shells if\n> they introduce similar cleverness.\n>\n> It hardly seems like a stretch that once bash starts doing that sort of\n> thing other shells might think to follow suit, and all have their own\n> non-standard way to turn it off.\n\nHmph. Wouldn't the same argument apply to the much simpler single\nliner \"shopt -u\" solution?  When writing new tests, there is nothing\nto remember, and a new shell that needs a different trick to defeat\nthe auto-COLUMNS would be detected quickly by running the tests in a\nterminal whose width is different from 80, no?\n\n> You also didn't address the other rationale for it, namely that it's\n> also future-proofing us for submarine breakages in non-git programs\n> which'll understand the new COLUMNS=10, but not GIT_TEST_COLUMNS=80.\n\nIsn't that another downside of the approach you are advocating?\n\nIf we make Git rely on GIT_TEST_COLUMNS, we may honor it while\neverybody else ignores it.  If we only have to deal with COLUMNS\nlike everybody else does, Git and other tools that are used in our\ntests will be affected the same way by overly-clever shells, no?\n"},{"id":"432047","messageId":"871r78mw6w.fsf@evledraar.gmail.com","threadId":"56212","inReplyTo":"xmqq4kc4myme.fsf@gitster.g","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-08-05T02:53:12Z","receivedAt":"2021-08-05T03:01:33Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Wed, Aug 04 2021, Junio C Hamano wrote:\n\n> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n> [...]\n>> By narrowly targeting a fix at one specific shell's cleverness around\n>> COLUMNS we'll leave open a window where we'll fail on other shells if\n>> they introduce similar cleverness.\n>>\n>> It hardly seems like a stretch that once bash starts doing that sort of\n>> thing other shells might think to follow suit, and all have their own\n>> non-standard way to turn it off.\n>\n> Hmph. Wouldn't the same argument apply to the much simpler single\n> liner \"shopt -u\" solution?  When writing new tests, there is nothing\n> to remember, and a new shell that needs a different trick to defeat\n> the auto-COLUMNS would be detected quickly by running the tests in a\n> terminal whose width is different from 80, no?\n\nIt's different in the \"bisecting\" case I mentioned. I.e. \"shopt -u\" is a\nshell-specific solution, the approach I'm suggesting bypasses any sort\nof shell-specific solutions, both current and future ones.\n\n\n>> You also didn't address the other rationale for it, namely that it's\n>> also future-proofing us for submarine breakages in non-git programs\n>> which'll understand the new COLUMNS=10, but not GIT_TEST_COLUMNS=80.\n>\n> Isn't that another downside of the approach you are advocating?\n>\n> If we make Git rely on GIT_TEST_COLUMNS, we may honor it while\n> everybody else ignores it.  If we only have to deal with COLUMNS\n> like everybody else does, Git and other tools that are used in our\n> tests will be affected the same way by overly-clever shells, no?\n\nI think it's an upside. We know how git handles the combination of\nGIT_TEST_COLUMNS, COLUMNS and TIOCGWINSZ. We have no idea how any\nthird-party program decides to behave.\n\nSo by intentionally spoiling COLUMNS=* and only having our tests pay\nattention to GIT_TEST_COLUMNS we pretty much guarantee that we won't\ngrow some dependency on a non-git program's handling of COLUMNS, which\ne.g. could differ from platform to platform.\n\nI don't know about any such case, and spoiling COLUMNS didn't reveal\nany. I just thought it was worthwhile to once-and-for-all get us away\nfrom any sort of shell or 3rd party code cleverness around COLUMNS, as\nopposed to a very narrow bugfix for just the issue we've spotted with\nbash recently.\n"},{"id":"432074","messageId":"1a3e2551-a6b3-2628-f21f-f9281e581871@gmail.com","threadId":"56212","inReplyTo":"4aed0293-6a48-d370-3b72-496b7c631cb5@gmail.com","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"Phillip Wood","fromEmail":"phillip.wood123@gmail.com","sentAt":"2021-08-05T09:55:56Z","receivedAt":"2021-08-05T09:56:01Z","isPatch":false,"sender":{"key":"phillip.wood@dunelm.org.uk","avatar":null},"body":"On 04/08/2021 15:22, Derrick Stolee wrote:\n> On 8/4/2021 3:03 AM, Junio C Hamano wrote:\n> ...\n>> --------------------------------------------------\n>> [Stalled]\n> ...\n>> * lh/systemd-timers (2021-07-02) 3 commits\n>>   - maintenance: add support for systemd timers on Linux\n>>   - maintenance: `git maintenance run` learned `--scheduler=<scheduler>`\n>>   - cache.h: Introduce a generic \"xdg_config_home_for(…)\" function\n>>\n>>   \"git maintenance\" scheduler learned to use systemd timers as a\n>>   possible backend.\n>>\n>>   Waiting for reviews.\n> \n> I just took another look at this series and see that there were a few\n> items that have yet to be addressed. CC'ing Lénaïc and reviewers to\n> see if those items will come in a v8. Here is a quick summary of my\n> understanding:\n> \n> * There are some non-ASCII characters in a code comment that are a\n>    bit non-standard and could be replaced with ASCII representations.\n>    (nit, but if re-rolling already this might be worth doing.)\n> \n> * There is some discussion about using string_list_split() instead\n>    of hand-rolling a string splitter. Discussion decided that we\n>    should _not_ use strbuf_split_buf(). It would be nice to later\n>    create a version of strvec_split() that takes an arbitrary\n>    delimiter, but isn't necessary for this series.\n> \n> * There was some discussion about using #ifdef to make certain\n>    logic be compiled in or not. This seems (to me) less important\n>    in the case of returning 0 or 1, but in the third patch there\n>    is a large set of logic that is only compiled on Linux, which\n>    seems like it should match the pattern of the other methods,\n>    if possible.\n> \n> Again, this is just my drive-by summary, but hopefully it renews\n> work on this topic.\n\nI think that is a fair summary, I'd be happy to see us take this series \nas-is, the code is fine and any small warts could be cleaned up in the \nfuture. I think Eric expressed a similar opinion in [1]. Lénaïc has been \nresponsive to fixing bugs as well as taking on board other comments, I \nthink we've reached the stage where it is not reasonable to keep asking \nfor small changes.\n\nBest Wishes\n\nPhillip\n\n[1] \nhttps://lore.kernel.org/git/CAPig+cT-x4_YuxmmoFw62jFqKRFJrS_UkyNOkdQz9-Gwec3QCQ@mail.gmail.com\n\n> Thanks,\n> -Stolee\n> \n\n"},{"id":"434171","messageId":"20210830210336.GJ23408@szeder.dev","threadId":"56212","inReplyTo":"87fsvon5xm.fsf@evledraar.gmail.com","subject":"Re: What's cooking in git.git (Aug 2021, #02; Tue, 3)","fromName":"SZEDER Gábor","fromEmail":"szeder.dev@gmail.com","sentAt":"2021-08-30T21:03:36Z","receivedAt":"2021-08-30T21:03:42Z","isPatch":false,"sender":{"key":"szeder.dev@gmail.com","avatar":"https://avatars.githubusercontent.com/u/116324?v=4"},"body":"On Thu, Aug 05, 2021 at 01:06:55AM +0200, Ævar Arnfjörð Bjarmason wrote:\n> > I don't think that in this case we should aim for future proofing when\n> > the cost is the additional cognitive load of yet another helper\n> > function.  I would instead prefer to go with the really trivial fix\n> > for now and wait whether this issue pops up again with other shell or\n> > terminal, hoping that this issue is a \"one-hit-wonder\" [1] and it\n> > won't happen ever again.\n> \n> ...I'd be happy to remove the helper if Junio would take that version of\n> the patch; :)\n\nI have to agree with Junio here: setting 'GIT_TEST_COLUMNS=\nCOLUMNS=80' for each affected command like the first patch did was\njust too ugly.\n\n> But in the topic of the overall approach, I think it's worth\n> future-proofing here mainly because it's useful to be able to reliably\n> run \"make test\" on old commits for bisecting, which is a property we\n> mostly manage to uphold.\n> \n> By narrowly targeting a fix at one specific shell's cleverness around\n> COLUMNS we'll leave open a window where we'll fail on other shells if\n> they introduce similar cleverness.\n> \n> It hardly seems like a stretch that once bash starts doing that sort of\n> thing other shells might think to follow suit, and all have their own\n> non-standard way to turn it off.\n\nBash has a lot of non-standard features that other shells decided to\navoid, even when they are really useful and unconroversial.  To me it\ndoes seems like a stretch that other shells will follow suit with\nCOLUMNS, when our first reaction to Bash's changed behavior was that\nit's buggy.\n\n> You also didn't address the other rationale for it, namely that it's\n> also future-proofing us for submarine breakages in non-git programs\n> which'll understand the new COLUMNS=10, but not GIT_TEST_COLUMNS=80.\n> \n> I.e. should our tests rely on their output, and those programs\n> themselves change how they treat e.g. COLUMNS v.s. TIOCGWINSZ any tests\n> relying on their output will change their behavior.\n\nI occasionally scan through the test logs looking for any new\nsuspicious error messages from non-git commands and shell builtins, and\nto find those error messages I had to collect the list of non-git\ncommands [1] executed in the test suite:\n\n  awk|basename|cat|chmod|cmp|comm|curl|cut|date|dd|diff|dirname|egrep|env|envsubst|expr|fgrep|find|getfacl|gettext|grep|gunzip|gzip|head|hostname|iconv|id|jgit|kill|ln|mkdir|mkfifo|mktemp|mv|perl|readlink|sed|setfacl|sleep|sort|tail|tar|touch|tr|uname|uniq|unzip|wc|xargs|xmllint|zipinfo|\n\nMost of these are fairly low-level system commands, where supporting\nCOLUMNS in any way wouldn't make sense at all, or, worse, would be a\nserious regression.  Commands like 'curl', 'gunzip' or 'gzip' could\nshow a progress bar matching the width of the terminal, but our tests\nshould never rely on something like that, ever.  Then there is 'jgit'\nwhich could support COLUMNS for output intended to the user, just like\ngit does, but, again, our tests should never rely on that.\n\n\n[1] It's an incomplete list, e.g. 'cp', 'ls', and 'rm' are\n    intentionally left out, because they are too often used in cases\n    when they can legitimately fail.\n\n"}]}