Git 1.7.10
[gitweb.git] / Documentation / RelNotes / 1.7.10.txt
index 48950d5afbca6e8e23b501163467e2f74a700f52..58100bf04e1c3b7e7f4440eb3df9696b3a5343df 100644 (file)
 Git v1.7.10 Release Notes
 =========================
 
+Compatibility Notes
+-------------------
+
+ * From this release on, the "git merge" command in an interactive
+   session will start an editor when it automatically resolves the
+   merge for the user to explain the resulting commit, just like the
+   "git commit" command does when it wasn't given a commit message.
+
+   If you have a script that runs "git merge" and keeps its standard
+   input and output attached to the user's terminal, and if you do not
+   want the user to explain the resulting merge commits, you can
+   export GIT_MERGE_AUTOEDIT environment variable set to "no", like
+   this:
+
+       #!/bin/sh
+       GIT_MERGE_AUTOEDIT=no
+       export GIT_MERGE_AUTOEDIT
+
+   to disable this behavior (if you want your users to explain their
+   merge commits, you do not have to do anything).  Alternatively, you
+   can give the "--no-edit" option to individual invocations of the
+   "git merge" command if you know everybody who uses your script has
+   Git v1.7.8 or newer.
+
+ * The "--binary/-b" options to "git am" have been a no-op for quite a
+   while and were deprecated in mid 2008 (v1.6.0).  When you give these
+   options to "git am", it will now warn and ask you not to use them.
+
+ * When you do not tell which branches and tags to push to the "git
+   push" command in any way, the command used "matching refs" rule to
+   update remote branches and tags with branches and tags with the
+   same name you locally have.  In future versions of Git, this will
+   change to push out only your current branch according to either the
+   "upstream" or the "current" rule.  Although "upstream" may be more
+   powerful once the user understands Git better, the semantics
+   "current" gives is simpler and easier to understand for beginners
+   and may be a safer and better default option.  We haven't decided
+   yet which one to switch to.
+
+
 Updates since v1.7.9
 --------------------
 
 UI, Workflows & Features
 
- * Improved handling of views, labels and branches in git-p4 (in contrib).
-
- * Updated command line arguments completion script for zsh (in contrib).
-
- * "vcs-svn"/"svn-fe" learned to read dumps with svn-deltas and
-   support incremental imports.
+ * various "gitk" updates.
+   - show the path to the top level directory in the window title
+   - update preference edit dialog
+   - display file list correctly when directories are given on command line
+   - make "git-describe" output in the log message into a clickable link
+   - avoid matching the UNIX timestamp part when searching all fields
+   - give preference to symbolic font names like sans & monospace
+   - allow comparing two commits using a mark
+   - "gitk" honors log.showroot configuration.
+
+ * Teams for localizing the messages from the Porcelain layer of
+   commands are starting to form, thanks to Jiang Xin who volunteered
+   to be the localization coordinator.  Translated messages for
+   simplified Chinese, Swedish and Portuguese are available.
+
+ * The configuration mechanism learned an "include" facility; an
+   assignment to the include.path pseudo-variable causes the named
+   file to be included in-place when Git looks up configuration
+   variables.
+
+ * A content filter (clean/smudge) used to be just a way to make the
+   recorded contents "more useful", and allowed to fail; a filter can
+   now optionally be marked as "required".
+
+ * Options whose names begin with "--no-" (e.g. the "--no-verify"
+   option of the "git commit" command) can be negated by omitting
+   "no-" from its name, e.g. "git commit --verify".
 
  * "git am" learned to pass "-b" option to underlying "git mailinfo", so
-   that bracketed string other than "PATCH" at the beginning can be kept.
+   that bracketed string other than "PATCH" at the beginning can be kept.
 
  * "git clone" learned "--single-branch" option to limit cloning to a
-   single branch (surprise!).
+   single branch (surprise!); tags that do not point into the history
+   of the branch are not fetched.
 
  * "git clone" learned to detach the HEAD in the resulting repository
-   when the source repository's HEAD does not point to a branch.
-
- * The commands in the "git diff" family and "git apply --stat" that
-   count the number of files changed and the number of lines
-   inserted/deleted have been updated to match the output from
-   "diffstat".  This also opens the door to i18n this line.
+   when the user specifies a tag with "--branch" (e.g., "--branch=v1.0").
+   Clone also learned to print the usual "detached HEAD" advice in such
+   a case, similar to "git checkout v1.0".
 
  * When showing a patch while ignoring whitespace changes, the context
    lines are taken from the postimage, in order to make it easier to
    view the output.
 
- * "git grep" pays attention to -diff (hence -binary) attributes now.
+ * "git diff --stat" learned to adjust the width of the output on
+   wider terminals, and give more columns to pathnames as needed.
 
- * "git tag --list" can be given "--points-at <object>" to limit its
-   output to those that point at the given object.
+ * "diff-highlight" filter (in contrib/) was updated to produce more
+   aesthetically pleasing output.
+
+ * "fsck" learned "--no-dangling" option to omit dangling object
+   information.
+
+ * "git log -G" and "git log -S" learned to pay attention to the "-i"
+   option.  With "-i", "log -G" ignores the case when finding patch
+   hunks that introduce or remove a string that matches the given
+   pattern.  Similarly with "-i", "log -S" ignores the case when
+   finding the commit the given block of text appears or disappears
+   from the file.
 
  * "git merge" in an interactive session learned to spawn the editor
    by default to let the user edit the auto-generated merge message,
    to encourage people to explain their merges better. Legacy scripts
-   can export MERGE_AUTOEDIT=no to retain the historical behaviour.
+   can export GIT_MERGE_AUTOEDIT=no to retain the historical behavior.
    Both "git merge" and "git pull" can be given --no-edit from the
    command line to accept the auto-generated merge message.
 
