1Git 2.22 Release Notes 2====================== 3 4Updates since v2.21 5------------------- 6 7UI, Workflows & Features 8 9 * "git checkout --no-overlay" can be used to trigger a new mode of 10 checking out paths out of the tree-ish, that allows paths that 11 match the pathspec that are in the current index and working tree 12 and are not in the tree-ish. 13 14 * The %(trailers) formatter in "git log --format=..." now allows to 15 optionally pick trailers selectively by keyword, show only values, 16 etc. 17 18 * Four new configuration variables {author,committer}.{name,email} 19 have been introduced to override user.{name,email} in more specific 20 cases. 21 22 * Command-line completion (in contrib/) learned to tab-complete the 23 "git submodule absorbgitdirs" subcommand. 24 25 * "git branch" learned a new subcommand "--show-current". 26 27 * Output from "diff --cc" did not show the original paths when the 28 merge involved renames. A new option adds the paths in the 29 original trees to the output. 30 31 * The command line completion (in contrib/) has been taught to 32 complete more subcommand parameters. 33 34 * The final report from "git bisect" used to show the suspected 35 culprit using a raw "diff-tree", with which there is no output for 36 a merge commit. This has been updated to use a more modern and 37 human readable output that still is concise enough. 38 39 * "git rebase --rebase-merges" replaces its old "--preserve-merges" 40 option; the latter is now marked as deprecated. 41 42 * Error message given while cloning with --recurse-submodules has 43 been updated. 44 45 46Performance, Internal Implementation, Development Support etc. 47 48 * The diff machinery, one of the oldest parts of the system, which 49 long predates the parse-options API, uses fairly long and complex 50 handcrafted option parser. This is being rewritten to use the 51 parse-options API. 52 53 * The implementation of pack-redundant has been updated for 54 performance in a repository with many packfiles. 55 56 * A more structured way to obtain execution trace has been added. 57 58 * "git prune" has been taught to take advantage of reachability 59 bitmap when able. 60 61 * The command line parser of "git commit-tree" has been rewritten to 62 use the parse-options API. 63 64 * Suggest GitGitGadget instead of submitGit as a way to submit 65 patches based on GitHub PR to us. 66 67 68Fixes since v2.21 69----------------- 70 71 * "git prune-packed" did not notice and complain against excess 72 arguments given from the command line, which now it does. 73 (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint). 74 75 * Split-index fix. 76 (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint). 77 78 * "git diff --no-index" may still want to access Git goodies like 79 --ext-diff and --textconv, but so far these have been ignored, 80 which has been corrected. 81 (merge 287ab28bfa jk/diff-no-index-initialize later to maint). 82 83 * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes 84 a bug in the latter (lack of authentication retry) and generally 85 improves the code base. 86 (merge a97d00799a jt/http-auth-proto-v2-fix later to maint). 87 88 * The include file compat/bswap.h has been updated so that it is safe 89 to (accidentally) include it more than once. 90 (merge 33aa579a55 jk/guard-bswap-header later to maint). 91 92 * The set of header files used by "make hdr-check" unconditionally 93 included sha256/gcrypt.h, even when it is not used, causing the 94 make target to fail. We now skip it when GCRYPT_SHA256 is not in 95 use. 96 (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint). 97 98 * The Makefile uses 'find' utility to enumerate all the *.h header 99 files, which is expensive on platforms with slow filesystems; it 100 now optionally uses "ls-files" if working within a repository, 101 which is a trick similar to how all sources are enumerated to run 102 ETAGS on. 103 (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint). 104 105 * "git rebase" that was reimplemented in C did not set ORIG_HEAD 106 correctly, which has been corrected. 107 (merge cbd29ead92 js/rebase-orig-head-fix later to maint). 108 109 * Dev support. 110 (merge f545737144 js/stress-test-ui-tweak later to maint). 111 112 * CFLAGS now can be tweaked when invoking Make while using 113 DEVELOPER=YesPlease; this did not work well before. 114 (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint). 115 116 * "git fsck --connectivity-only" omits computation necessary to sift 117 the objects that are not reachable from any of the refs into 118 unreachable and dangling. This is now enabled when dangling 119 objects are requested (which is done by default, but can be 120 overridden with the "--no-dangling" option). 121 (merge 8d8c2a5aef jk/fsck-doc later to maint). 122 123 * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX), 124 the upload-pack that runs on the other end that hangs up after 125 detecting an error could cause "git fetch" to die with a signal, 126 which led to a flakey test. "git fetch" now ignores SIGPIPE during 127 the network portion of its operation (this is not a problem as we 128 check the return status from our write(2)s). 129 (merge 143588949c jk/no-sigpipe-during-network-transport later to maint). 130 131 * A recent update broke "is this object available to us?" check for 132 well-known objects like an empty tree (which should yield "yes", 133 even when there is no on-disk object for an empty tree), which has 134 been corrected. 135 (merge f06ab027ef jk/virtual-objects-do-exist later to maint). 136 137 * The setup code has been cleaned up to avoid leaks around the 138 repository_format structure. 139 (merge e8805af1c3 ma/clear-repository-format later to maint). 140 141 * "git config --type=color ..." is meant to replace "git config --get-color" 142 but there is a slight difference that wasn't documented, which is 143 now fixed. 144 (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint). 145 146 * When the "clean" filter can reduce the size of a huge file in the 147 working tree down to a small "token" (a la Git LFS), there is no 148 point in allocating a huge scratch area upfront, but the buffer is 149 sized based on the original file size. The convert mechanism now 150 allocates very minimum and reallocates as it receives the output 151 from the clean filter process. 152 (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint). 153 154 * "git rebase" uses the refs/rewritten/ hierarchy to store its 155 intermediate states, which inherently makes the hierarchy per 156 worktree, but it didn't quite work well. 157 (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint). 158 159 * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch 160 output as it should. This has been corrected. 161 (merge 05314efaea jk/line-log-with-patch later to maint). 162 163 * "git worktree add" used to do a "find an available name with stat 164 and then mkdir", which is race-prone. This has been fixed by using 165 mkdir and reacting to EEXIST in a loop. 166 (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint). 167 168 * Build update for SHA-1 with collision detection. 169 (merge 07a20f569b jk/sha1dc later to maint). 170 171 * Code cleanup, docfix, build fix, etc. 172 (merge 11f470aee7 jc/test-yes-doc later to maint). 173 (merge 90503a240b js/doc-symref-in-proto-v1 later to maint). 174 (merge 5c326d1252 jk/unused-params later to maint). 175 (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint). 176 (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint). 177 (merge 1ede45e44b en/merge-options-doc later to maint). 178 (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint). 179 (merge c271dc28fd nd/no-more-check-racy later to maint). 180 (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint). 181 (merge bb101aaf0c rd/attr.c-comment-typofix later to maint). 182 (merge 716a5af812 rd/gc-prune-doc-fix later to maint). 183 (merge 50b206371d js/untravis-windows later to maint). 184 (merge dbf47215e3 js/rebase-recreate-merge later to maint). 185 (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint). 186 (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint). 187 (merge af91b0230c dl/ignore-docs later to maint). 188 (merge 59a06e947b ra/t3600-test-path-funcs later to maint). 189 (merge e041d0781b ar/t4150-remove-cruft later to maint).