]> git.ipfire.org Git - thirdparty/git.git/commitdiff
What's cooking (2021/03 #01)
authorJunio C Hamano <gitster@pobox.com>
Wed, 3 Mar 2021 07:07:42 +0000 (23:07 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 3 Mar 2021 07:07:42 +0000 (23:07 -0800)
whats-cooking.txt

index ffba81cacd20eea8b60b00683ce2e8dfdb67d364..c64691bd7effd89cc2ee05f8bb4a665a9e93fa42 100644 (file)
@@ -1,10 +1,10 @@
 To: git@vger.kernel.org
 Bcc: lwn@lwn.net
-Subject: What's cooking in git.git (Feb 2021, #04; Thu, 18)
-X-master-at: 2283e0e9af55689215afa39c03beb2315ce18e83
-X-next-at: b4fecdf3b781fae907790b59fd149f0dae8f8df6
+Subject: What's cooking in git.git (Mar 2021, #01; Tue, 2)
+X-master-at: f01623b2c9d14207e497b21ebc6b3ec4afaf4b46
+X-next-at: b75b4e4ce211a6bec04cdfcb7eadec68c4e7c388
 
-What's cooking in git.git (Feb 2021, #04; Thu, 18)
+What's cooking in git.git (Mar 2021, #01; Tue, 2)
 --------------------------------------------------
 
 Here are the topics that have been cooking.  Commits prefixed with '-' are
@@ -12,7 +12,7 @@ only in 'seen' (formerly 'pu'---proposed updates) while commits prefixed
 with '+' are in 'next'.  The ones marked with '.' do not appear in any of
 the integration branches, but I am still holding onto them.
 
-The ninth batch of topics are in 'master'.
+A release candidate Git v2.31.0-rc1 has been tagged.
 
 Copies of the source code to Git live in many repositories, and the
 following is a list of the ones I push into or their mirrors.  Some
@@ -45,338 +45,327 @@ Release tarballs are available at:
 --------------------------------------------------
 [Graduated to 'master']
 
-* ak/config-bad-bool-error (2021-02-11) 1 commit
-  (merged to 'next' on 2021-02-12 at 76784be663)
- + config: improve error message for boolean config
-
- The error message given when a configuration variable that is
- expected to have a boolean value has been improved.
+* ab/detox-gettext-tests (2021-02-10) 4 commits
+  (merged to 'next' on 2021-02-17 at bd3d771557)
+ + tests: remove most uses of test_i18ncmp
+ + tests: remove last uses of C_LOCALE_OUTPUT
+ + tests: remove most uses of C_LOCALE_OUTPUT
+ + tests: remove last uses of GIT_TEST_GETTEXT_POISON=false
 
+ Removal of GIT_TEST_GETTEXT_POISON continues.
 
-* ak/corrected-commit-date (2021-01-18) 11 commits
-  (merged to 'next' on 2021-01-26 at deae33ec7d)
- + doc: add corrected commit date info
- + commit-reach: use corrected commit dates in paint_down_to_common()
- + commit-graph: use generation v2 only if entire chain does
- + commit-graph: implement generation data chunk
- + commit-graph: implement corrected commit date
- + commit-graph: return 64-bit generation number
- + commit-graph: add a slab to store topological levels
- + t6600-test-reach: generalize *_three_modes
- + commit-graph: consolidate fill_commit_graph_info
- + revision: parse parent in indegree_walk_step()
- + commit-graph: fix regression when computing Bloom filters
- (this branch is used by ds/chunked-file-api, ds/commit-graph-genno-fix and ds/merge-base-independent.)
 
- The commit-graph learned to use corrected commit dates instead of
- the generation number to help topological revision traversal.
+* ab/diff-deferred-free (2021-02-11) 2 commits
+  (merged to 'next' on 2021-02-12 at 5e24106122)
+ + diff: plug memory leak from regcomp() on {log,diff} -I
+ + diff: add an API for deferred freeing
 
Will merge to 'master', together with "ds/commit-graph-genno-fix".
A small memleak in "diff -I<regexp>" has been corrected.
 
 
-* ds/commit-graph-genno-fix (2021-02-01) 6 commits
-  (merged to 'next' on 2021-02-03 at b3a9e11efb)
- + commit-graph: prepare commit graph
- + commit-graph: be extra careful about mixed generations
- + commit-graph: compute generations separately
- + commit-graph: validate layers for generation data
- + commit-graph: always parse before commit_graph_data_at()
- + commit-graph: use repo_parse_commit
- (this branch uses ak/corrected-commit-date; is tangled with ds/chunked-file-api and ds/merge-base-independent.)
+* ab/pager-exit-log (2021-02-01) 4 commits
+  (merged to 'next' on 2021-02-12 at ffe9f2d364)
+ + pager: properly log pager exit code when signalled
+ + run-command: add braces for "if" block in wait_or_whine()
+ + pager: test for exit code with and without SIGPIPE
+ + pager: refactor wait_for_pager() function
 
- Fix incremental update of commit-graph file around corrected commit
- date data.
+ When a pager spawned by us exited, the trace log did not record its
+ exit status correctly, which has been corrected.
+ The original "what should we do with SIGPIPE?" question remains, though.
 
- Will merge to 'master', together with "ak/corrected-commit-date".
 
+* ab/test-lib (2021-02-12) 11 commits
+  (merged to 'next' on 2021-02-12 at 666a0422dc)
+ + test-lib-functions: assert correct parameter count
+ + test-lib-functions: remove bug-inducing "diagnostics" helper param
+ + test libs: rename "diff-lib" to "lib-diff"
+ + t/.gitattributes: sort lines
+ + test-lib-functions: move function to lib-bitmap.sh
+ + test libs: rename gitweb-lib.sh to lib-gitweb.sh
+ + test libs: rename bundle helper to "lib-bundle.sh"
+ + test-lib-functions: remove generate_zero_bytes() wrapper
+ + test-lib-functions: move test_set_index_version() to its user
+ + test lib: change "error" to "BUG" as appropriate
+ + test-lib: remove check_var_migration
+ (this branch is used by ab/pickaxe-pcre2.)
 
-* ds/maintenance-pack-refs (2021-02-09) 2 commits
-  (merged to 'next' on 2021-02-11 at 36f56bc9ec)
- + maintenance: incremental strategy runs pack-refs weekly
- + maintenance: add pack-refs task
+ Test framework clean-up.
 
- "git maintenance" tool learned a new "pack-refs" maintenance task.
 
+* ah/commit-graph-leakplug (2021-02-22) 1 commit
+  (merged to 'next' on 2021-02-22 at 1330b452db)
+ + commit-graph: avoid leaking topo_levels slab in write_commit_graph()
 
-* ew/rev-parse-since-test (2021-02-10) 1 commit
-  (merged to 'next' on 2021-02-11 at 2490918be8)
- + t1500: ensure current --since= behavior remains
+ Plug a minor memory leak.
 
- Test to make sure "git rev-parse one-thing one-thing" gives
- the same thing twice (when one-thing is --since=X).
 
+* ah/rebase-no-fork-point-config (2021-02-24) 1 commit
+  (merged to 'next' on 2021-02-24 at 8e56891909)
+ + rebase: add a config option for --no-fork-point
 
-* jk/mailmap-only-at-root (2021-02-10) 1 commit
-  (merged to 'next' on 2021-02-10 at fbd122fd6c)
- + mailmap: only look for .mailmap in work tree
+ "git rebase --[no-]fork-point" gained a configuration variable
+ rebase.forkPoint so that users do not have to keep specifying a
+ non-default setting.
 
- The .mailmap is documented to be read only from the root level of a
- working tree, but a stray file in a bare repository also was read
- by accident, which has been corrected.
 
+* bc/signed-objects-with-both-hashes (2021-02-10) 6 commits
+  (merged to 'next' on 2021-02-11 at 391cc85104)
+ + gpg-interface: remove other signature headers before verifying
+ + ref-filter: hoist signature parsing
+ + commit: allow parsing arbitrary buffers with headers
+ + gpg-interface: improve interface for parsing tags
+ + commit: ignore additional signatures when parsing signed commits
+ + ref-filter: switch some uses of unsigned long to size_t
 
-* js/commit-graph-warning (2021-02-11) 1 commit
-  (merged to 'next' on 2021-02-12 at e9faad550a)
- + commit-graph: when incompatible with graphs, indicate why
+ Signed commits and tags now allow verification of objects, whose
+ two object names (one in SHA-1, the other in SHA-256) are both
+ signed.
 
- When certain features (e.g. grafts) used in the repository are
- incompatible with the use of the commit-graph, we used to silently
- turned commit-graph off; we now tell the user what we are doing.
 
+* cw/pack-config-doc (2021-02-22) 1 commit
+  (merged to 'next' on 2021-02-22 at cfd2f5ccd1)
+ + doc: mention bigFileThreshold for packing
 
-* js/fsck-name-objects-fix (2021-02-10) 2 commits
-  (merged to 'next' on 2021-02-10 at 79afd7ebdc)
- + fsck --name-objects: be more careful parsing generation numbers
- + t1450: robustify `remove_object()`
+ Doc update.
 
- Fix "git fsck --name-objects" which apparently has not been used by
- anybody who is motivated enough to report breakage.
 
+* dl/doc-config-camelcase (2021-02-24) 3 commits
+  (merged to 'next' on 2021-02-24 at 5315e84c47)
+ + index-format doc: camelCase core.excludesFile
+ + blame-options.txt: camelcase blame.blankBoundary
+ + i18n.txt: camel case and monospace "i18n.commitEncoding"
 
-* js/range-diff-one-side-only (2021-02-06) 6 commits
-  (merged to 'next' on 2021-02-08 at 8c35ed8523)
- + range-diff: offer --left-only/--right-only options
- + range-diff: move the diffopt initialization down one layer
- + range-diff: combine all options in a single data structure
- + range-diff: simplify code spawning `git log`
- + range-diff: libify the read_patches() function again
- + range-diff: avoid leaking memory in two error code paths
+ A handful of multi-word configuration variable names in
+ documentation that are spelled in all lowercase have been corrected
+ to use the more canonical camelCase.
 
- The "git range-diff" command learned "--(left|right)-only" option
- to show only one side of the compared range.
 
+* dl/stash-cleanup (2021-02-11) 7 commits
+  (merged to 'next' on 2021-02-11 at ae1cde1380)
+ + stash: declare ref_stash as an array
+ + t3905: use test_cmp() to check file contents
+ + t3905: replace test -s with test_file_not_empty
+ + t3905: remove nested git in command substitution
+ + t3905: move all commands into test cases
+ + t3905: remove spaces after redirect operators
+ + git-stash.txt: be explicit about subcommand options
+ (this branch is used by dl/stash-show-untracked.)
 
-* js/range-diff-wo-dotdot (2021-02-06) 3 commits
-  (merged to 'next' on 2021-02-08 at 9ae8b46d99)
- + range-diff(docs): explain how to specify commit ranges
- + range-diff/format-patch: handle commit ranges other than A..B
- + range-diff/format-patch: refactor check for commit range
+ Documentation, code and test clean-up around "git stash".
+ This is an early part of a topic that added a new feature to the
+ command, but the implementation is expected to need a handful of
+ iterations; I split the preparatory part up to fast-track it.
 
- There are other ways than ".." for a single token to denote a
- "commit range", namely "<rev>^!" and "<rev>^-<n>", but "git
- range-diff" did not understand them.
 
+* ds/chunked-file-api (2021-02-24) 18 commits
+  (merged to 'next' on 2021-02-24 at 6002da063c)
+ + commit-graph.c: display correct number of chunks when writing
+  (merged to 'next' on 2021-02-22 at 5f0e28cfb2)
+ + chunk-format: add technical docs
+ + chunk-format: restore duplicate chunk checks
+ + midx: use 64-bit multiplication for chunk sizes
+ + midx: use chunk-format read API
+ + commit-graph: use chunk-format read API
+ + chunk-format: create read chunk API
+ + midx: use chunk-format API in write_midx_internal()
+ + midx: drop chunk progress during write
+ + midx: return success/failure in chunk write methods
+ + midx: add num_large_offsets to write_midx_context
+ + midx: add pack_perm to write_midx_context
+ + midx: add entries to write_midx_context
+ + midx: use context in write_midx_pack_names()
+ + midx: rename pack_info to write_midx_context
+ + commit-graph: use chunk-format write API
+ + chunk-format: create chunk format write API
+ + commit-graph: anonymize data in chunk_write_fn
+ (this branch is used by ds/commit-graph-generation-config and tb/reverse-midx.)
 
-* js/reflog-expire-stale-fix (2021-02-11) 1 commit
-  (merged to 'next' on 2021-02-12 at 899034efca)
- + reflog expire --stale-fix: be generous about missing objects
+ The common code to deal with "chunked file format" that is shared
+ by the multi-pack-index and commit-graph files have been factored
+ out, to help codepaths for both filetypes to become more robust.
 
- "git reflog expire --stale-fix" can be used to repair the reflog by
- removing entries that refer to objects that have been pruned away,
- but was not careful to tolerate missing objects.
 
+* ds/merge-base-independent (2021-02-22) 5 commits
+  (merged to 'next' on 2021-02-24 at 9fad5352ea)
+ + commit-reach: stale commits may prune generation further
+ + commit-reach: use heuristic in remove_redundant()
+ + commit-reach: move compare_commits_by_gen
+ + commit-reach: use one walk in remove_redundant()
+ + commit-reach: reduce requirements for remove_redundant()
 
-* jt/clone-unborn-head (2021-02-05) 3 commits
-  (merged to 'next' on 2021-02-08 at 3ba9f80e7f)
- + clone: respect remote unborn HEAD
- + connect, transport: encapsulate arg in struct
- + ls-refs: report unborn targets of symrefs
+ The code to implement "git merge-base --independent" was poorly
+ done and was kept from the very beginning of the feature.
 
- "git clone" tries to locally check out the branch pointed at by
- HEAD of the remote repository after it is done, but the protocol
- did not convey the information necessary to do so when copying an
- empty repository.  The protocol v2 learned how to do so.
 
+* en/diffcore-rename (2021-02-15) 8 commits
+  (merged to 'next' on 2021-02-22 at 243d0182da)
+ + merge-ort: call diffcore_rename() directly
+ + gitdiffcore doc: mention new preliminary step for rename detection
+ + diffcore-rename: guide inexact rename detection based on basenames
+ + diffcore-rename: complete find_basename_matches()
+ + diffcore-rename: compute basenames of source and dest candidates
+ + t4001: add a test comparing basename similarity and content similarity
+ + diffcore-rename: filter rename_src list when possible
+ + diffcore-rename: no point trying to find a match better than exact
 
-* jt/trace2-BUG (2021-02-09) 1 commit
-  (merged to 'next' on 2021-02-09 at 94911ad676)
- + usage: trace2 BUG() invocations
+ Performance optimization work on the rename detection continues.
 
- Even though invocations of "die()" were logged to the trace2
- system, "BUG()"s were not, which has been corrected.
 
+* es/maintenance-of-bare-repositories (2021-02-23) 1 commit
+  (merged to 'next' on 2021-02-24 at 73a40e23b3)
+ + maintenance: fix incorrect `maintenance.repo` path with bare repository
 
-* jx/t5411-unique-filenames (2021-01-22) 2 commits
-  (merged to 'next' on 2021-02-11 at bc5c67f70f)
- + t5411: refactor check of refs using test_cmp_refs
- + t5411: use different out file to prevent overwriting
+ The "git maintenance register" command had trouble registering bare
+ repositories, which had been corrected.
 
- Avoid individual tests in t5411 from getting affected by each other
- by forcing them to use separate output files during the test.
 
+* hn/reftable-tables-doc-update (2021-02-23) 1 commit
+  (merged to 'next' on 2021-02-25 at cfeadb4945)
+ + doc/reftable: document how to handle windows
 
-* mr/bisect-in-c-4 (2021-02-03) 7 commits
-  (merged to 'next' on 2021-02-05 at ea18026619)
- + bisect--helper: retire `--check-and-set-terms` subcommand
- + bisect--helper: reimplement `bisect_skip` shell function in C
- + bisect--helper: retire `--bisect-auto-next` subcommand
- + bisect--helper: use `res` instead of return in BISECT_RESET case option
- + bisect--helper: retire `--bisect-write` subcommand
- + bisect--helper: reimplement `bisect_replay` shell function in C
- + bisect--helper: reimplement `bisect_log` shell function in C
+ Documentation update.
 
- Piecemeal of rewrite of "git bisect" in C continues.
 
+* hv/trailer-formatting (2021-02-15) 4 commits
+  (merged to 'next' on 2021-02-25 at 7d1d5ecf59)
+ + ref-filter: use pretty.c logic for trailers
+ + pretty.c: capture invalid trailer argument
+ + pretty.c: refactor trailer logic to `format_set_trailers_options()`
+ + t6300: use function to test trailer options
 
-* mt/grep-cached-untracked (2021-02-09) 1 commit
-  (merged to 'next' on 2021-02-10 at e1fca79104)
- + grep: error out if --untracked is used with --cached
+ The logic to handle "trailer" related placeholders in the
+ "--format=" mechanisms in the "log" family and "for-each-ref"
+ family is getting unified.
 
- "git grep --untracked" is meant to be "let's ALSO find in these
- files on the filesystem" when looking for matches in the working
- tree files, and does not make any sense if the primary search is
- done against the index, or the tree objects.  The "--cached" and
- "--untracked" options have been marked as mutually incompatible.
 
+* jc/diffcore-rotate (2021-02-16) 1 commit
+  (merged to 'next' on 2021-02-22 at f17c341d20)
+ + diff: --{rotate,skip}-to=<path>
+ (this branch is used by zh/difftool-skip-to.)
 
-* sh/mergetool-hideresolved (2021-02-09) 3 commits
-  (merged to 'next' on 2021-02-09 at c3ed19b2ec)
- + mergetool: add per-tool support and overrides for the hideResolved flag
- + mergetool: break setup_tool out into separate initialization function
- + mergetool: add hideResolved configuration
+ "git {diff,log} --{skip,rotate}-to=<path>" allows the user to
+ discard diff output for early paths or move them to the end of the
+ output.
 
- "git mergetool" feeds three versions (base, local and remote) of
- a conflicted path unmodified.  The command learned to optionally
- prepare these files with unconflicted parts already resolved.
 
---------------------------------------------------
-[New Topics]
+* jc/maint-column-doc-typofix (2021-02-19) 1 commit
+  (merged to 'next' on 2021-02-22 at d927f64824)
+ + Documentation: typofix --column description
 
-* ab/fsck-api-cleanup (2021-02-18) 10 commits
- - fsck.h: update FSCK_OPTIONS_* for object_name
- - fsck.c: give "FOREACH_MSG_ID" a more specific name
- - fsck.c: undefine temporary STR macro after use
- - fsck.c: call parse_msg_type() early in fsck_set_msg_type()
- - fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
- - fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
- - fsck.c: move definition of msg_id into append_msg_id()
- - fsck.c: rename variables in fsck_set_msg_type() for less confusion
- - fsck.h: use "enum object_type" instead of "int"
- - fsck.h: indent arguments to of fsck_set_msg_type
+ Doc update.
 
- Preliminary fsck API clean-up.
 
- Expecting a reroll.
- cf. <xmqqczwxc8bw.fsf@gitster.g>
- Looking good.
+* jc/push-delete-nothing (2021-02-23) 1 commit
+  (merged to 'next' on 2021-02-24 at 9d5481ea10)
+ + push: do not turn --delete '' into a matching push
 
+ "git push $there --delete ''" should have been diagnosed as an
+ error, but instead turned into a matching push, which has been
+ corrected.
 
-* ab/grep-pcre2-allocfix (2021-02-17) 10 commits
- - grep/pcre2: move definitions of pcre2_{malloc,free}
- - grep/pcre2: move back to thread-only PCREv2 structures
- - grep/pcre2: actually make pcre2 use custom allocator
- - grep/pcre2: use pcre2_maketables_free() function
- - grep/pcre2: use compile-time PCREv2 version test
- - grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
- - grep/pcre2: prepare to add debugging to pcre2_malloc()
- - grep/pcre2: correct reference to grep_init() in comment
- - grep/pcre2: drop needless assignment to NULL
- - grep/pcre2: drop needless assignment + assert() on opt->pcre2
 
- Updates to memory allocation code around the use of pcre2 library.
+* jh/fsmonitor-prework (2021-02-16) 11 commits
+  (merged to 'next' on 2021-02-17 at 1943efb5ac)
+ + fsmonitor: refactor initialization of fsmonitor_last_update token
+ + fsmonitor: allow all entries for a folder to be invalidated
+ + fsmonitor: log FSMN token when reading and writing the index
+ + fsmonitor: log invocation of FSMonitor hook to trace2
+ + read-cache: log the number of scanned files to trace2
+ + read-cache: log the number of lstat calls to trace2
+ + preload-index: log the number of lstat calls to trace2
+ + p7519: add trace logging during perf test
+ + p7519: move watchman cleanup earlier in the test
+ + p7519: fix watchman watch-list test on Windows
+ + p7519: do not rely on "xargs -d" in test
 
- Needs review.
- cf. <20210218000728.13995-1-avarab@gmail.com>
+ Preliminary changes to fsmonitor integration.
 
---------------------------------------------------
-[Stalled]
 
-* ab/make-cleanup (2021-02-01) 6 commits
- - Makefile: add {program,xdiff,test,git}-objs & objects targets
- - Makefile: split OBJECTS into OBJECTS and GIT_OBJS
- - Makefile: sort OBJECTS assignment for subsequent change
- - Makefile: split up long OBJECTS line
- - Makefile: guard against TEST_OBJS in the environment
- - Makefile: remove "all" on "$(FUZZ_OBJS)"
+* jh/untracked-cache-fix (2021-02-24) 1 commit
+  (merged to 'next' on 2021-02-25 at 79d1e40211)
+ + dir: fix malloc of root untracked_cache_dir
 
- Reorganize Makefile to allow building git.o and other essential
- objects without extra stuff needed only for testing.
+ An under-allocation for the untracked cache data has been corrected.
 
- Expecting a reroll (or retraction)
- cf. <YBuZVfnc0ECuoKkK@coredump.intra.peff.net>
- cf. <xmqq1rdzjuaa.fsf@gitster.c.googlers.com>
 
+* jk/rev-list-disk-usage (2021-02-17) 4 commits
+  (merged to 'next' on 2021-02-22 at 37a29a3495)
+ + docs/rev-list: add some examples of --disk-usage
+ + docs/rev-list: add an examples section
+  (merged to 'next' on 2021-02-11 at 6fb701f287)
+ + rev-list: add --disk-usage option for calculating disk usage
+ + t: add --no-tag option to test_commit
+ (this branch is used by ab/pickaxe-pcre2.)
 
-* jk/symlinked-dotgitx-files (2020-10-23) 9 commits
- - docs: document symlink restrictions for .git* files
- - fsck: complain when .gitattributes or .gitignore is a symlink
- - verify_path(): disallow symlinks in .gitattributes and .gitignore
- - t0060: test obscured .gitattributes and .gitignore matching
- - t7450: test .gitmodules symlink matching against obscured names
- - t7450: test verify_path() handling of gitmodules
- - t7415: rename to expand scope
- - fsck_tree(): wrap some long lines
- - fsck_tree(): fix shadowed variable
+ "git rev-list" command learned "--disk-usage" option.
 
- "git fsck" and the corresponding check done during the transport
- learned to ensure that in-tree files like `.gitignore` and
- `.gitattributes` are not symbolic links.
 
- It seems that there are real projects with .gitignore recorded as
- symlinks, which may need to loosen the fsck setting.  Do we need to
- introduce a class that is separate from symlinked .gitmodules that
- has potential consequences that is more/less grave, so that these
- projects can opt out of the new checks?
+* js/doc-proto-v2-response-end (2021-02-17) 1 commit
+  (merged to 'next' on 2021-02-17 at 9d5d479469)
+ + doc: fix naming of response-end-pkt
 
+ Docfix.
 
-* ag/merge-strategies-in-c (2020-11-24) 13 commits
- - sequencer: use the "octopus" merge strategy without forking
- - sequencer: use the "resolve" strategy without forking
- - merge: use the "octopus" strategy without forking
- - merge: use the "resolve" strategy without forking
- - merge-octopus: rewrite in C
- - merge-recursive: move better_branch_name() to merge.c
- - merge-resolve: rewrite in C
- - merge-index: don't fork if the requested program is `git-merge-one-file'
- - merge-index: libify merge_one_path() and merge_all()
- - merge-one-file: rewrite in C
- - update-index: move add_cacheinfo() to read-cache.c
- - t6060: modify multiple files to expose a possible issue with merge-index
- - t6407: modernise tests
 
- The resolve and octopus merge strategy backends have been rewritten
- in C.
+* js/params-vs-args (2021-02-23) 1 commit
+  (merged to 'next' on 2021-02-24 at 0a1ff0bc16)
+ + replace "parameters" by "arguments" in error messages
 
Got enough review comments to get updated.
Messages update.
 
---------------------------------------------------
-[Cooking]
 
-* tb/reverse-midx (2021-02-10) 9 commits
- - pack-revindex: write multi-pack reverse indexes
- - pack-write.c: extract 'write_rev_file_order'
- - pack-revindex: read multi-pack reverse indexes
- - Documentation/technical: describe multi-pack reverse indexes
- - midx: make some functions non-static
- - midx: keep track of the checksum
- - midx: don't free midx_name early
- - midx: allow marking a pack as preferred
- - t/helper/test-read-midx.c: add '--show-objects'
+* jt/transfer-fsck-across-packs (2021-02-22) 4 commits
+  (merged to 'next' on 2021-02-22 at 76f1327431)
+ + fetch-pack: print and use dangling .gitmodules
+ + fetch-pack: with packfile URIs, use index-pack arg
+ + http-fetch: allow custom index-pack args
+ + http: allow custom index-pack args
 
- An on-disk reverse-index to map the in-pack location of an object
- back to its object name across multiple packfiles is introduced.
+ The approach to "fsck" the incoming objects in "index-pack" is
+ attractive for performance reasons (we have them already in core,
+ inflated and ready to be inspected), but fundamentally cannot be
+ applied fully when we receive more than one pack stream, as a tree
+ object in one pack may refer to a blob object in another pack as
+ ".gitmodules", when we want to inspect blobs that are used as
+ ".gitmodules" file, for example.  Teach "index-pack" to emit
+ objects that must be inspected later and check them in the calling
+ "fetch-pack" process.
 
 
-* ab/detox-gettext-tests (2021-02-10) 4 commits
-  (merged to 'next' on 2021-02-17 at bd3d771557)
- + tests: remove most uses of test_i18ncmp
- + tests: remove last uses of C_LOCALE_OUTPUT
- + tests: remove most uses of C_LOCALE_OUTPUT
- + tests: remove last uses of GIT_TEST_GETTEXT_POISON=false
+* ma/doc-markup-fix (2021-02-18) 3 commits
+  (merged to 'next' on 2021-02-22 at a8e9e712c8)
+ + gitmailmap.txt: fix rendering of e-mail addresses
+ + git.txt: fix monospace rendering
+ + rev-list-options.txt: fix rendering of bonus paragraph
 
Removal of GIT_TEST_GETTEXT_POISON continues.
Docfix.
 
- Will merge to 'master'.
 
+* mt/add-chmod-fixes (2021-02-24) 3 commits
+  (merged to 'next' on 2021-02-24 at 6c0977f3be)
+ + add: propagate --chmod errors to exit status
+ + add: mark --chmod error string for translation
+ + add --chmod: don't update index when --dry-run is used
 
-* ab/diff-deferred-free (2021-02-11) 2 commits
-  (merged to 'next' on 2021-02-12 at 5e24106122)
- + diff: plug memory leak from regcomp() on {log,diff} -I
- + diff: add an API for deferred freeing
+ Various fixes on "git add --chmod".
 
- A small memleak in "diff -I<regexp>" has been corrected.
 
- Will merge to 'master'.
+* mt/checkout-index-corner-cases (2021-02-16) 2 commits
+  (merged to 'next' on 2021-02-17 at 81dad9735b)
+ + checkout-index: omit entries with no tempname from --temp output
+ + write_entry(): fix misuses of `path` in error messages
 
+ The error codepath around the "--temp/--prefix" feature of "git
+ checkout-index" has been improved.
 
-* jc/diffcore-rotate (2021-02-16) 1 commit
- - diff: --{rotate,skip}-to=<path>
 
- "git {diff,log} --{skip,rotate}-to=<path>" allows the user to
- discard diff output for early paths or move them to the end of the
- output.
+* mt/grep-sparse-checkout (2021-02-09) 1 commit
+  (merged to 'next' on 2021-02-24 at 246fc2ad56)
+ + grep: honor sparse-checkout on working tree searches
 
- Will merge to 'next'.
+ "git grep" has been tweaked to be limited to the sparse checkout
+ paths.
 
 
 * mz/doc-notes-are-not-anchors (2021-02-10) 1 commit
@@ -388,404 +377,496 @@ Release tarballs are available at:
  which in turn can be pruned with "git notes prune").  This has been
  clarified in the documentation.
 
