| Git v2.2 Release Notes |
| ====================== |
| |
| Updates since v2.1 |
| ------------------ |
| |
| Ports |
| |
| * Building on older MacOS X systems automatically sets |
| the necessary NO_APPLE_COMMON_CRYPTO build-time option. |
| |
| |
| UI, Workflows & Features |
| |
| * "git config --edit --global" starts from a skeletal per-user |
| configuration file contents, instead of a total blank, when the |
| user does not already have any. This immediately reduces the |
| need for a later "Have you forgotten setting core.user?" and we |
| can add more to the template as we gain more experience. |
| |
| * "git stash list -p" used to be almost always a no-op because each |
| stash entry is represented as a merge commit. It learned to show |
| the difference between the base commit version and the working tree |
| version, which is in line with what "git show" gives. |
| |
| Performance, Internal Implementation, etc. |
| |
| * The API to manipulate the "refs" is currently undergoing a revamp |
| to make it more transactional, with the eventual goal to allow |
| all-or-none atomic updates and migrating the storage to something |
| other than the traditional filesystem based one (e.g. databases). |
| |
| * We no longer attempt to keep track of individual dependencies to |
| the header files in the build procedure, relying on automated |
| dependency generation support from modern compilers. |
| |
| * In tests, we have been using NOT_{MINGW,CYGWIN} test prerequisites |
| long before negated prerequisites e.g. !MINGW were invented. |
| The former has been converted to the latter to avoid confusion. |
| |
| * Looking up remotes configuration in a repository with very many |
| remotes defined has been optimized. |
| |
| * There are cases where you lock and open to write a file, close it |
| to show the updated contents to external processes, and then have |
| to update the file again while still holding the lock, but the |
| lockfile API lacked support for such an access pattern. |
| |
| * The API to allocate the structure to keep track of commit |
| decoration has been updated to make it less cumbersome to use. |
| |
| * An in-core caching layer to let us avoid reading the same |
| configuration files number of times has been added. A few commands |
| have been converted to use this subsystem. |
| |
| * Various code paths have been cleaned up and simplified by using |
| "strbuf", "starts_with()", and "skip_prefix()" APIs more. |
| |
| * A few codepaths that died when large blobs that would not fit in |
| core are involved in their operation have been taught to punt |
| instead, by e.g. marking too large a blob as not to be diffed. |
| |
| * A few more code paths in "commit" and "checkout" have been taught |
| to repopulate the cache-tree in the index, to help speed up later |
| "write-tree" (used in "commit") and "diff-index --cached" (used in |
| "status"). |
| |
| |
| Also contains various documentation updates and code clean-ups. |
| |
| |
| Fixes since v2.1 |
| ---------------- |
| |
| Unless otherwise noted, all the fixes since v2.1 in the maintenance |
| track are contained in this release (see the maintenance releases' |
| notes for details). |
| |
| * "git log --pretty/format=" with an empty format string did not |
| mean the more obvious "No output whatsoever" but "Use default |
| format", which was counterintuitive. |
| (merge b9c7d6e jk/pretty-empty-format later to maint). |
| |
| * Implementations of "tar" that do not understand an extended pax |
| header would extract the contents of it in a regular file; make |
| sure the permission bits of this file follows the same tar.umask |
| configuration setting. |
| |
| * "git -c section.var command" and "git -c section.var= command" |
| should pass the configuration differently (the former should be a |
| boolean true, the latter should be an empty string). |
| (merge a789ca7 jk/command-line-config-empty-string later to maint). |
| |
| * Applying a patch not generated by Git in a subdirectory used to |
| check the whitespace breakage using the attributes for incorrect |
| paths. Also whitespace checks were performed even for paths |
| excluded via "git apply --exclude=<path>" mechanism. |
| (merge 477a08a jc/apply-ws-prefix later to maint). |
| |
| * "git bundle create" with date-range specification were meant to |
| exclude tags outside the range, but it didn't. |
| (merge 2c8544a lf/bundle-exclusion later to maint). |
| |
| * "git add x" where x that used to be a directory has become a |
| symbolic link to a directory misbehaved. |
| (merge ccad42d rs/refresh-beyond-symlink later to maint). |
| |
| * The prompt script checked $GIT_DIR/ref/stash file to see if there |
| is a stash, which was a no-no. |
| (merge 0fa7f01 jk/prompt-stash-could-be-packed later to maint). |
| |
| * Pack-protocol documentation had a minor typo. |
| (merge 5d146f7 sp/pack-protocol-doc-on-shallow later to maint). |
| |
| * "git checkout -m" did not switch to another branch while carrying |
| the local changes forward when a path was deleted from the index. |
| (merge 6a143aa jn/unpack-trees-checkout-m-carry-deletion later to maint). |
| |
| * With sufficiently long refnames, "git fast-import" could have |
| overflown an on-stack buffer. |
| (merge c252785 jk/fast-import-fixes later to maint). |
| |
| * After "pack-refs --prune" packed refs at the top-level, it failed |
| to prune them. |
| (merge afd11d3 jk/prune-top-level-refs-after-packing later to maint). |
| |
| * Progress output from "git gc --auto" was visible in "git fetch -q". |
| (merge 6fceed3 nd/fetch-pass-quiet-to-gc-child-process later to maint). |
| |
| * We used to pass -1000 to poll(2), expecting it to also mean "no |
| timeout", which should be spelled as -1. |
| (merge 6c71f8b et/spell-poll-infinite-with-minus-one-only later to maint). |