Git 2.1.0-rc0
[gitweb.git] / Documentation / RelNotes / 2.1.0.txt
index 17360e5d535dd7c472d07a7dd13b729a22159f17..be598ad7a2dee782004a854936e5e7aa2e4bac73 100644 (file)
@@ -37,15 +37,24 @@ UI, Workflows & Features
    shorter than a page).
 
  * The logic and data used to compute the display width needed for
-   UTF-8 strings have been updated to match Unicode 6.3 better.
+   UTF-8 strings have been updated to match Unicode 7.0 better.
 
  * HTTP-based transports learned to propagate the error messages from
    the webserver better to the client coming over the HTTP transport.
 
+ * The completion script for bash (in contrib/) has been updated to
+   handle aliases that define complex sequence of commands better.
+
  * The "core.preloadindex" configuration variable is by default
    enabled, allowing modern platforms to take advantage of the
    multiple cores they have.
 
+ * "git clone" applies the "if cloning from a local disk, physically
+   copy repository using hardlinks, unless otherwise told not to with
+   --no-local" optimization when url.*.insteadOf mechanism rewrites a
+   "git clone $URL" that refers to a repository over the network to a
+   clone from a local disk.
+
  * "git commit --date=<date>" option learned to read from more
    timestamp formats, including "--date=now".
 
@@ -90,7 +99,15 @@ UI, Workflows & Features
    users need to explicitly set the variable to 'true' if they want
    to resurrect the now-ignored use case.
 
- * "git replace" learned the "--edit" subcommand.
+ * "git replace" learned the "--edit" subcommand to create a
+   replacement by editing an existing object.
+
+ * "git replace" learned a "--graft" option to rewrite parents of a
+   commit.
+
+ * "git send-email" learned "--to-cover" and "--cc-cover" options, to
+   tell it to copy To: and Cc: headers found in the first input file
+   when emitting later input files.
 
  * "git svn" learned to cope with malformed timestamps with only one
    digit in the hour part, e.g. 2014-01-07T5:01:02.048176Z, emitted
@@ -99,11 +116,39 @@ UI, Workflows & Features
  * "git tag" when editing the tag message shows the name of the tag
    being edited as a comment in the editor.
 
+ * "git tag" learned to pay attention to "tag.sort" configuration, to
+   be used as the default sort order when no --sort=<value> the option
+   is given.
+
+ * "git verify-commit" command to check GPG signature in signed
+   commits, in a way similar to "git verify-tag" is used to check
+   signed tags, was added.
+
 
 Performance, Internal Implementation, etc.
 
  * Build procedure for 'subtree' (in contrib/) has been cleaned up.
 
+ * The support for the profile-feedback build, which has been left
+   bit-rotten for quite a while, has been updated.
+
+ * An experimental format to use two files (the base file and
+   incremental changes relative to it) to represent the index has been
+   introduced; this may reduce I/O cost of rewriting a large index
+   when only small part of the working tree changes.
+
+ * Effort to shrink the size of patches Windows folks maintain on top
+   by upstreaming them continues.
+
+ * Patches maintained by msysgit folks for Windows port are being
+   upstreamed here a bit by bit.
+
+ * The leaf function to check validity of a refname format has been
+   micro-optimized, using SSE2 instructions when available.  A few
+   breakages during its development have been caught and fixed already
+   but there might remain some more still; please test and report if
+   you find any.
+
  * The `core.deltabasecachelimit` used to default to 16 MiB , but this
    proved to be too small, and has been bumped to 96 MiB.
 
@@ -118,6 +163,9 @@ Performance, Internal Implementation, etc.
    example, "update-ref --stdin [-z]" has been updated to use this
    API.
 
+ * skip_prefix() and strip_suffix() API functions are used a lot more
+   widely throughout the codebase now.
+
  * Parts of the test scripts can be skipped by using a range notation,
    e.g. "sh t1234-test.sh --run='1-4 6 8-'" to omit test piece 5 and 7
    and run everything else.
@@ -147,13 +195,23 @@ notes for details).
  * Mishandling of patterns in .gitignore that has trailing SPs quoted
    with backslashes (e.g. ones that end with "\ ") have been
    corrected.
-   (merge e61a6c1 pb/trim-trailing-spaces later to maint).
+   (merge 97c1364be6b pb/trim-trailing-spaces later to maint).
 
  * Reworded the error message given upon a failure to open an existing
    loose object file due to e.g. permission issues; it was reported as
    the object being corrupt, but that is not quite true.
    (merge d6c8a05 jk/report-fail-to-read-objects-better later to maint).
 
+ * "git log -2master" is a common typo that shows two commits starting
+   from whichever random branch that is not 'master' that happens to
+   be checked out currently.
+   (merge e3fa568 jc/revision-dash-count-parsing later to maint).
+
+ * Code to avoid adding the same alternate object store twice was
+   subtly broken for a long time, but nobody seems to have noticed.
+   (merge 80b4785 rs/fix-alt-odb-path-comparison later to maint).
+   (merge 539e750 ek/alt-odb-entry-fix later to maint).
+
  * The "%<(10,trunc)%s" pretty format specifier in the log family of
    commands is used to truncate the string to a given length (e.g. 10
    in the example) with padding to column-align the output, but did
@@ -161,6 +219,17 @@ notes for details).
    columns are different.
    (merge 7d50987 as/pretty-truncate later to maint).
 