- Will merge to 'master'.
 
+* ns/raise-write-index-buffer-size (2021-02-24) 1 commit
+  (merged to 'next' on 2021-02-25 at 8f43f67ba7)
+ + read-cache: make the index write buffer size 128K
 
-* en/diffcore-rename (2021-02-15) 8 commits
- - merge-ort: call diffcore_rename() directly
- - gitdiffcore doc: mention new preliminary step for rename detection
- - diffcore-rename: guide inexact rename detection based on basenames
- - diffcore-rename: complete find_basename_matches()
- - diffcore-rename: compute basenames of source and dest candidates
- - t4001: add a test comparing basename similarity and content similarity
- - diffcore-rename: filter rename_src list when possible
- - diffcore-rename: no point trying to find a match better than exact
+ Raise the buffer size used when writing the index file out from
+ (obviously too small) 8kB to (clearly sufficiently large) 128kB.
+ We may want to extend this to use a value the platform suggests as
+ the best size with a follow-up patch, but this should do for now.
 
- Performance optimization work on the rename detection continues.
 
- Will merge to 'next'.
+* rs/blame-optim (2021-02-17) 1 commit
+  (merged to 'next' on 2021-02-17 at e54665eeb3)
+ + blame: remove unnecessary use of get_commit_info()
 
