Merge git-gui 0.14.0
[gitweb.git] / Documentation / RelNotes / 1.7.5.txt
index 2c96f4d831513eb50ac50f8c7f174462919c64f3..24f5d8c4a47866dfd88146d2686773a4e1227a57 100644 (file)
@@ -12,6 +12,12 @@ Updates since v1.7.4
 
  * Update to more modern HP-UX port.
 
+ * The codebase is getting prepared for i18n/l10n; no translated/translatable
+   strings in the code yet.
+
+ * The bash completion script can now complete symmetric difference
+   for "git diff" command, e.g. "git diff ...bra<TAB>".
+
  * "git apply -v" reports offset lines when the patch does not apply at
    the exact location recorded in the diff output.
 
@@ -25,11 +31,11 @@ Updates since v1.7.4
  * "git checkout --detach <commit>" is a more user friendly synonym for
    "git checkout <commit>^0".
 
- * "git checkout" performed on detached HEAD gives a warning and an
+ * "git checkout" performed on detached HEAD gives a warning and
    advice when the commit being left behind will become unreachable from
    any branch or tag.
 
- * "git cherry-pick" and "git revert" can be told to use custom merge
+ * "git cherry-pick" and "git revert" can be told to use custom merge
    strategy, similar to "git rebase".
 
  * "git cherry-pick" remembers which commit failed to apply when it is
@@ -40,13 +46,32 @@ Updates since v1.7.4
    reached, without spewing unnecessary error messages that complain about
    the server response it never got.
 
+ * "git fetch" vs "git upload-pack" transfer learned 'no-done'
+   protocol extension to save one round-trip after the content
+   negotiation is done. This saves one HTTP RPC, reducing the overall
+   latency for a trivial fetch.
+
+ * "git grep -f <filename>" learned to treat "-" as "read from the
+   standard input stream".
+
  * "git grep --no-index" did not honor pathspecs correctly, returning
    paths outside the specified area.
 
- * "git log" family of commands now understand globbing pathspecs.  You
+ * "git log" type commands now understand globbing pathspecs.  You
    can say "git log -- '*.txt'" for example.
 
- * "git rev-list --objects $revs -- $pathspec" would limit the objects listed
+ * "git log" family of commands learned --cherry and --cherry-mark
+   options that can be used to view two diverged branches while omitting
+   or highlighting equivalent changes that appear on both sides of a
+   symmetric difference (e.g. "log --cherry A...B").
+
+ * "git mergetool" learned how to drive "beyond compare 3" as well.
+
+ * "git rerere forget" without pathspec used to forget all the saved
+   conflicts that relate to the current merge; it now requires you to
+   give it pathspecs.
+
+ * "git rev-list --objects $revs -- $pathspec" now limits the objects listed
    in its output properly with the pathspec, in preparation for narrow
    clones.
 
@@ -54,8 +79,8 @@ Updates since v1.7.4
    "tracking" is used as the push.default semantics or there is no remote
    configured yet.
 
- * "git rerere" learned a new subcommand "remaining", that is similar to
-   "status" that lists the paths that had conflicts that are known to
+ * "git rerere" learned a new subcommand "remaining" that is similar to
+   "status" and lists the paths that had conflicts which are known to
    rerere, but excludes the paths that have already been marked as
    resolved in the index from its output.  "git mergetool" has been
    updated to use this facility.
@@ -73,38 +98,30 @@ Fixes since v1.7.4
 All of the fixes in the v1.7.4.X maintenance series are included in this
 release, unless otherwise noted.
 
- * We used to keep one file descriptor open for each and every packfile
-   that we have a mmap window on it (read: "in use"), even when for very
-   tiny packfiles.  We now close the file descriptor early when the entire
-   packfile fits inside one mmap window.
-
  * "git apply" used to confuse lines updated by previous hunks as lines
    that existed before when applying a hunk, contributing misapplication
    of patches with offsets.
 
- * "git clone /no/such/path" did not fail correctly (jk/fail-null/clone).
-
  * "git checkout $other_branch" silently removed untracked symbolic links
    in the working tree that are in the way in order to check out paths
    under it from the named branch (js/checkout-untracked-symlink).
 
- * "git diff --stat -B" ran on binary files counted the changes in lines,
-   which was nonsensical (jk/diffstat-binary).
-
- * "git diff -M" opportunisticly detected copies, which was not
-   necessarily a good thing, especially when it is internally run by
-   recursive merge.
-
- * "git merge" triggers prepare-commit-msg hook.  Earlier, only "git
-   commit" to conclude an interrupted merge triggered the hook, leading to
-   an inconsistent overall user experience (js/maint-merge-use-prepare-commit-msg-hook).
+ * "git fetch" from a client that is mostly following the remote
+   needlessly told all of its refs to the server for both sides to
+   compute the set of objects that need to be transferred efficiently,
+   instead of stopping when the server heard enough. In a project with
+   many tags, this turns out to be extremely wasteful, especially over
+   the smart HTTP transport (sp/maint-{upload,fetch}-pack-stop-early~1).
 
- * "git submodule update" used to honor --merge/--rebase option (or
-   corresponding configuration variables) even for a newly cloned
-   subprojects, which made no sense (so/submodule-no-update-first-time).
+ * "git fetch" run from a repository that uses the same repository as
+   its alternate object store as the repository it is fetching from
+   did not tell the server that it already has access to objects
+   reachable from the refs in their common alternate object store,
+   causing it to fetch unnecessary objects (jc/maint-fetch-alt).
 
 ---
 exec >/var/tmp/1
-O=v1.7.4.1-265-gd0ef5a7
+O=v1.7.4.1-352-gcdc3466
+O=v1.7.4.1-414-gaeb2aaa
 echo O=$(git describe 'master')
 git shortlog --no-merges ^maint ^$O master