Second batch for 2.19 cycle
[git/git.git] / Documentation / RelNotes / 2.19.0.txt
1 Git 2.19 Release Notes
2 ======================
3
4 Updates since v2.18
5 -------------------
6
7 UI, Workflows & Features
8
9 * "git diff" compares the index and the working tree. For paths
10 added with intent-to-add bit, the command shows the full contents
11 of them as added, but the paths themselves were not marked as new
12 files. They are now shown as new by default.
13
14 "git apply" learned the "--intent-to-add" option so that an
15 otherwise working-tree-only application of a patch will add new
16 paths to the index marked with the "intent-to-add" bit.
17
18
19 Performance, Internal Implementation, Development Support etc.
20
21 * The bulk of "git submodule foreach" has been rewritten in C.
22
23 * The in-core "commit" object had an all-purpose "void *util" field,
24 which was tricky to use especially in library-ish part of the
25 code. All of the existing uses of the field has been migrated to a
26 more dedicated "commit-slab" mechanism and the field is eliminated.
27
28 * A less often used command "git show-index" has been modernized.
29 (merge fb3010c31f jk/show-index later to maint).
30
31 * The conversion to pass "the_repository" and then "a_repository"
32 throughout the object access API continues.
33
34 * Continuing with the idea to programatically enumerate various
35 pieces of data required for command line completion, teach the
36 codebase to report the list of configuration variables
37 subcommands care about to help complete them.
38
39 * Separate "rebase -p" codepath out of "rebase -i" implementation to
40 slim down the latter and make it easier to manage.
41
42 * Make refspec parsing codepath more robust.
43
44 * Some flaky tests have been fixed.
45
46 * Continuing with the idea to programmatically enumerate various
47 pieces of data required for command line completion, the codebase
48 has been taught to enumerate options prefixed with "--no-" to
49 negate them.
50
51 * Build and test procedure for netrc credential helper (in contrib/)
52 has been updated.
53
54
55 Fixes since v2.18
56 -----------------
57
58 * "git remote update" can take both a single remote nickname and a
59 nickname for remote groups, and the completion script (in contrib/)
60 has been taught about it.
61 (merge 9cd4382ad5 ls/complete-remote-update-names later to maint).
62
63 * "git fetch --shallow-since=<cutoff>" that specifies the cut-off
64 point that is newer than the existing history used to end up
65 grabbing the entire history. Such a request now errors out.
66 (merge e34de73c56 nd/reject-empty-shallow-request later to maint).
67
68 * Fix for 2.17-era regression around `core.safecrlf`.
69 (merge 6cb09125be as/safecrlf-quiet-fix later to maint).
70
71 * The recent addition of "partial clone" experimental feature kicked
72 in when it shouldn't, namely, when there is no partial-clone filter
73 defined even if extensions.partialclone is set.
74 (merge cac1137dc4 jh/partial-clone later to maint).
75
76 * "git send-pack --signed" (hence "git push --signed" over the http
77 transport) did not read user ident from the config mechanism to
78 determine whom to sign the push certificate as, which has been
79 corrected.
80 (merge d067d98887 ms/send-pack-honor-config later to maint).
81
82 * "git fetch-pack --all" used to unnecessarily fail upon seeing an
83 annotated tag that points at an object other than a commit.
84 (merge c12c9df527 jk/fetch-all-peeled-fix later to maint).
85
86 * When user edits the patch in "git add -p" and the user's editor is
87 set to strip trailing whitespaces indiscriminately, an empty line
88 that is unchanged in the patch would become completely empty
89 (instead of a line with a sole SP on it). The code introduced in
90 Git 2.17 timeframe failed to parse such a patch, but now it learned
91 to notice the situation and cope with it.
92 (merge f4d35a6b49 pw/add-p-recount later to maint).
93
94 * The code to try seeing if a fetch is necessary in a submodule
95 during a fetch with --recurse-submodules got confused when the path
96 to the submodule was changed in the range of commits in the
97 superproject, sometimes showing "(null)". This has been corrected.
98
99 * Code cleanup.
100 (merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint).
101 (merge 037714252f jc/clean-after-sanity-tests later to maint).