| 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 |
| |
| * 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". |
| |
| * "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). |
| |
| * 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. |
| |
| * 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). |
| |
| * 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). |
| (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). |