Merge branch 'js/no-test-cmp-for-binaries'
[gitweb.git] / Documentation / RelNotes / 2.2.0.txt
index f65de525397c192ba0ca0163de36575c0fb89f3a..22b73618fc55a475b3e4c21cc0b62170f3e0b4cf 100644 (file)
@@ -4,6 +4,12 @@ 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
@@ -12,9 +18,26 @@ UI, Workflows & Features
    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.
 
@@ -23,12 +46,25 @@ Performance, Internal Implementation, etc.
    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.
+   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.
 
@@ -36,6 +72,10 @@ 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.
@@ -46,7 +86,47 @@ Fixes since v2.1
    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).
 
-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).
+ * 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).