]> git.ipfire.org Git - thirdparty/git.git/blob - Documentation/RelNotes/2.31.0.txt
docs/rev-list: add an examples section
[thirdparty/git.git] / Documentation / RelNotes / 2.31.0.txt
1 Git 2.31 Release Notes
2 ======================
3
4 Updates since v2.30
5 -------------------
6
7 Backward incompatible and other important changes
8
9 * The "pack-redundant" command, which has been left stale with almost
10 unusable performance issues, now warns loudly when it gets used, as
11 we no longer want to recommend its use (instead just "repack -d"
12 instead).
13
14 * The development community has adopted Contributor Covenant v2.0 to
15 update from v1.4 that we have been using.
16
17
18 UI, Workflows & Features
19
20 * The "--format=%(trailers)" mechanism gets enhanced to make it
21 easier to design output for machine consumption.
22
23 * When a user does not tell "git pull" to use rebase or merge, the
24 command gives a loud message telling a user to choose between
25 rebase or merge but creates a merge anyway, forcing users who would
26 want to rebase to redo the operation. Fix an early part of this
27 problem by tightening the condition to give the message---there is
28 no reason to stop or force the user to choose between rebase or
29 merge if the history fast-forwards.
30
31 * The configuration variable 'core.abbrev' can be set to 'no' to
32 force no abbreviation regardless of the hash algorithm.
33
34 * "git rev-parse" can be explicitly told to give output as absolute
35 or relative path with the `--path-format=(absolute|relative)` option.
36
37 * Bash completion (in contrib/) update to make it easier for
38 end-users to add completion for their custom "git" subcommands.
39
40 * "git maintenance" learned to drive scheduled maintenance on
41 platforms whose native scheduling methods are not 'cron'.
42
43 * After expiring a reflog and making a single commit, the reflog for
44 the branch would record a single entry that knows both @{0} and
45 @{1}, but we failed to answer "what commit were we on?", i.e. @{1}
46
47 * "git bundle" learns "--stdin" option to read its refs from the
48 standard input. Also, it now does not lose refs whey they point
49 at the same object.
50
51 * "git log" learned a new "--diff-merges=<how>" option.
52
53 * "git ls-files" can and does show multiple entries when the index is
54 unmerged, which is a source for confusion unless -s/-u option is in
55 use. A new option --deduplicate has been introduced.
56
57
58 Performance, Internal Implementation, Development Support etc.
59
60 * A 3-year old test that was not testing anything useful has been
61 corrected.
62
63 * Retire more names with "sha1" in it.
64
65 * The topological walk codepath is covered by new trace2 stats.
66
67 * Update the Code-of-conduct to version 2.0 from the upstream (we've
68 been using version 1.4).
69
70 * "git mktag" validates its input using its own rules before writing
71 a tag object---it has been updated to share the logic with "git
72 fsck".
73
74 * Two new ways to feed configuration variable-value pairs via
75 environment variables have been introduced, and the way
76 GIT_CONFIG_PARAMETERS encodes variable/value pairs has been tweaked
77 to make it more robust.
78
79 * Tests have been updated so that they do not to get affected by the
80 name of the default branch "git init" creates.
81
82 * "git fetch" learns to treat ref updates atomically in all-or-none
83 fashion, just like "git push" does, with the new "--atomic" option.
84
85 * The peel_ref() API has been replaced with peel_iterated_oid().
86
87 * The .use_shell flag in struct child_process that is passed to
88 run_command() API has been clarified with a bit more documentation.
89
90 * Document, clean-up and optimize the code around the cache-tree
91 extension in the index.
92
93 * The ls-refs protocol operation has been optimized to narrow the
94 sub-hierarchy of refs/ it walks to produce response.
95
96 * When removing many branches and tags, the code used to do so one
97 ref at a time. There is another API it can use to delete multiple
98 refs, and it makes quite a lot of performance difference when the
99 refs are packed.
100
101 * The "pack-objects" command needs to iterate over all the tags when
102 automatic tag following is enabled, but it actually iterated over
103 all refs and then discarded everything outside "refs/tags/"
104 hierarchy, which was quite wasteful.
105
106 * A perf script was made more portable.
107 (merge f08b6c553d jk/p5303-sed-portability-fix later to maint).
108
109 * Our setting of GitHub CI test jobs were a bit too eager to give up
110 once there is even one failure found. Tweak the knob to allow
111 other jobs keep running even when we see a failure, so that we can
112 find more failures in a single run.
113 (merge 2b0e14f640 pb/ci-matrix-wo-shortcut later to maint).
114
115 * We've carried compatibility codepaths for compilers without
116 variadic macros for quite some time, but the world may be ready for
117 them to be removed. Force compilation failure on exotic platforms
118 where variadic macros are not available to find out who screams in
119 such a way that we can easily revert if it turns out that the world
120 is not yet ready.
121
122
123 Fixes since v2.30
124 -----------------
125
126 * Diagnose command line error of "git rebase" early.
127 (merge ca5120c339 rs/rebase-commit-validation later to maint).
128
129 * Clean up option descriptions in "git cmd --help".
130 (merge e73fe3dd02 zh/arg-help-format later to maint).
131
132 * "git stash" did not work well in a sparsely checked out working
133 tree.
134 (merge ba359fd507 en/stash-apply-sparse-checkout later to maint).
135
136 * Some tests expect that "ls -l" output has either '-' or 'x' for
137 group executable bit, but setgid bit can be inherited from parent
138 directory and make these fields 'S' or 's' instead, causing test
139 failures.
140 (merge ea8bbf2a4e mt/t4129-with-setgid-dir later to maint).
141
142 * "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
143 any repository when the configuration variable <var> is not defined
144 even once.
145 (merge 6c62f01552 ds/for-each-repo-noopfix later to maint).
146
147 * Fix 2.29 regression where "git mergetool --tool-help" fails to list
148 all the available tools.
149 (merge 80f5a16798 pb/mergetool-tool-help-fix later to maint).
150
151 * Fix for procedure to building CI test environment for mac.
152 (merge 3831132ace jc/macos-install-dependencies-fix later to maint).
153
154 * The implementation of "git branch --sort" wrt the detached HEAD
155 display has always been hacky, which has been cleaned up.
156 (merge 4045f659bd ab/branch-sort later to maint).
157
158 * Newline characters in the host and path part of git:// URL are
159 now forbidden.
160 (merge 6aed56736b jk/forbid-lf-in-git-url later to maint).
161
162 * "git diff" showed a submodule working tree with untracked cruft as
163 "Submodule commit <objectname>-dirty", but a natural expectation is
164 that the "-dirty" indicator would align with "git describe --dirty",
165 which does not consider having untracked files in the working tree
166 as source of dirtiness. The inconsistency has been fixed.
167
168 * When more than one commit with the same patch ID appears on one
169 side, "git log --cherry-pick A...B" did not exclude them all when a
170 commit with the same patch ID appears on the other side. Now it
171 does.
172 (merge c9e3a4e76d jk/log-cherry-pick-duplicate-patches later to maint).
173
174 * Documentation for "git fsck" lost stale bits that has become
175 incorrect.
176 (merge 28cc00a13d ab/fsck-doc-fix later to maint).
177
178 * Doc fix for packfile URI feature.
179 (merge bfc2a36ff2 jt/packfile-as-uri-doc later to maint).
180
181 * Other code cleanup, docfix, build fix, etc.
182 (merge 505a276596 pk/subsub-fetch-fix-take-2 later to maint).
183 (merge 33fc56253b fc/t6030-bisect-reset-removes-auxiliary-files later to maint).
184 (merge 7efc378205 ta/doc-typofix later to maint).
185 (merge 1f4e9319c7 pb/doc-modules-git-work-tree-typofix later to maint).
186 (merge 04f6b0a192 ma/t1300-cleanup later to maint).
187 (merge 7b77f5a13e ma/doc-pack-format-varint-for-sizes later to maint).
188 (merge cc2d43be2b nk/perf-fsmonitor-cleanup later to maint).
189 (merge c8302c6c00 ar/t6016-modernise later to maint).
190 (merge 0454986e78 jc/sign-off later to maint).
191 (merge 155067ab4f vv/send-email-with-less-secure-apps-access later to maint).
192 (merge acaabcf391 jk/t5516-deflake later to maint).
193 (merge a1e03535db ad/t4129-setfacl-target-fix later to maint).
194 (merge b356d23638 ug/doc-lose-dircache later to maint).
195 (merge 9371c0e9dd ab/gettext-charset-comment-fix later to maint).
196 (merge 52fc4f195c dl/p4-encode-after-kw-expansion later to maint).
197 (merge 4eb56b56e7 bc/doc-status-short later to maint).
198 (merge a4a1ca22ef tb/local-clone-race-doc later to maint).
199 (merge 6a8c89d053 ma/more-opaque-lock-file later to maint).
200 (merge 4a5ec7d166 js/skip-dashed-built-ins-from-config-mak later to maint).
201 (merge 6eaf624dea pb/blame-funcname-range-userdiff later to maint).