+ * "%G" (nothing after G) is an invalid pretty format specifier, but
+   the parser did not notice it as garbage.
+   (merge 958b2eb jk/pretty-G-format-fixes later to maint).
+
+ * A handful of code paths had to read the commit object more than
+   once when showing header fields that are usually not parsed.  The
+   internal data structure to keep track of the contents of the commit
+   object has been updated to reduce the need for this double-reading,
+   and to allow the caller find the length of the object.
+   (merge 218aa3a jk/commit-buffer-length later to maint).
+
  * The "mailmap.file" configuration option did not support the tilde
    expansion (i.e. ~user/path and ~/path).
    (merge 9352fd5 ow/config-mailmap-pathname later to maint).
@@ -170,6 +239,16 @@ notes for details).
    couple of options unique to "git merge".
    (merge 8fee872 jk/complete-merge-pull later to maint).
 
+ * The unix-domain socket used by the sample credential cache daemon
+   tried to unlink an existing stale one at a wrong path, if the path
+   to the socket was given as an overlong path that does not fit in
+   sun_path member of the sockaddr_un structure.
+   (merge 2869b3e rs/fix-unlink-unix-socket later to maint).
+
+ * An ancient rewrite passed a wrong pointer to a curl library
+   function in a rarely used code path.
+   (merge 479eaa8 ah/fix-http-push later to maint).
+
  * "--ignore-space-change" option of "git apply" ignored the spaces
    at the beginning of line too aggressively, which is inconsistent
    with the option of the same name "diff" and "git diff" have.
@@ -185,6 +264,11 @@ notes for details).
    line endings.
    (merge 4d4813a bc/blame-crlf-test later to maint).
 
+ * "git clone -b brefs/tags/bar" would have mistakenly thought we were
+   following a single tag, even though it was a name of the branch,
+   because it incorrectly used strstr().
+   (merge 60a5f5f jc/fix-clone-single-starting-at-a-tag later to maint).
+
  * "git commit --allow-empty-messag -C $commit" did not work when the
    commit did not have any log message.
    (merge 076cbd6 jk/commit-C-pick-empty later to maint).
@@ -194,6 +278,11 @@ notes for details).
    bit.
    (merge 5304810 jk/diff-files-assume-unchanged later to maint).
 
+ * "filter-branch" left an empty single-parent commit that results when
+   all parents of a merge commit gets mapped to the same commit, even
+   under "--prune-empty".
+   (merge 79bc4ef cb/filter-branch-prune-empty-degenerate-merges later to maint).
+
  * "git format-patch" did not enforce the rule that the "--follow"
    option from the log/diff family of commands must be used with
    exactly one pathspec.
@@ -219,6 +308,13 @@ notes for details).
    distinguish missing objects from type errors.
    (merge 77583e7 jk/index-pack-report-missing later to maint).
 
+ * "log --show-signature" incorrectly decided the color to paint a
+   mergetag that was and was not correctly validated.
+   (merge 42c55ce mg/fix-log-mergetag-color later to maint).
+
+ * "log --show-signature" did not pay attention to "--graph" option.
+   (merge cf3983d zk/log-graph-showsig later to maint).
+
  * "git mailinfo" used to read beyond the end of header string while
    parsing an incoming e-mail message to extract the patch.
    (merge b1a013d rs/mailinfo-header-cmp later to maint).
@@ -228,11 +324,21 @@ notes for details).
    except for case differences.
    (merge baa37bf dt/merge-recursive-case-insensitive later to maint).
 
+ * Merging changes into a file that ends in an incomplete line made the
+   last line into a complete one, even when the other branch did not
+   change anything around the end of file.
+   (merge ba31180 mk/merge-incomplete-files later to maint).
+
  * "git pack-objects" unnecessarily copied the previous contents when
    extending the hashtable, even though it will populate the table
    from scratch anyway.
    (merge fb79947 rs/pack-objects-no-unnecessary-realloc later to maint).
 
+ * Recent updates to "git repack" started to duplicate objects that
+   are in packfiles marked with .keep flag into the new packfile by
+   mistake.
+   (merge d078d85 jk/repack-pack-keep-objects later to maint).
+
  * "git rerere forget" did not work well when merge.conflictstyle
    was set to a non-default value.
    (merge de3d8bb fc/rerere-conflict-style later to maint).
@@ -253,6 +359,13 @@ notes for details).
    emptying the insn sheet.
    (merge ddb5432 rr/rebase-autostash-fix later to maint).
 
+ * "git rebase --fork-point" did not filter out patch-identical
+   commits correctly.
+
+ * During "git rebase --merge", a conflicted patch could not be
+   skipped with "--skip" if the next one also conflicted.
+   (merge 95104c7 bc/fix-rebase-merge-skip later to maint).
+
  * "git show -s" (i.e. show log message only) used to incorrectly emit
    an extra blank line after a merge commit.
    (merge ad2f725 mk/show-s-no-extra-blank-line-for-merges later to maint).
@@ -272,6 +385,10 @@ notes for details).
    them.
    (merge c215d3d jl/status-added-submodule-is-never-ignored later to maint).
 
+ * Documentation for "git submodule sync" forgot to say that the subcommand
+   can take the "--recursive" option.
+   (merge 9393ae7 mc/doc-submodule-sync-recurse later to maint).
+
  * "git update-index --cacheinfo" in 2.0 release crashed on a
    malformed command line.
    (merge c8e1ee4 jc/rev-parse-argh-dashed-multi-words later to maint).