Merge branch 'es/outside-repo-errmsg-hints'
[git] / Documentation / RelNotes / 2.26.0.txt
1 Git 2.26 Release Notes
2 ======================
3
4 Updates since v2.25
5 -------------------
6
7 UI, Workflows & Features
8
9  * Sample credential helper for using .netrc has been updated to work
10    out of the box.
11
12  * gpg.minTrustLevel configuration variable has been introduced to
13    tell various signature verification codepaths the required minimum
14    trust level.
15
16  * The command line completion (in contrib/) learned to complete
17    subcommands and arguments to "git worktree".
18
19  * Disambiguation logic to tell revisions and pathspec apart has been
20    tweaked so that backslash-escaped glob special characters do not
21    count in the "wildcards are pathspec" rule.
22
23  * One effect of specifying where the GIT_DIR is (either with the
24    environment variable, or with the "git --git-dir=<where> cmd"
25    option) is to disable the repository discovery.  This has been
26    placed a bit more stress in the documentation, as new users often
27    get confused.
28
29  * Two help messages given when "git add" notices the user gave it
30    nothing to add have been updated to use advise() API.
31
32  * A new version of fsmonitor-watchman hook has been introduced, to
33    avoid races.
34
35
36 Performance, Internal Implementation, Development Support etc.
37
38  * Tell .editorconfig that in this project, *.txt files are indented
39    with tabs.
40
41  * The test-lint machinery knew to check "VAR=VAL shell_function"
42    construct, but did not check "VAR= shell_funciton", which has been
43    corrected.
44
45  * Replace "git config --bool" calls with "git config --type=bool" in
46    sample templates.
47
48  * The effort to move "git-add--interactive" to C continues.
49
50  * Improve error message generation for "git submodule add".
51
52  * Preparation of test scripts for the day when the object names will
53    use SHA-256 continues.
54
55  * Warn programmers about pretend_object_file() that allows the code
56    to tentatively use in-core objects.
57
58  * The way "git pack-objects" reuses objects stored in existing pack
59    to generate its result has been improved.
60
61  * The transport protocol version 2 becomes the default one.
62
63  * Traditionally, we avoided threaded grep while searching in objects
64    (as opposed to files in the working tree) as accesses to the object
65    layer is not thread-safe.  This limitation is getting lifted.
66
67  * "git rebase -i" (and friends) used to unnecessarily check out the
68    tip of the branch to be rebased, which has been corrected.
69
70  * A low-level API function get_oid(), that accepts various ways to
71    name an object, used to issue end-user facing error messages
72    without l10n, which has been updated to be translatable.
73
74  * Unneeded connectivity check is now disabled in a partial clone when
75    fetching into it.
76
77  * Some rough edges in the sparse-checkout feature, especially around
78    the cone mode, have been cleaned up.
79
80  * The diff-* plumbing family of subcommands now pay attention to the
81    diff.wsErrorHighlight configuration, which has been ignored before;
82    this allows "git add -p" to also show the whitespace problems to
83    the end user.
84
85  * Some codepaths were given a repository instance as a parameter to
86    work in the repository, but passed the_repository instance to its
87    callees, which has been cleaned up (somewhat).
88
89
90 Fixes since v2.25
91 -----------------
92
93  * "git commit" gives output similar to "git status" when there is
94    nothing to commit, but without honoring the advise.statusHints
95    configuration variable, which has been corrected.
96    (merge 5c4f55f1f6 hw/commit-advise-while-rejecting later to maint).
97
98  * has_object_file() said "no" given an object registered to the
99    system via pretend_object_file(), making it inconsistent with
100    read_object_file(), causing lazy fetch to attempt fetching an
101    empty tree from promisor remotes.
102    (merge 9c8a294a1a jt/sha1-file-remove-oi-skip-cached later to maint).
103
104  * Complete an update to tutorial that encourages "git switch" over
105    "git checkout" that was done only half-way.
106    (merge 1a7e454dd6 hw/tutorial-favor-switch-over-checkout later to maint).
107
108  * C pedantry ;-) fix.
109    (merge 63ab08fb99 bc/run-command-nullness-after-free-fix later to maint).
110
111  * The code that tries to skip over the entries for the paths in a
112    single directory using the cache-tree was not careful enough
113    against corrupt index file.
114    (merge 573117dfa5 es/unpack-trees-oob-fix later to maint).
115
116  * Reduce unnecessary round-trip when running "ls-remote" over the
117    stateless RPC mechanism.
118    (merge 4d8cab95cc jk/no-flush-upon-disconnecting-slrpc-transport later to maint).
119
120  * "git restore --staged" did not correctly update the cache-tree
121    structure, resulting in bogus trees to be written afterwards, which
122    has been corrected.
123    (merge e701bab3e9 nd/switch-and-restore later to maint).
124
125  * The code recently added to move to the entry beyond the ones in the
126    same directory in the index in the sparse-cone mode did not count
127    the number of entries to skip over incorrectly, which has been
128    corrected.
129    (merge 7210ca4ee5 ds/sparse-cone later to maint).
130
131  * Rendering by "git log --graph" of ancestry lines leading to a merge
132    commit were made suboptimal to waste vertical space a bit with a
133    recent update, which has been corrected.
134    (merge c958d3bd0a ds/graph-horizontal-edges later to maint).
135
136  * Work around test breakages caused by custom regex engine used in
137    libasan, when address sanitizer is used with more recent versions
138    of gcc and clang.
139    (merge f65d07fffa jk/asan-build-fix later to maint).
140
141  * Minor bugfixes to "git add -i" that has recently been rewritten in C.
142    (merge 849e43cc18 js/builtin-add-i-cmds later to maint).
143
144  * "git fetch --refmap=" option has got a better documentation.
145    (merge b40a50264a ds/refmap-doc later to maint).
146
147  * "git checkout X" did not correctly fail when X is not a local
148    branch but could name more than one remote-tracking branches
149    (i.e. to be dwimmed as the starting point to create a corresponding
150    local branch), which has been corrected.
151    (merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint).
152
153  * Corner case bugs in "git clean" that stems from a (necessarily for
154    performance reasons) awkward calling convention in the directory
155    enumeration API has been corrected.
156    (merge 0cbb60574e en/fill-directory-fixes-more later to maint).
157
158  * A fetch that is told to recursively fetch updates in submodules
159    inevitably produces reams of output, and it becomes hard to spot
160    error messages.  The command has been taught to enumerate
161    submodules that had errors at the end of the operation.
162    (merge 0222540827 es/fetch-show-failed-submodules-atend later to maint).
163
164  * The "--recurse-submodules" option of various subcommands did not
165    work well when run in an alternate worktree, which has been
166    corrected.
167    (merge a9472afb63 pb/recurse-submodule-in-worktree-fix later to maint).
168
169  * Futureproofing a test not to depend on the current implementation
170    detail.
171    (merge b54128bb0b jt/t5616-robustify later to maint).
172
173  * Running "git rm" on a submodule failed unnecessarily when
174    .gitmodules is only cache-dirty, which has been corrected.
175    (merge 7edee32985 dt/submodule-rm-with-stale-cache later to maint).
176
177  * C pedantry ;-) fix.
178    (merge cf82bff73f jk/clang-sanitizer-fixes later to maint).
179
180  * "git grep --no-index" should not get affected by the contents of
181    the .gitmodules file but when "--recurse-submodules" is given or
182    the "submodule.recurse" variable is set, it did.  Now these
183    settings are ignored in the "--no-index" mode.
184    (merge c56c48dd07 pb/do-not-recurse-grep-no-index later to maint).
185
186  * Technical details of the bundle format has been documented.
187    (merge 7378ec90e1 ms/doc-bundle-format later to maint).
188
189  * Unhelpful warning messages during documentation build have been squelched.
190    (merge 30183894ea js/ci-squelch-doc-warning later to maint).
191
192  * "git rebase -i" identifies existing commits in its todo file with
193    their abbreviated object name, which could become ambigous as it
194    goes to create new commits, and has a mechanism to avoid ambiguity
195    in the main part of its execution.  A few other cases however were
196    not covered by the protection against ambiguity, which has been
197    corrected.
198    (merge 26027625dd js/rebase-i-with-colliding-hash later to maint).
199
200  * Allow the rebase.missingCommitsCheck configuration to kick in when
201    "rebase --edit-todo" and "rebase --continue" restarts the procedure.
202    (merge 5a5445d878 ag/edit-todo-drop-check later to maint).
203
204  * The way "git submodule status" reports an initialized but not yet
205    populated submodule has not been reimplemented correctly when a
206    part of the "git submodule" command was rewritten in C, which has
207    been corrected.
208    (merge f38c92452d pk/status-of-uncloned-submodule later to maint).
209
210  * The code to automatically shrink the fan-out in the notes tree had
211    an off-by-one bug, which has been killed.
212    (merge dbc27477ff jh/notes-fanout-fix later to maint).
213
214  * The index-pack code now diagnoses a bad input packstream that
215    records the same object twice when it is used as delta base; the
216    code used to declare a software bug when encountering such an
217    input, but it is an input error.
218    (merge a21781011f jk/index-pack-dupfix later to maint).
219
220  * The code to compute the commit-graph has been taught to use a more
221    robust way to tell if two object directories refer to the same
222    thing.
223    (merge a7df60cac8 tb/commit-graph-object-dir later to maint).
224
225  * Other code cleanup, docfix, build fix, etc.
226    (merge 26f924d50e en/simplify-check-updates-in-unpack-trees later to maint).
227    (merge 065027ee1a en/string-list-can-be-custom-sorted later to maint).
228    (merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint).
229    (merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint).
230    (merge e4837b4406 jk/test-fixes later to maint).
231    (merge a4ffbbbb99 rt/submodule-i18n later to maint).
232    (merge 856249c62a bc/actualmente later to maint).
233    (merge c513a958b6 ss/t6025-modernize later to maint).
234    (merge 69e104d70e bc/author-committer-doc later to maint).
235    (merge 7a2dc95cbc bc/misconception-doc later to maint).
236    (merge b441717256 dl/test-must-fail-fixes later to maint).
237    (merge d031049da3 mt/sparse-checkout-doc-update later to maint).
238    (merge 145136a95a jc/skip-prefix later to maint).
239    (merge eb31044ff7 jb/multi-pack-index-docfix later to maint).
240    (merge 04e5b3f0b4 km/submodule-doc-use-sm-path later to maint).
241    (merge e469afe158 ma/filter-branch-doc-caret later to maint).
242    (merge 395518cf7a jb/parse-options-message-fix later to maint).
243    (merge 303b3c1c46 es/submodule-fetch-message-fix later to maint).
244    (merge 9299f84921 ma/diff-doc-clarify-regexp-example later to maint).
245    (merge 2b0f19fa7a js/convert-typofix later to maint).
246    (merge 5290d45134 jk/alloc-cleanups later to maint).