267 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			267 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| Git v1.8.0 Release Notes
 | |
| ========================
 | |
| 
 | |
| Backward compatibility notes
 | |
| ----------------------------
 | |
| 
 | |
| In the next major release (not *this* one), we will change the
 | |
| behavior of the "git push" command.
 | |
| 
 | |
| When "git push [$there]" does not say what to push, we have used the
 | |
| traditional "matching" semantics so far (all your branches were sent
 | |
| to the remote as long as there already are branches of the same name
 | |
| over there).  We will use the "simple" semantics that pushes the
 | |
| current branch to the branch with the same name, only when the current
 | |
| branch is set to integrate with that remote branch.  There is a user
 | |
| preference configuration variable "push.default" to change this, and
 | |
| "git push" will warn about the upcoming change until you set this
 | |
| variable in this release.
 | |
| 
 | |
| "git branch --set-upstream" is deprecated and may be removed in a
 | |
| relatively distant future.  "git branch [-u|--set-upstream-to]" has
 | |
| been introduced with a saner order of arguments.
 | |
| 
 | |
| 
 | |
| Updates since v1.7.12
 | |
| ---------------------
 | |
| 
 | |
| UI, Workflows & Features
 | |
| 
 | |
|  * A credential helper for Win32 to allow access to the keychain of
 | |
|    the logged-in user has been added.
 | |
| 
 | |
|  * An initial port to HP NonStop.
 | |
| 
 | |
|  * A credential helper to allow access to the Gnome keyring has been
 | |
|    added.
 | |
| 
 | |
|  * When "git am" sanitizes the "Subject:" line, we strip the prefix from
 | |
|    "Re: subject" and also from a less common "re: subject", but left
 | |
|    the even less common "RE: subject" intact.  Now we strip that too.
 | |
| 
 | |
|  * It was tempting to say "git branch --set-upstream origin/master",
 | |
|    but that tells Git to arrange the local branch "origin/master" to
 | |
|    integrate with the currently checked out branch, which is highly
 | |
|    unlikely what the user meant.  The option is deprecated; use the
 | |
|    new "--set-upstream-to" (with a short-and-sweet "-u") option
 | |
|    instead.
 | |
| 
 | |
|  * "git cherry-pick" learned the "--allow-empty-message" option to
 | |
|    allow it to replay a commit without any log message.
 | |
| 
 | |
|  * After "git cherry-pick -s" gave control back to the user asking
 | |
|    help to resolve conflicts, concluding "git commit" used to need to
 | |
|    be run with "-s" if the user wants to sign it off; now the command
 | |
|    leaves the sign-off line in the log template.
 | |
| 
 | |
|  * "git daemon" learned the "--access-hook" option to allow an
 | |
|    external command to decline service based on the client address,
 | |
|    repository path, etc.
 | |
| 
 | |
|  * "git difftool --dir-diff" learned to use symbolic links to prepare
 | |
|    a temporary copy of the working tree when available.
 | |
| 
 | |
|  * "git grep" learned to use a non-standard pattern type by default if
 | |
|    a configuration variable tells it to.
 | |
| 
 | |
|  * Accumulated updates to "git gui" has been merged.
 | |
| 
 | |
|  * "git log -g" learned the "--grep-reflog=<pattern>" option to limit
 | |
|    its output to commits with a reflog message that matches the given
 | |
|    pattern.
 | |
| 
 | |
|  * "git merge-base" learned the "--is-ancestor A B" option to tell if A is
 | |
|    an ancestor of B.  The result is indicated by its exit status code.
 | |
| 
 | |
|  * "git mergetool" now allows users to override the actual command used
 | |
|    with the mergetool.$name.cmd configuration variable even for built-in
 | |
|    mergetool backends.
 | |
| 
 | |
|  * "git rebase -i" learned the "--edit-todo" option to open an editor
 | |
|    to edit the instruction sheet.
 | |
| 
 | |
| 
 | |
| Foreign Interface
 | |
| 
 | |
|  * "git svn" has been updated to work with SVN 1.7.
 | |
| 
 | |
|  * "git p4" learned the "--conflicts" option to specify what to do when
 | |
|    encountering a conflict during "p4 submit".
 | |
| 
 | |
| 
 | |
| Performance, Internal Implementation, etc.
 | |
| 
 | |
|  * Git ships with a fall-back regexp implementation for platforms with
 | |
|    buggy regexp library, but it was easy for people to keep using their
 | |
