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