| 1 | Git 2.5 Release Notes |
| 2 | ===================== |
| 3 | |
| 4 | Updates since v2.4 |
| 5 | ------------------ |
| 6 | |
| 7 | UI, Workflows & Features |
| 8 | |
| 9 | * The bash completion script (in contrib/) learned a few options that |
| 10 | "git revert" takes. |
| 11 | |
| 12 | * Whitespace breakages in deleted and context lines can also be |
| 13 | painted in the output of "git diff" and friends with the new |
| 14 | --ws-error-highlight option. |
| 15 | |
| 16 | * List of commands shown by "git help" are grouped along the workflow |
| 17 | elements to help early learners. |
| 18 | |
| 19 | * "git p4" now detects the filetype (e.g. binary) correctly even when |
| 20 | the files are opened exclusively. |
| 21 | |
| 22 | * git p4 attempts to better handle branches in Perforce. |
| 23 | |
| 24 | * "git p4" learned "--changes-block-size <n>" to read the changes in |
| 25 | chunks from Perforce, instead of making one call to "p4 changes" |
| 26 | that may trigger "too many rows scanned" error from Perforce. |
| 27 | |
| 28 | * More workaround for Perforce's row number limit in "git p4". |
| 29 | |
| 30 | * Unlike "$EDITOR" and "$GIT_EDITOR" that can hold the path to the |
| 31 | command and initial options (e.g. "/path/to/emacs -nw"), 'git p4' |
| 32 | did not let the shell interpolate the contents of the environment |
| 33 | variable that name the editor "$P4EDITOR" (and "$EDITOR", too). |
| 34 | This release makes it in line with the rest of Git, as well as with |
| 35 | Perforce. |
| 36 | |
| 37 | * A new short-hand <branch>@{push} denotes the remote-tracking branch |
| 38 | that tracks the branch at the remote the <branch> would be pushed |
| 39 | to. |
| 40 | |
| 41 | * "git show-branch --topics HEAD" (with no other arguments) did not |
| 42 | do anything interesting. Instead, contrast the given revision |
| 43 | against all the local branches by default. |
| 44 | |
| 45 | * A replacement for contrib/workdir/git-new-workdir that does not |
| 46 | rely on symbolic links and make sharing of objects and refs safer |
| 47 | by making the borrowee and borrowers aware of each other. |
| 48 | |
| 49 | Consider this as still an experimental feature; its UI is still |
| 50 | likely to change. |
| 51 | |
| 52 | * Tweak the sample "store" backend of the credential helper to honor |
| 53 | XDG configuration file locations when specified. |
| 54 | |
| 55 | * A heuristic we use to catch mistyped paths on the command line |
| 56 | "git <cmd> <revs> <pathspec>" is to make sure that all the non-rev |
| 57 | parameters in the later part of the command line are names of the |
| 58 | files in the working tree, but that means "git grep $str -- \*.c" |
| 59 | must always be disambiguated with "--", because nobody sane will |
| 60 | create a file whose name literally is asterisk-dot-see. Loosen the |
| 61 | heuristic to declare that with a wildcard string the user likely |
| 62 | meant to give us a pathspec. |
| 63 | |
| 64 | * "git merge FETCH_HEAD" learned that the previous "git fetch" could |
| 65 | be to create an Octopus merge, i.e. recording multiple branches |
| 66 | that are not marked as "not-for-merge"; this allows us to lose an |
| 67 | old style invocation "git merge <msg> HEAD $commits..." in the |
| 68 | implementation of "git pull" script; the old style syntax can now |
| 69 | be deprecated (but not removed yet). |
| 70 | |
| 71 | * Filter scripts were run with SIGPIPE disabled on the Git side, |
| 72 | expecting that they may not read what Git feeds them to filter. |
| 73 | We however treated a filter that does not read its input fully |
| 74 | before exiting as an error. We no longer do and ignore EPIPE |
| 75 | when writing to feed the filter scripts. |
| 76 | |
| 77 | This changes semantics, but arguably in a good way. If a filter |
| 78 | can produce its output without fully consuming its input using |
| 79 | whatever magic, we now let it do so, instead of diagnosing it |
| 80 | as a programming error. |
| 81 | |
| 82 | * Instead of dying immediately upon failing to obtain a lock, the |
| 83 | locking (of refs etc) retries after a short while with backoff. |
| 84 | |
| 85 | * Introduce http.<url>.SSLCipherList configuration variable to tweak |
| 86 | the list of cipher suite to be used with libcURL when talking with |
| 87 | https:// sites. |
| 88 | |
| 89 | * "git subtree" script (in contrib/) used "echo -n" to produce |
| 90 | progress messages in a non-portable way. |
| 91 | |
| 92 | * "git subtree" script (in contrib/) does not have --squash option |
| 93 | when pushing, but the documentation and help text pretended as if |
| 94 | it did. |
| 95 | |
| 96 | * The Git subcommand completion (in contrib/) no longer lists credential |
| 97 | helpers among candidates; they are not something the end user would |
| 98 | invoke interactively. |
| 99 | |
| 100 | * The index file can be taught with "update-index --untracked-cache" |
| 101 | to optionally remember already seen untracked files, in order to |
| 102 | speed up "git status" in a working tree with tons of cruft. |
| 103 | |
| 104 | * "git mergetool" learned to drive WinMerge as a backend. |
| 105 | |
| 106 | * "git upload-pack" that serves "git fetch" can be told to serve |
| 107 | commits that are not at the tip of any ref, as long as they are |
| 108 | reachable from a ref, with uploadpack.allowReachableSHA1InWant |
| 109 | configuration variable. |
| 110 | |
| 111 | * "git cat-file --batch(-check)" learned the "--follow-symlinks" |
| 112 | option that follows an in-tree symbolic link when asked about an |
| 113 | object via extended SHA-1 syntax, e.g. HEAD:RelNotes that points at |
| 114 | Documentation/RelNotes/2.5.0.txt. With the new option, the command |
| 115 | behaves as if HEAD:Documentation/RelNotes/2.5.0.txt was given as |
| 116 | input instead. |
| 117 | |
| 118 | Consider this as still an experimental and incomplete feature: |
| 119 | |
| 120 | - We may want to do the same for in-index objects, e.g. |
| 121 | asking for :RelNotes with this option should give |
| 122 | :Documentation/RelNotes/2.5.0.txt, too |
| 123 | |
| 124 | - "git cat-file --follow-symlinks blob HEAD:RelNotes" |
| 125 | may also be something we want to allow in the future. |
| 126 | |
| 127 | * "git send-email" learned the alias file format used by the sendmail |
| 128 | program (in a simplified form; we obviously do not feed pipes). |
| 129 | |
| 130 | * Traditionally, external low-level 3-way merge drivers are expected |
| 131 | to produce their results based solely on the contents of the three |
| 132 | variants given in temporary files named by %O, %A and %B on their |
| 133 | command line. Additionally allow them to look at the final path |
| 134 | (given by %P). |
| 135 | |
| 136 | * "git blame" learned blame.showEmail configuration variable. |
| 137 | |
| 138 | * "git apply" cannot diagnose a patch corruption when the breakage is |
| 139 | to mark the length of the hunk shorter than it really is on the |
| 140 | hunk header line "@@ -l,k +m,n @@"; one special case it could is |
| 141 | when the hunk becomes no-op (e.g. k == n == 2 for two-line context |
| 142 | patch output), and it learned to do so in this special case. |
| 143 | |
| 144 | * Add the "--allow-unknown-type" option to "cat-file" to allow |
| 145 | inspecting loose objects of an experimental or a broken type. |
| 146 | |
| 147 | * Many long-running operations show progress eye-candy, even when |
| 148 | they are later backgrounded. Hide the eye-candy when the process |
| 149 | is sent to the background instead. |
| 150 | (merge a4fb76c lm/squelch-bg-progress later to maint). |
| 151 | |
| 152 | |
| 153 | Performance, Internal Implementation, Development Support etc. |
| 154 | |
| 155 | * "unsigned char [20]" used throughout the code to represent object |
| 156 | names are being converted into a semi-opaque "struct object_id". |
| 157 | This effort is expected to interfere with other topics in flight, |
| 158 | but hopefully will give us one extra level of abstraction in the |
| 159 | end, when completed. |
| 160 | |
| 161 | * for_each_ref() callback functions were taught to name the objects |
| 162 | not with "unsigned char sha1[20]" but with "struct object_id". |
| 163 | |
| 164 | * Catch a programmer mistake to feed a pointer not an array to |
| 165 | ARRAY_SIZE() macro, by using a couple of GCC extensions. |
| 166 | |
| 167 | * Some error messages in "git config" were emitted without calling |
| 168 | the usual error() facility. |
| 169 | |
| 170 | * When "add--interactive" splits a hunk into two overlapping hunks |
| 171 | and then let the user choose only one, it sometimes feeds an |
| 172 | incorrect patch text to "git apply". Add tests to demonstrate |
| 173 | this. |
| 174 | |
| 175 | I have a slight suspicion that this may be |
| 176 | cf. <7vtzf77wjp.fsf@gitster.siamese.dyndns.org> coming back |
| 177 | and biting us (I seem to have said "let's run with this and see |
| 178 | what happens" back then). |
| 179 | |
| 180 | * More line-ending tests. |
| 181 | |
| 182 | * An earlier rewrite to use strbuf_getwholeline() instead of fgets(3) |
| 183 | to read packed-refs file revealed that the former is unacceptably |
| 184 | inefficient. It has been optimized by using getdelim(3) when |
| 185 | available. |
| 186 | |
| 187 | * The refs API uses ref_lock struct which had its own "int fd", even |
| 188 | though the same file descriptor was in the lock struct it contains. |
| 189 | Clean-up the code to lose this redundant field. |
| 190 | |
| 191 | * There was a dead code that used to handle "git pull --tags" and |
| 192 | show special-cased error message, which was made irrelevant when |
| 193 | the semantics of the option changed back in Git 1.9 days. |
| 194 | (merge 19d122b pt/pull-tags-error-diag later to maint). |
| 195 | |
| 196 | * Help us to find broken test script that splits the body part of the |
| 197 | test by mistaken use of wrong kind of quotes. |
| 198 | (merge d93d5d5 jc/test-prereq-validate later to maint). |
| 199 | |
| 200 | * Developer support to automatically detect broken &&-chain in the |
| 201 | test scripts is now turned on by default. |
| 202 | (merge 92b269f jk/test-chain-lint later to maint). |
| 203 | |
| 204 | * Error reporting mechanism used in "refs" API has been made more |
| 205 | consistent. |
| 206 | |
| 207 | * "git pull" has more test coverage now. |
| 208 | |
| 209 | * "git pull" has become more aware of the options meant for |
| 210 | underlying "git fetch" and then learned to use parse-options |
| 211 | parser. |
| 212 | |
| 213 | * Clarify in the Makefile a guideline to decide use of USE_NSEC. |
| 214 | |
| 215 | Also contains various documentation updates and code clean-ups. |
| 216 | |
| 217 | |
| 218 | Fixes since v2.4 |
| 219 | ---------------- |
| 220 | |
| 221 | Unless otherwise noted, all the fixes since v2.4 in the maintenance |
| 222 | track are contained in this release (see the maintenance releases' |
| 223 | notes for details). |
| 224 | |
| 225 | * Git 2.4 broke setting verbosity and progress levels on "git clone" |
| 226 | with native transports. |
| 227 | (merge 822f0c4 mh/clone-verbosity-fix later to maint). |
| 228 | |
| 229 | * "git add -e" did not allow the user to abort the operation by |
| 230 | killing the editor. |
| 231 | (merge cb64800 jk/add-e-kill-editor later to maint). |
| 232 | |
| 233 | * Memory usage of "git index-pack" has been trimmed by tens of |
| 234 | per-cent. |
| 235 | (merge f0e7f11 nd/slim-index-pack-memory-usage later to maint). |
| 236 | |
| 237 | * "git rev-list --objects $old --not --all" to see if everything that |
| 238 | is reachable from $old is already connected to the existing refs |
| 239 | was very inefficient. |
| 240 | (merge b6e8a3b jk/still-interesting later to maint). |
| 241 | |
| 242 | * "hash-object --literally" introduced in v2.2 was not prepared to |
| 243 | take a really long object type name. |
| 244 | (merge 1427a7f jc/hash-object later to maint). |
| 245 | |
| 246 | * "git rebase --quiet" was not quite quiet when there is nothing to |
| 247 | do. |
| 248 | (merge 22946a9 jk/rebase-quiet-noop later to maint). |
| 249 | |
| 250 | * The completion for "log --decorate=" parameter value was incorrect. |
| 251 | (merge af16bda sg/complete-decorate-full-not-long later to maint). |
| 252 | |
| 253 | * "filter-branch" corrupted commit log message that ends with an |
| 254 | incomplete line on platforms with some "sed" implementations that |
| 255 | munge such a line. Work it around by avoiding to use "sed". |
| 256 | (merge df06201 jk/filter-branch-use-of-sed-on-incomplete-line later to maint). |
| 257 | |
| 258 | * "git daemon" fails to build from the source under NO_IPV6 |
| 259 | configuration (regression in 2.4). |
| 260 | (merge d358f77 jc/daemon-no-ipv6-for-2.4.1 later to maint). |
| 261 | |
| 262 | * Some time ago, "git blame" (incorrectly) lost the convert_to_git() |
| 263 | call when synthesizing a fake "tip" commit that represents the |
| 264 | state in the working tree, which broke folks who record the history |
| 265 | with LF line ending to make their project portable across platforms |
| 266 | while terminating lines in their working tree files with CRLF for |
| 267 | their platform. |
| 268 | (merge 4bf256d tb/blame-resurrect-convert-to-git later to maint). |
| 269 | |
| 270 | * We avoid setting core.worktree when the repository location is the |
| 271 | ".git" directory directly at the top level of the working tree, but |
| 272 | the code misdetected the case in which the working tree is at the |
| 273 | root level of the filesystem (which arguably is a silly thing to |
| 274 | do, but still valid). |
| 275 | (merge 84ccad8 jk/init-core-worktree-at-root later to maint). |
| 276 | |
| 277 | * "git commit --date=now" or anything that relies on approxidate lost |
| 278 | the daylight-saving-time offset. |
| 279 | (merge f6e6362 jc/epochtime-wo-tz later to maint). |
| 280 | |
| 281 | * Access to objects in repositories that borrow from another one on a |
| 282 | slow NFS server unnecessarily got more expensive due to recent code |
| 283 | becoming more cautious in a naive way not to lose objects to pruning. |
| 284 | (merge ee1c6c3 jk/prune-mtime later to maint). |
| 285 | |
| 286 | * The codepaths that read .gitignore and .gitattributes files have been |
| 287 | taught that these files encoded in UTF-8 may have UTF-8 BOM marker at |
| 288 | the beginning; this makes it in line with what we do for configuration |
| 289 | files already. |
| 290 | (merge 27547e5 cn/bom-in-gitignore later to maint). |
| 291 | |
| 292 | * a few helper scripts in the test suite did not report errors |
| 293 | correctly. |
| 294 | (merge de248e9 ep/fix-test-lib-functions-report later to maint). |
| 295 | |
| 296 | * The default $HOME/.gitconfig file created upon "git config --global" |
| 297 | that edits it had incorrectly spelled user.name and user.email |
| 298 | entries in it. |
| 299 | (merge 7e11052 oh/fix-config-default-user-name-section later to maint). |
| 300 | |
| 301 | * "git cat-file bl $blob" failed to barf even though there is no |
| 302 | object type that is "bl". |
| 303 | (merge b7994af jk/type-from-string-gently later to maint). |
| 304 | |
| 305 | * The usual "git diff" when seeing a file turning into a directory |
| 306 | showed a patchset to remove the file and create all files in the |
| 307 | directory, but "git diff --no-index" simply refused to work. Also, |
| 308 | when asked to compare a file and a directory, imitate POSIX "diff" |
| 309 | and compare the file with the file with the same name in the |
| 310 | directory, instead of refusing to run. |
| 311 | (merge 0615173 jc/diff-no-index-d-f later to maint). |
| 312 | |
| 313 | * "git rebase -i" moved the "current" command from "todo" to "done" a |
| 314 | bit too prematurely, losing a step when a "pick" did not even start. |
| 315 | (merge 8cbc57c ph/rebase-i-redo later to maint). |
| 316 | |
| 317 | * The connection initiation code for "ssh" transport tried to absorb |
| 318 | differences between the stock "ssh" and Putty-supplied "plink" and |
| 319 | its derivatives, but the logic to tell that we are using "plink" |
| 320 | variants were too loose and falsely triggered when "plink" appeared |
| 321 | anywhere in the path (e.g. "/home/me/bin/uplink/ssh"). |
| 322 | (merge baaf233 bc/connect-plink later to maint). |
| 323 | |
| 324 | * We have prepended $GIT_EXEC_PATH and the path "git" is installed in |
| 325 | (typically "/usr/bin") to $PATH when invoking subprograms and hooks |
| 326 | for almost eternity, but the original use case the latter tried to |
| 327 | support was semi-bogus (i.e. install git to /opt/foo/git and run it |
| 328 | without having /opt/foo on $PATH), and more importantly it has |
| 329 | become less and less relevant as Git grew more mainstream (i.e. the |
| 330 | users would _want_ to have it on their $PATH). Stop prepending the |
| 331 | path in which "git" is installed to users' $PATH, as that would |
| 332 | interfere the command search order people depend on (e.g. they may |
| 333 | not like versions of programs that are unrelated to Git in /usr/bin |
| 334 | and want to override them by having different ones in /usr/local/bin |
| 335 | and have the latter directory earlier in their $PATH). |
| 336 | (merge a0b4507 jk/git-no-more-argv0-path-munging later to maint). |
| 337 | |
| 338 | * core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed |
| 339 | to be overridden by repository-specific .git/info/exclude file, but |
| 340 | the order was swapped from the beginning. This belatedly fixes it. |
| 341 | (merge 099d2d8 jc/gitignore-precedence later to maint). |
| 342 | |
| 343 | * There was a commented-out (instead of being marked to expect |
| 344 | failure) test that documented a breakage that was fixed since the |
| 345 | test was written; turn it into a proper test. |
| 346 | (merge 66d2e04 sb/t1020-cleanup later to maint). |
| 347 | |
| 348 | * The "log --decorate" enhancement in Git 2.4 that shows the commit |
| 349 | at the tip of the current branch e.g. "HEAD -> master", did not |
| 350 | work with --decorate=full. |
| 351 | (merge 429ad20 mg/log-decorate-HEAD later to maint). |
| 352 | |
| 353 | * The ref API did not handle cases where 'refs/heads/xyzzy/frotz' is |
| 354 | removed at the same time as 'refs/heads/xyzzy' is added (or vice |
| 355 | versa) very well. |
| 356 | (merge c628edf mh/ref-directory-file later to maint). |
| 357 | |
| 358 | * Multi-ref transaction support we merged a few releases ago |
| 359 | unnecessarily kept many file descriptors open, risking to fail with |
| 360 | resource exhaustion. This is for 2.4.x track. |
| 361 | (merge 185ce3a mh/write-refs-sooner-2.4 later to maint). |
| 362 | |
| 363 | * "git bundle verify" did not diagnose extra parameters on the |
| 364 | command line. |
| 365 | (merge 7886cfa ps/bundle-verify-arg later to maint). |
| 366 | |
| 367 | * Various documentation mark-up fixes to make the output more |
| 368 | consistent in general and also make AsciiDoctor (an alternative |
| 369 | formatter) happier. |
| 370 | (merge d0258b9 jk/asciidoc-markup-fix later to maint). |
| 371 | (merge ad3967a jk/stripspace-asciidoctor-fix later to maint). |
| 372 | (merge 975e382 ja/tutorial-asciidoctor-fix later to maint). |
| 373 | |
| 374 | * The code to read pack-bitmap wanted to allocate a few hundred |
| 375 | pointers to a structure, but by mistake allocated and leaked memory |
| 376 | enough to hold that many actual structures. Correct the allocation |
| 377 | size and also have it on stack, as it is small enough. |
| 378 | (merge 599dc76 rs/plug-leak-in-pack-bitmaps later to maint). |
| 379 | |
| 380 | * The pull.ff configuration was supposed to override the merge.ff |
| 381 | configuration, but it didn't. |
| 382 | (merge db9bb28 pt/pull-ff-vs-merge-ff later to maint). |
| 383 | |
| 384 | * "git pull --log" and "git pull --no-log" worked as expected, but |
| 385 | "git pull --log=20" did not. |
| 386 | (merge 5061a44 pt/pull-log-n later to maint). |
| 387 | |
| 388 | * "git rerere forget" in a repository without rerere enabled gave a |
| 389 | cryptic error message; it should be a silent no-op instead. |
| 390 | (merge 0544574 jk/rerere-forget-check-enabled later to maint). |
| 391 | |
| 392 | * "git rebase -i" fired post-rewrite hook when it shouldn't (namely, |
| 393 | when it was told to stop sequencing with 'exec' insn). |
| 394 | (merge 141ff8f mm/rebase-i-post-rewrite-exec later to maint). |
| 395 | |
| 396 | * Clarify that "log --raw" and "log --format=raw" are unrelated |
| 397 | concepts. |
| 398 | (merge 92de921 mm/log-format-raw-doc later to maint). |
| 399 | |
| 400 | * Make "git stash something --help" error out, so that users can |
| 401 | safely say "git stash drop --help". |
| 402 | (merge 5ba2831 jk/stash-options later to maint). |
| 403 | |
| 404 | * The clean/smudge interface did not work well when filtering an |
| 405 | empty contents (failed and then passed the empty input through). |
| 406 | It can be argued that a filter that produces anything but empty for |
| 407 | an empty input is nonsense, but if the user wants to do strange |
| 408 | things, then why not? |
| 409 | (merge f6a1e1e jh/filter-empty-contents later to maint). |
| 410 | |
| 411 | * Communication between the HTTP server and http_backend process can |
| 412 | lead to a dead-lock when relaying a large ref negotiation request. |
| 413 | Diagnose the situation better, and mitigate it by reading such a |
| 414 | request first into core (to a reasonable limit). |
| 415 | (merge 636614f jk/http-backend-deadlock later to maint). |
| 416 | |
| 417 | * "git clean pathspec..." tried to lstat(2) and complain even for |
| 418 | paths outside the given pathspec. |
| 419 | (merge 838d6a9 dt/clean-pathspec-filter-then-lstat later to maint). |
| 420 | |
| 421 | * Recent "git prune" traverses young unreachable objects to safekeep |
| 422 | old objects in the reachability chain from them, which sometimes |
| 423 | caused error messages that are unnecessarily alarming. |
| 424 | (merge ce4e7b2 jk/squelch-missing-link-warning-for-unreachable later to maint). |
| 425 | |
| 426 | * The configuration reader/writer uses mmap(2) interface to access |
| 427 | the files; when we find a directory, it barfed with "Out of memory?". |
| 428 | (merge 9ca0aaf jk/diagnose-config-mmap-failure later to maint). |
| 429 | |
| 430 | * "color.diff.plain" was a misnomer; give it 'color.diff.context' as |
| 431 | a more logical synonym. |
| 432 | (merge 8dbf3eb jk/color-diff-plain-is-context later to maint). |
| 433 | |
| 434 | * The setup code used to die when core.bare and core.worktree are set |
| 435 | inconsistently, even for commands that do not need working tree. |
| 436 | (merge fada767 jk/die-on-bogus-worktree-late later to maint). |
| 437 | |
| 438 | * Recent Mac OS X updates breaks the logic to detect that the machine |
| 439 | is on the AC power in the sample pre-auto-gc script. |
| 440 | (merge c54c7b3 pa/auto-gc-mac-osx later to maint). |
| 441 | |
| 442 | * "git commit --cleanup=scissors" was not careful enough to protect |
| 443 | against getting fooled by a line that looked like scissors. |
| 444 | (merge fbfa097 sg/commit-cleanup-scissors later to maint). |
| 445 | |
| 446 | * "Have we lost a race with competing repack?" check was too |
| 447 | expensive, especially while receiving a huge object transfer |
| 448 | that runs index-pack (e.g. "clone" or "fetch"). |
| 449 | (merge 0eeb077 jk/index-pack-reduce-recheck later to maint). |
| 450 | |
| 451 | * The tcsh completion writes a bash scriptlet but that would have |
| 452 | failed for users with noclobber set. |
| 453 | (merge 0b1f688 af/tcsh-completion-noclobber later to maint). |
| 454 | |
| 455 | * "git for-each-ref" reported "missing object" for 0{40} when it |
| 456 | encounters a broken ref. The lack of object whose name is 0{40} is |
| 457 | not the problem; the ref being broken is. |
| 458 | (merge 501cf47 mh/reporting-broken-refs-from-for-each-ref later to maint). |
| 459 | |
| 460 | * Various fixes around "git am" that applies a patch to a history |
| 461 | that is not there yet. |
| 462 | (merge 6ea3b67 pt/am-abort-fix later to maint). |
| 463 | |
| 464 | * "git fsck" used to ignore missing or invalid objects recorded in reflog. |
| 465 | (merge 19bf6c9 mh/fsck-reflog-entries later to maint). |
| 466 | |
| 467 | * "git format-patch --ignore-if-upstream A..B" did not like to be fed |
| 468 | tags as boundary commits. |
| 469 | (merge 9b7a61d jc/do-not-feed-tags-to-clear-commit-marks later to maint). |
| 470 | |
| 471 | * "git fetch --depth=<depth>" and "git clone --depth=<depth>" issued |
| 472 | a shallow transfer request even to an upload-pack that does not |
| 473 | support the capability. |
| 474 | (merge eb86a50 me/fetch-into-shallow-safety later to maint). |
| 475 | |
| 476 | * "git rebase" did not exit with failure when format-patch it invoked |
| 477 | failed for whatever reason. |
| 478 | (merge 60d708b cb/rebase-am-exit-code later to maint). |
| 479 | |
| 480 | * Fix a small bug in our use of umask() return value. |
| 481 | (merge 3096b2e jk/fix-refresh-utime later to maint). |
| 482 | |
| 483 | * An ancient test framework enhancement to allow color was not |
| 484 | entirely correct; this makes it work even when tput needs to read |
| 485 | from the ~/.terminfo under the user's real HOME directory. |
| 486 | (merge d5c1b7c rh/test-color-avoid-terminfo-in-original-home later to maint). |
| 487 | |
| 488 | * A minor bugfix when pack bitmap is used with "rev-list --count". |
| 489 | (merge c8a70d3 jk/rev-list-no-bitmap-while-pruning later to maint). |
| 490 | |
| 491 | * "git config" failed to update the configuration file when the |
| 492 | underlying filesystem is incapable of renaming a file that is still |
| 493 | open. |
| 494 | (merge 7a64592 kb/config-unmap-before-renaming later to maint). |
| 495 | |
| 496 | * Avoid possible ssize_t to int truncation. |
| 497 | (merge 6c8afe4 mh/strbuf-read-file-returns-ssize-t later to maint). |
| 498 | |
| 499 | * When you say "!<ENTER>" while running say "git log", you'd confuse |
| 500 | yourself in the resulting shell, that may look as if you took |
| 501 | control back to the original shell you spawned "git log" from but |
| 502 | that isn't what is happening. To that new shell, we leaked |
| 503 | GIT_PAGER_IN_USE environment variable that was meant as a local |
| 504 | communication between the original "Git" and subprocesses that was |
| 505 | spawned by it after we launched the pager, which caused many |
| 506 | "interesting" things to happen, e.g. "git diff | cat" still paints |
| 507 | its output in color by default. |
| 508 | |
| 509 | Stop leaking that environment variable to the pager's half of the |
| 510 | fork; we only need it on "Git" side when we spawn the pager. |
| 511 | (merge 124b519 jc/unexport-git-pager-in-use-in-pager later to maint). |
| 512 | |
| 513 | * Abandoning an already applied change in "git rebase -i" with |
| 514 | "--continue" left CHERRY_PICK_HEAD and confused later steps. |
| 515 | (merge 0e0aff4 js/rebase-i-clean-up-upon-continue-to-skip later to maint). |
| 516 | |
| 517 | * We used to ask libCURL to use the most secure authentication method |
| 518 | available when talking to an HTTP proxy only when we were told to |
| 519 | talk to one via configuration variables. We now ask libCURL to |
| 520 | always use the most secure authentication method, because the user |
| 521 | can tell libCURL to use an HTTP proxy via an environment variable |
| 522 | without using configuration variables. |
| 523 | (merge 5841520 et/http-proxyauth later to maint). |
| 524 | |
| 525 | * A fix to a minor regression to "git fsck" in v2.2 era that started |
| 526 | complaining about a body-less tag object when it lacks a separator |
| 527 | empty line after its header to separate it with a non-existent body. |
| 528 | (merge 84d18c0 jc/fsck-retire-require-eoh later to maint). |
| 529 | |
| 530 | * Code cleanups and documentation updates. |
| 531 | (merge 0269f96 mm/usage-log-l-can-take-regex later to maint). |
| 532 | (merge 64f2589 nd/t1509-chroot-test later to maint). |
| 533 | (merge d201a1e sb/test-bitmap-free-at-end later to maint). |
| 534 | (merge 05bfc7d sb/line-log-plug-pairdiff-leak later to maint). |
| 535 | (merge 846e5df pt/xdg-config-path later to maint). |
| 536 | (merge 1154aa4 jc/plug-fmt-merge-msg-leak later to maint). |
| 537 | (merge 319b678 jk/sha1-file-reduce-useless-warnings later to maint). |
| 538 | (merge 9a35c14 fg/document-commit-message-stripping later to maint). |
| 539 | (merge bbf431c ps/doc-packfile-vs-pack-file later to maint). |
| 540 | (merge 309a9e3 jk/skip-http-tests-under-no-curl later to maint). |
| 541 | (merge ccd593c dl/branch-error-message later to maint). |
| 542 | (merge 22570b6 rs/janitorial later to maint). |
| 543 | (merge 5c2a581 mc/commit-doc-grammofix later to maint). |
| 544 | (merge ce41720 ah/usage-strings later to maint). |
| 545 | (merge e6a268c sb/glossary-submodule later to maint). |
| 546 | (merge ec48a76 sb/submodule-doc-intro later to maint). |
| 547 | (merge 14f8b9b jk/clone-dissociate later to maint). |
| 548 | (merge 055c7e9 sb/pack-protocol-mention-smart-http later to maint). |
| 549 | (merge 7c37a5d jk/make-fix-dependencies later to maint). |
| 550 | (merge fc0aa39 sg/merge-summary-config later to maint). |
| 551 | (merge 329af6c pt/t0302-needs-sanity later to maint). |
| 552 | (merge d614f07 fk/doc-format-patch-vn later to maint). |
| 553 | (merge 72dbb36 sg/completion-commit-cleanup later to maint). |
| 554 | (merge e654eb2 es/utf8-stupid-compiler-workaround later to maint). |
| 555 | (merge 34b935c es/osx-header-pollutes-mask-macro later to maint). |
| 556 | (merge ab7fade jc/prompt-document-ps1-state-separator later to maint). |
| 557 | (merge 25f600e mm/describe-doc later to maint). |
| 558 | (merge 83fe167 mm/branch-doc-updates later to maint). |
| 559 | (merge 75d2e5a ls/hint-rev-list-count later to maint). |
| 560 | (merge edc8f71 cb/subtree-tests-update later to maint). |
| 561 | (merge 5330e6e sb/p5310-and-chain later to maint). |
| 562 | (merge c4ac525 tb/checkout-doc later to maint). |
| 563 | (merge e479c5f jk/pretty-encoding-doc later to maint). |
| 564 | (merge 7e837c6 ss/clone-guess-dir-name-simplify later to maint). |