| 1 | Git v2.48 Release Notes |
| 2 | ======================= |
| 3 | |
| 4 | UI, Workflows & Features |
| 5 | ------------------------ |
| 6 | |
| 7 | * A new configuration variable remote.<name>.serverOption makes the |
| 8 | transport layer act as if the --serverOption=<value> option is |
| 9 | given from the command line. |
| 10 | |
| 11 | * "git rebase --rebase-merges" now uses branch names as labels when |
| 12 | able. |
| 13 | |
| 14 | * Describe the policy to introduce breaking changes. |
| 15 | |
| 16 | * Teach 'git notes add' and 'git notes append' a new '-e' flag, |
| 17 | instructing them to open the note in $GIT_EDITOR before saving. |
| 18 | |
| 19 | * Documentation for "git bundle" saw improvements to more prominently |
| 20 | call out the use of '--all' when creating bundles. |
| 21 | |
| 22 | * Drop support for older libcURL and Perl. |
| 23 | |
| 24 | * End-user experience of "git mergetool" when the command errors out |
| 25 | has been improved. |
| 26 | |
| 27 | * "git bundle --unbundle" and "git clone" running on a bundle file |
| 28 | both learned to trigger fsck over the new objects with configurable |
| 29 | fck check levels. |
| 30 | |
| 31 | * When "git fetch $remote" notices that refs/remotes/$remote/HEAD is |
| 32 | missing and discovers what branch the other side points with its |
| 33 | HEAD, refs/remotes/$remote/HEAD is updated to point to it. |
| 34 | |
| 35 | * "git fetch" honors "remote.<remote>.followRemoteHEAD" settings to |
| 36 | tweak the remote-tracking HEAD in "refs/remotes/<remote>/HEAD". |
| 37 | |
| 38 | * "git range-diff" learned to optionally show and compare merge |
| 39 | commits in the ranges being compared, with the --diff-merges |
| 40 | option. |
| 41 | |
| 42 | |
| 43 | Performance, Internal Implementation, Development Support etc. |
| 44 | -------------------------------------------------------------- |
| 45 | |
| 46 | * Document "amlog" notes. |
| 47 | |
| 48 | * The way AsciiDoc is used for SYNOPSIS part of the manual pages has |
| 49 | been revamped. The sources, at least for the simple cases, got |
| 50 | vastly more pleasant to work with. |
| 51 | |
| 52 | * The reftable library is now prepared to expect that the memory |
| 53 | allocation function given to it may fail to allocate and to deal |
| 54 | with such an error. |
| 55 | |
| 56 | * An extra worktree attached to a repository points at each other to |
| 57 | allow finding the repository from the worktree (and vice versa) |
| 58 | possible. Use relative paths for this linkage. |
| 59 | |
| 60 | * Enable Windows-based CI in GitLab. |
| 61 | |
| 62 | * Commands that can also work outside Git have learned to take the |
| 63 | repository instance "repo" when we know we are in a repository, and |
| 64 | NULL when we are not, in a parameter. The uses of the_repository |
| 65 | variable in a few of them have been removed using the new calling |
| 66 | convention. |
| 67 | |
| 68 | * The reftable sub-system grew a new reftable-specific strbuf |
| 69 | replacement to reduce its dependency on Git-specific data |
| 70 | structures. |
| 71 | |
| 72 | * The ref-filter machinery learns to recognize and avoid cases where |
| 73 | sorting would be redundant. |
| 74 | |
| 75 | * Various platform compatibility fixes split out of the larger effort |
| 76 | to use Meson as the primary build tool. |
| 77 | |
| 78 | * Treat ECONNABORTED the same as ECONNRESET in 'git credential-cache' |
| 79 | to work around a possible Cygwin regression. This resolves a race |
| 80 | condition caused by changes in Cygwin's handling of socket |
| 81 | closures, allowing the client to exit cleanly when encountering |
| 82 | ECONNABORTED. |
| 83 | |
| 84 | * Demonstrate an assertion failure in 'git mv'. |
| 85 | |
| 86 | * Documentation update to clarify that 'uploadpack.allowAnySHA1InWant' |
| 87 | implies both 'allowTipSHA1InWant' and 'allowReachableSHA1InWant'. |
| 88 | |
| 89 | * Replace various calls to atoi() with strtol_i() and strtoul_ui(), |
| 90 | and add improved error handling. |
| 91 | |
| 92 | * Documentation updates to 'git-update-ref(1)'. |
| 93 | |
| 94 | * Update the project's CodingGuidelines to discourage naming functions |
| 95 | with a "_1()" suffix. |
| 96 | |
| 97 | * Update '.clang-format' to match project conventions. |
| 98 | |
| 99 | * Centralize documentation for repository extensions into a single place. |
| 100 | |
| 101 | * Buildfix and upgrade of Clar to a newer version. |
| 102 | |
| 103 | * Documentation mark-up updates. |
| 104 | |
| 105 | * Renaming a handful of variables and structure fields. |
| 106 | |
| 107 | * Fix for clar unit tests to support CMake build. |
| 108 | |
| 109 | * C23 compatibility updates. |
| 110 | |
| 111 | * GCC 15 compatibility updates. |
| 112 | |
| 113 | * We now ensure "index-pack" is used with the "--promisor" option |
| 114 | only during a "git fetch". |
| 115 | |
| 116 | * The migration procedure between two ref backends has been optimized. |
| 117 | |
| 118 | * "git fsck" learned to issue warnings on "curiously formatted" ref |
| 119 | contents that have always been treated as valid but that Git |
| 120 | wouldn't have written itself (e.g., missing terminating end-of-line |
| 121 | after the full object name). |
| 122 | |
| 123 | * Work around Coverity warning that would not trigger in practice. |
| 124 | |
| 125 | * Built-in Git subcommands are supplied the repository object to work |
| 126 | with; they learned to do the same when they invoke sub-subcommands. |
| 127 | |
| 128 | * Drop support for ancient environments in various CI jobs. |
| 129 | |
| 130 | * Isolate the reftable subsystem from the rest of Git's codebase by |
| 131 | using fewer pieces of Git's infrastructure. |
| 132 | |
| 133 | * Optimize reading random references out of the reftable backend by |
| 134 | allowing reuse of iterator objects. |
| 135 | |
| 136 | * Backport oss-fuzz tests to our codebase. |
| 137 | |
| 138 | * Introduce a new repository extension to prevent older Git versions |
| 139 | from mis-interpreting worktrees created with relative paths. |
| 140 | |
| 141 | * Yet another "pass the repository through the callchain" topic. |
| 142 | |
| 143 | * "git describe" learned to stop digging the history needlessly |
| 144 | deeper. |
| 145 | |
| 146 | * Build procedure update plus introduction of Meson based builds. |
| 147 | |
| 148 | * Recent reftable updates mistook a NULL return from a request for |
| 149 | 0-byte allocation as OOM and died unnecessarily, which has been |
| 150 | corrected. |
| 151 | |
| 152 | * Reftable backend adds check for upper limit of log's update_index. |
| 153 | |
| 154 | * Start working to make the codebase buildable with -Wsign-compare. |
| 155 | |
| 156 | * Regression fix for 'show-index' when run outside of a repository. |
| 157 | |
| 158 | * The meson-build procedure is integrated into CI to catch and |
| 159 | prevent bitrotting. |
| 160 | |
| 161 | * "git refs migrate" learned to also migrate the reflog data across |
| 162 | backends. |
| 163 | |
| 164 | * The developer documentation has been updated to give the latest |
| 165 | info on gitk and git-gui maintainer. |
| 166 | |
| 167 | |
| 168 | * CI jobs that run threaded programs under LSan has been giving false |
| 169 | positives from time to time, which has been worked around. |
| 170 | |
| 171 | |
| 172 | Fixes since v2.47 |
| 173 | ----------------- |
| 174 | |
| 175 | * Doc update to clarify how periodical maintenance are scheduled, |
| 176 | spread across time to avoid thundering herds. |
| 177 | |
| 178 | * Use after free and double freeing at the end in "git log -L... -p" |
| 179 | had been identified and fixed. |
| 180 | |
| 181 | * On macOS, fsmonitor can fall into a race condition that results in |
| 182 | a client waiting forever to be notified about an event that has |
| 183 | already happened. This problem has been corrected. |
| 184 | |
| 185 | * "git maintenance start" crashed due to an uninitialized variable |
| 186 | reference, which has been corrected. |
| 187 | |
| 188 | * Fail gracefully instead of crashing when attempting to write the |
| 189 | contents of a corrupt in-core index as a tree object. |
| 190 | |
| 191 | * A "git fetch" from the superproject going down to a submodule used |
| 192 | a wrong remote when the default remote names are set differently |
| 193 | between them. |
| 194 | |
| 195 | * Fixes compile time warnings with 64-bit MSVC. |
| 196 | |
| 197 | * Teaches 'shortlog' to explicitly use SHA-1 when operating outside |
| 198 | of a repository. |
| 199 | |
| 200 | * Fix 'git grep' regression on macOS by disabling lookahead when |
| 201 | encountering invalid UTF-8 byte sequences. |
| 202 | |
| 203 | * The dumb-http code regressed when the result of re-indexing a pack |
| 204 | yielded an *.idx file that differs in content from the *.idx file |
| 205 | it downloaded from the remote. This has been corrected by no longer |
| 206 | relying on the *.idx file we got from the remote. |
| 207 | |
| 208 | * When called with '--left-right' and '--use-bitmap-index', 'rev-list' |
| 209 | will produce output without any left/right markers, which has been |
| 210 | corrected. |
| 211 | |
| 212 | * More leakfixes. |
| 213 | |
| 214 | * Test modernization. |
| 215 | |
| 216 | * The "--shallow-exclude=<ref>" option to various history transfer |
| 217 | commands takes a ref, not an arbitrary revision. |
| 218 | |
| 219 | * A regression where commit objects missing from a commit-graph can |
| 220 | cause an infinite loop when doing a fetch in a partial clone has |
| 221 | been fixed. |
| 222 | |
| 223 | * The MinGW compatibility layer has been taught to support POSIX |
| 224 | semantics for atomic renames when other process(es) have a file |
| 225 | opened at the destination path. |
| 226 | |
| 227 | * "git gc" discards any objects that are outside promisor packs that |
| 228 | are referred to by an object in a promisor pack, and we do not |
| 229 | refetch them from the promisor at runtime, resulting an unusable |
| 230 | repository. Work around it by including these objects in the |
| 231 | referring promisor pack at the receiving end of the fetch. |
| 232 | |
| 233 | * Avoid build/test breakage on a system without working malloc debug |
| 234 | support dynamic library. |
| 235 | (merge 72ad6dc368 jk/test-malloc-debug-check later to maint). |
| 236 | |
| 237 | * Double-free fix. |
| 238 | (merge fe17a25905 jk/fetch-prefetch-double-free-fix later to maint). |
| 239 | |
| 240 | * Use of some uninitialized variables in "git difftool" has been |
| 241 | corrected. |
| 242 | |
| 243 | * Object reuse code based on multi-pack-index sent an unwanted copy |
| 244 | of object. |
| 245 | (merge e199290592 tb/multi-pack-reuse-dupfix later to maint). |
| 246 | |
| 247 | * "git fast-import" can be tricked into a replace ref that maps an |
| 248 | object to itself, which is a useless thing to do. |
| 249 | (merge 5e904f1a4a en/fast-import-avoid-self-replace later to maint). |
| 250 | |
| 251 | * The ref-transaction hook triggered for reflog updates, which has |
| 252 | been corrected. |
| 253 | (merge b886db48c6 kn/ref-transaction-hook-with-reflog later to maint). |
| 254 | |
| 255 | * Give a bit of advice/hint message when "git maintenance" stops finding a |
| 256 | lock file left by another instance that still is potentially running. |
| 257 | (merge ba874d1dac ps/gc-stale-lock-warning later to maint). |
| 258 | |
| 259 | * Use the right helper program to measure file size in performance tests. |
| 260 | (merge 3f97f1bce6 tb/use-test-file-size-more later to maint). |
| 261 | |
| 262 | * A double-free that may not trigger in practice by luck has been |
| 263 | corrected in the reference resolution code. |
| 264 | (merge b6318cf23a sj/refs-symref-referent-fix later to maint). |
| 265 | |
| 266 | * The sequencer failed to honor core.commentString in some places. |
| 267 | |
| 268 | * Describe a case where an option value needs to be spelled as a |
| 269 | separate argument, i.e. "--opt val", not "--opt=val". |
| 270 | (merge 1bc1e94091 jc/doc-opt-tilde-expand later to maint). |
| 271 | |
| 272 | * Loosen overly strict ownership check introduced in the recent past, |
| 273 | to keep the promise "cloning a suspicious repository is a safe |
| 274 | first step to inspect it". |
| 275 | (merge 0ffb5a6bf1 bc/allow-upload-pack-from-other-people later to maint). |
| 276 | |
| 277 | * "git fast-import" learned to reject paths with ".." and "." as |
| 278 | their components to avoid creating invalid tree objects. |
| 279 | (merge 8cb4c6e62f en/fast-import-verify-path later to maint). |
| 280 | |
| 281 | * The --ancestry-path option is designed to be given a commit that is |
| 282 | on the path, which was not documented, which has been corrected. |
| 283 | (merge bc1a980759 kk/doc-ancestry-path later to maint). |
| 284 | |
| 285 | * "git tag" has been taught to refuse to create refs/tags/HEAD |
| 286 | since such a tag will be confusing in the context of the UI provided by |
| 287 | the Git Porcelain commands. |
| 288 | (merge bbd445d5ef jc/forbid-head-as-tagname later to maint). |
| 289 | |
| 290 | * The advice messages now tell the newer 'git config set' command to |
| 291 | set the advice.token configuration variable to squelch a message. |
| 292 | (merge 6c397d0104 bf/explicit-config-set-in-advice-messages later to maint). |
| 293 | |
| 294 | * The syntax ":/<text>" to name the latest commit with the matching |
| 295 | text was broken with a recent change, which has been corrected. |
| 296 | (merge 0ff919e87a ps/commit-with-message-syntax-fix later to maint). |
| 297 | |
| 298 | * Fix performance regression of a recent "fatten promisor pack with |
| 299 | local objects" protection against an unwanted gc. |
| 300 | |
| 301 | * "git log -p --remerge-diff --reverse" was completely broken. |
| 302 | (merge f94bfa1516 js/log-remerge-keep-ancestry later to maint). |
| 303 | |
| 304 | * "git bundle create" with an annotated tag on the positive end of |
| 305 | the revision range had a workaround code for older limitation in |
| 306 | the revision walker, which has become unnecessary. |
| 307 | (merge dd1072dfa8 tc/bundle-with-tag-remove-workaround later to maint). |
| 308 | |
| 309 | * GitLab CI updates. |
| 310 | (merge c6b43f663e ps/ci-gitlab-update later to maint). |
| 311 | |
| 312 | * Code to reuse objects based on bitmap contents have been tightened |
| 313 | to avoid race condition even when multiple packs are involved. |
| 314 | (merge 62b3ec8a3f tb/bitmap-fix-pack-reuse later to maint). |
| 315 | |
| 316 | * An earlier "csum-file checksum does not have to be computed with |
| 317 | sha1dc" topic had a few code paths that had initialized an |
| 318 | implementation of a hash function to be used by an unmatching hash |
| 319 | by mistake, which have been corrected. |
| 320 | (merge 599a63409b ps/weak-sha1-for-tail-sum-fix later to maint). |
| 321 | |
| 322 | * Other code cleanup, docfix, build fix, etc. |
| 323 | (merge 77af53f56f aa/t7300-modernize later to maint). |
| 324 | (merge dcd590a39d bf/t-readme-mention-reftable later to maint). |
| 325 | (merge 68e3c69efa kh/trailer-in-glossary later to maint). |
| 326 | (merge 91f88f76e6 tb/boundary-traversal-fix later to maint). |
| 327 | (merge 168ebb7159 jc/doc-error-message-guidelines later to maint). |
| 328 | (merge 18693d7d65 kh/doc-bundle-typofix later to maint). |
| 329 | (merge e2f5d3b491 kh/doc-update-ref-grammofix later to maint). |
| 330 | (merge 8525e92886 mh/doc-windows-home-env later to maint). |