|    platform regexp by mistake.  A new test has been added to check this.
 | |
| 
 | |
|  * The "check-docs" build target has been updated and greatly
 | |
|    simplified.
 | |
| 
 | |
|  * The test suite is run under MALLOC_CHECK_ when running with a glibc
 | |
|    that supports the feature.
 | |
| 
 | |
|  * The documentation in the TeXinfo format was using indented output
 | |
|    for materials meant to be examples that are better typeset in
 | |
|    monospace.
 | |
| 
 | |
|  * Compatibility wrapper around some mkdir(2) implementations that
 | |
|    reject parameters with trailing slash has been introduced.
 | |
| 
 | |
|  * Compatibility wrapper for systems that lack usable setitimer() has
 | |
|    been added.
 | |
| 
 | |
|  * The option parsing of "git checkout" had error checking, dwim and
 | |
|    defaulting missing options, all mixed in the code, and issuing an
 | |
|    appropriate error message with useful context was getting harder.
 | |
|    The code has been reorganized to allow giving a proper diagnosis
 | |
|    when the user says "git checkout -b -t foo bar" (e.g. "-t" is not a
 | |
|    good name for a branch).
 | |
| 
 | |
|  * Many internal uses of a "git merge-base" equivalent were only to see
 | |
|    if one commit fast-forwards to the other, which did not need the
 | |
|    full set of merge bases to be computed. They have been updated to
 | |
|    use less expensive checks.
 | |
| 
 | |
|  * The heuristics to detect and silently convert latin1 to utf8 when
 | |
|    we were told to use utf-8 in the log message has been transplanted
 | |
|    from "mailinfo" to "commit" and "commit-tree".
 | |
| 
 | |
|  * Messages given by "git <subcommand> -h" from many subcommands have
 | |
|    been marked for translation.
 | |
| 
 | |
| 
 | |
| Also contains minor documentation updates and code clean-ups.
 | |
| 
 | |
| 
 | |
| Fixes since v1.7.12
 | |
| -------------------
 | |
| 
 | |
| Unless otherwise noted, all the fixes since v1.7.12 in the
 | |
| maintenance track are contained in this release (see release notes
 | |
| to them for details).
 | |
| 
 | |
|  * The attribute system may be asked for a path that itself or its
 | |
|    leading directories no longer exists in the working tree, and it is
 | |
|    fine if we cannot open .gitattribute file in such a case.  Failure
 | |
|    to open per-directory .gitattributes with error status other than
 | |
|    ENOENT and ENOTDIR should be diagnosed, but it wasn't.
 | |
| 
 | |
|  * When looking for $HOME/.gitconfig etc., it is OK if we cannot read
 | |
|    them because they do not exist, but we did not diagnose existing
 | |
|    files that we cannot read.
 | |
| 
 | |
|  * When "git am" is fed an input that has multiple "Content-type: ..."
 | |
|    header, it did not grok charset= attribute correctly.
 | |
| 
 | |
|  * "git am" mishandled a patch attached as application/octet-stream
 | |
