Git fork
at reftables-rust 330 lines 13 kB view raw
1Git v2.48 Release Notes 2======================= 3 4UI, 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 43Performance, 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 172Fixes 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).