| 1 | Git v2.49 Release Notes |
| 2 | ======================= |
| 3 | |
| 4 | UI, Workflows & Features |
| 5 | ------------------------ |
| 6 | |
| 7 | * Completion script updates for zsh |
| 8 | |
| 9 | * "git pack-objects" and its wrapper "git repack" learned an option |
| 10 | to use an alternative path-hash function to improve delta-base |
| 11 | selection to produce a packfile with deeper history than window |
| 12 | size. |
| 13 | |
| 14 | * "git gc" learned the "--expire-to" option and passes it down to |
| 15 | underlying "git repack". |
| 16 | |
| 17 | * "[help] autocorrect = 1" used to be a way to say "please wait for |
| 18 | 0.1 second after suggesting a typofix of the command name before |
| 19 | running that command"; now it means "yes, if there is a plausible |
| 20 | typofix for the command name, please run it immediately". |
| 21 | |
| 22 | * "git clone" learned to make a shallow clone for a single commit |
| 23 | that is not necessarily be at the tip of any branch. |
| 24 | |
| 25 | * Lazy-loading missing files in a blobless clone on demand is costly |
| 26 | as it tends to be one-blob-at-a-time. "git backfill" is introduced |
| 27 | to help bulk-download necessary files beforehand. |
| 28 | |
| 29 | * "git push --atomic --porcelain" used to ignore failures from the |
| 30 | other side, losing the error status from the child process, which |
| 31 | has been corrected. |
| 32 | |
| 33 | * "git rev-list --missing=" learned to accept "print-info" that gives |
| 34 | known details expected of the missing objects, like path and type. |
| 35 | |
| 36 | * Comes with an updated "gitk". |
| 37 | |
| 38 | * The documentation of "git commit" and "git rebase" now refer to |
| 39 | commit titles as such, not "subject". |
| 40 | |
| 41 | * The value of "uname -s" is by default sent over the wire as a part |
| 42 | of the "version" capability. |
| 43 | |
| 44 | * "git refs migrate" can optionally be told not to migrate the reflog. |
| 45 | |
| 46 | * The netrc support (via the cURL library) for the HTTP transport has |
| 47 | been re-enabled. |
| 48 | |
| 49 | * Removal of ".git/branches" and ".git/remotes" support in the |
| 50 | BreakingChanges document has been further clarified. |
| 51 | |
| 52 | * What happens to submodules during merge has been documented in a |
| 53 | bit more detail. |
| 54 | |
| 55 | |
| 56 | Performance, Internal Implementation, Development Support etc. |
| 57 | -------------------------------------------------------------- |
| 58 | |
| 59 | * More -Wsign-compare fixes. |
| 60 | |
| 61 | * meson-based build now supports the unsafe-sha1 build knob. |
| 62 | |
| 63 | * The meson-based build procedure covers contrib/ and other places as |
| 64 | well. |
| 65 | |
| 66 | * The code to check LSan results has been simplified and made more |
| 67 | robust. |
| 68 | (merge 164a2516eb jk/lsan-race-ignore-false-positive later to maint). |
| 69 | |
| 70 | * More code paths have a repository passed through the callchain, |
| 71 | instead of assuming the primary the_repository object. |
| 72 | |
| 73 | * Move a few more unit tests to the clar test framework. |
| 74 | |
| 75 | * Introduce a new API to visit objects in batches based on a common |
| 76 | path, or by type. |
| 77 | |
| 78 | * Following the procedure we established to introduce breaking |
| 79 | changes for Git 3.0, allow an early opt-in for removing support of |
| 80 | $GIT_DIR/branches/ and $GIT_DIR/remotes/ directories to configure |
| 81 | remotes. |
| 82 | |
| 83 | * The code paths to interact with zlib has been cleaned up in |
| 84 | preparation for building with zlib-ng. |
| 85 | |
| 86 | * Foreign language interface for Rust into our code base has been added. |
| 87 | |
| 88 | * All the documentation .txt files have been renamed to .adoc to help |
| 89 | content aware editors. |
| 90 | |
| 91 | * "git difftool" code clean-up. |
| 92 | |
| 93 | * Rename processing in the recursive merge backend has seen a micro |
| 94 | optimization. |
| 95 | |
| 96 | * The path.[ch] API takes an explicit repository parameter passed |
| 97 | throughout the callchain, instead of relying on the_repository |
| 98 | singleton instance. |
| 99 | |
| 100 | * Large-object promisor protocol extension has been introduced. |
| 101 | |
| 102 | * The editorconfig file is updated to tell us that bash scripts are |
| 103 | similar to general Bourne shell scripts. |
| 104 | |
| 105 | * Meson-based build procedure forgot to build some docs, which has |
| 106 | been corrected. |
| 107 | |
| 108 | |
| 109 | Fixes since v2.48 |
| 110 | ----------------- |
| 111 | |
| 112 | * "git submodule" learned various ways to spell the same option, |
| 113 | e.g. "--branch=B" can be spelled "--branch B" or "-bB". |
| 114 | (merge b86f0f9071 re/submodule-parse-opt later to maint). |
| 115 | |
| 116 | * Tweak the help text used for the option value placeholders by |
| 117 | parse-options API so that translations can customize the "<>" |
| 118 | placeholder signal (e.g. "--option=<value>"). |
| 119 | (merge 5b34dd08d0 as/long-option-help-i18n later to maint). |
| 120 | |
| 121 | * CI jobs gave sporadic failures, which turns out that that the |
| 122 | object finalization code was giving an error when it did not have |
| 123 | to. |
| 124 | (merge d7fcbe2c56 ps/object-collision-check later to maint). |
| 125 | |
| 126 | * The code to compute "unique" name used git_rand() which can fail or |
| 127 | get stuck; the callsite does not require cryptographic security. |
| 128 | Introduce the "insecure" mode and use it appropriately. |
| 129 | (merge 0b4f8afef6 ps/reftable-get-random-fix later to maint). |
| 130 | |
| 131 | * A misconfigured "fsck.skiplist" configuration variable was not |
| 132 | diagnosed as an error, which has been corrected. |
| 133 | (merge ca7158076f jt/fsck-skiplist-parse-fix later to maint). |
| 134 | |
| 135 | * Extended SHA-1 expression parser did not work well when a branch |
| 136 | with an unusual name (e.g. "foo{bar") is involved. |
| 137 | (merge 191f0c8db2 en/object-name-with-funny-refname-fix later to maint). |
| 138 | |
| 139 | * The meson build procedure looked for the 'version-def.h' file in a |
| 140 | wrong directory, which has been corrected. |
| 141 | (merge 4771501c0a tc/meson-use-our-version-def-h later to maint). |
| 142 | |
| 143 | * The meson build procedure for Documentation/technical/ hierarchy was |
| 144 | missing necessary dependencies, which has been corrected. |
| 145 | (merge 1dca492edd sj/meson-doc-technical-dependency-fix later to maint). |
| 146 | |
| 147 | * The "instaweb" bound only to local IP address without "--local" and |
| 148 | to all addresses with "--local", which was the other way around, when |
| 149 | using Python's http.server class, which has been corrected. |
| 150 | (merge 76baf97fa1 ak/instaweb-python-port-binding-fix later to maint). |
| 151 | |
| 152 | * Document that it is insecure to use Personal Access Tokens, which |
| 153 | some hosting providers take as username/password, embedded in URLs. |
| 154 | (merge a90ff409f0 mh/doc-credential-helpers-with-pat later to maint). |
| 155 | |
| 156 | * The help text from "git $cmd -h" appear on the standard output for |
| 157 | some $cmd and the standard error for others. The built-in commands |
| 158 | have been fixed to show them on the standard output consistently. |
| 159 | (merge f66d1423f5 jc/show-usage-help later to maint). |
| 160 | |
| 161 | * The meson-driven build is now aware of "git-subtree" housed in |
| 162 | contrib/subtree hierarchy. |
| 163 | (merge 8454b42f94 ps/build-meson-subtree later to maint). |
| 164 | |
| 165 | * It was possible for "git unpack-objects" and "git index-pack" to |
| 166 | make an unaligned access, which has been corrected. |
| 167 | (merge 98046591b9 jk/pack-header-parse-alignment-fix later to maint). |
| 168 | |
| 169 | * The "cache" credential back-end did not handle authtype correctly, |
| 170 | which has been corrected. |
| 171 | (merge 0b43274850 mh/credential-cache-authtype-request-fix later to maint). |
| 172 | |
| 173 | * "git branch --sort=..." and "git for-each-ref --format=... --sort=..." |
| 174 | did not work as expected with some atoms, which has been corrected. |
| 175 | (merge c5490ce9d1 rs/ref-fitler-used-atoms-value-fix later to maint). |
| 176 | |
| 177 | * reflog entries for symbolic ref updates were broken, which has been |
| 178 | corrected. |
| 179 | (merge 3519492430 kn/reflog-symref-fix later to maint). |
| 180 | |
| 181 | * The trace2 code was not prepared to show a configuration variable |
| 182 | that is set to true using the valueless true syntax, which has been |
| 183 | corrected. |
| 184 | (merge 2fd367cf63 am/trace2-with-valueless-true later to maint). |
| 185 | |
| 186 | * The "git refs migrate" command did not migrate the reflog for |
| 187 | refs/stash, which is the contents of the stashes, which has been |
| 188 | corrected. |
| 189 | (merge a0bea0978f ps/reflog-migration-with-logall-fix later to maint). |
| 190 | |
| 191 | * Doc and short-help text for "show-index" has been clarified to |
| 192 | stress that the command reads its data from the standard input. |
| 193 | (merge 49edce4ff9 jc/show-index-h-update later to maint). |
| 194 | |
| 195 | * The API around choosing to use unsafe variant of SHA-1 |
| 196 | implementation has been updated in an attempt to make it harder to |
| 197 | abuse. |
| 198 | (merge 04292c3796 tb/unsafe-hash-cleanup later to maint). |
| 199 | |
| 200 | * Fix bugs in an earlier attempt to fix "git refs migration". |
| 201 | (merge f11f0a5a2d kn/reflog-migration-fix-fix later to maint). |
| 202 | |
| 203 | * The code path used when "git fetch" fetches from a bundle file |
| 204 | closed the same file descriptor twice, which sometimes broke things |
| 205 | unexpectedly when the file descriptor was reused, which has been |
| 206 | corrected. |
| 207 | (merge 9a84794ad8 js/bundle-unbundle-fd-reuse-fix later to maint). |
| 208 | |
| 209 | * "git init" to reinitialize a repository that already exists cannot |
| 210 | change the hash function and ref backends; such a request is |
| 211 | silently ignored now. |
| 212 | (merge 7e88640cd1 ps/setup-reinit-fixes later to maint). |
| 213 | |
| 214 | * "git apply" internally uses unsigned long for line numbers and uses |
| 215 | strtoul() to parse numbers on the hunk headers. It however forgot |
| 216 | to check parse errors. |
| 217 | (merge a206058fda pw/apply-ulong-overflow-check later to maint). |
| 218 | |
| 219 | * Two CI tasks, whitespace check and style check, work on the |
| 220 | difference from the base version and the version being checked, but |
| 221 | the base was computed incorrectly in GitLab CI in some cases, which |
| 222 | has been corrected. |
| 223 | (merge acc4fb302b jt/gitlab-ci-base-fix later to maint). |
| 224 | |
| 225 | * "git repack --keep-unreachable" to send unreachable objects to the |
| 226 | main pack "git repack -ad" produces did not work when there is no |
| 227 | existing packs, which has been corrected. |
| 228 | (merge 414c82300a ps/repack-keep-unreachable-in-unpacked-repo later to maint). |
| 229 | |
| 230 | * Going into a secondary worktree and asking "is the main worktree |
| 231 | bare?" did not work correctly when per-worktree configuration |
| 232 | option was in use, which has been corrected. |
| 233 | |
| 234 | * Fetching into a bare repository incorrectly assumed it always used |
| 235 | a mirror layout when deciding to update remote-tracking HEAD, which |
| 236 | has been corrected. |
| 237 | (merge 93dc16483a bf/fetch-set-head-fix later to maint). |
| 238 | |
| 239 | * A thunderbird helper script lost its bashism. |
| 240 | (merge 59d26bd961 bc/contrib-thunderbird-patch-inline-fix later to maint). |
| 241 | |
| 242 | * The -G/-S options to the "diff" family of commands caused us to hit |
| 243 | a BUG() when they get no values; they have been corrected. |
| 244 | (merge a620046b29 bc/diff-reject-empty-arg-to-pickaxe later to maint). |
| 245 | |
| 246 | * "git merge-tree --stdin" has been improved (including a workaround |
| 247 | for a deadlock). |
| 248 | (merge 6a9ae81015 pw/merge-tree-stdin-deadlock-fix later to maint). |
| 249 | |
| 250 | * Correct the default target in Documentation/Makefile, and |
| 251 | future-proof all Makefiles from similar breakages by declaring the |
| 252 | default target (which happens to be "all") upfront. |
| 253 | (merge 5309c1e9fb ad/set-default-target-in-makefiles later to maint). |
| 254 | |
| 255 | * "git check-mailmap" used to segfault when queried without human |
| 256 | readable name. |
| 257 | (merge bb60c52131 jk/check-mailmap-wo-name-fix later to maint). |
| 258 | |
| 259 | * Support for renaming of symbolic links on Windows has been improved. |
| 260 | |
| 261 | * "git rebase -i" failed to allow rewording an empty commit that has |
| 262 | been fast-forwarded. |
| 263 | (merge af8fc7be10 pw/rebase-i-ff-empty-commit later to maint). |
| 264 | |
| 265 | * The use of "paste" command for aggregating the test results have |
| 266 | been corrected. |
| 267 | (merge ce98863204 dk/test-aggregate-results-paste-fix later to maint). |
| 268 | |
| 269 | * Other code cleanup, docfix, build fix, etc. |
| 270 | (merge ddb5287894 jk/t7407-use-test-grep later to maint). |
| 271 | (merge 21e1b44865 aj/difftool-config-doc-fix later to maint). |
| 272 | (merge 6a63995335 mh/gitattr-doc-markup-fix later to maint). |
| 273 | (merge 43850dcf9c sk/unit-test-hash later to maint). |
| 274 | (merge 4ad47d2de3 jc/cli-doc-option-and-config later to maint). |
| 275 | (merge 2d0ff147e5 jp/t8002-printf-fix later to maint). |
| 276 | (merge 69666e6746 ja/doc-restore-markup-update later to maint). |
| 277 | (merge d11d003ba5 sk/strlen-returns-size_t later to maint). |
| 278 | (merge 77b2d29e91 ja/doc-notes-markup-updates later to maint). |
| 279 | (merge 6979bf6f8f jk/combine-diff-cleanup later to maint). |
| 280 | (merge 8705c9bd13 kn/pack-write-with-reduced-globals later to maint). |
| 281 | (merge 087740d65a ps/leakfixes-0129 later to maint). |
| 282 | (merge 6bba6f604b jp/doc-trailer-config later to maint). |
| 283 | (merge f1cc562b77 lo/t7603-path-is-file-update later to maint). |
| 284 | (merge 45761988ac en/doc-renormalize later to maint). |
| 285 | (merge 832f56f06a jc/doc-boolean-synonyms later to maint). |
| 286 | (merge 3eeed876a9 ac/doc-http-ssl-type-config later to maint). |
| 287 | (merge c268e3285d jc/breaking-changes-early-adopter-option later to maint). |
| 288 | (merge 0d03fda6a5 pb/doc-follow-remote-head later to maint). |