+ * The advice message given when the user didn't give enough clue on
+   what to merge to "git pull" and "git merge" has been updated to
+   be more concise and easier to understand.
+
+ * "git push" learned the "--prune" option, similar to "git fetch".
+
+ * The whole directory that houses a top-level superproject managed by
+   "git submodule" can be moved to another place.
+
+ * "git symbolic-ref" learned the "--short" option to abbreviate the
+   refname it shows unambiguously.
+
+ * "git tag --list" can be given "--points-at <object>" to limit its
+   output to those that point at the given object.
+
  * "gitweb" allows intermediate entries in the directory hierarchy
-   that leads to a projects to be clicked, which in turn shows the
+   that leads to a project to be clicked, which in turn shows the
    list of projects inside that directory.
 
+ * "gitweb" learned to read various pieces of information for the
+   repositories lazily, instead of reading everything that could be
+   needed (including the ones that are not necessary for a specific
+   task).
+
+ * Project search in "gitweb" shows the substring that matched in the
+   project name and description highlighted.
+
+ * HTTP transport learned to authenticate with a proxy if needed.
+
+ * A new script "diffall" is added to contrib/; it drives an
+   external tool to perform a directory diff of two Git revisions
+   in one go, unlike "difftool" that compares one file at a time.
+
+Foreign Interface
+
+ * Improved handling of views, labels and branches in "git-p4" (in contrib).
+
+ * "git-p4" (in contrib) suffered from unnecessary merge conflicts when
+   p4 expanded the embedded $RCS$-like keywords; it can be now told to
+   unexpand them.
+
+ * Some "git-svn" updates.
+
+ * "vcs-svn"/"svn-fe" learned to read dumps with svn-deltas and
+   support incremental imports.
+
+ * "git difftool/mergetool" learned to drive DeltaWalker.
+
 Performance
 
- * During "git upload-pack" in respose to "git fetch", unnecessary calls
-   to parse_object() have been eliminated, to help performance in
-   repositories with excessive number of refs.
+ * Unnecessary calls to parse_object() "git upload-pack" makes in
+   response to "git fetch", have been eliminated, to help performance
+   in repositories with excessive number of refs.
 
 Internal Implementation (please report possible regressions)
 
@@ -66,9 +180,19 @@ Internal Implementation (please report possible regressions)
 
  * The test suite supports the new "test_pause" helper function.
 
+ * Parallel to the test suite, there is a beginning of performance
+   benchmarking framework.
+
  * t/Makefile is adjusted to prevent newer versions of GNU make from
    running tests in seemingly random order.
 
+ * The code to check if a path points at a file beyond a symbolic link
+   has been restructured to be thread-safe.
+
+ * When pruning directories that has become empty during "git prune"
+   and "git prune-packed", call closedir() that iterates over a
+   directory before rmdir() it.
+
 Also contains minor documentation updates and code clean-ups.
 
 
@@ -79,42 +203,17 @@ Unless otherwise noted, all the fixes since v1.7.9 in the maintenance
 releases are contained in this release (see release notes to them for
 details).
 
- * When you have both .../foo and .../foo.git, "git clone .../foo" did not
-   favor the former but the latter.
-   (merge b3256eb jk/git-dir-lookup later to maint).
-
- * Some systems need to explicitly link -lcharset to get locale_charset().
-   (merge b522528 dp/i18n-libcharset later to maint).
-
- * The output from "git diff --stat" for two paths that have the same
-   amount of changes showed graph bars of different length due to the
-   way we handled rounding errors.
-   (merge 2eeeef2 jc/diff-stat-scaler later to maint).
-
- * We failed to give the true terminal width to any subcommand when
-   they are invoked with the pager, i.e. "git -p cmd".
-   (merge ad6c373 zj/term-columns later to maint).
-
- * The transport programs ignored --no-progress and showed progress when
-   sending their output to a terminal.
-   (merge 01fdc21 cb/transfer-no-progress later to maint).
-
- * Sometimes error status detected by a check in an earlier phase of
-   receive-pack (the other end of 'git push') was lost by later
-   checks, resulting in false indication of success.
-   (merge ef7e93d cb/receive-pack-keep-errors later to maint).
-
- * t5541 ignored user-supplied port number used for HTTP server testing
-   (merge d202a51 cb/maint-t5541-make-server-port-portable later to maint).
-
- * "rev-list --verify" sometimes skipped verification depending on the
-   phase of the moon, which dates back to 1.7.8.x series.
-   (merge cb8da70 cb/maint-rev-list-verify-object later to maint).
-
----
-exec >/var/tmp/1
-O=v1.7.9.1-264-g76bdcf0
-echo O=$(git describe)
-git log --first-parent --oneline ^maint $O..
-echo
-git shortlog --no-merges ^maint $O..
+ * Build with NO_PERL_MAKEMAKER was broken and Git::I18N did not work
+   with versions of Perl older than 5.8.3.
+   (merge 5eb660e ab/perl-i18n later to maint).
+
+ * "git tag -s" honored "gpg.program" configuration variable since
+   1.7.9, but "git tag -v" and "git verify-tag" didn't.
+   (merge a2c2506 az/verify-tag-use-gpg-config later to maint).
+
+ * "configure" script learned to take "--with-sane-tool-path" from the
+   command line to record SANE_TOOL_PATH (used to avoid broken platform
+   tools in /usr/bin) in config.mak.autogen.  This may be useful for
+   people on Solaris who have saner tools outside /usr/xpg[46]/bin.
+
+ * zsh port of bash completion script needed another workaround.