To: git@vger.kernel.org
Bcc: lwn@lwn.net
-Subject: What's cooking in git.git (Nov 2020, #03; Wed, 11)
-X-master-at: e31aba42fb12bdeb0f850829e008e1e3f43af500
-X-next-at: 0fa62a7daddba87a59a9564aaffb6655a191a679
+Subject: What's cooking in git.git (Nov 2020, #04; Thu, 19)
+X-master-at: faefdd61ec7c7f6f3c8c9907891465ac9a2a1475
+X-next-at: 04529851e543a22b6ba47fbb72737de4c325bb07
-What's cooking in git.git (Nov 2020, #03; Wed, 11)
+What's cooking in git.git (Nov 2020, #04; Thu, 19)
--------------------------------------------------
Here are the topics that have been cooking. Commits prefixed with '-' are
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 fifth batch of topics have been merged to 'master'.
+The sixth batch of topics are in 'master' and the tests are being
+prepared not to be disrupted by a potential change of the default
+name for the initial branch.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into. Some repositories have
--------------------------------------------------
[Graduated to 'master']
-* cw/ci-ghwf-check-ws-errors (2020-11-03) 1 commit
- (merged to 'next' on 2020-11-04 at dc1121823c)
- + ci: make the whitespace checker more robust
+* ds/maintenance-part-3 (2020-10-16) 8 commits
+ (merged to 'next' on 2020-11-10 at fe9475c696)
+ + maintenance: add troubleshooting guide to docs
+ + maintenance: use 'incremental' strategy by default
+ + maintenance: create maintenance.strategy config
+ + maintenance: add start/stop subcommands
+ + maintenance: add [un]register subcommands
+ + for-each-repo: run subcommands on configured repos
+ + maintenance: add --schedule option and config
+ + maintenance: optionally skip --auto process
+ (this branch is used by ds/maintenance-part-4.)
- Dev support update.
+ Parts of "git maintenance" to ease writing crontab entries (and
+ other scheduling system configuration) for it.
-* jc/abbrev-doc (2020-11-04) 1 commit
- (merged to 'next' on 2020-11-09 at 09efe81b8b)
- + doc: clarify that --abbrev=<n> is about the minimum length
+* dd/upload-pack-stateless-eof (2020-10-30) 1 commit
+ (merged to 'next' on 2020-11-09 at 01a1f1d4fd)
+ + upload-pack: allow stateless client EOF just prior to haves
- The documentation on the "--abbrev=<n>" option did not say the
- output may be longer than "<n>" hexdigits, which has been
- clarified.
+ "git fetch --depth=<n>" over the stateless RPC / smart HTTP
+ transport handled EOF from the client poorly at the server end.
-* jc/sequencer-stopped-sha-simplify (2020-10-21) 1 commit
- (merged to 'next' on 2020-11-02 at ba3dd9eaf4)
- + sequencer: tolerate abbreviated stopped-sha file
+* dg/bswap-msvc (2020-11-11) 2 commits
+ (merged to 'next' on 2020-11-11 at 6b9e819b17)
+ + compat/bswap.h: don't assume MSVC is little-endian
+ (merged to 'next' on 2020-11-09 at 91a67b86f7)
+ + compat/bswap.h: simplify MSVC endianness detection
- Recently the format of an internal state file "rebase -i" uses has
- been tightened up for consistency, which would hurt those who start
- "rebase -i" with old git and then continue with new git. Loosen
- the reader side a bit (which we may want to tighten again in a year
- or so).
+ Define ARM64 compiled with MSVC to be little-endian.
-* js/ci-github-set-env (2020-11-06) 1 commit
- (merged to 'next' on 2020-11-09 at c4ce007b4c)
- + ci: avoid using the deprecated `set-env` construct
+* en/merge-ort-api-null-impl (2020-11-02) 4 commits
+ (merged to 'next' on 2020-11-10 at ed9eed1558)
+ + merge,rebase,revert: select ort or recursive by config or environment
+ + fast-rebase: demonstrate merge-ort's API via new test-tool command
+ + merge-ort-wrappers: new convience wrappers to mimic the old merge API
+ + merge-ort: barebones API of new merge strategy with empty implementation
+ (this branch is used by en/merge-ort-impl.)
- CI update.
+ Preparation for a new merge strategy.
-* js/p4-default-branch (2020-11-09) 1 commit
- (merged to 'next' on 2020-11-09 at a4b08b45da)
- + p4: respect init.defaultBranch
+* en/merge-tests (2020-10-26) 9 commits
+ (merged to 'next' on 2020-11-09 at 8ac9fe94a7)
+ + t6423: add more details about direct resolution of directories
+ + t6423: note improved ort handling with untracked files
+ + t6423, t6436: note improved ort handling with dirty files
+ + merge tests: expect slight differences in output for recursive vs. ort
+ + t6423: expect improved conflict markers labels in the ort backend
+ + t6404, t6423: expect improved rename/delete handling in ort backend
+ + t6416: correct expectation for rename/rename(1to2) + directory/file
+ + merge tests: expect improved directory/file conflict handling in ort
+ + t/: new helper for tests that pass with ort but fail with recursive
+
+ Preparation for a new merge strategy.
- "git p4" now honors init.defaultBranch configuration.
+* jc/blame-ignore-fix (2020-11-10) 1 commit
+ (merged to 'next' on 2020-11-10 at 384ace449d)
+ + blame: silently ignore invalid ignore file objects
+
+ "git blame --ignore-revs-file=<file>" learned to ignore a
+ non-existent object name in the input, instead of complaining.
-* js/test-file-size (2020-11-06) 1 commit
- (merged to 'next' on 2020-11-09 at b3594d0150)
- + tests: consolidate the `file_size` function into `test-lib-functions.sh`
- Test clean-up.
+* jc/line-log-takes-no-pathspec (2020-11-04) 1 commit
+ (merged to 'next' on 2020-11-09 at 47c2c88b9d)
+ + log: diagnose -L used with pathspec as an error
+ "git log -L<range>:<path>" is documented to take no pathspec, but
+ this was not enforced by the command line option parser, which has
+ been corrected.
-* js/test-whitespace-fixes (2020-11-09) 6 commits
- (merged to 'next' on 2020-11-09 at 383388929a)
- + t9603: use tabs for indentation
- + t5570: remove trailing padding
- + t5400,t5402: consistently indent with tabs, not with spaces
- + t3427: adjust stale comment
- + t3406: indent with tabs, not spaces
- + t1004: insert missing "branch" in a message
- Test code clean-up.
+* jc/sparse-error-for-developer-build (2020-10-31) 1 commit
+ (merged to 'next' on 2020-11-10 at 8cfbe66736)
+ + Makefile: enable -Wsparse-error for DEVELOPER build
+ "make DEVELOPER=1 sparse" used to run sparse and let it emit
+ warnings; now such warnings will cause an error.
-* mc/typofix (2020-11-05) 1 commit
- (merged to 'next' on 2020-11-09 at ed6106b6e3)
- + doc: fixing two trivial typos in Documentation/
- Docfix.
+* jk/format-patch-output (2020-11-04) 3 commits
+ (merged to 'next' on 2020-11-09 at 1f1bb6ebff)
+ + format-patch: support --output option
+ + format-patch: tie file-opening logic to output_directory
+ + format-patch: refactor output selection
+ "git format-patch --output=there" did not work as expected and
+ instead crashed. The option is now supported.
-* rs/clear-commit-marks-in-repo (2020-10-31) 2 commits
- (merged to 'next' on 2020-11-04 at cb1e1d73cf)
- + bisect: clear flags in passed repository
- + object: allow clear_commit_marks_all to handle any repo
- Code clean-up.
+* js/default-branch-name-adjust-t5515 (2020-11-02) 4 commits
+ (merged to 'next' on 2020-11-09 at 568ba5aba5)
+ + t5515: use `main` as the name of the main branch for testing (conclusion)
+ + t5515: use `main` as the name of the main branch for testing (part 3)
+ + t5515: use `main` as the name of the main branch for testing (part 2)
+ + t5515: use `main` as the name of the main branch for testing (part 1)
+ Prepare a test script to transition of the default branch name to
+ 'main'.
-* rs/pack-write-hashwrite-simplify (2020-11-01) 1 commit
- (merged to 'next' on 2020-11-04 at 7194d3e811)
- + pack-write: use hashwrite_be32() instead of double-buffering array
- Code clean-up.
+* nk/perf-fsmonitor (2020-10-26) 10 commits
+ (merged to 'next' on 2020-11-09 at 9fed160a17)
+ + t/perf/fsmonitor: add benchmark for dirty status
+ + t/perf/fsmonitor: perf comparison of multiple fsmonitor integrations
+ + t/perf/fsmonitor: initialize test with git reset
+ + t/perf/fsmonitor: factor setup for fsmonitor into function
+ + t/perf/fsmonitor: silence initial git commit
+ + t/perf/fsmonitor: shorten DESC to basename
+ + t/perf/fsmonitor: factor description out for readability
+ + t/perf/fsmonitor: improve error message if typoing hook name
+ + t/perf/fsmonitor: move watchman setup to one-time-repo-setup
+ + t/perf/fsmonitor: separate one time repo initialization
+ Add t/perf support for fsmonitor.
-* rs/worktree-list-show-locked (2020-11-03) 1 commit
- (merged to 'next' on 2020-11-04 at 5f4fa51a91)
- + t2402: fix typo
- Typofix.
+* pb/blame-funcname-range-userdiff (2020-11-01) 8 commits
+ (merged to 'next' on 2020-11-10 at 221bb3f773)
+ + blame: simplify 'setup_blame_bloom_data' interface
+ + blame: simplify 'setup_scoreboard' interface
+ + blame: enable funcname blaming with userdiff driver
+ + line-log: mention both modes in 'blame' and 'log' short help
+ + doc: add more pointers to gitattributes(5) for userdiff
+ + blame-options.txt: also mention 'funcname' in '-L' description
+ + doc: line-range: improve formatting
+ + doc: log, gitk: move '-L' description to 'line-range-options.txt'
+ "git blame -L :funcname -- path" did not work well for a path for
+ which a userdiff driver is defined.
-* sd/prompt-local-variable (2020-11-01) 1 commit
- (merged to 'next' on 2020-11-04 at ddc4192867)
- + git-prompt.sh: localize `option` in __git_ps1_show_upstream
- Code clean-up.
+* pw/rebase-i-orig-head (2020-11-04) 4 commits
+ (merged to 'next' on 2020-11-10 at 038a5295f5)
+ + rebase -i: simplify get_revision_ranges()
+ + rebase -i: use struct object_id when writing state
+ + rebase -i: use struct object_id rather than looking up commit
+ + rebase -i: stop overwriting ORIG_HEAD buffer
+
+ "git rebase -i" did not store ORIG_HEAD correctly.
+ cf. <xmqq7drbbcj5.fsf@gitster.c.googlers.com>
+
+* rs/archive-high-compression (2020-11-09) 1 commit
+ (merged to 'next' on 2020-11-10 at 9bee80950e)
+ + archive: support compression levels beyond 9
-* so/format-patch-doc-on-default-diff-format (2020-10-31) 1 commit
- (merged to 'next' on 2020-11-04 at 692e0b2f7a)
- + doc/diff-options: fix out of place mentions of '--patch/-p'
+ "git archive" now allows compression level higher than "-9"
+ when generating tar.gz output.
- Docfix.
+
+* rs/empty-reflog-check-fix (2020-11-01) 1 commit
+ (merged to 'next' on 2020-11-09 at 3da6b6fef0)
+ + stash: simplify reflog emptiness check
+
+ The code to see if "git stash drop" can safely remove refs/stash
+ has been made more carerful.
--------------------------------------------------
[New Topics]
-* ps/update-ref-multi-transaction (2020-11-10) 4 commits
- - update-ref: disallow "start" for ongoing transactions
- - p1400: use `git-update-ref --stdin` to test multiple transactions
- - update-ref: allow creation of multiple transactions
- - t1400: avoid touching refs on filesystem
+* rs/hashwrite-be64 (2020-11-12) 3 commits
+ (merged to 'next' on 2020-11-18 at 60385c6fa1)
+ + pack-write: use hashwrite_be64()
+ + midx: use hashwrite_be64()
+ + csum-file: add hashwrite_be64()
- "git update-ref --stdin" learns to take multiple transactions in a
- single session.
+ Code simplification.
+ Will merge to 'master'.
-* fc/bash-completion-alias-of-alias (2020-11-09) 2 commits
- (merged to 'next' on 2020-11-10 at 75f1f2b8a8)
- + completion: bash: check for alias loop
- + completion: bash: support recursive aliases
- The command line completion script (in contrib/) learned to expand
- commands that are alias of alias.
+* sg/bisect-approximately-halfway (2020-11-12) 1 commit
+ (merged to 'next' on 2020-11-18 at b13026a0f3)
+ + bisect: loosen halfway() check for a large number of commits
+
+ "git bisect start/next" in a large span of history spends a lot of
+ time trying to come up with exactly the half-way point; this can be
+ optimized by stopping when we see a commit that is close enough to
+ the half-way point.
Will merge to 'master'.
-* jc/blame-ignore-fix (2020-11-10) 1 commit
- (merged to 'next' on 2020-11-10 at 384ace449d)
- + blame: silently ignore invalid ignore file objects
+* tb/pack-bitmap (2020-11-19) 24 commits
+ - pack-bitmap-write: better reuse bitmaps
+ - pack-bitmap-write: relax unique rewalk condition
+ - pack-bitmap-write: use existing bitmaps
+ - pack-bitmap: factor out 'add_commit_to_bitmap()'
+ - pack-bitmap: factor out 'bitmap_for_commit()'
+ - pack-bitmap-write: ignore BITMAP_FLAG_REUSE
+ - pack-bitmap-write: build fewer intermediate bitmaps
+ - pack-bitmap.c: check reads more aggressively when loading
+ - pack-bitmap-write: rename children to reverse_edges
+ - t5310: add branch-based checks
+ - commit: implement commit_list_contains()
+ - bitmap: add bitmap_diff_nonzero()
+ - pack-bitmap-write: fill bitmap with commit history
+ - pack-bitmap-write: pass ownership of intermediate bitmaps
+ - pack-bitmap-write: reimplement bitmap writing
+ - ewah: add bitmap_dup() function
+ - ewah: implement bitmap_or()
+ - ewah: make bitmap growth less aggressive
+ - ewah: factor out bitmap growth
+ - rev-list: die when --test-bitmap detects a mismatch
+ - t5310: drop size of truncated ewah bitmap
+ - pack-bitmap: bounds-check size of cache extension
+ - pack-bitmap: fix header size check
+ - ewah/ewah_bitmap.c: grow buffer past 1
+
+ Various improvement to the codepath that writes out pack bitmaps.
+
+
+* ab/retire-parse-remote (2020-11-16) 3 commits
+ (merged to 'next' on 2020-11-18 at 80d4d8290c)
+ + parse-remote: remove this now-unused library
+ + submodule: remove sh function in favor of helper
+ + submodule: use "fetch" logic instead of custom remote discovery
+
+ "git-parse-remote" shell script library outlived its usefulness.
+
+ Will merge to 'master'.
- "git blame --ignore-revs-file=<file>" learned to ignore a
- non-existent object name in the input, instead of complaining.
+
+* jk/4gb-idx (2020-11-16) 5 commits
+ (merged to 'next' on 2020-11-18 at 2f99b73bda)
+ + packfile: detect overflow in .idx file size checks
+ + block-sha1: take a size_t length parameter
+ + fsck: correctly compute checksums on idx files larger than 4GB
+ + use size_t to store pack .idx byte offsets
+ + compute pack .idx byte offsets using size_t
+
+ The code was not prepared to deal with pack .idx file that is
+ larger than 4GB.
Will merge to 'master'.
-* jk/rev-parse-end-of-options (2020-11-10) 3 commits
- (merged to 'next' on 2020-11-11 at 2d517d1608)
- + rev-parse: handle --end-of-options
- + rev-parse: put all options under the "-" check
- + rev-parse: don't accept options after dashdash
+* ma/list-object-filter-opt-msgfix (2020-11-16) 1 commit
+ (merged to 'next' on 2020-11-18 at 7cf396ee81)
+ + list-objects-filter-options: fix function name in BUG
- "git rev-parse" learned the "--end-of-options" to help scripts to
- safely take a parameter that is supposed to be a revision, e.g.
- "git rev-parse --verify -q --end-of-options $rev".
+ Error message fix.
Will merge to 'master'.
+ We can further update it to lose the hand-maintained function name
+ from the message, but that can be done separately.
-* fc/bash-completion-post-2.29 (2020-11-10) 26 commits
- - completion: bash: shuffle __gitcomp functions
- - completion: bash: cleanup __gitcomp* invocations
- - completion: bash: add __gitcomp_opts
- - completion: bash: improve __gitcomp description
- - completion: bash: rename _get_comp_words_by_ref()
- - completion: bash: trivial cleanup
- - completion: bash: cleanup _get_comp_words_by_ref()
- - completion: bash: refactor _get_comp_words_by_ref()
- - completion: bash: simplify _get_comp_words_by_ref()
- - test: completion: switch __gitcomp_nl prefix test
- - completion: bash: simplify config_variable_name
- - completion: bash: improve __gitcomp suffix code
- - completion: bash: change suffix check in __gitcomp
- - completion: bash: simplify __gitcomp
- - completion: bash: refactor __gitcomp
- - completion: bash: simplify equal suffix check
- - completion: bash: factor out check in __gitcomp
- - completion: bash: get rid of any non-append code
- - completion: bash: get rid of _append() functions
- - completion: bash: remove non-append functionality
- - test: completion: add run_func() helper
- - test: completion: fix currently typed words
- - completion: bash: do not modify COMP_WORDBREAKS
- - completion: bash: fix for suboptions with value
- - completion: bash: add correct suffix in variables
- - completion: bash: fix prefix detection in branch.*
+* mt/rm-sparse-checkout (2020-11-16) 1 commit
+ - rm: honor sparse checkout patterns
+ (this branch uses mt/grep-sparse-checkout.)
+ "git rm" follows suit to "git grep" to ignore paths outside the
+ sparsity pattern when the sparse checkout feature is in use.
-* js/add-i-color-fix (2020-11-11) 11 commits
- - add -i: verify in the tests that colors can be overridden
- - add -p: prefer color.diff.context over color.diff.plain
- - add -i (Perl version): include indentation in the colored header
- - add -i (built-in): use the same indentation as the Perl version
- - add -p (built-in): do not color the progress indicator separately
- - add -i (built-in): use correct names to load color.diff.* config
- - add -i (built-in): prevent the `reset` "color" from being configured
- - add -i: use `reset_color` consistently
- - add -p (built-in): imitate `xdl_format_hunk_hdr()` generating hunk headers
- - add -i (built-in): send error messages to stderr
- - add -i (built-in): do show an error message for incorrect inputs
- "git add -i" failed to honor custom colors configured to show
- patches, which has been corrected.
+* pb/pull-rebase-recurse-submodules (2020-11-16) 4 commits
+ - pull: check for local submodule modifications with the right range
+ - t5572: describe '--rebase' tests a little more
+ - t5572: add notes on a peculiar test
+ - pull --rebase: compute rebase arguments in separate function
- The last step may want to be polished further.
- cf. <20201111023549.GB806755@coredump.intra.peff.net>
+ "git pull --rebase --recurse-submodules" checked for local changes
+ in a wrong range and failed to run correctly when it should.
+ Will merge to 'next'.
-* ab/config-mak-uname-simplify (2020-11-11) 2 commits
- - config.mak.uname: remove unused NEEDS_SSL_WITH_CURL flag
- - config.mak.uname: remove unused the NO_R_TO_GCC_LINKER flag
+* pk/subsub-fetch-fix (2020-11-12) 1 commit
+ (merged to 'next' on 2020-11-18 at bdd3b21b7c)
+ + submodules: fix of regression on fetching of non-init subsub-repo
-* pd/mergetool-nvimdiff (2020-11-11) 2 commits
- - mergetool: avoid letting `list_tool_variants` break user-defined setups
- - mergetools/bc: add `bc4` to the alias list for Beyond Compare
+ "git fetch" did not work correctly with nested submodules where the
+ innermost submodule that is not of interest got updated in the
+ upstream, which has been corrected.
+
+ Will merge to 'master'.
+
+
+* rs/archive-plug-leak-refname (2020-11-16) 1 commit
+ (merged to 'next' on 2020-11-19 at 270ba7b8be)
+ + archive: release refname after use
+
+ Memleak fix.
+
+ Will merge to 'master'.
+
+
+* rs/chdir-notify-unleak (2020-11-16) 1 commit
+ - chdir-notify: UNLEAK registrated callback entries
+
+ Mark some stuff on list_head chain with UNLEAK() macro to squelch
+ leak checker.
+
+ Will merge to 'next'.
+
+
+* rs/plug-diff-cache-leak (2020-11-16) 1 commit
+ - diff-lib: plug minor memory leaks in do_diff_cache()
+
+ Memleak fix.
+
+ Will merge to 'next'.
+
+
+* sg/t5310-jgit-wants-sha1 (2020-11-16) 1 commit
+ (merged to 'next' on 2020-11-19 at 72fb4e7155)
+ + t5310-pack-bitmaps: skip JGit tests with SHA256
+
+ Since jgit does not yet work with SHA-256 repositories, mark the
+ tests that uses it not to run unless we are testing with ShA-1
+ repositories.
+
+ Will merge to 'master'.
+
+
+* tb/repack-simplify (2020-11-17) 3 commits
+ - builtin/repack.c: don't move existing packs out of the way
+ - builtin/repack.c: keep track of what pack-objects wrote
+ - repack: make "exts" array available outside cmd_repack()
+
+ Simplify the logic to deal with a repack operation that ended up
+ creating the same packfile.
+
+ Will merge to 'next'.
+
+
+* dd/help-autocorrect-never (2020-11-18) 1 commit
+ - help.c: allow help.autocorrect to say "do not even compute suggestions"
+
+ "git $cmd $args", when $cmd is not a recognised subcommand, by
+ default tries to see if $cmd is a typo of an existing subcommand
+ and optionally executes the corrected command if there is only one
+ possibility, depending on the setting of help.autocorrect; the
+ users can now disable the whole thing, including the cycles spent
+ to find a likely typo, by setting the configuration variable to
+ 'never'.
+
+
+* jc/ci-github-set-env (2020-11-17) 1 commit
+ (merged to 'next' on 2020-11-19 at 00ff5e06ac)
+ + ci: avoid `set-env` construct in print-test-failures.sh
+
+ Another CI adjustment.
+
+ Will merge to 'master'.
+
+
+* jc/init-doc-default-branch (2020-11-18) 1 commit
+ - "init" doc: mention the configurability more clearly
+
+ Doc update.
+
+ Weatherbaloon.
+
+
+* js/default-branch-name-tests-final-stretch (2020-11-19) 29 commits
+ - tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed
+ - t99*: adjust the references to the default branch name "main"
+ - tests(git-p4): transition to the default branch name `main`
+ - t9[5-7]*: adjust the references to the default branch name "main"
+ - t9[0-4]*: adjust the references to the default branch name "main"
+ - t8*: adjust the references to the default branch name "main"
+ - t7[5-9]*: adjust the references to the default branch name "main"
+ - t7[0-4]*: adjust the references to the default branch name "main"
+ - t6[4-9]*: adjust the references to the default branch name "main"
+ - t64*: preemptively adjust alignment to prepare for `master` -> `main`
+ - t6[0-3]*: adjust the references to the default branch name "main"
+ - t5[6-9]*: adjust the references to the default branch name "main"
+ - t55[4-9]*: adjust the references to the default branch name "main"
+ - t55[23]*: adjust the references to the default branch name "main"
+ - t551*: adjust the references to the default branch name "main"
+ - t550*: adjust the references to the default branch name "main"
+ - t5503: prepare aligned comment for replacing `master` with `main`
+ - t5[0-4]*: adjust the references to the default branch name "main"
+ - t5323: prepare centered comment for `master` -> `main`
+ - t4*: adjust the references to the default branch name "main"
+ - t3[5-9]*: adjust the references to the default branch name "main"
+ - t34*: adjust the references to the default branch name "main"
+ - t3416: preemptively adjust alignment in a comment
+ - t3[0-3]*: adjust the references to the default branch name "main"
+ - t2*: adjust the references to the default branch name "main"
+ - t[01]*: adjust the references to the default branch name "main"
+ - t0060: preemptively adjust alignment
+ - tests: mark tests relying on the current default for `init.defaultBranch`
+ - Merge 'jk/diff-release-filespec-fix' into js/default-branch-name-tests-final-stretch
+ (this branch uses jk/diff-release-filespec-fix.)
+
+ Prepare tests not to be affected by the name of the default branch
+ "git init" creates.
+
+
+* js/t2106-cleanup (2020-11-18) 3 commits
+ - t2106: ensure that the checkout fails for the expected reason
+ - t2106: make test independent of the current main branch name
+ - t2106: adjust style to the current conventions
+
+ A test script got cleaned up and then made not to depend on the
+ value of init.defaultBranch.
+
+ Will merge to 'next'.
+
+
+* js/t3040-cleanup (2020-11-18) 1 commit
+ - t3040: remove stale note
+
+ Cleanup.
+
+ Will merge to 'next'.
+
+
+* js/t4015-wo-master (2020-11-19) 1 commit
+ - t4015: let the test pass with any default branch name
+
+ A test script got cleaned up not to depend on the value of
+ init.defaultBranch.
+
+ Will merge to 'next'.
+
+
+* rs/gc-sort-func-cast-fix (2020-11-18) 1 commit
+ (merged to 'next' on 2020-11-19 at 04529851e5)
+ + gc: fix cast in compare_tasks_by_selection()
+
+ Fix broken sorting of maintenance tasks.
+
+ Will merge to 'master'.
+
+
+* sg/tests-prereq (2020-11-18) 2 commits
+ - tests: fix description of 'test_set_prereq'
+ - tests: make sure nested lazy prereqs work reliably
+
+ A lazily defined test prerequisite can now be defined in terms of
+ another lazily defined test prerequisite.
+
+ Will merge to 'next'.
+
+
+* ds/config-literal-value (2020-11-19) 6 commits
+ - config: implement --literal-value with --get*
+ - config: plumb --literal-value into config API
+ - config: add --literal-value option, un-implemented
+ - config: convert multi_replace to flags
+ - t1300: add test for --replace-all with value_regex
+ - t1300: test "set all" mode with value_regex
+ (this branch is used by ds/maintenance-part-3.)
+
+
+* ds/maintenance-part-3 (2020-11-19) 2 commits
+ - maintenance: use 'git config --literal-value'
+ - Merge branch 'ds/config-literal-value' into ds/maintenance-part-3
+ (this branch uses ds/config-literal-value.)
+
+ "git maintenance" command had trouble working in a directory whose
+ pathname contained an ERE metacharacter like '+'.
+
+ Will merge to 'next'.
+
+
+* js/pull-rebase-use-advise (2020-11-19) 1 commit
+ - pull: colorize the hint about setting `pull.rebase`
+
+
+* js/t1309-master-to-topic (2020-11-19) 1 commit
+ - t1309: use a neutral branch name in the `onbranch` test cases
--------------------------------------------------
[Stalled]
+* jk/symlinked-dotgitx-files (2020-10-23) 9 commits
+ (merged to 'next' on 2020-10-26 at c1dd37b024)
+ + docs: document symlink restrictions for .git* files
+ + fsck: complain when .gitattributes or .gitignore is a symlink
+ + verify_path(): disallow symlinks in .gitattributes and .gitignore
+ + t0060: test obscured .gitattributes and .gitignore matching
+ + t7450: test .gitmodules symlink matching against obscured names
+ + t7450: test verify_path() handling of gitmodules
+ + t7415: rename to expand scope
+ + fsck_tree(): wrap some long lines
+ + fsck_tree(): fix shadowed variable
+
+ Originally merged to 'next' on 2020-10-23
+
+ "git fsck" and the corresponding check done during the transport
+ learned to ensure that in-tree files like `.gitignore` and
+ `.gitattributes` are not symbolic links.
+
+ It seems that there are real projects with .gitignore recorded as
+ symlinks, which may need to loosen the fsck setting. Do we need to
+ introduce a class that is separate from symlinked .gitmodules that
+ probably is with potential consequences that is more/less grave?
+
+
* es/config-hooks (2020-10-16) 8 commits
- hook: replace find_hook() with hook_exists()
- hook: add 'run' subcommand
The "hooks defined in config" topic.
-* ag/merge-strategies-in-c (2020-10-06) 11 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
- . t6027: modernise tests
-
- The resolve and octopus merge strategy backends have been rewritten
- in C.
-
- Expecting an update.
- cf.<693f417c-5612-7878-a055-2810f62af3b4@gmail.com>
-
-
* hn/reftable (2020-10-01) 13 commits
. reftable: "test-tool dump-reftable" command.
. reftable: rest of library
- t/helper/test-config: be consistent with exit codes
- t1308-config-set: avoid false positives when using test-config
- doc: grep: unify info on configuration variables
+ (this branch is used by mt/rm-sparse-checkout.)
"git grep" has been tweaked to be limited to the sparse checkout
paths.
---------------------------------------------------
-[Cooking]
+--------------------------------------------------
+[Cooking]
+
+* ag/merge-strategies-in-c (2020-11-16) 12 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
+ - t6027: modernise tests
+
+ The resolve and octopus merge strategy backends have been rewritten
+ in C.
+
+
+* ps/update-ref-multi-transaction (2020-11-16) 4 commits
+ - update-ref: disallow "start" for ongoing transactions
+ - p1400: use `git-update-ref --stdin` to test multiple transactions
+ - update-ref: allow creation of multiple transactions
+ - t1400: avoid touching refs on filesystem
+
+ "git update-ref --stdin" learns to take multiple transactions in a
+ single session.
+
+
+* fc/bash-completion-alias-of-alias (2020-11-17) 3 commits
+ (merged to 'next' on 2020-11-18 at 4241203041)
+ + completion: bash: improve alias loop detection
+ (merged to 'next' on 2020-11-10 at 75f1f2b8a8)
+ + completion: bash: check for alias loop
+ + completion: bash: support recursive aliases
+
+ The command line completion script (in contrib/) learned to expand
+ commands that are alias of alias.
+
+ Will merge to 'master'.
-* dd/upload-pack-stateless-eof (2020-10-30) 1 commit
- (merged to 'next' on 2020-11-09 at 01a1f1d4fd)
- + upload-pack: allow stateless client EOF just prior to haves
- "git fetch --depth=<n>" over the stateless RPC / smart HTTP
- transport handled EOF from the client poorly at the server end.
+* jk/rev-parse-end-of-options (2020-11-10) 3 commits
+ (merged to 'next' on 2020-11-11 at 2d517d1608)
+ + rev-parse: handle --end-of-options
+ + rev-parse: put all options under the "-" check
+ + rev-parse: don't accept options after dashdash
+
+ "git rev-parse" learned the "--end-of-options" to help scripts to
+ safely take a parameter that is supposed to be a revision, e.g.
+ "git rev-parse --verify -q --end-of-options $rev".
Will merge to 'master'.
-* js/trace2-session-id (2020-11-02) 11 commits
- - receive-pack: log received client trace2 SID
- - send-pack: advertise trace2 SID in capabilities
- - upload-pack, serve: log received client trace2 SID
- - fetch-pack: advertise trace2 SID in capabilities
- - transport: log received server trace2 SID
- - serve: advertise trace2 SID in v2 capabilities
- - receive-pack: advertise trace2 SID in v0 capabilities
- - upload-pack: advertise trace2 SID in v0 capabilities
- - trace2: add a public function for getting the SID
- - docs: new trace2.advertiseSID option
- - docs: new capability to advertise trace2 SIDs
+* fc/bash-completion-post-2.29 (2020-11-10) 26 commits
+ - completion: bash: shuffle __gitcomp functions
+ - completion: bash: cleanup __gitcomp* invocations
+ - completion: bash: add __gitcomp_opts
+ - completion: bash: improve __gitcomp description
+ - completion: bash: rename _get_comp_words_by_ref()
+ - completion: bash: trivial cleanup
+ - completion: bash: cleanup _get_comp_words_by_ref()
+ - completion: bash: refactor _get_comp_words_by_ref()
+ - completion: bash: simplify _get_comp_words_by_ref()
+ - test: completion: switch __gitcomp_nl prefix test
+ - completion: bash: simplify config_variable_name
+ - completion: bash: improve __gitcomp suffix code
+ - completion: bash: change suffix check in __gitcomp
+ - completion: bash: simplify __gitcomp
+ - completion: bash: refactor __gitcomp
+ - completion: bash: simplify equal suffix check
+ - completion: bash: factor out check in __gitcomp
+ - completion: bash: get rid of any non-append code
+ - completion: bash: get rid of _append() functions
+ - completion: bash: remove non-append functionality
+ - test: completion: add run_func() helper
+ - test: completion: fix currently typed words
+ - completion: bash: do not modify COMP_WORDBREAKS
+ - completion: bash: fix for suboptions with value
+ - completion: bash: add correct suffix in variables
+ - completion: bash: fix prefix detection in branch.*
- The transport layer was taught to optionally exchange the session
- ID assigned by the trace2 subsystem during fetch/push transactions.
+* js/add-i-color-fix (2020-11-16) 11 commits
+ - add -i: verify in the tests that colors can be overridden
+ - add -p: prefer color.diff.context over color.diff.plain
+ - add -i (Perl version): color header to match the C version
+ - add -i (built-in): use the same indentation as the Perl version
+ - add -p (built-in): do not color the progress indicator separately
+ - add -i (built-in): use correct names to load color.diff.* config
+ - add -i (built-in): prevent the `reset` "color" from being configured
+ - add -i: use `reset_color` consistently
+ - add -p (built-in): imitate `xdl_format_hunk_hdr()` generating hunk headers
+ - add -i (built-in): send error messages to stderr
+ - add -i (built-in): do show an error message for incorrect inputs
-* jc/sparse-error-for-developer-build (2020-10-31) 1 commit
- (merged to 'next' on 2020-11-10 at 8cfbe66736)
- + Makefile: enable -Wsparse-error for DEVELOPER build
+ "git add -i" failed to honor custom colors configured to show
+ patches, which has been corrected.
- "make DEVELOPER=1 sparse" used to run sparse and let it emit
- warnings; now such warnings will cause an error.
+
+* ab/config-mak-uname-simplify (2020-11-11) 2 commits
+ (merged to 'next' on 2020-11-12 at e1bd51ee71)
+ + config.mak.uname: remove unused NEEDS_SSL_WITH_CURL flag
+ + config.mak.uname: remove unused the NO_R_TO_GCC_LINKER flag
+
+ Build configuration cleanup.
Will merge to 'master'.
-* pb/blame-funcname-range-userdiff (2020-11-01) 8 commits
- (merged to 'next' on 2020-11-10 at 221bb3f773)
- + blame: simplify 'setup_blame_bloom_data' interface
- + blame: simplify 'setup_scoreboard' interface
- + blame: enable funcname blaming with userdiff driver
- + line-log: mention both modes in 'blame' and 'log' short help
- + doc: add more pointers to gitattributes(5) for userdiff
- + blame-options.txt: also mention 'funcname' in '-L' description
- + doc: line-range: improve formatting
- + doc: log, gitk: move '-L' description to 'line-range-options.txt'
+* pd/mergetool-nvimdiff (2020-11-11) 2 commits
+ (merged to 'next' on 2020-11-12 at aff20da3a2)
+ + mergetool: avoid letting `list_tool_variants` break user-defined setups
+ + mergetools/bc: add `bc4` to the alias list for Beyond Compare
- "git blame -L :funcname -- path" did not work well for a path for
- which a userdiff driver is defined.
+ Fix regression introduced when nvimdiff support in mergetool was added.
Will merge to 'master'.
+* js/trace2-session-id (2020-11-11) 11 commits
+ - receive-pack: log received client session ID
+ - send-pack: advertise session ID in capabilities
+ - upload-pack, serve: log received client session ID
+ - fetch-pack: advertise session ID in capabilities
+ - transport: log received server session ID
+ - serve: advertise session ID in v2 capabilities
+ - receive-pack: advertise session ID in v0 capabilities
+ - upload-pack: advertise session ID in v0 capabilities
+ - trace2: add a public function for getting the SID
+ - docs: new transfer.advertiseSID option
+ - docs: new capability to advertise session IDs
+
+ The transport layer was taught to optionally exchange the session
+ ID assigned by the trace2 subsystem during fetch/push transactions.
+
+
* so/log-diff-merge (2020-11-09) 27 commits
- doc/git-show: include --diff-merges description
- doc/rev-list-options: document --first-parent implies --diff-merges=first-parent
- maintenance: use launchctl on macOS
- maintenance: include 'cron' details in docs
- maintenance: extract platform-specific scheduling
- (this branch uses ds/maintenance-part-3.)
Follow-up on the "maintenance part-3" which introduced scheduled
maintenance tasks to support platforms whose native scheduling
- merge-ort: add some high-level algorithm structure
- merge-ort: setup basic internal data structures
- Merge branch 'en/strmap' into en/merge-ort-impl
- (this branch uses en/merge-ort-api-null-impl and en/strmap.)
-
-
-* js/default-branch-name-adjust-t5515 (2020-11-02) 4 commits
- (merged to 'next' on 2020-11-09 at 568ba5aba5)
- + t5515: use `main` as the name of the main branch for testing (conclusion)
- + t5515: use `main` as the name of the main branch for testing (part 3)
- + t5515: use `main` as the name of the main branch for testing (part 2)
- + t5515: use `main` as the name of the main branch for testing (part 1)
-
- Prepare a test script to transition of the default branch name to
- 'main'.
-
- Will merge to 'master'.
-
-
-* jc/line-log-takes-no-pathspec (2020-11-04) 1 commit
- (merged to 'next' on 2020-11-09 at 47c2c88b9d)
- + log: diagnose -L used with pathspec as an error
-
- "git log -L<range>:<path>" is documented to take no pathspec, but
- this was not enforced by the command line option parser, which has
- been corrected.
-
- Will merge to 'master'.
-
-
-* jk/format-patch-output (2020-11-04) 3 commits
- (merged to 'next' on 2020-11-09 at 1f1bb6ebff)
- + format-patch: support --output option
- + format-patch: tie file-opening logic to output_directory
- + format-patch: refactor output selection
-
- "git format-patch --output=there" did not work as expected and
- instead crashed. The option is now supported.
-
- Will merge to 'master'.
-
-
-* rs/empty-reflog-check-fix (2020-11-01) 1 commit
- (merged to 'next' on 2020-11-09 at 3da6b6fef0)
- + stash: simplify reflog emptiness check
-
- The code to see if "git stash drop" can safely remove refs/stash
- has been made more carerful.
-
- Will merge to 'master'.
+ (this branch uses en/strmap.)
* jc/format-patch-name-max (2020-11-09) 1 commit
* jk/diff-release-filespec-fix (2020-11-11) 2 commits
- - t7800: simplify difftool test
+ (merged to 'next' on 2020-11-12 at 3b21625881)
+ + t7800: simplify difftool test
(merged to 'next' on 2020-11-09 at 6d89b9602d)
+ diff: allow passing NULL to diff_free_filespec_data()
+ (this branch is used by js/default-branch-name-tests-final-stretch.)
Running "git diff" while allowing external diff in a state with
unmerged paths used to segfault, which has been corrected.
- Will merge to 'next'.
+ Will merge to 'master'.
* jx/t5411-flake-fix (2020-11-11) 3 commits
- - receive-pack: use default version 0 for proc-receive
- - receive-pack: gently write messages to proc-receive
- - t5411: new helper filter_out_user_friendly_and_stable_output
+ (merged to 'next' on 2020-11-18 at badb1fefe5)
+ + receive-pack: use default version 0 for proc-receive
+ + receive-pack: gently write messages to proc-receive
+ + t5411: new helper filter_out_user_friendly_and_stable_output
The exchange between receive-pack and proc-receive hook did not
carefully check for errors.
- Will merge to 'next'?
-
-
-* dg/bswap-msvc (2020-11-11) 2 commits
- (merged to 'next' on 2020-11-11 at 6b9e819b17)
- + compat/bswap.h: don't assume MSVC is little-endian
- (merged to 'next' on 2020-11-09 at 91a67b86f7)
- + compat/bswap.h: simplify MSVC endianness detection
-
- Code simplification.
-
- Will merge to 'master'.
-
-
-* rs/archive-high-compression (2020-11-09) 1 commit
- (merged to 'next' on 2020-11-10 at 9bee80950e)
- + archive: support compression levels beyond 9
-
- "git archive" now allows compression level higher than "-9"
- when generating tar.gz output.
-
Will merge to 'master'.
cf. <20201022183822.GA781760@nand.local>
-* en/merge-ort-api-null-impl (2020-11-02) 4 commits
- (merged to 'next' on 2020-11-10 at ed9eed1558)
- + merge,rebase,revert: select ort or recursive by config or environment
- + fast-rebase: demonstrate merge-ort's API via new test-tool command
- + merge-ort-wrappers: new convience wrappers to mimic the old merge API
- + merge-ort: barebones API of new merge strategy with empty implementation
- (this branch is used by en/merge-ort-impl.)
-
- Preparation for a new merge strategy.
-
- Will merge to 'master'.
-
-
-* en/merge-tests (2020-10-26) 9 commits
- (merged to 'next' on 2020-11-09 at 8ac9fe94a7)
- + t6423: add more details about direct resolution of directories
- + t6423: note improved ort handling with untracked files
- + t6423, t6436: note improved ort handling with dirty files
- + merge tests: expect slight differences in output for recursive vs. ort
- + t6423: expect improved conflict markers labels in the ort backend
- + t6404, t6423: expect improved rename/delete handling in ort backend
- + t6416: correct expectation for rename/rename(1to2) + directory/file
- + merge tests: expect improved directory/file conflict handling in ort
- + t/: new helper for tests that pass with ort but fail with recursive
-
- Preparation for a new merge strategy.
-
- Will merge to 'master'.
-
-
* sj/untracked-files-in-submodule-directory-is-not-dirty (2020-10-26) 1 commit
- diff: do not show submodule with untracked files as "-dirty"
Needs doc update and also adjusting "git status".
-* nk/perf-fsmonitor (2020-10-26) 10 commits
- (merged to 'next' on 2020-11-09 at 9fed160a17)
- + t/perf/fsmonitor: add benchmark for dirty status
- + t/perf/fsmonitor: perf comparison of multiple fsmonitor integrations
- + t/perf/fsmonitor: initialize test with git reset
- + t/perf/fsmonitor: factor setup for fsmonitor into function
- + t/perf/fsmonitor: silence initial git commit
- + t/perf/fsmonitor: shorten DESC to basename
- + t/perf/fsmonitor: factor description out for readability
- + t/perf/fsmonitor: improve error message if typoing hook name
- + t/perf/fsmonitor: move watchman setup to one-time-repo-setup
- + t/perf/fsmonitor: separate one time repo initialization
-
- Add t/perf support for fsmonitor.
-
- Will merge to 'master'.
-
-
-* pw/rebase-i-orig-head (2020-11-04) 4 commits
- (merged to 'next' on 2020-11-10 at 038a5295f5)
- + rebase -i: simplify get_revision_ranges()
- + rebase -i: use struct object_id when writing state
- + rebase -i: use struct object_id rather than looking up commit
- + rebase -i: stop overwriting ORIG_HEAD buffer
-
- "git rebase -i" did not store ORIG_HEAD correctly.
-
- Will merge to 'master'.
- cf. <xmqq7drbbcj5.fsf@gitster.c.googlers.com>
-
-
* en/strmap (2020-11-11) 15 commits
- - shortlog: use strset from strmap.h
- - Use new HASHMAP_INIT macro to simplify hashmap initialization
- - strmap: take advantage of FLEXPTR_ALLOC_STR when relevant
- - strmap: enable allocations to come from a mem_pool
- - strmap: add a strset sub-type
- - strmap: split create_entry() out of strmap_put()
- - strmap: add functions facilitating use as a string->int map
- - strmap: enable faster clearing and reusing of strmaps
- - strmap: add more utility functions
- - strmap: new utility functions
- - hashmap: provide deallocation function names
- - hashmap: introduce a new hashmap_partial_clear()
- - hashmap: allow re-use after hashmap_free()
- - hashmap: adjust spacing to fix argument alignment
- - hashmap: add usage documentation explaining hashmap_free[_entries]()
+ (merged to 'next' on 2020-11-12 at 41519a5f5c)
+ + shortlog: use strset from strmap.h
+ + Use new HASHMAP_INIT macro to simplify hashmap initialization
+ + strmap: take advantage of FLEXPTR_ALLOC_STR when relevant
+ + strmap: enable allocations to come from a mem_pool
+ + strmap: add a strset sub-type
+ + strmap: split create_entry() out of strmap_put()
+ + strmap: add functions facilitating use as a string->int map
+ + strmap: enable faster clearing and reusing of strmaps
+ + strmap: add more utility functions
+ + strmap: new utility functions
+ + hashmap: provide deallocation function names
+ + hashmap: introduce a new hashmap_partial_clear()
+ + hashmap: allow re-use after hashmap_free()
+ + hashmap: adjust spacing to fix argument alignment
+ + hashmap: add usage documentation explaining hashmap_free[_entries]()
(this branch is used by en/merge-ort-impl.)
A speciailization of hashmap that uses a string as key has been
introduced. Hopefully it will see wider use over time.
- Will merge to 'next'.
-
-
-* jk/symlinked-dotgitx-files (2020-10-23) 9 commits
- (merged to 'next' on 2020-10-26 at c1dd37b024)
- + docs: document symlink restrictions for .git* files
- + fsck: complain when .gitattributes or .gitignore is a symlink
- + verify_path(): disallow symlinks in .gitattributes and .gitignore
- + t0060: test obscured .gitattributes and .gitignore matching
- + t7450: test .gitmodules symlink matching against obscured names
- + t7450: test verify_path() handling of gitmodules
- + t7415: rename to expand scope
- + fsck_tree(): wrap some long lines
- + fsck_tree(): fix shadowed variable
-
- Originally merged to 'next' on 2020-10-23
-
- "git fsck" and the corresponding check done during the transport
- learned to ensure that in-tree files like `.gitignore` and
- `.gitattributes` are not symbolic links.
-
- It seems that there are real projects with .gitignore recorded as
- symlinks, which may need to loosen the fsck setting. Do we need
- to introduce a class that is separate from symlinked .gitmodules
- that probably is with potential consequences that is more grave?
+ Will merge to 'master'.
* ak/corrected-commit-date (2020-10-08) 10 commits
cf. <685afed6-f01f-5d22-80d4-00fdc11caf0a@gmail.com>
cf. <20201103053629.GA13228@Abhishek-Arch>
-
-* ds/maintenance-part-3 (2020-10-16) 8 commits
- (merged to 'next' on 2020-11-10 at fe9475c696)
- + maintenance: add troubleshooting guide to docs
- + maintenance: use 'incremental' strategy by default
- + maintenance: create maintenance.strategy config
- + maintenance: add start/stop subcommands
- + maintenance: add [un]register subcommands
- + for-each-repo: run subcommands on configured repos
- + maintenance: add --schedule option and config
- + maintenance: optionally skip --auto process
- (this branch is used by ds/maintenance-part-4.)
-
- Parts of "git maintenance" to ease writing crontab entries (and
- other scheduling system configuration) for it.
-
- Will merge to 'master'.
-
--------------------------------------------------
[Discarded]