1Git 2.19 Release Notes 2====================== 3 4Updates since v2.18 5------------------- 6 7UI, Workflows & Features 8 9 * "git diff" compares the index and the working tree. For paths 10 added with intent-to-add bit, the command shows the full contents 11 of them as added, but the paths themselves were not marked as new 12 files. They are now shown as new by default. 13 14 "git apply" learned the "--intent-to-add" option so that an 15 otherwise working-tree-only application of a patch will add new 16 paths to the index marked with the "intent-to-add" bit. 17 18 * "git grep" learned the "--column" option that gives not just the 19 line number but the column number of the hit. 20 21 * The "-l" option in "git branch -l" is an unfortunate short-hand for 22 "--create-reflog", but many users, both old and new, somehow expect 23 it to be something else, perhaps "--list". This step warns when "-l" 24 is used as a short-hand for "--create-reflog" and warns about the 25 future repurposing of the it when it is used. 26 27 * The userdiff pattern for .php has been updated. 28 29 * The content-transfer-encoding of the message "git send-email" sends 30 out by default was 8bit, which can cause trouble when there is an 31 overlong line to bust RFC 5322/2822 limit. A new option 'auto' to 32 automatically switch to quoted-printable when there is such a line 33 in the payload has been introduced and is made the default. 34 35 36Performance, Internal Implementation, Development Support etc. 37 38 * The bulk of "git submodule foreach" has been rewritten in C. 39 40 * The in-core "commit" object had an all-purpose "void *util" field, 41 which was tricky to use especially in library-ish part of the 42 code. All of the existing uses of the field has been migrated to a 43 more dedicated "commit-slab" mechanism and the field is eliminated. 44 45 * A less often used command "git show-index" has been modernized. 46 (merge fb3010c31f jk/show-index later to maint). 47 48 * The conversion to pass "the_repository" and then "a_repository" 49 throughout the object access API continues. 50 51 * Continuing with the idea to programatically enumerate various 52 pieces of data required for command line completion, teach the 53 codebase to report the list of configuration variables 54 subcommands care about to help complete them. 55 56 * Separate "rebase -p" codepath out of "rebase -i" implementation to 57 slim down the latter and make it easier to manage. 58 59 * Make refspec parsing codepath more robust. 60 61 * Some flaky tests have been fixed. 62 63 * Continuing with the idea to programmatically enumerate various 64 pieces of data required for command line completion, the codebase 65 has been taught to enumerate options prefixed with "--no-" to 66 negate them. 67 68 * Build and test procedure for netrc credential helper (in contrib/) 69 has been updated. 70 71 * The conversion to pass "the_repository" and then "a_repository" 72 throughout the object access API continues. 73 74 * Remove unused function definitions and declarations from ewah 75 bitmap subsystem. 76 77 * Code preparation to make "git p4" closer to be usable with Python 3. 78 79 * Tighten the API to make it harder to misuse in-tree .gitmodules 80 file, even though it shares the same syntax with configuration 81 files, to read random configuration items from it. 82 83 * "git fast-import" has been updated to avoid attempting to create 84 delta against a zero-byte-long string, which is pointless. 85 86 * The codebase has been updated to compile cleanly with -pedantic 87 option. 88 (merge 2b647a05d7 bb/pedantic later to maint). 89 90 * The character display width table has been updated to match the 91 latest Unicode standard. 92 (merge 570951eea2 bb/unicode-11-width later to maint). 93 94 * test-lint now looks for broken use of "VAR=VAL shell_func" in test 95 scripts. 96 97 98Fixes since v2.18 99----------------- 100 101 * "git remote update" can take both a single remote nickname and a 102 nickname for remote groups, and the completion script (in contrib/) 103 has been taught about it. 104 (merge 9cd4382ad5 ls/complete-remote-update-names later to maint). 105 106 * "git fetch --shallow-since=<cutoff>" that specifies the cut-off 107 point that is newer than the existing history used to end up 108 grabbing the entire history. Such a request now errors out. 109 (merge e34de73c56 nd/reject-empty-shallow-request later to maint). 110 111 * Fix for 2.17-era regression around `core.safecrlf`. 112 (merge 6cb09125be as/safecrlf-quiet-fix later to maint). 113 114 * The recent addition of "partial clone" experimental feature kicked 115 in when it shouldn't, namely, when there is no partial-clone filter 116 defined even if extensions.partialclone is set. 117 (merge cac1137dc4 jh/partial-clone later to maint). 118 119 * "git send-pack --signed" (hence "git push --signed" over the http 120 transport) did not read user ident from the config mechanism to 121 determine whom to sign the push certificate as, which has been 122 corrected. 123 (merge d067d98887 ms/send-pack-honor-config later to maint). 124 125 * "git fetch-pack --all" used to unnecessarily fail upon seeing an 126 annotated tag that points at an object other than a commit. 127 (merge c12c9df527 jk/fetch-all-peeled-fix later to maint). 128 129 * When user edits the patch in "git add -p" and the user's editor is 130 set to strip trailing whitespaces indiscriminately, an empty line 131 that is unchanged in the patch would become completely empty 132 (instead of a line with a sole SP on it). The code introduced in 133 Git 2.17 timeframe failed to parse such a patch, but now it learned 134 to notice the situation and cope with it. 135 (merge f4d35a6b49 pw/add-p-recount later to maint). 136 137 * The code to try seeing if a fetch is necessary in a submodule 138 during a fetch with --recurse-submodules got confused when the path 139 to the submodule was changed in the range of commits in the 140 superproject, sometimes showing "(null)". This has been corrected. 141 142 * "git submodule" did not correctly adjust core.worktree setting that 143 indicates whether/where a submodule repository has its associated 144 working tree across various state transitions, which has been 145 corrected. 146 (merge 984cd77ddb sb/submodule-core-worktree later to maint). 147 148 * Bugfix for "rebase -i" corner case regression. 149 (merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint). 150 151 * Recently added "--base" option to "git format-patch" command did 152 not correctly generate prereq patch ids. 153 (merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint). 154 155 * POSIX portability fix in Makefile to fix a glitch introduced a few 156 releases ago. 157 (merge 6600054e9b dj/runtime-prefix later to maint). 158 159 * "git filter-branch" when used with the "--state-branch" option 160 still attempted to rewrite the commits whose filtered result is 161 known from the previous attempt (which is recorded on the state 162 branch); the command has been corrected not to waste cycles doing 163 so. 164 (merge 709cfe848a mb/filter-branch-optim later to maint). 165 166 * Clarify that setting core.ignoreCase to deviate from reality would 167 not turn a case-incapable filesystem into a case-capable one. 168 (merge 48294b512a ms/core-icase-doc later to maint). 169 170 * "fsck.skipList" did not prevent a blob object listed there from 171 being inspected for is contents (e.g. we recently started to 172 inspect the contents of ".gitmodules" for certain malicious 173 patterns), which has been corrected. 174 (merge fb16287719 rj/submodule-fsck-skip later to maint). 175 176 * "git checkout --recurse-submodules another-branch" did not report 177 in which submodule it failed to update the working tree, which 178 resulted in an unhelpful error message. 179 (merge ba95d4e4bd sb/submodule-move-head-error-msg later to maint). 180 181 * "git rebase" behaved slightly differently depending on which one of 182 the three backends gets used; this has been documented and an 183 effort to make them more uniform has begun. 184 (merge b00bf1c9a8 en/rebase-consistency later to maint). 185 186 * The "--ignore-case" option of "git for-each-ref" (and its friends) 187 did not work correctly, which has been fixed. 188 (merge e674eb2528 jk/for-each-ref-icase later to maint). 189 190 * "git fetch" failed to correctly validate the set of objects it 191 received when making a shallow history deeper, which has been 192 corrected. 193 (merge cf1e7c0770 jt/connectivity-check-after-unshallow later to maint). 194 195 * Partial clone support of "git clone" has been updated to correctly 196 validate the objects it receives from the other side. The server 197 side has been corrected to send objects that are directly 198 requested, even if they may match the filtering criteria (e.g. when 199 doing a "lazy blob" partial clone). 200 (merge a7e67c11b8 jt/partial-clone-fsck-connectivity later to maint). 201 202 * Handling of an empty range by "git cherry-pick" was inconsistent 203 depending on how the range ended up to be empty, which has been 204 corrected. 205 (merge c5e358d073 jk/empty-pick-fix later to maint). 206 207 * "git reset --merge" (hence "git merge ---abort") and "git reset --hard" 208 had trouble working correctly in a sparsely checked out working 209 tree after a conflict, which has been corrected. 210 (merge b33fdfc34c mk/merge-in-sparse-checkout later to maint). 211 212 * Correct a broken use of "VAR=VAL shell_func" in a test. 213 (merge 650161a277 jc/t3404-one-shot-export-fix later to maint). 214 215 * "git rev-parse ':/substring'" did not consider the history leading 216 only to HEAD when looking for a commit with the given substring, 217 when the HEAD is detached. This has been fixed. 218 (merge 6b3351e799 wc/find-commit-with-pattern-on-detached-head later to maint). 219 220 * Build doc update for Windows. 221 (merge ede8d89bb1 nd/command-list later to maint). 222 223 * core.commentchar is now honored when preparing the list of commits 224 to replay in "rebase -i". 225 226 * Code cleanup, docfix, build fix, etc. 227 (merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint). 228 (merge 037714252f jc/clean-after-sanity-tests later to maint). 229 (merge 5b26c3c941 en/merge-recursive-cleanup later to maint). 230 (merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint). 231 (merge bb4d000e87 bw/protocol-v2 later to maint). 232 (merge 928f0ab4ba vs/typofixes later to maint). 233 (merge d7f590be84 en/rebase-i-microfixes later to maint). 234 (merge 81d395cc85 js/rebase-recreate-merge later to maint). 235 (merge 51d1863168 tz/exclude-doc-smallfixes later to maint). 236 (merge a9aa3c0927 ds/commit-graph later to maint). 237 (merge 5cf8e06474 js/enhanced-version-info later to maint). 238 (merge 6aaded5509 tb/config-default later to maint). 239 (merge 022d2ac1f3 sb/blame-color later to maint).