Merge branch 'es/test-chain-lint'
[git/debian.git] / Documentation / RelNotes / 2.35.0.txt
blobdc72843e1633aaaa8763c970b5a1bf853435e891
1 Git 2.35 Release Notes
2 ======================
4 Updates since Git 2.34
5 ----------------------
7 Backward compatibility warts
9  * "_" is now treated as any other URL-valid characters in an URL when
10    matching the per-URL configuration variable names.
13 UI, Workflows & Features
15  * "git status --porcelain=v2" now show the number of stash entries
16    with --show-stash like the normal output does.
18  * "git stash" learned the "--staged" option to stash away what has
19    been added to the index (and nothing else).
21  * "git var GIT_DEFAULT_BRANCH" is a way to see what name is used for
22    the newly created branch if "git init" is run.
24  * Various operating modes of "git reset" have been made to work
25    better with the sparse index.
27  * "git submodule deinit" for a submodule whose .git metadata
28    directory is embedded in its working tree refused to work, until
29    the submodule gets converted to use the "absorbed" form where the
30    metadata directory is stored in superproject, and a gitfile at the
31    top-level of the working tree of the submodule points at it.  The
32    command is taught to convert such submodules to the absorbed form
33    as needed.
35  * The completion script (in contrib/) learns that the "--date"
36    option of commands from the "git log" family takes "human" and
37    "auto" as valid values.
39  * "Zealous diff3" style of merge conflict presentation has been added.
41  * The "git log --format=%(describe)" placeholder has been extended to
42    allow passing selected command-line options to the underlying "git
43    describe" command.
45  * "default" and "reset" have been added to our color palette.
47  * The cryptographic signing using ssh keys can specify literal keys
48    for keytypes whose name do not begin with the "ssh-" prefix by
49    using the "key::" prefix mechanism (e.g. "key::ecdsa-sha2-nistp256").
51  * "git fetch" without the "--update-head-ok" option ought to protect
52    a checked out branch from getting updated, to prevent the working
53    tree that checks it out to go out of sync.  The code was written
54    before the use of "git worktree" got widespread, and only checked
55    the branch that was checked out in the current worktree, which has
56    been updated.
58  * "git name-rev" has been tweaked to give output that is shorter and
59    easier to understand.
61  * "git apply" has been taught to ignore a message without a patch
62    with the "--allow-empty" option.  It also learned to honor the
63    "--quiet" option given from the command line.
66 Performance, Internal Implementation, Development Support etc.
68  * The use of errno as a means to carry the nature of error in the ref
69    API implementation has been reworked and reduced.
71  * Teach and encourage first-time contributors to this project to
72    state the base commit when they submit their topic.
74  * The command line complation for "git send-email" options have been
75    tweaked to make it easier to keep it in sync with the command itself.
77  * Ensure that the sparseness of the in-core index matches the
78    index.sparse configuration specified by the repository immediately
79    after the on-disk index file is read.
81  * Code clean-up to eventually allow information on remotes defined
82    for an arbitrary repository to be read.
84  * Build optimization.
86  * Tighten code for testing pack-bitmap.
88  * Weather balloon to break people with compilers that do not support
89    C99.
91  * The "reftable" backend for the refs API, without integrating into
92    the refs subsystem, has been added.
94  * More tests are marked as leak-free.
96  * The test framework learns to list unsatisfied test prerequisites,
97    and optionally error out when prerequisites that are expected to be
98    satisfied are not.
100  * The default setting for trace2 event nesting was too low to cause
101    test failures, which is worked around by bumping it up in the test
102    framework.
104  * Drop support for TravisCI and update test workflows at GitHub.
106  * Many tests that used to need GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
107    mechanism to force "git" to use 'master' as the default name for
108    the initial branch no longer need it; the use of the mechanism from
109    them have been removed.
111  * Allow running our tests while disabling fsync.
113  * Document the parameters given to the reflog entry iterator callback
114    functions.
115    (merge e6e94f34b2 jc/reflog-iterator-callback-doc later to maint).
117  * The test helper for refs subsystem learned to write bogus and/or
118    nonexistent object name to refs to simulate error situations we
119    want to test Git in.
121  * "diff --histogram" optimization.
123  * Weather balloon to find compilers that do not grok variable
124    declaration in the for() loop.
126  * diff and blame commands have been taught to work better with sparse
127    index.
129  * The chainlint test script linter in the test suite has been updated.
131  * The DEVELOPER=yes build uses -std=gnu99 now.
134 Fixes since v2.34
135 -----------------
137  * "git grep" looking in a blob that has non-UTF8 payload was
138    completely broken when linked with certain versions of PCREv2
139    library in the latest release.
141  * Other code cleanup, docfix, build fix, etc.
143  * "git pull" with any strategy when the other side is behind us
144    should succeed as it is a no-op, but doesn't.
146  * An earlier change in 2.34.0 caused JGit application (that abused
147    GIT_EDITOR mechanism when invoking "git config") to get stuck with
148    a SIGTTOU signal; it has been reverted.
150  * An earlier change that broke .gitignore matching has been reverted.
152  * Things like "git -c branch.sort=bogus branch new HEAD", i.e. the
153    operation modes of the "git branch" command that do not need the
154    sort key information, no longer errors out by seeing a bogus sort
155    key.
156    (merge 98e7ab6d42 jc/fix-ref-sorting-parse later to maint).
158  * The compatibility implementation for unsetenv(3) were written to
159    mimic ancient, non-POSIX, variant seen in an old glibc; it has been
160    changed to return an integer to match the more modern era.
161    (merge a38989bd5b jc/unsetenv-returns-an-int later to maint).
163  * The clean/smudge conversion code path has been prepared to better
164    work on platforms where ulong is narrower than size_t.
165    (merge 596b5e77c9 mc/clean-smudge-with-llp64 later to maint).
167  * Redact the path part of packfile URI that appears in the trace output.
168    (merge 0ba558ffb1 if/redact-packfile-uri later to maint).
170  * CI has been taught to catch some Unicode directional formatting
171    sequence that can be used in certain mischief.
172    (merge 0e7696c64d js/ci-no-directional-formatting later to maint).
174  * The "--date=format:<strftime>" gained a workaround for the lack of
175    system support for a non-local timezone to handle "%s" placeholder.
176    (merge 9b591b9403 jk/strbuf-addftime-seconds-since-epoch later to maint).
178  * The "merge" subcommand of "git jump" (in contrib/) silently ignored
179    pathspec and other parameters.
180    (merge 67ba13e5a4 jk/jump-merge-with-pathspec later to maint).
182  * The code to decode the length of packed object size has been
183    corrected.
184    (merge 34de5b8eac jt/pack-header-lshift-overflow later to maint).
186  * The advice message given by "git pull" when the user hasn't made a
187    choice between merge and rebase still said that the merge is the
188    default, which no longer is the case.  This has been corrected.
189    (merge 71076d0edd ah/advice-pull-has-no-preference-between-rebase-and-merge later to maint).
191  * "git fetch", when received a bad packfile, can fail with SIGPIPE.
192    This wasn't wrong per-se, but we now detect the situation and fail
193    in a more predictable way.
194    (merge 2a4aed42ec jk/fetch-pack-avoid-sigpipe-to-index-pack later to maint).
196  * The function to cull a child process and determine the exit status
197    had two separate code paths for normal callers and callers in a
198    signal handler, and the latter did not yield correct value when the
199    child has caught a signal.  The handling of the exit status has
200    been unified for these two code paths.  An existing test with
201    flakiness has also been corrected.
202    (merge 5263e22cba jk/t7006-sigpipe-tests-fix later to maint).
204  * When a non-existent program is given as the pager, we tried to
205    reuse an uninitialized child_process structure and crashed, which
206    has been fixed.
207    (merge f917f57f40 em/missing-pager later to maint).
209  * The single-key-input mode in "git add -p" had some code to handle
210    keys that generate a sequence of input via ReadKey(), which did not
211    handle end-of-file correctly, which has been fixed.
212    (merge fc8a8126df cb/add-p-single-key-fix later to maint).
214  * "git rebase -x" added an unnecessary 'exec' instructions before
215    'noop', which has been corrected.
216    (merge cc9dcdee61 en/rebase-x-fix later to maint).
218  * When the "git push" command is killed while the receiving end is
219    trying to report what happened to the ref update proposals, the
220    latter used to die, due to SIGPIPE.  The code now ignores SIGPIPE
221    to increase our chances to run the post-receive hook after it
222    happens.
223    (merge d34182b9e3 rj/receive-pack-avoid-sigpipe-during-status-reporting later to maint).
225  * "git worktree add" showed "Preparing worktree" message to the
226    standard output stream, but when it failed, the message from die()
227    went to the standard error stream.  Depending on the order the
228    stdio streams are flushed at the program end, this resulted in
229    confusing output.  It has been corrected by sending all the chatty
230    messages to the standard error stream.
231    (merge b50252484f es/worktree-chatty-to-stderr later to maint).
233  * Coding guideline document has been updated to clarify what goes to
234    standard error in our system.
235    (merge e258eb4800 es/doc-stdout-vs-stderr later to maint).
237  * The sparse-index/sparse-checkout feature had a bug in its use of
238    the matching code to determine which path is in or outside the
239    sparse checkout patterns.
240    (merge 8c5de0d265 ds/sparse-deep-pattern-checkout-fix later to maint).
242  * "git rebase -x" by mistake started exporting the GIT_DIR and
243    GIT_WORK_TREE environment variables when the command was rewritten
244    in C, which has been corrected.
245    (merge 434e0636db en/rebase-x-wo-git-dir-env later to maint).
247  * When "git log" implicitly enabled the "decoration" processing
248    without being explicitly asked with "--decorate" option, it failed
249    to read and honor the settings given by the "--decorate-refs"
250    option.
252  * "git fetch --set-upstream" did not check if there is a current
253    branch, leading to a segfault when it is run on a detached HEAD,
254    which has been corrected.
255    (merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint).
257  * Other code cleanup, docfix, build fix, etc.
258    (merge 74db416c9c cw/protocol-v2-doc-fix later to maint).
259    (merge f9b2b6684d ja/doc-cleanup later to maint).
260    (merge 7d1b866778 jc/fix-first-object-walk later to maint).
261    (merge 538ac74604 js/trace2-avoid-recursive-errors later to maint).
262    (merge 152923b132 jk/t5319-midx-corruption-test-deflake later to maint).
263    (merge 9081a421a6 ab/checkout-branch-info-leakfix later to maint).
264    (merge 42c456ff81 rs/mergesort later to maint).
265    (merge ad506e6780 tl/midx-docfix later to maint).
266    (merge bf5b83fd8a hk/ci-checkwhitespace-commentfix later to maint).
267    (merge 49f1eb3b34 jk/refs-g11-workaround later to maint).
268    (merge 7d3fc7df70 jt/midx-doc-fix later to maint).
269    (merge 7b089120d9 hn/create-reflog-simplify later to maint).
270    (merge 9e12400da8 cb/mingw-gmtime-r later to maint).
271    (merge 0bf0de6cc7 tb/pack-revindex-on-disk-cleanup later to maint).
272    (merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint).
273    (merge eafd6e7e55 ab/die-with-bug later to maint).
274    (merge 91028f7659 jc/grep-patterntype-default-doc later to maint).