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 a 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 diff --stat" learned to adjust the width of the output on
+ wider terminals, and give more columns to pathnames as needed.
+
+ * "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
+Internal Implementation (please report possible regressions)
* Recursive call chains in "git index-pack" to deal with long delta
chains have been flattened, to reduce the stack footprint.
- * Use of add_extra_ref() API is slowly getting removed, to make it
- possible to cleanly restructure the overall refs API.
+ * Use of add_extra_ref() API is now gone, to make it possible to
+ cleanly restructure the overall refs API.
+
+ * The command line parser of "git pack-objects" now uses parse-options
+ API.
* 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.
releases are contained in this release (see release notes to them for
details).
- * "git merge --no-edit $tag" failed to honor the --no-edit option.
- (merge 3adab6f jn/merge-no-edit-fix later to maint).
-
- * The error message emitted when we see an empty loose object was
- not phrased correctly.
- (merge 33e42de mm/empty-loose-error-message later to maint).
-
- * Many small corner case bugs on "git tag -n" was corrected.
- (merge 31fd8d7 jk/maint-tag-show-fixes later to maint).
-
- * "git commit" refused to create a commit when entries added with
- "add -N" remained in the index, without telling Git what their content
- in the next commit should be. We should have created the commit without
- these paths.
- (merge 3f6d56d jc/maint-commit-ignore-i-t-a later to maint).
-
- * Search box in "gitweb" did not accept non-ASCII characters correctly.
- (merge 84d9e2d jn/gitweb-search-utf-8 later to maint).
-
- * The code to ask for password did not fall back to the terminal
- input when GIT_ASKPASS is set but does not work (e.g. lack of X
- with GUI askpass helper).
- (merge 84d7273 jk/prompt-fallback-to-tty later to maint).
-
- * map_user() was not rewriting its output correctly, which resulted
- in the user visible symptom that "git blame -e" sometimes showed
- excess '>' at the end of email addresses.
- (merge f026358 jc/maint-mailmap-output later to maint).
-
- * "checkout -b" did not allow switching out of an unborn branch.
- (merge abe1998 jc/checkout-out-of-unborn later to maint).
-
----
-exec >/var/tmp/1
-O=v1.7.9-249-gaa47ec9
-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.