| 1 | Git 2.13 Release Notes |
| 2 | ====================== |
| 3 | |
| 4 | Backward compatibility notes. |
| 5 | |
| 6 | * Use of an empty string as a pathspec element that is used for |
| 7 | 'everything matches' is still warned and Git asks users to use a |
| 8 | more explicit '.' for that instead. The hope is that existing |
| 9 | users will not mind this change, and eventually the warning can be |
| 10 | turned into a hard error, upgrading the deprecation into removal of |
| 11 | this (mis)feature. That is not scheduled to happen in the upcoming |
| 12 | release (yet). |
| 13 | |
| 14 | * The historical argument order "git merge <msg> HEAD <commit>..." |
| 15 | has been deprecated for quite some time, and is now removed. |
| 16 | |
| 17 | * The default location "~/.git-credential-cache/socket" for the |
| 18 | socket used to communicate with the credential-cache daemon has |
| 19 | been moved to "~/.cache/git/credential/socket". |
| 20 | |
| 21 | * Git now avoids blindly falling back to ".git" when the setup |
| 22 | sequence said we are _not_ in Git repository. A corner case that |
| 23 | happens to work right now may be broken by a call to die("BUG"). |
| 24 | We've tried hard to locate such cases and fixed them, but there |
| 25 | might still be cases that need to be addressed--bug reports are |
| 26 | greatly appreciated. |
| 27 | |
| 28 | |
| 29 | Updates since v2.12 |
| 30 | ------------------- |
| 31 | |
| 32 | UI, Workflows & Features |
| 33 | |
| 34 | * "git describe" and "git name-rev" have been taught to take more |
| 35 | than one refname patterns to restrict the set of refs to base their |
| 36 | naming output on, and also learned to take negative patterns to |
| 37 | name refs not to be used for naming via their "--exclude" option. |
| 38 | |
| 39 | * Deletion of a branch "foo/bar" could remove .git/refs/heads/foo |
| 40 | once there no longer is any other branch whose name begins with |
| 41 | "foo/", but we didn't do so so far. Now we do. |
| 42 | |
| 43 | * When "git merge" detects a path that is renamed in one history |
| 44 | while the other history deleted (or modified) it, it now reports |
| 45 | both paths to help the user understand what is going on in the two |
| 46 | histories being merged. |
| 47 | |
| 48 | * The <url> part in "http.<url>.<variable>" configuration variable |
| 49 | can now be spelled with '*' that serves as wildcard. |
| 50 | E.g. "http.https://*.example.com.proxy" can be used to specify the |
| 51 | proxy used for https://a.example.com, https://b.example.com, etc., |
| 52 | i.e. any host in the example.com domain. |
| 53 | |
| 54 | * "git tag" did not leave useful message when adding a new entry to |
| 55 | reflog; this was left unnoticed for a long time because refs/tags/* |
| 56 | doesn't keep reflog by default. |
| 57 | |
| 58 | * The "negative" pathspec feature was somewhat more cumbersome to use |
| 59 | than necessary in that its short-hand used "!" which needed to be |
| 60 | escaped from shells, and it required "exclude from what?" specified. |
| 61 | |
| 62 | * The command line options for ssh invocation needs to be tweaked for |
| 63 | some implementations of SSH (e.g. PuTTY plink wants "-P <port>" |
| 64 | while OpenSSH wants "-p <port>" to specify port to connect to), and |
| 65 | the variant was guessed when GIT_SSH environment variable is used |
| 66 | to specify it. The logic to guess now applies to the command |
| 67 | specified by the newer GIT_SSH_COMMAND and also core.sshcommand |
| 68 | configuration variable, and comes with an escape hatch for users to |
| 69 | deal with misdetected cases. |
| 70 | |
| 71 | * The "--git-path", "--git-common-dir", and "--shared-index-path" |
| 72 | options of "git rev-parse" did not produce usable output. They are |
| 73 | now updated to show the path to the correct file, relative to where |
| 74 | the caller is. |
| 75 | |
| 76 | * "git diff -W" has been taught to handle the case where a new |
| 77 | function is added at the end of the file better. |
| 78 | |
| 79 | * "git update-ref -d" and other operations to delete references did |
| 80 | not leave any entry in HEAD's reflog when the reference being |
| 81 | deleted was the current branch. This is not a problem in practice |
| 82 | because you do not want to delete the branch you are currently on, |
| 83 | but caused renaming of the current branch to something else not to |
| 84 | be logged in a useful way. |
| 85 | |
| 86 | * "Cc:" on the trailer part does not have to conform to RFC strictly, |
| 87 | unlike in the e-mail header. "git send-email" has been updated to |
| 88 | ignore anything after '>' when picking addresses, to allow non-address |
| 89 | cruft like " # stable 4.4" after the address. |
| 90 | |
| 91 | * When "git submodule init" decides that the submodule in the working |
| 92 | tree is its upstream, it now gives a warning as it is not a very |
| 93 | common setup. |
| 94 | |
| 95 | * "git stash push" takes a pathspec so that the local changes can be |
| 96 | stashed away only partially. |
| 97 | |
| 98 | * Documentation for "git ls-files" did not refer to core.quotePath. |
| 99 | |
| 100 | * The experimental "split index" feature has gained a few |
| 101 | configuration variables to make it easier to use. |
| 102 | |
| 103 | * From a working tree of a repository, a new option of "rev-parse" |
| 104 | lets you ask if the repository is used as a submodule of another |
| 105 | project, and where the root level of the working tree of that |
| 106 | project (i.e. your superproject) is. |
| 107 | |
| 108 | * The pathspec mechanism learned to further limit the paths that |
| 109 | match the pattern to those that have specified attributes attached |
| 110 | via the gitattributes mechanism. |
| 111 | |
| 112 | * Our source code has used the SHA1_HEADER cpp macro after "#include" |
| 113 | in the C code to switch among the SHA-1 implementations. Instead, |
| 114 | list the exact header file names and switch among implementations |
| 115 | using "#ifdef BLK_SHA1/#include "block-sha1/sha1.h"/.../#endif"; |
| 116 | this helps some IDE tools. |
| 117 | |
| 118 | * The start-up sequence of "git" needs to figure out some configured |
| 119 | settings before it finds and set itself up in the location of the |
| 120 | repository and was quite messy due to its "chicken-and-egg" nature. |
| 121 | The code has been restructured. |
| 122 | |
| 123 | * The command line prompt (in contrib/) learned a new 'tag' style |
| 124 | that can be specified with GIT_PS1_DESCRIBE_STYLE, to describe a |
| 125 | detached HEAD with "git describe --tags". |
| 126 | |
| 127 | * The configuration file learned a new "includeIf.<condition>.path" |
| 128 | that includes the contents of the given path only when the |
| 129 | condition holds. This allows you to say "include this work-related |
| 130 | bit only in the repositories under my ~/work/ directory". |
| 131 | |
| 132 | * Recent update to "rebase -i" started showing a message that is not |
| 133 | a warning with "warning:" prefix by mistake. This has been fixed. |
| 134 | |
| 135 | * Recently we started passing the "--push-options" through the |
| 136 | external remote helper interface; now the "smart HTTP" remote |
| 137 | helper understands what to do with the passed information. |
| 138 | |
| 139 | * "git describe --dirty" dies when it cannot be determined if the |
| 140 | state in the working tree matches that of HEAD (e.g. broken |
| 141 | repository or broken submodule). The command learned a new option |
| 142 | "git describe --broken" to give "$name-broken" (where $name is the |
| 143 | description of HEAD) in such a case. |
| 144 | |
| 145 | * "git checkout" is taught the "--recurse-submodules" option. |
| 146 | |
| 147 | * Recent enhancement to "git stash push" command to support pathspec |
| 148 | to allow only a subset of working tree changes to be stashed away |
| 149 | was found to be too chatty and exposed the internal implementation |
| 150 | detail (e.g. when it uses reset to match the index to HEAD before |
| 151 | doing other things, output from reset seeped out). These, and |
| 152 | other chattyness has been fixed. |
| 153 | |
| 154 | * "git merge <message> HEAD <commit>" syntax that has been deprecated |
| 155 | since October 2007 has been removed. |
| 156 | |
| 157 | * The refs completion for large number of refs has been sped up, |
| 158 | partly by giving up disambiguating ambiguous refs and partly by |
| 159 | eliminating most of the shell processing between 'git for-each-ref' |
| 160 | and 'ls-remote' and Bash's completion facility. |
| 161 | |
| 162 | * On many keyboards, typing "@{" involves holding down SHIFT key and |
| 163 | one can easily end up with "@{Up..." when typing "@{upstream}". As |
| 164 | the upstream/push keywords do not appear anywhere else in the syntax, |
| 165 | we can safely accept them case insensitively without introducing |
| 166 | ambiguity or confusion to solve this. |
| 167 | |
| 168 | * "git tag/branch/for-each-ref" family of commands long allowed to |
| 169 | filter the refs by "--contains X" (show only the refs that are |
| 170 | descendants of X), "--merged X" (show only the refs that are |
| 171 | ancestors of X), "--no-merged X" (show only the refs that are not |
| 172 | ancestors of X). One curious omission, "--no-contains X" (show |
| 173 | only the refs that are not descendants of X) has been added to |
| 174 | them. |
| 175 | |
| 176 | * The default behaviour of "git log" in an interactive session has |
| 177 | been changed to enable "--decorate". |
| 178 | |
| 179 | * The output from "git status --short" has been extended to show |
| 180 | various kinds of dirtiness in submodules differently; instead of to |
| 181 | "M" for modified, 'm' and '?' can be shown to signal changes only |
| 182 | to the working tree of the submodule but not the commit that is |
| 183 | checked out. |
| 184 | |
| 185 | * Allow the http.postbuffer configuration variable to be set to a |
| 186 | size that can be expressed in size_t, which can be larger than |
| 187 | ulong on some platforms. |
| 188 | |
| 189 | * "git rebase" learns "--signoff" option. |
| 190 | |
| 191 | * The completion script (in contrib/) learned to complete "git push |
| 192 | --delete b<TAB>" to complete branch name to be deleted. |
| 193 | |
| 194 | * "git worktree add --lock" allows to lock a worktree immediately |
| 195 | after it's created. This helps prevent a race between "git worktree |
| 196 | add; git worktree lock" and "git worktree prune". |
| 197 | |
| 198 | * Completion for "git checkout <branch>" that auto-creates the branch |
| 199 | out of a remote tracking branch can now be disabled, as this |
| 200 | completion often gets in the way when completing to checkout an |
| 201 | existing local branch that happens to share the same prefix with |
| 202 | bunch of remote tracking branches. |
| 203 | |
| 204 | |
| 205 | Performance, Internal Implementation, Development Support etc. |
| 206 | |
| 207 | * The code to list branches in "git branch" has been consolidated |
| 208 | with the more generic ref-filter API. |
| 209 | |
| 210 | * Resource usage while enumerating refs from alternate object store |
| 211 | has been optimized to help receiving end of "push" that hosts a |
| 212 | repository with many "forks". |
| 213 | |
| 214 | * The gitattributes machinery is being taught to work better in a |
| 215 | multi-threaded environment. |
| 216 | |
| 217 | * "git rebase -i" starts using the recently updated "sequencer" code. |
| 218 | |
| 219 | * Code and design clean-up for the refs API. |
| 220 | |
| 221 | * The preload-index code has been taught not to bother with the index |
| 222 | entries that are paths that are not checked out by "sparse checkout". |
| 223 | |
| 224 | * Some warning() messages from "git clean" were updated to show the |
| 225 | errno from failed system calls. |
| 226 | |
| 227 | * The "parse_config_key()" API function has been cleaned up. |
| 228 | |
| 229 | * A test that creates a confusing branch whose name is HEAD has been |
| 230 | corrected not to do so. |
| 231 | |
| 232 | * The code that parses header fields in the commit object has been |
| 233 | updated for (micro)performance and code hygiene. |
| 234 | |
| 235 | * An helper function to make it easier to append the result from |
| 236 | real_path() to a strbuf has been added. |
| 237 | |
| 238 | * Reduce authentication round-trip over HTTP when the server supports |
| 239 | just a single authentication method. This also improves the |
| 240 | behaviour when Git is misconfigured to enable http.emptyAuth |
| 241 | against a server that does not authenticate without a username |
| 242 | (i.e. not using Kerberos etc., which makes http.emptyAuth |
| 243 | pointless). |
| 244 | |
| 245 | * Windows port wants to use OpenSSL's implementation of SHA-1 |
| 246 | routines, so let them. |
| 247 | |
| 248 | * The t/perf performance test suite was not prepared to test not so |
| 249 | old versions of Git, but now it covers versions of Git that are not |
| 250 | so ancient. |
| 251 | |
| 252 | * Add 32-bit Linux variant to the set of platforms to be tested with |
| 253 | Travis CI. |
| 254 | |
| 255 | * "git branch --list" takes the "--abbrev" and "--no-abbrev" options |
| 256 | to control the output of the object name in its "-v"(erbose) |
| 257 | output, but a recent update started ignoring them; fix it before |
| 258 | the breakage reaches to any released version. |
| 259 | |
| 260 | * Picking two versions of Git and running tests to make sure the |
| 261 | older one and the newer one interoperate happily has now become |
| 262 | possible. |
| 263 | |
| 264 | * "git tag --contains" used to (ab)use the object bits to keep track |
| 265 | of the state of object reachability without clearing them after |
| 266 | use; this has been cleaned up and made to use the newer commit-slab |
| 267 | facility. |
| 268 | |
| 269 | * The "debug" helper used in the test framework learned to run |
| 270 | a command under "gdb" interactively. |
| 271 | |
| 272 | * The "detect attempt to create collisions" variant of SHA-1 |
| 273 | implementation by Marc Stevens (CWI) and Dan Shumow (Microsoft) |
| 274 | has been integrated and made the default. |
| 275 | |
| 276 | * The test framework learned to detect unterminated here documents. |
| 277 | |
| 278 | * The name-hash used for detecting paths that are different only in |
| 279 | cases (which matter on case insensitive filesystems) has been |
| 280 | optimized to take advantage of multi-threading when it makes sense. |
| 281 | |
| 282 | * An earlier version of sha1dc/sha1.c that was merged to 'master' |
| 283 | compiled incorrectly on Windows, which has been fixed. |
| 284 | |
| 285 | * "what URL do we want to update this submodule?" and "are we |
| 286 | interested in this submodule?" are split into two distinct |
| 287 | concepts, and then the way used to express the latter got extended, |
| 288 | paving a way to make it easier to manage a project with many |
| 289 | submodules and make it possible to later extend use of multiple |
| 290 | worktrees for a project with submodules. |
| 291 | |
| 292 | * Some debugging output from "git describe" were marked for l10n, |
| 293 | but some weren't. Mark missing ones for l10n. |
| 294 | |
| 295 | * Define a new task in .travis.yml that triggers a test session on |
| 296 | Windows run elsewhere. |
| 297 | |
| 298 | * Conversion from uchar[20] to struct object_id continues. |
| 299 | |
| 300 | * The "submodule" specific field in the ref_store structure is |
| 301 | replaced with a more generic "gitdir" that can later be used also |
| 302 | when dealing with ref_store that represents the set of refs visible |
| 303 | from the other worktrees. |
| 304 | |
| 305 | * The string-list API used a custom reallocation strategy that was |
| 306 | very inefficient, instead of using the usual ALLOC_GROW() macro, |
| 307 | which has been fixed. |
| 308 | (merge 950a234cbd jh/string-list-micro-optim later to maint). |
| 309 | |
| 310 | * In a 2- and 3-way merge of trees, more than one source trees often |
| 311 | end up sharing an identical subtree; optimize by not reading the |
| 312 | same tree multiple times in such a case. |
| 313 | (merge d12a8cf0af jh/unpack-trees-micro-optim later to maint). |
| 314 | |
| 315 | * The index file has a trailing SHA-1 checksum to detect file |
| 316 | corruption, and historically we checked it every time the index |
| 317 | file is used. Omit the validation during normal use, and instead |
| 318 | verify only in "git fsck". |
| 319 | |
| 320 | * Having a git command on the upstream side of a pipe in a test |
| 321 | script will hide the exit status from the command, which may cause |
| 322 | us to fail to notice a breakage; rewrite tests in a script to avoid |
| 323 | this issue. |
| 324 | |
| 325 | * Travis CI learns to run coccicheck. |
| 326 | |
| 327 | * "git checkout" that handles a lot of paths has been optimized by |
| 328 | reducing the number of unnecessary checks of paths in the |
| 329 | has_dir_name() function. |
| 330 | |
| 331 | * The internals of the refs API around the cached refs has been |
| 332 | streamlined. |
| 333 | |
| 334 | * Output from perf tests have been updated to align their titles. |
| 335 | |
| 336 | Also contains various documentation updates and code clean-ups. |
| 337 | |
| 338 | |
| 339 | Fixes since v2.12 |
| 340 | ----------------- |
| 341 | |
| 342 | Unless otherwise noted, all the fixes since v2.12 in the maintenance |
| 343 | track are contained in this release (see the maintenance releases' |
| 344 | notes for details). |
| 345 | |
| 346 | * "git repack --depth=<n>" for a long time busted the specified depth |
| 347 | when reusing delta from existing packs. This has been corrected. |
| 348 | |
| 349 | * The code to parse the command line "git grep <patterns>... <rev> |
| 350 | [[--] <pathspec>...]" has been cleaned up, and a handful of bugs |
| 351 | have been fixed (e.g. we used to check "--" if it is a rev). |
| 352 | |
| 353 | * "git ls-remote" and "git archive --remote" are designed to work |
| 354 | without being in a directory under Git's control. However, recent |
| 355 | updates revealed that we randomly look into a directory called |
| 356 | .git/ without actually doing necessary set-up when working in a |
| 357 | repository. Stop doing so. |
| 358 | |
| 359 | * "git show-branch" expected there were only very short branch names |
| 360 | in the repository and used a fixed-length buffer to hold them |
| 361 | without checking for overflow. |
| 362 | |
| 363 | * A caller of tempfile API that uses stdio interface to write to |
| 364 | files may ignore errors while writing, which is detected when |
| 365 | tempfile is closed (with a call to ferror()). By that time, the |
| 366 | original errno that may have told us what went wrong is likely to |
| 367 | be long gone and was overwritten by an irrelevant value. |
| 368 | close_tempfile() now resets errno to EIO to make errno at least |
| 369 | predictable. |
| 370 | |
| 371 | * "git remote rm X", when a branch has remote X configured as the |
| 372 | value of its branch.*.remote, tried to remove branch.*.remote and |
| 373 | branch.*.merge and failed if either is unset. |
| 374 | |
| 375 | * A "gc.log" file left by a backgrounded "gc --auto" disables further |
| 376 | automatic gc; it has been taught to run at least once a day (by |
| 377 | default) by ignoring a stale "gc.log" file that is too old. |
| 378 | |
| 379 | * The code to parse "git -c VAR=VAL cmd" and set configuration |
| 380 | variable for the duration of cmd had two small bugs, which have |
| 381 | been fixed. |
| 382 | |
| 383 | * user.email that consists of only cruft chars should consistently |
| 384 | error out, but didn't. |
| 385 | |
| 386 | * "git upload-pack", which is a counter-part of "git fetch", did not |
| 387 | report a request for a ref that was not advertised as invalid. |
| 388 | This is generally not a problem (because "git fetch" will stop |
| 389 | before making such a request), but is the right thing to do. |
| 390 | |
| 391 | * A leak in a codepath to read from a packed object in (rare) cases |
| 392 | has been plugged. |
| 393 | |
| 394 | * When a redirected http transport gets an error during the |
| 395 | redirected request, we ignored the error we got from the server, |
| 396 | and ended up giving a not-so-useful error message. |
| 397 | |
| 398 | * The patch subcommand of "git add -i" was meant to have paths |
| 399 | selection prompt just like other subcommand, unlike "git add -p" |
| 400 | directly jumps to hunk selection. Recently, this was broken and |
| 401 | "add -i" lost the paths selection dialog, but it now has been |
| 402 | fixed. |
| 403 | |
| 404 | * Git v2.12 was shipped with an embarrassing breakage where various |
| 405 | operations that verify paths given from the user stopped dying when |
| 406 | seeing an issue, and instead later triggering segfault. |
| 407 | |
| 408 | * There is no need for Python only to give a few messages to the |
| 409 | standard error stream, but we somehow did. |
| 410 | |
| 411 | * The code to parse "git log -L..." command line was buggy when there |
| 412 | are many ranges specified with -L; overrun of the allocated buffer |
| 413 | has been fixed. |
| 414 | |
| 415 | * The command-line parsing of "git log -L" copied internal data |
| 416 | structures using incorrect size on ILP32 systems. |
| 417 | |
| 418 | * "git diff --quiet" relies on the size field in diff_filespec to be |
| 419 | correctly populated, but diff_populate_filespec() helper function |
| 420 | made an incorrect short-cut when asked only to populate the size |
| 421 | field for paths that need to go through convert_to_git() (e.g. CRLF |
| 422 | conversion). |
| 423 | |
| 424 | * A few tests were run conditionally under (rare) conditions where |
| 425 | they cannot be run (like running cvs tests under 'root' account). |
| 426 | |
| 427 | * "git branch @" created refs/heads/@ as a branch, and in general the |
| 428 | code that handled @{-1} and @{upstream} was a bit too loose in |
| 429 | disambiguating. |
| 430 | |
| 431 | * "git fetch" that requests a commit by object name, when the other |
| 432 | side does not allow such an request, failed without much |
| 433 | explanation. |
| 434 | |
| 435 | * "git filter-branch --prune-empty" drops a single-parent commit that |
| 436 | becomes a no-op, but did not drop a root commit whose tree is empty. |
| 437 | |
| 438 | * Recent versions of Git treats http alternates (used in dumb http |
| 439 | transport) just like HTTP redirects and requires the client to |
| 440 | enable following it, due to security concerns. But we forgot to |
| 441 | give a warning when we decide not to honor the alternates. |
| 442 | |
| 443 | * "git push" had a handful of codepaths that could lead to a deadlock |
| 444 | when unexpected error happened, which has been fixed. |
| 445 | |
| 446 | * "Dumb http" transport used to misparse a nonsense http-alternates |
| 447 | response, which has been fixed. |
| 448 | |
| 449 | * "git add -p <pathspec>" unnecessarily expanded the pathspec to a |
| 450 | list of individual files that matches the pathspec by running "git |
| 451 | ls-files <pathspec>", before feeding it to "git diff-index" to see |
| 452 | which paths have changes, because historically the pathspec |
| 453 | language supported by "diff-index" was weaker. These days they are |
| 454 | equivalent and there is no reason to internally expand it. This |
| 455 | helps both performance and avoids command line argument limit on |
| 456 | some platforms. |
| 457 | (merge 7288e12cce jk/add-i-use-pathspecs later to maint). |
| 458 | |
| 459 | * "git status --porcelain" is supposed to give a stable output, but a |
| 460 | few strings were left as translatable by mistake. |
| 461 | |
| 462 | * "git revert -m 0 $merge_commit" complained that reverting a merge |
| 463 | needs to say relative to which parent the reversion needs to |
| 464 | happen, as if "-m 0" weren't given. The correct diagnosis is that |
| 465 | "-m 0" does not refer to the first parent ("-m 1" does). This has |
| 466 | been fixed. |
| 467 | |
| 468 | * Code to read submodule.<name>.ignore config did not state the |
| 469 | variable name correctly when giving an error message diagnosing |
| 470 | misconfiguration. |
| 471 | |
| 472 | * Fix for NO_PTHREADS build. |
| 473 | |
| 474 | * Fix for potential segv introduced in v2.11.0 and later (also |
| 475 | v2.10.2) to "git log --pickaxe-regex -S". |
| 476 | |
| 477 | * A few unterminated here documents in tests were fixed, which in |
| 478 | turn revealed incorrect expectations the tests make. These tests |
| 479 | have been updated. |
| 480 | |
| 481 | * Fix for NO_PTHREADS option. |
| 482 | (merge 2225e1ea20 bw/grep-recurse-submodules later to maint). |
| 483 | |
| 484 | * Git now avoids blindly falling back to ".git" when the setup |
| 485 | sequence said we are _not_ in Git repository. A corner case that |
| 486 | happens to work right now may be broken by a call to die("BUG"). |
| 487 | (merge b1ef400eec jk/no-looking-at-dotgit-outside-repo-final later to maint). |
| 488 | |
| 489 | * A few commands that recently learned the "--recurse-submodule" |
| 490 | option misbehaved when started from a subdirectory of the |
| 491 | superproject. |
| 492 | (merge b2dfeb7c00 bw/recurse-submodules-relative-fix later to maint). |
| 493 | |
| 494 | * FreeBSD implementation of getcwd(3) behaved differently when an |
| 495 | intermediate directory is unreadable/unsearchable depending on the |
| 496 | length of the buffer provided, which our strbuf_getcwd() was not |
| 497 | aware of. strbuf_getcwd() has been taught to cope with it better. |
| 498 | (merge a54e938e5b rs/freebsd-getcwd-workaround later to maint). |
| 499 | |
| 500 | * A recent update to "rebase -i" stopped running hooks for the "git |
| 501 | commit" command during "reword" action, which has been fixed. |
| 502 | |
| 503 | * Removing an entry from a notes tree and then looking another note |
| 504 | entry from the resulting tree using the internal notes API |
| 505 | functions did not work as expected. No in-tree users of the API |
| 506 | has such access pattern, but it still is worth fixing. |
| 507 | |
| 508 | * "git receive-pack" could have been forced to die by attempting |
| 509 | allocate an unreasonably large amount of memory with a crafted push |
| 510 | certificate; this has been fixed. |
| 511 | (merge f2214dede9 bc/push-cert-receive-fix later to maint). |
| 512 | |
| 513 | * Update error handling for codepath that deals with corrupt loose |
| 514 | objects. |
| 515 | (merge 51054177b3 jk/loose-object-info-report-error later to maint). |
| 516 | |
| 517 | * "git diff --submodule=diff" learned to work better in a project |
| 518 | with a submodule that in turn has its own submodules. |
| 519 | (merge 17b254cda6 sb/show-diff-for-submodule-in-diff-fix later to maint). |
| 520 | |
| 521 | * Update the build dependency so that an update to /usr/bin/perl |
| 522 | etc. result in recomputation of perl.mak file. |
| 523 | (merge c59c4939c2 ab/regen-perl-mak-with-different-perl later to maint). |
| 524 | |
| 525 | * "git push --recurse-submodules --push-option=<string>" learned to |
| 526 | propagate the push option recursively down to pushes in submodules. |
| 527 | |
| 528 | * If a patch e-mail had its first paragraph after an in-body header |
| 529 | indented (even after a blank line after the in-body header line), |
| 530 | the indented line was mistook as a continuation of the in-body |
| 531 | header. This has been fixed. |
| 532 | (merge fd1062e52e lt/mailinfo-in-body-header-continuation later to maint). |
| 533 | |
| 534 | * Clean up fallouts from recent tightening of the set-up sequence, |
| 535 | where Git barfs when repository information is accessed without |
| 536 | first ensuring that it was started in a repository. |
| 537 | (merge bccb22cbb1 jk/no-looking-at-dotgit-outside-repo later to maint). |
| 538 | |
| 539 | * "git p4" used "name-rev HEAD" when it wants to learn what branch is |
| 540 | checked out; it should use "symbolic-ref HEAD". |
| 541 | (merge eff451101d ld/p4-current-branch-fix later to maint). |
| 542 | |
| 543 | * "http.proxy" set to an empty string is used to disable the usage of |
| 544 | proxy. We broke this early last year. |
| 545 | (merge ae51d91105 sr/http-proxy-configuration-fix later to maint). |
| 546 | |
| 547 | * $GIT_DIR may in some cases be normalized with all symlinks resolved |
| 548 | while "gitdir" path expansion in the pattern does not receive the |
| 549 | same treatment, leading to incorrect mismatch. This has been fixed. |
| 550 | |
| 551 | * "git submodule" script does not work well with strange pathnames. |
| 552 | Protect it from a path with slashes in them, at least. |
| 553 | |
| 554 | * "git fetch-pack" was not prepared to accept ERR packet that the |
| 555 | upload-pack can send with a human-readable error message. It |
| 556 | showed the packet contents with ERR prefix, so there was no data |
| 557 | loss, but it was redundant to say "ERR" in an error message. |
| 558 | (merge 8e2c7bef03 jt/fetch-pack-error-reporting later to maint). |
| 559 | |
| 560 | * "ls-files --recurse-submodules" did not quite work well in a |
| 561 | project with nested submodules. |
| 562 | |
| 563 | * gethostname(2) may not NUL terminate the buffer if hostname does |
| 564 | not fit; unfortunately there is no easy way to see if our buffer |
| 565 | was too small, but at least this will make sure we will not end up |
| 566 | using garbage past the end of the buffer. |
| 567 | (merge 5781a9a270 dt/xgethostname-nul-termination later to maint). |
| 568 | |
| 569 | * A recent update broke "git add -p ../foo" from a subdirectory. |
| 570 | |
| 571 | * While handy, "git_path()" is a dangerous function to use as a |
| 572 | callsite that uses it safely one day can be broken by changes |
| 573 | to other code that calls it. Reduction of its use continues. |
| 574 | (merge 16d2676c9e jk/war-on-git-path later to maint). |
| 575 | |
| 576 | * The split-index code configuration code used an unsafe git_path() |
| 577 | function without copying its result out. |
| 578 | |
| 579 | * Many stale HTTP(s) links have been updated in our documentation. |
| 580 | (merge 613416f0be jk/update-links-in-docs later to maint). |
| 581 | |
| 582 | * "git-shell" rejects a request to serve a repository whose name |
| 583 | begins with a dash, which makes it no longer possible to get it |
| 584 | confused into spawning service programs like "git-upload-pack" with |
| 585 | an option like "--help", which in turn would spawn an interactive |
| 586 | pager, instead of working with the repository user asked to access |
| 587 | (i.e. the one whose name is "--help"). |
| 588 | |
| 589 | * Other minor doc, test and build updates and code cleanups. |
| 590 | (merge df2a6e38b7 jk/pager-in-use later to maint). |
| 591 | (merge 75ec4a6cb0 ab/branch-list-doc later to maint). |
| 592 | (merge 3e5b36c637 sg/skip-prefix-in-prettify-refname later to maint). |
| 593 | (merge 2c5e2865cc jk/fast-import-cleanup later to maint). |
| 594 | (merge 4473060bc2 ab/test-readme-updates later to maint). |
| 595 | (merge 48a96972fd ab/doc-submitting later to maint). |
| 596 | (merge f5c2bc2b96 jk/make-coccicheck-detect-errors later to maint). |
| 597 | (merge c105f563d1 cc/untracked later to maint). |
| 598 | (merge 8668976b53 jc/unused-symbols later to maint). |
| 599 | (merge fba275dc93 jc/bs-t-is-not-a-tab-for-sed later to maint). |
| 600 | (merge be6ed145de mm/ls-files-s-doc later to maint). |
| 601 | (merge 60b091c679 qp/bisect-docfix later to maint). |
| 602 | (merge 47242cd103 ah/diff-files-ours-theirs-doc later to maint). |
| 603 | (merge 35ad44cbd8 sb/submodule-rm-absorb later to maint). |
| 604 | (merge 0301f1fd92 va/i18n-perl-scripts later to maint). |
| 605 | (merge 733e064d98 vn/revision-shorthand-for-side-branch-log later to maint). |
| 606 | (merge 85999743e7 tb/doc-eol-normalization later to maint). |
| 607 | (merge 0747fb49fd jk/loose-object-fsck later to maint). |
| 608 | (merge d8f4481c4f jk/quarantine-received-objects later to maint). |
| 609 | (merge 7ba1ceef95 xy/format-patch-base later to maint). |
| 610 | (merge fa1912c89a rs/misc-cppcheck-fixes later to maint). |
| 611 | (merge f17d642d3b ab/push-cas-doc-n-test later to maint). |
| 612 | (merge 61e282425a ss/gitmodules-ignore-doc later to maint). |
| 613 | (merge 8d3047cd5b ss/submodule-shallow-doc later to maint). |
| 614 | (merge 1f9e18b772 jk/prio-queue-avoid-swap-with-self later to maint). |
| 615 | (merge 627fde1025 jk/submodule-init-segv-fix later to maint). |
| 616 | (merge d395745d81 rg/doc-pull-typofix later to maint). |
| 617 | (merge 01e60a9a22 rg/doc-submittingpatches-wordfix later to maint). |
| 618 | (merge 501d3cd7b8 sr/hooks-cwd-doc later to maint). |