+ Optimization in "git blame"
 
-* ab/pickaxe-pcre2 (2021-02-18) 24 commits
- - pickaxe -G: don't special-case create/delete
- - pickaxe -G: terminate early on matching lines
- - xdiff-interface: support early exit in xdiff_outf()
- - xdiff-interface: allow early return from xdiff_emit_{line,hunk}_fn
- - pickaxe -S: slightly optimize contains()
- - pickaxe: rename variables in has_changes() for brevity
- - pickaxe -S: support content with NULs under --pickaxe-regex
- - pickaxe: assert that we must have a needle under -G or -S
- - pickaxe: refactor function selection in diffcore-pickaxe()
- - perf: add performance test for pickaxe
- - pickaxe/style: consolidate declarations and assignments
- - diff.h: move pickaxe fields together again
- - pickaxe: die when --find-object and --pickaxe-all are combined
- - pickaxe: die when -G and --pickaxe-regex are combined
- - pickaxe tests: test for -G, -S and --find-object incompatibility
- - pickaxe tests: add test for "log -S" not being a regex
- - pickaxe tests: add test for diffgrep_consume() internals
- - pickaxe tests: refactor to use test_commit --append --printf
- - test-lib functions: add --printf option to test_commit
- - test-lib-functions: reword "test_commit --append" docs
- - test-lib-functions: document and test test_commit --no-tag
- - grep/pcre2 tests: reword comments referring to kwset
- - Merge branch 'jk/rev-list-disk-usage' into ab/pickaxe-pcre2
- - Merge branch 'ab/test-lib' into ab/pickaxe-pcre2
- (this branch uses ab/test-lib and jk/rev-list-disk-usage.)
 