|    (e.g. not text/*); Content-Transfer-Encoding (e.g. base64) was not
 | |
|    honored correctly.
 | |
| 
 | |
|  * "git blame MAKEFILE" run in a history that has "Makefile" but not
 | |
|    "MAKEFILE" should say "No such file MAKEFILE in HEAD", but got
 | |
|    confused on a case insensitive filesystem and failed to do so.
 | |
| 
 | |
|  * Even during a conflicted merge, "git blame $path" always meant to
 | |
|    blame uncommitted changes to the "working tree" version; make it
 | |
|    more useful by showing cleanly merged parts as coming from the other
 | |
|    branch that is being merged.
 | |
| 
 | |
|  * It was unclear in the documentation for "git blame" that it is
 | |
|    unnecessary for users to use the "--follow" option.
 | |
| 
 | |
|  * Output from "git branch -v" contains "(no branch)" that could be
 | |
|    localized, but the code to align it along with the names of
 | |
|    branches was counting in bytes, not in display columns.
 | |
| 
 | |
|  * "git cherry-pick A C B" used to replay changes in A and then B and
 | |
|    then C if these three commits had committer timestamps in that
 | |
|    order, which is not what the user who said "A C B" naturally
 | |
|    expects.
 | |
| 
 | |
|  * A repository created with "git clone --single" had its fetch
 | |
|    refspecs set up just like a clone without "--single", leading the
 | |
|    subsequent "git fetch" to slurp all the other branches, defeating
 | |
|    the whole point of specifying "only this branch".
 | |
| 
 | |
|  * Documentation talked about "first line of commit log" when it meant
 | |
|    the title of the commit.  The description was clarified by defining
 | |
|    how the title is decided and rewording the casual mention of "first
 | |
|    line" to "title".
 | |
| 
 | |
|  * "git cvsimport" did not thoroughly cleanse tag names that it
 | |
|    inferred from the names of the tags it obtained from CVS, which
 | |
|    caused "git tag" to barf and stop the import in the middle.
 | |
| 
 | |
|  * Earlier we made the diffstat summary line that shows the number of
 | |
|    lines added/deleted localizable, but it was found irritating having
 | |
|    to see them in various languages on a list whose discussion language
 | |
|    is English, and this change has been reverted.
 | |
| 
 | |
|  * "git fetch --all", when passed "--no-tags", did not honor the
 | |
|    "--no-tags" option while fetching from individual remotes (the same
 | |
|    issue existed with "--tags", but the combination "--all --tags" makes
 | |
|    much less sense than "--all --no-tags").
 | |
| 
 | |
|  * "git fetch" over http had an old workaround for an unlikely server
 | |
|    misconfiguration; it turns out that this hurts debuggability of the
 | |
|    configuration in general, and has been reverted.
 | |
| 
 | |
|  * "git fetch" over http advertised that it supports "deflate", which
 | |
|    is much less common, and did not advertise the more common "gzip" on
 | |
|    its Accept-Encoding header.
 | |
| 
 | |
|  * "git fetch" over the dumb-http revision walker could segfault when
 | |
|    curl's multi interface was used.
 | |
| 
 | |
|  * "git gc --auto" notified the user that auto-packing has triggered
 | |
|     even under the "--quiet" option.
 | |
| 
 | |
|  * After "gitk" showed the contents of a tag, neither "Reread
 | |
|    references" nor "Reload" updated what is shown as the
 | |
|    contents of it when the user overwrote the tag with "git tag -f".
 | |
| 
 | |
|  * "git log --all-match --grep=A --grep=B" ought to show commits that
 | |
|    mention both A and B, but when these three options are used with
 | |
|    --author or --committer, it showed commits that mention either A or
 | |
|    B (or both) instead.
 | |
| 
 | |
|  * The "-Xours" backend option to "git merge -s recursive" was ignored
 | |
|    for binary files.
 | |
| 
 | |
|  * "git p4", when "--use-client-spec" and "--detect-branches" are used
 | |
|    together, misdetected branches.
 | |
| 
 | |
|  * "git receive-pack" (the counterpart to "git push") did not give
 | |
|    progress output while processing objects it received to the user
 | |
|    when run over the smart-http protocol.
 | |
| 
 | |
|  * When you misspell the command name you give to the "exec" action in
 | |
|    the "git rebase -i" instruction sheet you were told that 'rebase' is not a
 | |
|    git subcommand from "git rebase --continue".
 | |
| 
 | |
|  * The subcommand in "git remote" to remove a defined remote was
 | |
|    "rm" and the command did not take a fully-spelled "remove".
 | |
| 
 | |
|  * The interactive prompt that "git send-email" gives was error prone. It
 | |
|    asked "What e-mail address do you want to use?" with the address it
 | |
|    guessed (correctly) the user would want to use in its prompt,
 | |
|    tempting the user to say "y". But the response was taken as "No,
 | |
|    please use 'y' as the e-mail address instead", which is most
 | |
|    certainly not what the user meant.
 | |
| 
 | |
|  * "git show --format='%ci'" did not give the timestamp correctly for
 | |
|    commits created without human readable name on the "committer" line.
 | |
| 
 | |
|  * "git show --quiet" ought to be a synonym for "git show -s", but
 | |
|    wasn't.
 | |
| 
 | |
|  * "git submodule frotz" was not diagnosed as "frotz" being an unknown
 | |
|    subcommand to "git submodule"; the user instead got a complaint
 | |
|    that "git submodule status" was run with an unknown path "frotz".
 | |
| 
 | |
|  * "git status" honored the ignore=dirty settings in .gitmodules but
 | |
|    "git commit" didn't.
 | |
| 
 | |
|  * "gitweb" did not give the correct committer timezone in its feed
 | |
|    output due to a typo.
 |