зеркало из https://github.com/microsoft/git.git
319 строки
14 KiB
Plaintext
319 строки
14 KiB
Plaintext
Git v1.8.4 Release Notes
|
|
========================
|
|
|
|
Updates since v1.8.3
|
|
--------------------
|
|
|
|
Foreign interfaces, subsystems and ports.
|
|
|
|
* Git-gui has been updated to its 0.18.0 version.
|
|
|
|
* MediaWiki remote helper (in contrib/) has been updated to use the
|
|
credential helper interface from Git.pm.
|
|
|
|
* Update build for Cygwin 1.[57]. Torsten Bögershausen reports that
|
|
this is fine with Cygwin 1.7 ($gmane/225824) so let's try moving it
|
|
ahead.
|
|
|
|
* The credential helper to talk to keychain on OS X (in contrib/) has
|
|
been updated to kick in not just when talking http/https but also
|
|
imap(s) and smtp.
|
|
|
|
* Remote transport helper has been updated to report errors and
|
|
maintain ref hierarchy used to keep track of its own state better.
|
|
|
|
* With "export" remote-helper protocol, (1) a push that tries to
|
|
update a remote ref whose name is different from the pushing side
|
|
does not work yet, and (2) the helper may not know how to do
|
|
--dry-run; these problematic cases are disabled for now.
|
|
|
|
* git-remote-hg/bzr (in contrib/) updates.
|
|
|
|
* git-remote-mw (in contrib/) hints users to check the certificate,
|
|
when https:// connection failed.
|
|
|
|
|
|
UI, Workflows & Features
|
|
|
|
* Various subcommands of "git submodule" refused to run from anywhere
|
|
other than the top of the working tree of the superproject, but
|
|
they have been taught to let you run from a subdirectory.
|
|
|
|
* "git diff" learned a mode that ignores hunks whose change consists
|
|
only of additions and removals of blank lines, which is the same as
|
|
"diff -B" (ignore blank lines) of GNU diff.
|
|
|
|
* "git rm" gives a single message followed by list of paths to report
|
|
multiple paths that cannot be removed.
|
|
|
|
* "git rebase" can be told with ":/look for this string" syntax commits
|
|
to replay the changes onto and where the work to be replayed begins.
|
|
|
|
* Many tutorials teach users to set "color.ui" to "auto" as the first
|
|
thing after you set "user.name/email" to introduce yourselves to
|
|
Git. Now the variable defaults to "auto".
|
|
|
|
* On Cygwin, "cygstart" is now recognised as a possible way to start
|
|
a web browser (used in "help -w" and "instaweb" among others).
|
|
|
|
### * "git status" learned status.branch and status.short configuration
|
|
### variables to use --branch and --short options by default (override
|
|
### with --no-branch and --no-short options from the command line).
|
|
|
|
* "git cmd <name>", when <name> happens to be a 40-hex string,
|
|
directly uses the 40-hex string as an object name, even if a ref
|
|
"refs/<some hierarchy>/<name>" exists. This disambiguation order
|
|
is unlikely to change, but we should warn about the ambiguity just
|
|
like we warn when more than one refs/ hierachies share the same
|
|
name.
|
|
|
|
* "git rebase" learned "--[no-]autostash" option to save local
|
|
changes instead of refusing to run (to which people's normal
|
|
response was to stash them and re-run). This introduced a corner
|
|
case breakage to "git am --abort" but it has been fixed.
|
|
|
|
* Instead of typing four capital letters "HEAD", you can say "@" now,
|
|
e.g. "git log @".
|
|
|
|
* "check-ignore" (new feature since 1.8.2) has been updated to work
|
|
more like "check-attr" over bidi-pipes.
|
|
|
|
* "git describe" learned "--first-parent" option to limit its closest
|
|
tagged commit search to the first-parent chain.
|
|
|
|
* "git merge foo" that might have meant "git merge origin/foo" is
|
|
diagnosed with a more informative error message.
|
|
|
|
* "git log -L<line>,<range>:<filename>" has been added. This may
|
|
still have leaks and rough edges, though.
|
|
|
|
* We used the approxidate() parser for "--expire=<timestamp>" options
|
|
of various commands, but it is better to treat --expire=all and
|
|
--expire=now a bit more specially than using the current timestamp.
|
|
"git gc" and "git reflog" have been updated with a new parsing
|
|
function for expiry dates.
|
|
|
|
* Updates to completion (both bash and zsh) helpers.
|
|
|
|
* The behaviour of the "--chain-reply-to" option of "git send-email"
|
|
have changed at 1.7.0, and we added a warning/advice message to
|
|
help users adjust to the new behaviour back then, but we kept it
|
|
around for too long. The message has finally been removed.
|
|
|
|
* "git fetch origin master" unlike "git fetch origin" or "git fetch"
|
|
did not update "refs/remotes/origin/master"; this was an early
|
|
design decision to keep the update of remote tracking branches
|
|
predictable, but in practice it turns out that people find it more
|
|
convenient to opportunistically update them whenever we have a
|
|
chance, and we have been updating them when we run "git push" which
|
|
already breaks the original "predictability" anyway.
|
|
|
|
* The configuration variable core.checkstat was advertised in the
|
|
documentation but the code expected core.statinfo instead.
|
|
For now, we accept both core.checkstat and core.statinfo, but the
|
|
latter will be removed in the longer term.
|
|
|
|
|
|
Performance, Internal Implementation, etc.
|
|
|
|
* "git pack-refs" that races with new ref creation or deletion have
|
|
been susceptible to lossage of refs under right conditions, which
|
|
has been tightened up.
|
|
|
|
* We read loose and packed rerferences in two steps, but after
|
|
deciding to read a loose ref but before actually opening it to read
|
|
it, another process racing with us can unlink it, which would cause
|
|
us to barf. The codepath has been updated to retry when such a
|
|
race is detected, instead of outright failing.
|
|
|
|
* Uses of the platform fnmatch(3) function (many places in the code,
|
|
matching pathspec, .gitignore and .gitattributes to name a few)
|
|
have been replaced with wildmatch, allowing "foo/**/bar" that would
|
|
match foo/bar, foo/a/bar, foo/a/b/bar, etc.
|
|
|
|
* Memory ownership and lifetime rules for what for-each-ref feeds to
|
|
its callbacks have been clarified (in short, "you do not own it, so
|
|
make a copy if you want to keep it").
|
|
|
|
* The revision traversal logic to improve culling of irrelevant
|
|
parents while traversing a mergy history has been updated.
|
|
|
|
* Some leaks in unpack-trees (used in merge, cherry-pick and other
|
|
codepaths) have been plugged.
|
|
|
|
* The codepath to read from marks files in fast-import/export did not
|
|
have to accept anything but 40-hex representation of the object
|
|
name. Further, fast-export did not need full in-core object
|
|
representation to have parsed wen reading from them. These
|
|
codepaths have been optimized by taking advantage of these access
|
|
patterns.
|
|
|
|
* Object lookup logic, when the object hashtable starts to become
|
|
crowded, has been optimized.
|
|
|
|
* When TEST_OUTPUT_DIRECTORY setting is used, it was handled somewhat
|
|
inconsistently between the test framework and t/Makefile, and logic
|
|
to summarize the results looked at a wrong place.
|
|
|
|
* "git clone" uses a lighter-weight implementation when making sure
|
|
that the history behind refs are complete.
|
|
|
|
* Many warnings from sparse source checker in compat/ area has been
|
|
squelched.
|
|
|
|
* The code to reading and updating packed-refs file has been updated,
|
|
correcting corner case bugs.
|
|
|
|
|
|
Also contains various documentation updates and code clean-ups.
|
|
|
|
|
|
Fixes since v1.8.3
|
|
------------------
|
|
|
|
Unless otherwise noted, all the fixes since v1.8.3 in the maintenance
|
|
track are contained in this release (see release notes to them for
|
|
details).
|
|
|
|
* "git name-rev --refs=tags/v*" were forbidden, which was a bit
|
|
inconvenient (you had to give a pattern to match refs fully, like
|
|
--refs=refs/tags/v*).
|
|
(merge 98c5c4a nk/name-rev-abbreviated-refs later to maint).
|
|
|
|
* "git apply" parsed patches that add new files, generated by
|
|
programs other than Git, incorrectly. This is an old breakage in
|
|
v1.7.11 and will need to be merged down to the maintanance tracks.
|
|
(merge 212eb96 tr/maint-apply-non-git-patch-parsefix later to maint).
|
|
|
|
* Older cURL wanted piece of memory we call it with to be stable, but
|
|
we updated the auth material after handing it to a call.
|
|
(merge a94cf2c bc/http-keep-memory-given-to-curl later to maint).
|
|
|
|
* "git pull" into nothing trashed "local changes" that were in the
|
|
index, and this avoids it.
|
|
(merge b4dc085 jk/pull-into-dirty-unborn later to maint).
|
|
|
|
* Many "git submodule" operations do not work on a submodule at a
|
|
path whose name is not in ASCII.
|
|
(merge bed9470 fg/submodule-non-ascii-path later to maint).
|
|
|
|
* "cherry-pick" had a small leak in an error codepath.
|
|
(merge 706728a fc/sequencer-plug-leak later to maint).
|
|
|
|
* Logic used by git-send-email to suppress cc mishandled names like
|
|
"A U. Thor" <author@example.xz>, where the human readable part
|
|
needs to be quoted (the user input may not have the double quotes
|
|
around the name, and comparison was done between quoted and
|
|
unquoted strings). It also mishandled names that need RFC2047
|
|
quoting.
|
|
(merge 1495266 mt/send-email-cc-match-fix later to maint).
|
|
|
|
* Call to discard_cache/discard_index (used when we use different
|
|
contents of the index in-core, in many operations like commit,
|
|
apply, and merge) used to leak memory that held the array of index
|
|
entries, which has been plugged.
|
|
(merge a0fc4db rs/discard-index-discard-array later to maint).
|
|
|
|
* "gitweb" forgot to clear a global variable $search_regexp upon each
|
|
request, mistakenly carrying over the previous search to a new one
|
|
when used as a persistent CGI.
|
|
(merge ca7a5dc cm/gitweb-project-list-persistent-cgi-fix later to maint).
|
|
|
|
* The wildmatch engine did not honor WM_CASEFOLD option correctly.
|
|
(merge b79c0c3 ar/wildmatch-foldcase later to maint).
|
|
|
|
* "git log -c --follow $path" segfaulted upon hitting the commit that
|
|
renamed the $path being followed.
|
|
(merge 46ec510 cb/log-follow-with-combined later to maint).
|
|
|
|
* When a reflog notation is used for implicit "current branch", we
|
|
did not say which branch and worse said "branch ''".
|
|
(merge 305ebea rr/die-on-missing-upstream later to maint).
|
|
|
|
* "difftool --dir-diff" did not copy back changes made by the
|
|
end-user in the diff tool backend to the working tree in some
|
|
cases.
|
|
(merge 32eaf1d ks/difftool-dir-diff-copy-fix later to maint).
|
|
|
|
* "git push $there HEAD:branch" did not resolve HEAD early enough, so
|
|
it was easy to flip it around while push is still going on and push
|
|
out a branch that the user did not originally intended when the
|
|
command was started.
|
|
(merge 0f075b2 rr/push-head later to maint).
|
|
|
|
* The bash prompt code (in contrib/) displayed the name of the branch
|
|
being rebased when "rebase -i/-m/-p" modes are in use, but not the
|
|
plain vanilla "rebase".
|
|
(merge 1306321 fc/show-branch-in-rebase-am later to maint).
|
|
|
|
* Handling of negative exclude pattern for directories "!dir" was
|
|
broken in the update to v1.8.3.
|
|
(merge c3c327d kb/status-ignored-optim-2 later to maint).
|
|
|
|
* zsh prompt script that borrowed from bash prompt script did not
|
|
work due to slight differences in array variable notation between
|
|
these two shells.
|
|
(merge d0583da tg/maint-zsh-svn-remote-prompt later to maint).
|
|
|
|
* An entry for "file://" scheme in the enumeration of URL types Git
|
|
can take in the HTML documentation was made into a clickable link
|
|
by mistake.
|
|
(merge 4c32e36 nd/urls-doc-no-file-hyperlink-fix later to maint).
|
|
|
|
* "git push --[no-]verify" was not documented.
|
|
(merge 90d32d1 tr/push-no-verify-doc later to maint).
|
|
|
|
* Stop installing the git-remote-testpy script that is only used for
|
|
testing.
|
|
(merge 416fda6 fc/makefile later to maint).
|
|
|
|
* "git commit --allow-empty-message -m ''" should not start an
|
|
editor.
|
|
(merge 2520677 rs/commit-m-no-edit later to maint).
|
|
|
|
* "git merge @{-1}~22" was rewritten to "git merge frotz@{1}~22"
|
|
incorrectly when your previous branch was "frotz" (it should be
|
|
rewritten to "git merge frotz~22" instead).
|
|
(merge 84cf246 jc/strbuf-branchname-fix later to maint).
|
|
|
|
* "git diff -c -p" was not showing a deleted line from a hunk when
|
|
another hunk immediately begins where the earlier one ends.
|
|
(merge aac3857 mk/combine-diff-context-horizon-fix later to maint).
|
|
|
|
* "git log --ancestry-path A...B" did not work as expected, as it did
|
|
not pay attention to the fact that the merge base between A and B
|
|
was the bottom of the range being specified.
|
|
(merge a765499 kb/ancestry-path-threedots later to maint).
|
|
|
|
* Mac OS X does not like to write(2) more than INT_MAX number of
|
|
bytes; work it around by chopping write(2) into smaller pieces.
|
|
(merge 6c642a8 fc/macos-x-clipped-write later to maint).
|
|
|
|
* Newer MacOS X encourages the programs to compile and link with
|
|
their CommonCrypto, not with OpenSSL.
|
|
(merge be4c828 da/darwin later to maint).
|
|
|
|
* "git clone foo/bar:baz" cannot be a request to clone from a remote
|
|
over git-over-ssh specified in the scp style. This case is now
|
|
detected and clones from a local repository at "foo/bar:baz".
|
|
(merge 6000334 nd/clone-local-with-colon later to maint).
|
|
|
|
* When $HOME is misconfigured to point at an unreadable directory, we
|
|
used to complain and die. Loosen the check.
|
|
(merge 4698c8f jn/config-ignore-inaccessible later to maint).
|
|
|
|
* "git subtree" (in contrib/) had one codepath with loose error
|
|
checks to lose data at the remote side.
|
|
(merge 3212d56 jk/subtree-do-not-push-if-split-fails later to maint).
|
|
|
|
* "git fetch" into a shallow repository from a repository that does
|
|
not know about the shallow boundary commits (e.g. a different fork
|
|
from the repository the current shallow repository was cloned from)
|
|
did not work correctly.
|
|
(merge 71d5f93 mh/fetch-into-shallow later to maint).
|
|
|
|
* "git checkout foo" DWIMs the intended "upstream" and turns it into
|
|
"git checkout -t -b foo remotes/origin/foo". This codepath has been
|
|
updated to correctly take existing remote definitions into account.
|
|
(merge 229177a jh/checkout-auto-tracking later to maint).
|