- Rewrite the backend for "diff -G/-S" to use pcre2 engine when
- available.
+* sh/mergetools-vimdiff1 (2021-02-23) 1 commit
+  (merged to 'next' on 2021-02-24 at dbd4c6684c)
+ + mergetools/vimdiff: add vimdiff1 merge tool variant
 
- Needs review.
- cf. <20210216115801.4773-1-avarab@gmail.com>
+ Mergetools update.
 
 
-* cm/rebase-i-fixup-amend-reword (2021-02-17) 6 commits
- - doc/git-commit: add documentation for fixup[amend|reword] options
- - t3437: use --fixup with options to create amend! commit
- - t7500: add tests for --fixup[amend|reword] options
- - commit: add a reword suboption to --fixup
- - commit: add amend suboption to --fixup to create amend! commit
- - sequencer: export subject_length()
- (this branch uses cm/rebase-i and cm/rebase-i-updates.)
+* sv/t7001-modernize (2021-02-11) 10 commits
+  (merged to 'next' on 2021-02-25 at 368861a00d)
+ + t7001: use `test` rather than `[`
+ + t7001: use here-docs instead of echo
+ + t7001: put each command on a separate line
+ + t7001: use '>' rather than 'touch'
+ + t7001: avoid using `cd` outside of subshells
+ + t7001: remove whitespace after redirect operators
+ + t7001: modernize subshell formatting
+ + t7001: remove unnecessary blank lines
+ + t7001: indent with TABs instead of spaces
+ + t7001: modernize test formatting
 
- "git commit --fixup=<commit>", which was to tweak the changes made
- to the contents while keeping the original log message intact,
- learned "--fixup=(amend|reword):<commit>", that can be used to
- tweak both the message and the contents, and only the message,
- respectively.
+ Test script modernization.
 
- Expecting a reroll.
- cf. <20210217072904.16257-1-charvi077@gmail.com>
 
+* ta/hash-function-transition-doc (2021-02-05) 6 commits
+  (merged to 'next' on 2021-02-12 at f620f3cfd3)
+ + doc: use https links
+ + doc hash-function-transition: move rationale upwards
+ + doc hash-function-transition: fix incomplete sentence
+ + doc hash-function-transition: use upper case consistently
+ + doc hash-function-transition: use SHA-1 and SHA-256 consistently
+ + doc hash-function-transition: fix asciidoc output
 
-* dl/stash-show-untracked (2021-02-16) 4 commits
- - SQUASH???
- - SQUASH???
- - stash show: learn stash.showIncludeUntracked
- - stash show: teach --include-untracked and --only-untracked
- (this branch uses dl/stash-cleanup.)
+ Update formatting and grammar of the hash transition plan
+ documentation, plus some updates.
 
- "git stash show" learned to optionally show untracked part of the
- stash.
 
- Expecting a reroll.
- cf. <cover.1613459474.git.liu.denton@gmail.com>
+* ug/doc-commit-approxidate (2021-02-23) 1 commit
+  (merged to 'next' on 2021-02-24 at 825686380e)
+ + doc: mention approxidates for git-commit --date
 
+ Doc update.
 
-* es/config-hooks-part-1 (2021-02-16) 17 commits
- - hooks: allow callers to capture output
- - run-command: allow capturing of collated output
- - hook: provide stdin by string_list or callback
- - run-command: add stdin callback for parallelization
- - hook: allow specifying working directory for hooks
- - hook: allow parallel hook execution
- - run-command: allow stdin for run_processes_parallel
- - hook: support passing stdin to hooks
- - hook: replace find_hook() with hook_exists()
- - hook: add 'run' subcommand
- - parse-options: parse into strvec
- - hook: implement hookcmd.<name>.skip
- - hook: respect hook.runHookDir
- - hook: include hookdir hook in list
- - hook: add list command
- - hook: scaffolding for git-hook subcommand
- - doc: propose hooks managed by the config
- (this branch is used by es/config-hooks.)
 
- A way to specify hooks in the configuration files is introduced.
+* zh/difftool-skip-to (2021-02-22) 1 commit
+  (merged to 'next' on 2021-02-22 at eeff734f2b)
+ + difftool.c: learn a new way start at specified file
+ (this branch uses jc/diffcore-rotate.)
 
