| Git 2.18 Release Notes |
| ====================== |
| |
| Updates since v2.17 |
| ------------------- |
| |
| UI, Workflows & Features |
| |
| * Rename detection logic in "diff" family that is used in "merge" has |
| learned to guess when all of x/a, x/b and x/c have moved to z/a, |
| z/b and z/c, it is likely that x/d added in the meantime would also |
| want to move to z/d by taking the hint that the entire directory |
| 'x' moved to 'z'. A bug causing dirty files involved in a rename |
| to be overwritten during merge has also been fixed as part of this |
| work. |
| |
| * "git filter-branch" learned to use a different exit code to allow |
| the callers to tell the case where there was no new commits to |
| rewrite from other error cases. |
| |
| * When built with more recent cURL, GIT_SSL_VERSION can now specify |
| "tlsv1.3" as its value. |
| |
| |
| Performance, Internal Implementation, Development Support etc. |
| |
| * A "git fetch" from a repository with insane number of refs into a |
| repository that is already up-to-date still wasted too many cycles |
| making many lstat(2) calls to see if these objects at the tips |
| exist as loose objects locally. These lstat(2) calls are optimized |
| away by enumerating all loose objects beforehand. |
| It is unknown if the new strategy negatively affects existing use |
| cases, fetching into a repository with many loose objects from a |
| repository with small number of refs. |
| |
| * Git can be built to use either v1 or v2 of the PCRE library, and so |
| far, the build-time configuration USE_LIBPCRE=YesPlease instructed |
| the build procedure to use v1, but now it means v2. USE_LIBPCRE1 |
| and USE_LIBPCRE2 can be used to explicitly choose which version to |
| use, as before. |
| |
| * The build procedure learned to optionally use symbolic links |
| (instead of hardlinks and copies) to install "git-foo" for built-in |
| commands, whose binaries are all identical. |
| |
| * Conversion from uchar[20] to struct object_id continues. |
| |
| * The way "git worktree prune" worked internally has been simplified, |
| by assuming how "git worktree move" moves an existing worktree to a |
| different place. |
| |
| * Code clean-up for the "repository" abstraction. |
| (merge 00a3da2a13 nd/remove-ignore-env-field later to maint). |
| |
| * Code to find the length to uniquely abbreviate object names based |
| on packfile content, which is a relatively recent addtion, has been |
| optimized to use the same fan-out table. |
| |
| * The mechanism to use parse-options API to automate the command line |
| completion continues to get extended and polished. |
| |
| * Copies of old scripted Porcelain commands in contrib/examples/ have |
| been removed. |
| |
| * Some tests that rely on the exact hardcoded values of object names |
| have been updated in preparation for hash function migration. |
| |
| * Perf-test update. |
| |
| * Test helper update. |
| |
| * The effort continues to refactor the internal global data structure |
| to make it possible to open multiple repositories, work with and |
| then close them, |
| |
| * Small test-helper programs have been consolidated into a single |
| binary. |
| |
| Also contains various documentation updates and code clean-ups. |
| |
| |
| Fixes since v2.17 |
| ----------------- |
| |
| * "git shortlog cruft" aborted with a BUG message when run outside a |
| Git repository. The command has been taught to complain about |
| extra and unwanted arguments on its command line instead in such a |
| case. |
| (merge 4aa0161e83 ma/shortlog-revparse later to maint). |
| |
| * "git stash push -u -- <pathspec>" gave an unnecessary and confusing |
| error message when there was no tracked files that match the |
| <pathspec>, which has been fixed. |
| (merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint). |
| |
| * "git tag --contains no-such-commit" gave a full list of options |
| after giving an error message. |
| (merge 3bb0923f06 ps/contains-id-error-message later to maint). |
| |
| * "diff-highlight" filter (in contrib/) learned to undertand "git log |
| --graph" output better. |
| (merge 4551fbba14 jk/diff-highlight-graph-fix later to maint). |
| |
| * when refs that do not point at committish are given, "git |
| filter-branch" gave a misleading error messages. This has been |
| corrected. |
| (merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint). |
| |
| * "git submodule status" misbehaved on a submodule that has been |
| removed from the working tree. |
| (merge 74b6bda32f rs/status-with-removed-submodule later to maint). |
| |
| * When credential helper exits very quickly without reading its |
| input, it used to cause Git to die with SIGPIPE, which has been |
| fixed. |
| (merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint). |
| |
| * Other minor doc, test and build updates and code cleanups. |
| (merge 248f66ed8e nd/trace-with-env later to maint). |
| (merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint). |
| (merge 5988eb631a ab/doc-hash-brokenness later to maint). |
| (merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint). |