| Git 2.19 Release Notes |
| ====================== |
| |
| Updates since v2.18 |
| ------------------- |
| |
| UI, Workflows & Features |
| |
| * "git diff" compares the index and the working tree. For paths |
| added with intent-to-add bit, the command shows the full contents |
| of them as added, but the paths themselves were not marked as new |
| files. They are now shown as new by default. |
| |
| "git apply" learned the "--intent-to-add" option so that an |
| otherwise working-tree-only application of a patch will add new |
| paths to the index marked with the "intent-to-add" bit. |
| |
| * "git grep" learned the "--column" option that gives not just the |
| line number but the column number of the hit. |
| |
| * The "-l" option in "git branch -l" is an unfortunate short-hand for |
| "--create-reflog", but many users, both old and new, somehow expect |
| it to be something else, perhaps "--list". This step warns when "-l" |
| is used as a short-hand for "--create-reflog" and warns about the |
| future repurposing of the it when it is used. |
| |
| |
| Performance, Internal Implementation, Development Support etc. |
| |
| * The bulk of "git submodule foreach" has been rewritten in C. |
| |
| * The in-core "commit" object had an all-purpose "void *util" field, |
| which was tricky to use especially in library-ish part of the |
| code. All of the existing uses of the field has been migrated to a |
| more dedicated "commit-slab" mechanism and the field is eliminated. |
| |
| * A less often used command "git show-index" has been modernized. |
| (merge fb3010c31f jk/show-index later to maint). |
| |
| * The conversion to pass "the_repository" and then "a_repository" |
| throughout the object access API continues. |
| |
| * Continuing with the idea to programatically enumerate various |
| pieces of data required for command line completion, teach the |
| codebase to report the list of configuration variables |
| subcommands care about to help complete them. |
| |
| * Separate "rebase -p" codepath out of "rebase -i" implementation to |
| slim down the latter and make it easier to manage. |
| |
| * Make refspec parsing codepath more robust. |
| |
| * Some flaky tests have been fixed. |
| |
| * Continuing with the idea to programmatically enumerate various |
| pieces of data required for command line completion, the codebase |
| has been taught to enumerate options prefixed with "--no-" to |
| negate them. |
| |
| * Build and test procedure for netrc credential helper (in contrib/) |
| has been updated. |
| |
| * The conversion to pass "the_repository" and then "a_repository" |
| throughout the object access API continues. |
| |
| * Remove unused function definitions and declarations from ewah |
| bitmap subsystem. |
| |
| * Code preparation to make "git p4" closer to be usable with Python 3. |
| |
| * Tighten the API to make it harder to misuse in-tree .gitmodules |
| file, even though it shares the same syntax with configuration |
| files, to read random configuration items from it. |
| |
| |
| Fixes since v2.18 |
| ----------------- |
| |
| * "git remote update" can take both a single remote nickname and a |
| nickname for remote groups, and the completion script (in contrib/) |
| has been taught about it. |
| (merge 9cd4382ad5 ls/complete-remote-update-names later to maint). |
| |
| * "git fetch --shallow-since=<cutoff>" that specifies the cut-off |
| point that is newer than the existing history used to end up |
| grabbing the entire history. Such a request now errors out. |
| (merge e34de73c56 nd/reject-empty-shallow-request later to maint). |
| |
| * Fix for 2.17-era regression around `core.safecrlf`. |
| (merge 6cb09125be as/safecrlf-quiet-fix later to maint). |
| |
| * The recent addition of "partial clone" experimental feature kicked |
| in when it shouldn't, namely, when there is no partial-clone filter |
| defined even if extensions.partialclone is set. |
| (merge cac1137dc4 jh/partial-clone later to maint). |
| |
| * "git send-pack --signed" (hence "git push --signed" over the http |
| transport) did not read user ident from the config mechanism to |
| determine whom to sign the push certificate as, which has been |
| corrected. |
| (merge d067d98887 ms/send-pack-honor-config later to maint). |
| |
| * "git fetch-pack --all" used to unnecessarily fail upon seeing an |
| annotated tag that points at an object other than a commit. |
| (merge c12c9df527 jk/fetch-all-peeled-fix later to maint). |
| |
| * When user edits the patch in "git add -p" and the user's editor is |
| set to strip trailing whitespaces indiscriminately, an empty line |
| that is unchanged in the patch would become completely empty |
| (instead of a line with a sole SP on it). The code introduced in |
| Git 2.17 timeframe failed to parse such a patch, but now it learned |
| to notice the situation and cope with it. |
| (merge f4d35a6b49 pw/add-p-recount later to maint). |
| |
| * The code to try seeing if a fetch is necessary in a submodule |
| during a fetch with --recurse-submodules got confused when the path |
| to the submodule was changed in the range of commits in the |
| superproject, sometimes showing "(null)". This has been corrected. |
| |
| * "git submodule" did not correctly adjust core.worktree setting that |
| indicates whether/where a submodule repository has its associated |
| working tree across various state transitions, which has been |
| corrected. |
| (merge 984cd77ddb sb/submodule-core-worktree later to maint). |
| |
| * Bugfix for "rebase -i" corner case regression. |
| (merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint). |
| |
| * Recently added "--base" option to "git format-patch" command did |
| not correctly generate prereq patch ids. |
| (merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint). |
| |
| * POSIX portability fix in Makefile to fix a glitch introduced a few |
| releases ago. |
| (merge 6600054e9b dj/runtime-prefix later to maint). |
| |
| * "git filter-branch" when used with the "--state-branch" option |
| still attempted to rewrite the commits whose filtered result is |
| known from the previous attempt (which is recorded on the state |
| branch); the command has been corrected not to waste cycles doing |
| so. |
| (merge 709cfe848a mb/filter-branch-optim later to maint). |
| |
| * Clarify that setting core.ignoreCase to deviate from reality would |
| not turn a case-incapable filesystem into a case-capable one. |
| (merge 48294b512a ms/core-icase-doc later to maint). |
| |
| * Code cleanup, docfix, build fix, etc. |
| (merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint). |
| (merge 037714252f jc/clean-after-sanity-tests later to maint). |
| (merge 5b26c3c941 en/merge-recursive-cleanup later to maint). |
| (merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint). |
| (merge bb4d000e87 bw/protocol-v2 later to maint). |
| (merge 928f0ab4ba vs/typofixes later to maint). |
| (merge d7f590be84 en/rebase-i-microfixes later to maint). |
| (merge 81d395cc85 js/rebase-recreate-merge later to maint). |
| (merge 51d1863168 tz/exclude-doc-smallfixes later to maint). |
| (merge a9aa3c0927 ds/commit-graph later to maint). |
| (merge 5cf8e06474 js/enhanced-version-info later to maint). |