- Expecting another reroll??
- cf. <YC7o2rUQOEdiMdqh@google.com>
+ "git difftool" learned "--skip-to=<path>" option to restart an
+ interrupted session from an arbitrary path.
 
+--------------------------------------------------
+[New Topics]
 
-* jh/fsmonitor-prework (2021-02-16) 11 commits
-  (merged to 'next' on 2021-02-17 at 1943efb5ac)
- + fsmonitor: refactor initialization of fsmonitor_last_update token
- + fsmonitor: allow all entries for a folder to be invalidated
- + fsmonitor: log FSMN token when reading and writing the index
- + fsmonitor: log invocation of FSMonitor hook to trace2
- + read-cache: log the number of scanned files to trace2
- + read-cache: log the number of lstat calls to trace2
- + preload-index: log the number of lstat calls to trace2
- + p7519: add trace logging during perf test
- + p7519: move watchman cleanup earlier in the test
- + p7519: fix watchman watch-list test on Windows
- + p7519: do not rely on "xargs -d" in test
+* ab/remote-write-config-in-camel-case (2021-02-24) 2 commits
+  (merged to 'next' on 2021-03-01 at a01bd0d8e4)
+ + remote: write camel-cased *.pushRemote on rename
+ + remote: add camel-cased *.tagOpt key, like clone
 
- Preliminary changes to fsmonitor integration.
+ Update C code that sets a few configuration variables when a remote
+ is configured so that it spells configuration variable names in the
+ canonical camelCase.
 
- Will merge to 'master'.
+ Will cook in 'next'.
 
 
-* jk/open-dotgitx-with-nofollow (2021-02-16) 6 commits
- - mailmap: do not respect symlinks for in-tree .mailmap
- - exclude: do not respect symlinks for in-tree .gitignore
- - attr: do not respect symlinks for in-tree .gitattributes
- - exclude: add flags parameter to add_patterns()
- - attr: convert "macro_ok" into a flags field
- - add open_nofollow() helper
+* ds/commit-graph-generation-config (2021-02-25) 2 commits
+  (merged to 'next' on 2021-03-01 at 926537ea97)
+ + commit-graph: use config to specify generation type
+ + commit-graph: create local repository pointer
 
- It does not make sense to make ".gitattributes", ".gitignore" and
- ".mailmap" symlinks, as they are supposed to be usable from the
- object store (think: bare repositories where HEAD:.mailmap etc. are
- used).  When these files are symbolic links, we used to read the
- contents of the files pointed by them by mistake, which has been
- corrected.
+ A new configuration variable has been introduced to allow choosing
+ which version of the generation number gets used in the
+ commit-graph file.
 
+ Will cook in 'next'.
 
-* js/doc-proto-v2-response-end (2021-02-17) 1 commit
-  (merged to 'next' on 2021-02-17 at 9d5d479469)
- + doc: fix naming of response-end-pkt
 
- Docfix.
+* mt/cleanly-die-upon-missing-required-filter (2021-02-26) 1 commit
+  (merged to 'next' on 2021-03-01 at 357954af7c)
+ + convert: fail gracefully upon missing clean cmd on required filter
 
- Will merge to 'master'.
+ We had a code to diagnose and die cleanly when a required
+ clean/smudge filter is missing, but an assert before that
+ unnecessarily fired, hiding the end-user facing die() message.
 
+ Will cook in 'next'.
 
-* ma/doc-markup-fix (2021-02-18) 3 commits
- - gitmailmap.txt: fix rendering of e-mail addresses
- - git.txt: fix monospace rendering
- - rev-list-options.txt: fix rendering of bonus paragraph
 
- Docfix.
+* ab/describe-tests-fix (2021-03-01) 10 commits
+ - test-lib: return 1 from test_expect_{success,failure}
+ - svn tests: refactor away a "set -e" in test body
+ - svn tests: remove legacy re-setup from init-clone test
+ - describe tests: support -C in "check_describe"
+ - describe tests: fix nested "test_expect_success" call
+ - describe tests: convert setup to use test_commit
+ - test-lib functions: add an --annotated-tag option to "test_commit"
+ - describe tests: always assert empty stderr from "describe"
+ - describe tests: refactor away from glob matching
+ - describe tests: improve test for --work-tree & --dirty
 
- Will merge to 'next'.
+ Various updates to tests around "git describe"
 
 
-* rs/blame-optim (2021-02-17) 1 commit
-  (merged to 'next' on 2021-02-17 at e54665eeb3)
- + blame: remove unnecessary use of get_commit_info()
+* en/ort-perf-batch-8 (2021-02-26) 10 commits
+ - diffcore-rename: compute dir_rename_guess from dir_rename_counts
+ - diffcore-rename: limit dir_rename_counts computation to relevant dirs
+ - diffcore-rename: compute dir_rename_counts in stages
+ - diffcore-rename: extend cleanup_dir_rename_info()
+ - diffcore-rename: move dir_rename_counts into dir_rename_info struct
+ - diffcore-rename: add function for clearing dir_rename_count
+ - Move computation of dir_rename_count from merge-ort to diffcore-rename
+ - diffcore-rename: add a mapping of destination names to their indices
+ - diffcore-rename: provide basic implementation of idx_possible_rename()
+ - diffcore-rename: use directory rename guided basename comparisons
 
- Optimization in "git blame"
+ Rename detection rework continues.
 
- Will merge to 'master'.
 
+* jk/open-returns-eintr (2021-03-01) 2 commits
+  (merged to 'next' on 2021-03-02 at 7f0218e627)
+ + config.mak.uname: enable OPEN_RETURNS_EINTR for macOS Big Sur
+ + Makefile: add OPEN_RETURNS_EINTR knob
 
