The seventh batch
[git.git] / Documentation / RelNotes / 2.28.0.txt
blob6baf781380b5db4c9d8260c0a15ead391c7db54e
1 Git 2.28 Release Notes
2 ======================
4 Updates since v2.27
5 -------------------
7 Backward compatibility notes
9  * "fetch.writeCommitGraph" is deemed to be still a bit too risky and
10    is no longer part of the "feature.experimental" set.
13 UI, Workflows & Features
15  * The commands in the "diff" family learned to honor "diff.relative"
16    configuration variable.
18  * The check in "git fsck" to ensure that the tree objects are sorted
19    still had corner cases it missed unsorted entries.
21  * The interface to redact sensitive information in the trace output
22    has been simplified.
24  * The command line completion (in contrib/) learned to complete
25    options that the "git switch" command takes.
27  * "git diff" used to take arguments in random and nonsense range
28    notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
29    which has been cleaned up.
31  * "git diff-files" has been taught to say paths that are marked as
32    intent-to-add are new files, not modified from an empty blob.
34  * "git status" learned to report the status of sparse checkout.
36  * "git difftool" has trouble dealing with paths added to the index
37    with the intent-to-add bit.
39  * "git fast-export --anonymize" learned to take customized mapping to
40    allow its users to tweak its output more usable for debugging.
42  * The command line completion support (in contrib/) used to be
43    prepared to work with "set -u" but recent changes got a bit more
44    sloppy.  This has been corrected.
46  * "git gui" now allows opening work trees from the start-up dialog.
49 Performance, Internal Implementation, Development Support etc.
51  * Code optimization for a common case.
52    (merge 8777616e4d an/merge-single-strategy-optim later to maint).
54  * We've adopted a convention that any on-stack structure can be
55    initialized to have zero values in all fields with "= { 0 }",
56    even when the first field happens to be a pointer, but sparse
57    complained that a null pointer should be spelled NULL for a long
58    time.  Start using -Wno-universal-initializer option to squelch
59    it (the latest sparse has it on by default).
61  * "git log -L..." now takes advantage of the "which paths are touched
62    by this commit?" info stored in the commit-graph system.
64  * As FreeBSD is not the only platform whose regexp library reports
65    a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
66    automatically and skip the affected tests.
68  * "git bugreport" learns to report what shell is in use.
70  * Support for GIT_CURL_VERBOSE has been rewritten in terms of
71    GIT_TRACE_CURL.
73  * Preliminary clean-ups around refs API, plus file format
74    specification documentation for the reftable backend.
76  * Workaround breakage in MSVC build, where "curl-config --cflags"
77    gives settings appropriate for GCC build.
79  * Code clean-up of "git clean" resulted in a fix of recent
80    performance regression.
82  * Code clean-up in the codepath that serves "git fetch" continues.
84  * "git merge-base --is-ancestor" is taught to take advantage of the
85    commit graph.
87  * Rewrite of parts of the scripted "git submodule" Porcelain command
88    continues; this time it is "git submodule set-branch" subcommand's
89    turn.
91  * The "fetch/clone" protocol has been updated to allow the server to
92    instruct the clients to grab pre-packaged packfile(s) in addition
93    to the packed object data coming over the wire.
95  * A misdesigned strbuf_write_fd() function has been retired.
97  * SHA-256 migration work continues, including CVS/SVN interface.
99  * A few fields in "struct commit" that do not have to always be
100    present have been moved to commit slabs.
102  * API cleanup for get_worktrees()
104  * By renumbering object flag bits, "struct object" managed to lose
105    bloated inter-field padding.
107  * The name of the primary branch in existing repositories, and the
108    default name used for the first branch in newly created
109    repositories, is made configurable, so that we can eventually wean
110    ourselves off of the hardcoded 'master'.
112  * The effort to avoid using test_must_fail on non-git command continues.
114  * In 2.28-rc0, we corrected a bug that some repository extensions are
115    honored by mistake even in a version 0 repositories (these
116    configuration variables in extensions.* namespace were supposed to
117    have special meaning in repositories whose version numbers are 1 or
118    higher), but this was a bit too big a change.  The behaviour in
119    recent versions of Git where certain extensions.* were honored by
120    mistake even in version 0 repositories has been restored.
123 Fixes since v2.27
124 -----------------
126  * The "--prepare-p4-only" option of "git p4" is supposed to stop
127    after replaying one changeset, but kept going (by mistake?)
129  * The error message from "git checkout -b foo -t bar baz" was
130    confusing.
132  * Some repositories in the wild have commits that record nonsense
133    committer timezone (e.g. rails.git); "git fast-import" learned an
134    option to pass these nonsense timestamps intact to allow recreating
135    existing repositories as-is.
136    (merge d42a2fb72f en/fast-import-looser-date later to maint).
138  * The command line completion script (in contrib/) tried to complete
139    "git stash -p" as if it were "git stash push -p", but it was too
140    aggressive and also affected "git stash show -p", which has been
141    corrected.
142    (merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).
144  * On-the-wire protocol v2 easily falls into a deadlock between the
145    remote-curl helper and the fetch-pack process when the server side
146    prematurely throws an error and disconnects.  The communication has
147    been updated to make it more robust.
149  * "git checkout -p" did not handle a newly added path at all.
150    (merge 2c8bd8471a js/checkout-p-new-file later to maint).
152  * The code to parse "git bisect start" command line was lax in
153    validating the arguments.
154    (merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).
156  * Reduce memory usage during "diff --quiet" in a worktree with too
157    many stat-unmatched paths.
158    (merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).
160  * The reflog entries for "git clone" and "git fetch" did not
161    anonymize the URL they operated on.
162    (merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).
164  * The behaviour of "sparse-checkout" in the state "git clone
165    --no-checkout" left was changed accidentally in 2.27, which has
166    been corrected.
168  * Use of negative pathspec, while collecting paths including
169    untracked ones in the working tree, was broken.
171  * The same worktree directory must be registered only once, but
172    "git worktree move" allowed this invariant to be violated, which
173    has been corrected.
174    (merge 810382ed37 es/worktree-duplicate-paths later to maint).
176  * The effect of sparse checkout settings on submodules is documented.
177    (merge e7d7c73249 en/sparse-with-submodule-doc later to maint).
179  * Code clean-up around "git branch" with a minor bugfix.
180    (merge dc44639904 dl/branch-cleanup later to maint).
182  * A branch name used in a test has been clarified to match what is
183    going on.
184    (merge 08dc26061f pb/t4014-unslave later to maint).
186  * An in-code comment in "git diff" has been updated.
187    (merge c592fd4c83 dl/diff-usage-comment-update later to maint).
189  * The documentation and some tests have been adjusted for the recent
190    renaming of "pu" branch to "seen".
191    (merge 6dca5dbf93 js/pu-to-seen later to maint).
193  * The code to push changes over "dumb" HTTP had a bad interaction
194    with the commit reachability code due to incorrect allocation of
195    object flag bits, which has been corrected.
196    (merge 64472d15e9 bc/http-push-flagsfix later to maint).
198  * "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
199    header with the value given from the command line, and let it be
200    overridden by the value on In-Reply-To: header in the messages
201    being sent out (if exists).
202    (merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).
204  * "git log -Lx,y:path --before=date" lost track of where the range
205    should be because it didn't take the changes made by the youngest
206    commits that are omitted from the output into account.
208  * When "fetch.writeCommitGraph" configuration is set in a shallow
209    repository and a fetch moves the shallow boundary, we wrote out
210    broken commit-graph files that do not match the reality, which has
211    been corrected.
213  * "git checkout" failed to catch an error from fstat() after updating
214    a path in the working tree.
215    (merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).
217  * When an aliased command, whose output is piped to a pager by git,
218    gets killed by a signal, the pager got into a funny state, which
219    has been corrected (again).
220    (merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint).
222  * The code to produce progress output from "git commit-graph --write"
223    had a few breakages, which have been fixed.
225  * Other code cleanup, docfix, build fix, etc.
226    (merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
227    (merge d63ae31962 cb/t5608-cleanup later to maint).
228    (merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
229    (merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
230    (merge b75a219904 es/advertise-contribution-doc later to maint).
231    (merge 0c9a4f638a rs/pull-leakfix later to maint).
232    (merge d546fe2874 rs/commit-reach-leakfix later to maint).
233    (merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
234    (merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
235    (merge 0172f7834a cc/cat-file-usage-update later to maint).
236    (merge 81de0c01cf ma/rebase-doc-typofix later to maint).