]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/RelNotes/2.27.0.txt
Merge branch 'jn/demote-proto2-from-default'
[thirdparty/git.git] / Documentation / RelNotes / 2.27.0.txt
CommitLineData
a7d14a44
JH
1Git 2.27 Release Notes
2======================
3
4Updates since v2.26
5-------------------
6
3bab5d56
JH
7Backward compatibility notes
8
9 * When "git describe C" finds that commit C is pointed by a signed or
10 annotated tag, which records T as its tagname in the object, the
11 command gives T as its answer. Even if the user renames or moves
12 such a tag from its natural location in the "refs/tags/" hierarchy,
13 "git describe C" would still give T as the answer, but in such a
14 case "git show T^0" would no longer work as expected. There may be
15 nothing at "refs/tags/T" or even worse there may be a different tag
16 instead.
17
18 Starting from this version, "git describe" will always use the
19 "long" version, as if the "--long" option were given, when giving
20 its output based on such a misplaced tag to work around the problem.
21
22 * "git pull" issues a warning message until the pull.rebase
23 configuration variable is explicitly given, which some existing
24 users may find annoying---those who prefer not to rebase need to
25 set the variable to false to squelch the warning.
26
27
a7d14a44
JH
28UI, Workflows & Features
29
30 * A handful of options to configure SSL when talking to proxies have
31 been added.
32
3bab5d56
JH
33 * Smudge/clean conversion filters are now given more information
34 (e.g. the object of the tree-ish in which the blob being converted
35 appears, in addition to its path, which has already been given).
36
37 * When "git describe C" finds an annotated tag with tagname A to be
38 the best name to explain commit C, and the tag is stored in a
39 "wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
40 command gave a warning message but used A (not B) to describe C.
41 If C is exactly at the tag, the describe output would be "A", but
42 "git rev-parse A^0" would not be equal as "git rev-parse C^0". The
43 behavior of the command has been changed to use the "long" form
44 i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.
45
46 * "git pull" learned to warn when no pull.rebase configuration
47 exists, and neither --[no-]rebase nor --ff-only is given (which
48 would result a merge).
49
e870325e
JH
50 * "git p4" learned four new hooks and also "--no-verify" option to
51 bypass them (and the existing "p4-pre-submit" hook).
52
53 * "git pull" shares many options with underlying "git fetch", but
54 some of them were not documented and some of those that would make
55 sense to pass down were not passed down.
56
57 * "git rebase" learned the "--no-gpg-sign" option to countermand
58 commit.gpgSign the user may have.
59
60 * The output from "git format-patch" uses RFC 2047 encoding for
61 non-ASCII letters on From: and Subject: headers, so that it can
62 directly be fed to e-mail programs. A new option has been added
63 to produce these headers in raw.
64
65 * "git log" learned "--show-pulls" that helps pathspec limited
66 history views; a merge commit that takes the whole change from a
67 side branch, which is normally omitted from the output, is shown
68 in addition to the commits that introduce real changes.
69
70 * The interactive input from various codepaths are consolidated and
71 any prompt possibly issued earlier are fflush()ed before we read.
72
73 * Allow "git rebase" to reapply all local commits, even if the may be
74 already in the upstream, without checking first.
75
76 * The 'pack.useSparse' configuration variable now defaults to 'true',
77 enabling an optimization that has been experimental since Git 2.21.
78
a7d14a44
JH
79
80Performance, Internal Implementation, Development Support etc.
81
82 * The advise API has been revamped to allow more systematic enumeration of
83 advice knobs in the future.
84
3bab5d56
JH
85 * SHA-256 transition continues.
86
87 * The code to interface with GnuPG has been refactored.
88
89 * "git stash" has kept an escape hatch to use the scripted version
90 for a few releases, which got stale. It has been removed.
91
e870325e
JH
92 * Enable tests that require GnuPG on Windows.
93
94 * Minor test usability improvement.
95
96 * Trace2 enhancement to allow logging of the environment variables.
97
98 * Test clean-up continues.
99
100 * Perf-test update.
101
102 * A Windows-specific test element has been made more robust against
103 misuse from both user's environment and programmer's errors.
104
a7d14a44
JH
105
106Fixes since v2.26
107-----------------
108
109 * The real_path() convenience function can easily be misused; with a
110 bit of code refactoring in the callers' side, its use has been
111 eliminated.
112 (merge 49d3c4b481 am/real-path-fix later to maint).
113
114 * Update "git p4" to work with Python 3.
115 (merge 6bb40ed20a yz/p4-py3 later to maint).
116
117 * The mechanism to prevent "git commit" from making an empty commit
118 or amending during an interrupted cherry-pick was broken during the
119 rewrite of "git rebase" in C, which has been corrected.
120 (merge 430b75f720 pw/advise-rebase-skip later to maint).
121
3bab5d56
JH
122 * Fix "git checkout --recurse-submodules" of a nested submodule
123 hierarchy.
124 (merge 846f34d351 pb/recurse-submodules-fix later to maint).
125
126 * The "--fork-point" mode of "git rebase" regressed when the command
127 was rewritten in C back in 2.20 era, which has been corrected.
128 (merge f08132f889 at/rebase-fork-point-regression-fix later to maint).
129
e870325e
JH
130 * The import-tars importer (in contrib/fast-import/) used to create
131 phony files at the top-level of the repository when the archive
132 contains global PAX headers, which made its own logic to detect and
133 omit the common leading directory ineffective, which has been
134 corrected.
135 (merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).
136
137 * Simplify the commit ancestry connectedness check in a partial clone
138 repository in which "promised" objects are assumed to be obtainable
139 lazily on-demand from promisor remote repositories.
140 (merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).
141
142 * The server-end of the v2 protocol to serve "git clone" and "git
143 fetch" was not prepared to see a delim packets at unexpected
144 places, which led to a crash.
145 (merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).
146
147 * When fed a midx that records no objects, some codepaths tried to
148 loop from 0 through (num_objects-1), which, due to integer
149 arithmetic wrapping around, made it nonsense operation with out of
150 bounds array accesses. The code has been corrected to reject such
151 an midx file.
152 (merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).
153
154 * Utitiles run via the run_command() API were not spawned correctly
155 on Cygwin, when the paths to them are given as a full path with
156 backslashes.
157 (merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).
158
159 * "git pull --rebase" tried to run a rebase even after noticing that
160 the pull results in a fast-forward and no rebase is needed nor
161 sensible, for the past few years due to a mistake nobody noticed.
162 (merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).
163
164 * "git rebase" with the merge backend did not work well when the
165 rebase.abbreviateCommands configuration was set.
166 (merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).
167
168 * The logic to auto-follow tags by "git clone --single-branch" was
169 not careful to avoid lazy-fetching unnecessary tags, which has been
170 corrected.
171 (merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).
172
173 * "git rebase -i" did not leave the reflog entries correctly.
174 (merge 1f6965f994 en/sequencer-reflog-action later to maint).
175
176 * The more aggressive updates to remote-tracking branches we had for
177 the past 7 years or so were not reflected in the documentation,
178 which has been corrected.
179 (merge a44088435c pb/pull-fetch-doc later to maint).
180
181 * We've left the command line parsing of "git log :/a/b/" broken for
182 about a full year without anybody noticing, which has been
183 corrected.
184 (merge 0220461071 jc/missing-ref-store-fix later to maint).
185
186 * Misc fixes for Windows.
187 (merge 3efc128cd5 js/mingw-fixes later to maint).
188
189 * "git rebase" (again) learns to honor "--no-keep-empty", which lets
190 the user to discard commits that are empty from the beginning (as
191 opposed to the ones that become empty because of rebasing). The
192 interactive rebase also marks commits that are empty in the todo.
193 (merge 50ed76148a en/rebase-no-keep-empty later to maint).
194
195 * Parsing the host part out of URL for the credential helper has been corrected.
196 (merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).
197
a7d14a44
JH
198 * Other code cleanup, docfix, build fix, etc.
199 (merge 564956f358 jc/maintain-doc later to maint).
200 (merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
201 (merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
202 (merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
203 (merge 8312aa7d74 jc/config-tar later to maint).
204 (merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
e870325e
JH
205 (merge 64d1022e14 ar/test-style-fixes later to maint).
206 (merge 4a465443a6 ds/doc-clone-filter later to maint).
207 (merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
208 (merge d3507cc712 js/test-junit-finalization-fix later to maint).
209 (merge 2149b6748f bc/faq later to maint).
210 (merge 12dc0879f1 jk/test-cleanup later to maint).
211 (merge 344420bf0f pb/rebase-doc-typofix later to maint).
212 (merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
213 (merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
214 (merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
215 (merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
216 (merge a1aba0c95c js/t0007-typofix later to maint).
217 (merge 76ba7fa225 ma/config-doc-fix later to maint).