-* rs/pretty-describe (2021-02-17) 2 commits
- - pretty: add merge and exclude options to %(describe)
- - pretty: add %(describe)
+ Work around platforms whose open() is reported to return EINTR (it
+ shouldn't, as we do our signals with SA_RESTART).
 
"git log --format='...'" learned "%(describe)" placeholder.
Will cook in 'next'.
 
 
-* cm/rebase-i-updates (2021-02-10) 11 commits
-  (merged to 'next' on 2021-02-12 at e29227780b)
- + doc/rebase -i: fix typo in the documentation of 'fixup' command
- + t/t3437: fixup the test 'multiple fixup -c opens editor once'
- + t/t3437: use named commits in the tests
- + t/t3437: simplify and document the test helpers
- + t/t3437: check the author date of fixed up commit
- + t/t3437: remove the dependency of 'expected-message' file from tests
- + t/t3437: fixup here-docs in the 'setup' test
- + t/lib-rebase: update the documentation of FAKE_LINES
- + rebase -i: clarify and fix 'fixup -c' rebase-todo help
- + sequencer: rename a few functions
- + sequencer: fixup the datatype of the 'flag' argument
- (this branch is used by cm/rebase-i-fixup-amend-reword; uses cm/rebase-i.)
+* jk/perf-in-worktrees (2021-02-26) 2 commits
+  (merged to 'next' on 2021-03-02 at ea298cb298)
+ + t/perf: avoid copying worktree files from test repo
+ + t/perf: handle worktrees as test repos
 
Follow-up fixes to "cm/rebase-i" topic.
Perf test update to work better in secondary worktrees.
 
- Will merge to 'master', together with "cm/rebase-i".
+ Will cook in 'next'.
 
 
-* cw/pack-vs-bigfilethreashold (2021-02-09) 2 commits
- - fixup! doc: mention bigFileThreshold for packing
- - doc: mention bigFileThreshold for packing
+* ps/update-ref-trans-hook-doc (2021-03-01) 2 commits
+ - githooks.txt: clarify documentation on reference-transaction hook
+ - githooks.txt: replace mentions of SHA-1 specific properties
 
- Doc update.
+
+* tb/pack-revindex-on-disk (2021-02-26) 1 commit
+ - pack-revindex.c: don't close unopened file descriptors
+
+
+* zh/format-patch-fractional-reroll-count (2021-03-01) 1 commit
+ - format-patch: allow a non-integral version numbers
+
+--------------------------------------------------
+[Stalled]
+
+* hn/reftable (2020-12-21) 16 commits
+ - SQUASH??? allow t0031 to run with any default branch name
+ - Add "test-tool dump-reftable" command.
+ - git-prompt: prepare for reftable refs backend
+ - Reftable support for git-core
+ - reftable: rest of library
+ - reftable: reftable file level tests
+ - reftable: read reftable files
+ - reftable: write reftable files
+ - reftable: a generic binary tree implementation
+ - reftable: reading/writing blocks
+ - reftable: (de)serialization for the polymorphic record type.
+ - reftable: add blocksource, an abstraction for random access reads
+ - reftable: utility functions
+ - reftable: add error related functionality
+ - reftable: add LICENSE
+ - init-db: set the_repository->hash_algo early on
+
+ The "reftable" backend for the refs API.
+
+
+* mt/parallel-checkout-part-1 (2020-12-16) 9 commits
+ - entry: add checkout_entry_ca() taking preloaded conv_attrs
+ - entry: move conv_attrs lookup up to checkout_entry()
+ - entry: extract update_ce_after_write() from write_entry()
+ - entry: make fstat_output() and read_blob_entry() public
+ - entry: extract a header file for entry.c functions
+ - convert: add classification for conv_attrs struct
+ - convert: add get_stream_filter_ca() variant
+ - convert: add [async_]convert_to_working_tree_ca() variants
+ - convert: make convert_attrs() and convert structs public
+
+ Parallel checkout.
+
+ Looking good.
+
+
+* es/config-hooks-part-1 (2021-02-16) 17 commits
+ - hooks: allow callers to capture output
+ - run-command: allow capturing of collated output
+ - hook: provide stdin by string_list or callback
+ - run-command: add stdin callback for parallelization
+ - hook: allow specifying working directory for hooks
+ - hook: allow parallel hook execution
+ - run-command: allow stdin for run_processes_parallel
+ - hook: support passing stdin to hooks
+ - hook: replace find_hook() with hook_exists()
+ - hook: add 'run' subcommand
+ - parse-options: parse into strvec
+ - hook: implement hookcmd.<name>.skip
+ - hook: respect hook.runHookDir
+ - hook: include hookdir hook in list
+ - hook: add list command
+ - hook: scaffolding for git-hook subcommand
+ - doc: propose hooks managed by the config
+ (this branch is used by es/config-hooks.)
+
+ A way to specify hooks in the configuration files is introduced.
+
+ Expecting another reroll??
+ cf. <YC7o2rUQOEdiMdqh@google.com>
+
+
+* dl/stash-show-untracked (2021-02-16) 4 commits
+ - SQUASH???
+ - SQUASH???
+ - stash show: learn stash.showIncludeUntracked
+ - stash show: teach --include-untracked and --only-untracked
+
+ "git stash show" learned to optionally show untracked part of the
+ stash.
 
  Expecting a reroll.
- cf. <F63929A8-7BC9-43A7-9E7B-118433F62588@gmx.ch>
+ cf. <cover.1613459474.git.liu.denton@gmail.com>
 
 
-* jk/rev-list-disk-usage (2021-02-17) 4 commits
- - docs/rev-list: add some examples of --disk-usage
- - docs/rev-list: add an examples section
-  (merged to 'next' on 2021-02-11 at 6fb701f287)
- + rev-list: add --disk-usage option for calculating disk usage
- + t: add --no-tag option to test_commit
- (this branch is used by ab/pickaxe-pcre2.)
+* ab/fsck-api-cleanup (2021-02-18) 10 commits
+ - fsck.h: update FSCK_OPTIONS_* for object_name
+ - fsck.c: give "FOREACH_MSG_ID" a more specific name
+ - fsck.c: undefine temporary STR macro after use
+ - fsck.c: call parse_msg_type() early in fsck_set_msg_type()
+ - fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
+ - fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
+ - fsck.c: move definition of msg_id into append_msg_id()
+ - fsck.c: rename variables in fsck_set_msg_type() for less confusion
+ - fsck.h: use "enum object_type" instead of "int"
+ - fsck.h: indent arguments to of fsck_set_msg_type
 
"git rev-list" command learned "--disk-usage" option.
Preliminary fsck API clean-up.
 
- Will merge to 'next' and then to 'master'.
+ Expecting a reroll.
+ cf. <xmqqczwxc8bw.fsf@gitster.g>
 
 
-* mt/checkout-index-corner-cases (2021-02-16) 2 commits
-  (merged to 'next' on 2021-02-17 at 81dad9735b)
- + checkout-index: omit entries with no tempname from --temp output
- + write_entry(): fix misuses of `path` in error messages
+* jk/symlinked-dotgitx-files (2020-10-23) 9 commits
+ - docs: document symlink restrictions for .git* files
+ - fsck: complain when .gitattributes or .gitignore is a symlink
+ - verify_path(): disallow symlinks in .gitattributes and .gitignore
+ - t0060: test obscured .gitattributes and .gitignore matching
+ - t7450: test .gitmodules symlink matching against obscured names
+ - t7450: test verify_path() handling of gitmodules
+ - t7415: rename to expand scope
+ - fsck_tree(): wrap some long lines
+ - fsck_tree(): fix shadowed variable
 
- The error codepath around the "--temp/--prefix" feature of "git
- checkout-index" has been improved.
+ "git fsck" and the corresponding check done during the transport
+ learned to ensure that in-tree files like `.gitignore` and
+ `.gitattributes` are not symbolic links.
 
- Will merge to 'master'.
+ It seems that there are real projects with .gitignore recorded as
+ symlinks, which may need to loosen the fsck setting.  Do we need to
+ introduce a class that is separate from symlinked .gitmodules that
+ has potential consequences that is more/less grave, so that these
+ projects can opt out of the new checks?
 
 
-* ab/test-lib (2021-02-12) 11 commits
-  (merged to 'next' on 2021-02-12 at 666a0422dc)
- + test-lib-functions: assert correct parameter count
- + test-lib-functions: remove bug-inducing "diagnostics" helper param
- + test libs: rename "diff-lib" to "lib-diff"
- + t/.gitattributes: sort lines
- + test-lib-functions: move function to lib-bitmap.sh
- + test libs: rename gitweb-lib.sh to lib-gitweb.sh
- + test libs: rename bundle helper to "lib-bundle.sh"
- + test-lib-functions: remove generate_zero_bytes() wrapper
- + test-lib-functions: move test_set_index_version() to its user
- + test lib: change "error" to "BUG" as appropriate
- + test-lib: remove check_var_migration
- (this branch is used by ab/pickaxe-pcre2.)
+* ag/merge-strategies-in-c (2020-11-24) 13 commits
+ - sequencer: use the "octopus" merge strategy without forking
+ - sequencer: use the "resolve" strategy without forking
+ - merge: use the "octopus" strategy without forking
+ - merge: use the "resolve" strategy without forking
+ - merge-octopus: rewrite in C
+ - merge-recursive: move better_branch_name() to merge.c
+ - merge-resolve: rewrite in C
+ - merge-index: don't fork if the requested program is `git-merge-one-file'
+ - merge-index: libify merge_one_path() and merge_all()
+ - merge-one-file: rewrite in C
+ - update-index: move add_cacheinfo() to read-cache.c
+ - t6060: modify multiple files to expose a possible issue with merge-index
+ - t6407: modernise tests
 
- Test framework clean-up.
+ The resolve and octopus merge strategy backends have been rewritten
+ in C.
 
Will merge to 'master'.
Got enough review comments to get updated.
 
+--------------------------------------------------
+[Cooking]
 
-* dl/stash-cleanup (2021-02-11) 7 commits
-  (merged to 'next' on 2021-02-11 at ae1cde1380)
- + stash: declare ref_stash as an array
- + t3905: use test_cmp() to check file contents
- + t3905: replace test -s with test_file_not_empty
- + t3905: remove nested git in command substitution
- + t3905: move all commands into test cases
- + t3905: remove spaces after redirect operators
- + git-stash.txt: be explicit about subcommand options
- (this branch is used by dl/stash-show-untracked.)
+* ab/make-cleanup (2021-02-23) 6 commits
+ - Makefile: build "$(FUZZ_OBJS)" in CI, not under "all"
+ - Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
+ - Makefile: split OBJECTS into OBJECTS and GIT_OBJS
+ - Makefile: sort OBJECTS assignment for subsequent change
+ - Makefile: split up long OBJECTS line
+ - Makefile: guard against TEST_OBJS in the environment
 
- Documentation, code and test clean-up around "git stash".
+ Reorganize Makefile to allow building git.o and other essential
+ objects without extra stuff needed only for testing.
 
- Will merge to 'master'.
- This is an early part of a topic that added a new feature to the
- command, but the implementation is expected to need a handful of
- iterations; I split the preparatory part up to fast-track it.
+ The last step is of dubious value, but otherwise looked OK.
+ cf. <YDVJZnmTiBYZ4iPM@coredump.intra.peff.net>
 
 
-* sv/t7001-modernize (2021-02-11) 10 commits
- - t7001: use `test` rather than `[`
- - t7001: use here-docs instead of echo
- - t7001: put each command on a separate line
- - t7001: use '>' rather than 'touch'
- - t7001: avoid using `cd` outside of subshells
- - t7001: remove whitespace after redirect operators
- - t7001: modernize subshell formatting
- - t7001: remove unnecessary blank lines
- - t7001: indent with TABs instead of spaces
- - t7001: modernize test formatting
+* ab/grep-pcre2-allocfix (2021-02-17) 10 commits
+ - grep/pcre2: move definitions of pcre2_{malloc,free}
+ - grep/pcre2: move back to thread-only PCREv2 structures
+ - grep/pcre2: actually make pcre2 use custom allocator
+ - grep/pcre2: use pcre2_maketables_free() function
+ - grep/pcre2: use compile-time PCREv2 version test
+ - grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
+ - grep/pcre2: prepare to add debugging to pcre2_malloc()
+ - grep/pcre2: correct reference to grep_init() in comment
+ - grep/pcre2: drop needless assignment to NULL
+ - grep/pcre2: drop needless assignment + assert() on opt->pcre2
 
Test script modernization.
Updates to memory allocation code around the use of pcre2 library.
 
- Expecting the final version with corrected author attribution.
+ Needs review.
+ cf. <20210218000728.13995-1-avarab@gmail.com>
 
 
-* mt/grep-sparse-checkout (2021-02-09) 1 commit
- - grep: honor sparse-checkout on working tree searches
+* tb/reverse-midx (2021-02-24) 16 commits
+ - pack-revindex: write multi-pack reverse indexes
+ - pack-write.c: extract 'write_rev_file_order'
+ - pack-revindex: read multi-pack reverse indexes
+ - Documentation/technical: describe multi-pack reverse indexes
+ - midx: make some functions non-static
+ - midx: keep track of the checksum
+ - midx: don't free midx_name early
+ - midx: allow marking a pack as preferred
+ - t/helper/test-read-midx.c: add '--show-objects'
+ - builtin/multi-pack-index.c: display usage on unrecognized command
+ - builtin/multi-pack-index.c: don't enter bogus cmd_mode
+ - builtin/multi-pack-index.c: split sub-commands
+ - builtin/multi-pack-index.c: define common usage with a macro
+ - builtin/multi-pack-index.c: don't handle 'progress' separately
+ - builtin/multi-pack-index.c: inline 'flags' with options
+ - Merge branch 'ds/chunked-file-api' into tb/reverse-midx
 
"git grep" has been tweaked to be limited to the sparse checkout
paths.
An on-disk reverse-index to map the in-pack location of an object
back to its object name across multiple packfiles is introduced.
 
- Will merge to 'next'.
 
+* ab/pickaxe-pcre2 (2021-02-18) 24 commits
+ - pickaxe -G: don't special-case create/delete
+ - pickaxe -G: terminate early on matching lines
+ - xdiff-interface: support early exit in xdiff_outf()
+ - xdiff-interface: allow early return from xdiff_emit_{line,hunk}_fn
+ - pickaxe -S: slightly optimize contains()
+ - pickaxe: rename variables in has_changes() for brevity
+ - pickaxe -S: support content with NULs under --pickaxe-regex
+ - pickaxe: assert that we must have a needle under -G or -S
+ - pickaxe: refactor function selection in diffcore-pickaxe()
+ - perf: add performance test for pickaxe
+ - pickaxe/style: consolidate declarations and assignments
+ - diff.h: move pickaxe fields together again
+ - pickaxe: die when --find-object and --pickaxe-all are combined
+ - pickaxe: die when -G and --pickaxe-regex are combined
+ - pickaxe tests: test for -G, -S and --find-object incompatibility
+ - pickaxe tests: add test for "log -S" not being a regex
+ - pickaxe tests: add test for diffgrep_consume() internals
+ - pickaxe tests: refactor to use test_commit --append --printf
+ - test-lib functions: add --printf option to test_commit
+ - test-lib-functions: reword "test_commit --append" docs
+ - test-lib-functions: document and test test_commit --no-tag
+ - grep/pcre2 tests: reword comments referring to kwset
+ - Merge branch 'jk/rev-list-disk-usage' into ab/pickaxe-pcre2
+ - Merge branch 'ab/test-lib' into ab/pickaxe-pcre2
 
-* jh/simple-ipc (2021-02-17) 12 commits
- - t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
- - simple-ipc: add Unix domain socket implementation
- - unix-socket: create `unix_stream_server__listen_with_lock()`
- - unix-socket: disallow chdir() when creating unix domain sockets
- - unix-socket: add backlog size option to unix_stream_listen()
- - unix-socket: elimiate static unix_stream_socket() helper function
- - simple-ipc: add win32 implementation
- - simple-ipc: design documentation for new IPC mechanism
- - pkt-line: add options argument to read_packetized_to_strbuf()
- - pkt-line: (optionally) libify the packet readers
- - pkt-line: do not issue flush packets in write_packetized_*()
- - pkt-line: eliminate the need for static buffer in packet_write_gently()
+ Rewrite the backend for "diff -G/-S" to use pcre2 engine when
+ available.
 
- A simple IPC interface gets introduced to build services like
- fsmonitor on top.
+ Needs review.
+ cf. <20210216115801.4773-1-avarab@gmail.com>
 
 
-* ab/pager-exit-log (2021-02-01) 4 commits
-  (merged to 'next' on 2021-02-12 at ffe9f2d364)
- + pager: properly log pager exit code when signalled
- + run-command: add braces for "if" block in wait_or_whine()
- + pager: test for exit code with and without SIGPIPE
- + pager: refactor wait_for_pager() function
+* cm/rebase-i-fixup-amend-reword (2021-03-01) 6 commits
+ - doc/git-commit: add documentation for fixup=[amend|reword] options
+ - t3437: use --fixup with options to create amend! commit
+ - t7500: add tests for --fixup=[amend|reword] options
+ - commit: add a reword suboption to --fixup
+ - commit: add amend suboption to --fixup to create amend! commit
+ - sequencer: export subject_length()
+ (this branch uses cm/rebase-i and cm/rebase-i-updates.)
 
- When a pager spawned by us exited, the trace log did not record its
- exit status correctly, which has been corrected.
+ "git commit --fixup=<commit>", which was to tweak the changes made
+ to the contents while keeping the original log message intact,
+ learned "--fixup=(amend|reword):<commit>", that can be used to
+ tweak both the message and the contents, and only the message,
+ respectively.
 
Will merge to 'master'.
- The original "what should we do with SIGPIPE?" question remains, though.
Getting there.
+ cf. <20210301084512.27170-1-charvi077@gmail.com>
 
 
-* ta/hash-function-transition-doc (2021-02-05) 6 commits
-  (merged to 'next' on 2021-02-12 at f620f3cfd3)
- + doc: use https links
- + doc hash-function-transition: move rationale upwards
- + doc hash-function-transition: fix incomplete sentence
- + doc hash-function-transition: use upper case consistently
- + doc hash-function-transition: use SHA-1 and SHA-256 consistently
- + doc hash-function-transition: fix asciidoc output
+* jk/open-dotgitx-with-nofollow (2021-02-16) 6 commits
+  (merged to 'next' on 2021-02-25 at a784bf7be6)
+ + mailmap: do not respect symlinks for in-tree .mailmap
+ + exclude: do not respect symlinks for in-tree .gitignore
+ + attr: do not respect symlinks for in-tree .gitattributes
+ + exclude: add flags parameter to add_patterns()
+ + attr: convert "macro_ok" into a flags field
+ + add open_nofollow() helper
 
- Update formatting and grammar of the hash transition plan
- documentation, plus some updates.
+ It does not make sense to make ".gitattributes", ".gitignore" and
+ ".mailmap" symlinks, as they are supposed to be usable from the
+ object store (think: bare repositories where HEAD:.mailmap etc. are
+ used).  When these files are symbolic links, we used to read the
+ contents of the files pointed by them by mistake, which has been
+ corrected.
 
- Will merge to 'master'.
-
-
-* ds/chunked-file-api (2021-02-18) 17 commits
- - chunk-format: add technical docs
- - chunk-format: restore duplicate chunk checks
- - midx: use 64-bit multiplication for chunk sizes
- - midx: use chunk-format read API
- - commit-graph: use chunk-format read API
- - chunk-format: create read chunk API
- - midx: use chunk-format API in write_midx_internal()
- - midx: drop chunk progress during write
- - midx: return success/failure in chunk write methods
- - midx: add num_large_offsets to write_midx_context
- - midx: add pack_perm to write_midx_context
- - midx: add entries to write_midx_context
- - midx: use context in write_midx_pack_names()
- - midx: rename pack_info to write_midx_context
- - commit-graph: use chunk-format write API
- - chunk-format: create chunk format write API
- - commit-graph: anonymize data in chunk_write_fn
+ Will cook in 'next'.
 
- The common code to deal with "chunked file format" that is shared
- by the multi-pack-index and commit-graph files have been factored
- out, to help codepaths for both filetypes to become more rebust.
 
- Will merge to 'next'.
+* rs/pretty-describe (2021-03-01) 4 commits
+  (merged to 'next' on 2021-03-01 at bee9248828)
+ + pretty: document multiple %(describe) being inconsistent
+ + t4205: assert %(describe) test coverage
+  (merged to 'next' on 2021-02-25 at 2347ed8fe6)
+ + pretty: add merge and exclude options to %(describe)
+ + pretty: add %(describe)
 
+ "git log --format='...'" learned "%(describe)" placeholder.
 
-* ds/merge-base-independent (2021-02-01) 5 commits
- - commit-reach: stale commits may prune generation further
- - commit-reach: use heuristic in remove_redundant()
- - commit-reach: move compare_commits_by_gen
- - commit-reach: use one walk in remove_redundant()
- - commit-reach: reduce requirements for remove_redundant()
+ Will cook in 'next'.
 
- The code to implement "git merge-base --independent" was poorly
- done and was kept from the very beginning of the feature.
 
- Expecting a reroll.
- cf. <pull.852.v2.git.1612183647.gitgitgadget@gmail.com>
+* cm/rebase-i-updates (2021-02-10) 11 commits
+  (merged to 'next' on 2021-02-12 at e29227780b)
+ + doc/rebase -i: fix typo in the documentation of 'fixup' command
+ + t/t3437: fixup the test 'multiple fixup -c opens editor once'
+ + t/t3437: use named commits in the tests
+ + t/t3437: simplify and document the test helpers
+ + t/t3437: check the author date of fixed up commit
+ + t/t3437: remove the dependency of 'expected-message' file from tests
+ + t/t3437: fixup here-docs in the 'setup' test
+ + t/lib-rebase: update the documentation of FAKE_LINES
+ + rebase -i: clarify and fix 'fixup -c' rebase-todo help
+ + sequencer: rename a few functions
+ + sequencer: fixup the datatype of the 'flag' argument
+ (this branch is used by cm/rebase-i-fixup-amend-reword; uses cm/rebase-i.)
 
+ Follow-up fixes to "cm/rebase-i" topic.
 
-* hv/trailer-formatting (2021-02-15) 4 commits
- - ref-filter: use pretty.c logic for trailers
- - pretty.c: capture invalid trailer argument
- - pretty.c: refactor trailer logic to `format_set_trailers_options()`
- - t6300: use function to test trailer options
+ Will cook in 'next', together with "cm/rebase-i".
 
- The logic to handle "trailer" related placeholders in the
- "--format=" mechanisms in the "log" family and "for-each-ref"
- family is getting unified.
 
- Ready for 'next'?
+* jh/simple-ipc (2021-02-17) 12 commits
+  (merged to 'next' on 2021-03-01 at 6604451f18)
+ + t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
+ + simple-ipc: add Unix domain socket implementation
+ + unix-socket: create `unix_stream_server__listen_with_lock()`
+ + unix-socket: disallow chdir() when creating unix domain sockets
+ + unix-socket: add backlog size option to unix_stream_listen()
+ + unix-socket: elimiate static unix_stream_socket() helper function
+ + simple-ipc: add win32 implementation
+ + simple-ipc: design documentation for new IPC mechanism
+ + pkt-line: add options argument to read_packetized_to_strbuf()
+ + pkt-line: (optionally) libify the packet readers
+ + pkt-line: do not issue flush packets in write_packetized_*()
+ + pkt-line: eliminate the need for static buffer in packet_write_gently()
+
+ A simple IPC interface gets introduced to build services like
+ fsmonitor on top.
+
+ Will cook in 'next'.
 
 
 * cm/rebase-i (2021-01-29) 9 commits
@@ -803,89 +884,26 @@ Release tarballs are available at:
 
  "rebase -i" is getting cleaned up and also enhanced.
 
- Will merge to 'master', together with "cm/rebase-i-updates".
+ Will cook in 'next', together with "cm/rebase-i-updates".
 
 
-* tb/geometric-repack (2021-02-18) 8 commits
- - builtin/repack.c: add '--geometric' option
- - packfile: add kept-pack cache for find_kept_pack_entry()
- - builtin/pack-objects.c: rewrite honor-pack-keep logic
- - p5303: measure time to repack with keep
- - p5303: add missing &&-chains
- - builtin/pack-objects.c: add '--stdin-packs' option
- - revision: learn '--no-kept-objects'
- - packfile: introduce 'find_kept_pack_entry()'
+* tb/geometric-repack (2021-02-22) 8 commits
+  (merged to 'next' on 2021-02-25 at a854fdbaff)
+ + builtin/repack.c: add '--geometric' option
+ + packfile: add kept-pack cache for find_kept_pack_entry()
+ + builtin/pack-objects.c: rewrite honor-pack-keep logic
+ + p5303: measure time to repack with keep
+ + p5303: add missing &&-chains
+ + builtin/pack-objects.c: add '--stdin-packs' option
+ + revision: learn '--no-kept-objects'
+ + packfile: introduce 'find_kept_pack_entry()'
 
  "git repack" so far has been only capable of repacking everything
  under the sun into a single pack (or split by size).  A cleverer
  strategy to reduce the cost of repacking a repository has been
  introduced.
 
- cf. <cover.1613618042.git.me@ttaylorr.com>
-
-
-* ah/rebase-no-fork-point-config (2021-01-21) 1 commit
- - rebase: add a config option for --no-fork-point
-
- "git rebase --[no-]fork-point" gained a configuration variable
- rebase.forkPoint so that users do not have to keep specifying a
- non-default setting.
-
- Expecting a reroll to update its tests.
- cf. <CAMMLpeTDNLUz9UVnL3aVK=J7X50Sq8L-OVGaoEsT5AY6EQON-g@mail.gmail.com>
-
-
-* jt/transfer-fsck-across-packs (2021-01-25) 5 commits
- - SQUASH??? test fix
- - fetch-pack: print and use dangling .gitmodules
- - fetch-pack: with packfile URIs, use index-pack arg
- - http-fetch: allow custom index-pack args
- - http: allow custom index-pack args
-
- The approach to "fsck" the incoming objects in "index-pack" is
- attractive for performance reasons (we have them already in core,
- inflated and ready to be inspected), but fundamentally cannot be
- applied fully when we receive more than one pack stream, as a tree
- object in one pack may refer to a blob object in another pack as
- ".gitmodules", when we want to inspect blobs that are used as
- ".gitmodules" file, for example.  Teach "index-pack" to emit
- objects that must be inspected later and check them in the calling
- "fetch-pack" process.
-
- Expecting an update, but perhaps it may be a good approach to
- rebuild the topic on top of ab/fsck-api-cleanup
-
-
-* bc/signed-objects-with-both-hashes (2021-02-10) 6 commits
-  (merged to 'next' on 2021-02-11 at 391cc85104)
- + gpg-interface: remove other signature headers before verifying
- + ref-filter: hoist signature parsing
- + commit: allow parsing arbitrary buffers with headers
- + gpg-interface: improve interface for parsing tags
- + commit: ignore additional signatures when parsing signed commits
- + ref-filter: switch some uses of unsigned long to size_t
-
- Signed commits and tags now allow verification of objects, whose
- two object names (one in SHA-1, the other in SHA-256) are both
- signed.
-
- Will merge to 'master'.
-
-
-* mt/parallel-checkout-part-1 (2020-12-16) 9 commits
- - entry: add checkout_entry_ca() taking preloaded conv_attrs
- - entry: move conv_attrs lookup up to checkout_entry()
- - entry: extract update_ce_after_write() from write_entry()
- - entry: make fstat_output() and read_blob_entry() public
- - entry: extract a header file for entry.c functions
- - convert: add classification for conv_attrs struct
- - convert: add get_stream_filter_ca() variant
- - convert: add [async_]convert_to_working_tree_ca() variants
- - convert: make convert_attrs() and convert structs public
-
- Parallel checkout.
-
- Looking good.
+ Will cook in 'next'.
 
 
 * es/config-hooks (2021-02-16) 17 commits
@@ -912,66 +930,14 @@ Release tarballs are available at:
 
  Expecting doc updates, but otherwise seems to be progressing nicely.
 
-
-* hn/reftable (2020-12-21) 16 commits
- - SQUASH??? allow t0031 to run with any default branch name
- - Add "test-tool dump-reftable" command.
- - git-prompt: prepare for reftable refs backend
- - Reftable support for git-core
- - reftable: rest of library
- - reftable: reftable file level tests
- - reftable: read reftable files
- - reftable: write reftable files
- - reftable: a generic binary tree implementation
- - reftable: reading/writing blocks
- - reftable: (de)serialization for the polymorphic record type.
- - reftable: add blocksource, an abstraction for random access reads
- - reftable: utility functions
- - reftable: add error related functionality
- - reftable: add LICENSE
- - init-db: set the_repository->hash_algo early on
-
- The "reftable" backend for the refs API.
-
 --------------------------------------------------
 [Discarded]
 
-* sm/curl-retry (2020-10-13) 3 commits
- . http: automatically retry some requests
- . replace CURLOPT_FILE With CURLOPT_WRITEDATA
- . remote-curl: add testing for intelligent retry for HTTP
-
- The http transport has been taught to retry a failed request that
- may reasonably be retried.
-
- Stalled for too long without any activity.
- cf. <20201015000410.GB328643@google.com>
- cf. <CAM4o00eefXK2CJ_FxwwVPpBKL01JsJANf+SdjCtw_0NVV82L+Q@mail.gmail.com>
-
-
-* ar/fetch-transfer-ipversion (2020-09-16) 1 commit
- . config: option transfer.ipversion to set transport protocol version for network fetches
-
- Adds transfer.ipversion configuration variable.
-
- Stalled for too long without any activity.
-
-
-* jc/war-on-dashed-git (2020-12-21) 2 commits
- . fixup??? git: catch an attempt to run "git-foo"
- . git: catch an attempt to run "git-foo"
-
- The first step to remove on-disk binaries for built-in subcommands
- by soliciting objections.
-
- Stalled for too long without any activity.
-
-
-* mk/use-size-t-in-zlib (2018-10-15) 1 commit
- . zlib.c: use size_t for size
+* cw/pack-vs-bigfilethreashold (2021-02-09) 2 commits
+ . fixup! doc: mention bigFileThreshold for packing
+ . doc: mention bigFileThreshold for packing
 
- The wrapper to call into zlib followed our long tradition to use
- "unsigned long" for sizes of regions in memory, which have been
- updated to use "size_t".
+ Doc update.
 
- Stalled for too long without any activity.
+ cw/pack-config-doc supersedes this with a bit more coverage on
+ related knobs.