upload-pack.c: allow banning certain object filter(s)
[git] / Documentation / RelNotes / 2.28.0.txt
1 Git 2.28 Release Notes
2 ======================
3
4 Updates since v2.27
5 -------------------
6
7 Backward compatibility notes
8
9  * "feature.experimental" configuration variable is to let volunteers
10    easily opt into a set of newer features, which use of the v2
11    transport protocol is now a part of.
12
13  * It used to be that setting extensions.* configuration variables
14    alone, while leaving core.repositoryFormatVersion=0, made these
15    settings effective, which was a wrong thing to do.  In version 0,
16    there was no special meaning in extensions.* configuration
17    variables.  This has been corrected.  If you need these repository
18    extensions to be effective, the core.repositoryFormatVersion
19    variable needs to be updated to 1 after vetting these extensions.*
20    variables are set correctly.
21
22
23 UI, Workflows & Features
24
25  * The commands in the "diff" family learned to honor "diff.relative"
26    configuration variable.
27
28  * The check in "git fsck" to ensure that the tree objects are sorted
29    still had corner cases it missed unsorted entries.
30
31  * The interface to redact sensitive information in the trace output
32    has been simplified.
33
34  * The command line completion (in contrib/) learned to complete
35    options that the "git switch" command takes.
36
37  * "git diff" used to take arguments in random and nonsense range
38    notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
39    which has been cleaned up.
40
41  * "git diff-files" has been taught to say paths that are marked as
42    intent-to-add are new files, not modified from an empty blob.
43
44
45 Performance, Internal Implementation, Development Support etc.
46
47  * Code optimization for a common case.
48    (merge 8777616e4d an/merge-single-strategy-optim later to maint).
49
50  * We've adopted a convention that any on-stack structure can be
51    initialized to have zero values in all fields with "= { 0 }",
52    even when the first field happens to be a pointer, but sparse
53    complained that a null pointer should be spelled NULL for a long
54    time.  Start using -Wno-universal-initializer option to squelch
55    it (the latest sparse has it on by default).
56
57  * "git log -L..." now takes advantage of the "which paths are touched
58    by this commit?" info stored in the commit-graph system.
59
60  * As FreeBSD is not the only platform whose regexp library reports
61    a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
62    automatically and skip the affected tests.
63
64  * "git bugreport" learns to report what shell is in use.
65
66  * Support for GIT_CURL_VERBOSE has been rewritten in terms of
67    GIT_TRACE_CURL.
68
69  * Preliminary clean-ups around refs API, plus file format
70    specification documentation for the reftable backend.
71
72  * Workaround breakage in MSVC build, where "curl-config --cflags"
73    gives settings appropriate for GCC build.
74
75  * Code clean-up of "git clean" resulted in a fix of recent
76    performance regression.
77
78  * Code clean-up in the codepath that serves "git fetch" continues.
79
80  * "git merge-base --is-ancestor" is taught to take advantage of the
81    commit graph.
82
83  * Rewrite of parts of the scripted "git submodule" Porcelain command
84    continues; this time it is "git submodule set-branch" subcommand's
85    turn.
86
87  * The "fetch/clone" protocol has been updated to allow the server to
88    instruct the clients to grab pre-packaged packfile(s) in addition
89    to the packed object data coming over the wire.
90
91  * A misdesigned strbuf_write_fd() function has been retired.
92
93
94
95 Fixes since v2.27
96 -----------------
97
98  * The "--prepare-p4-only" option of "git p4" is supposed to stop
99    after replaying one changeset, but kept going (by mistake?)
100
101  * The error message from "git checkout -b foo -t bar baz" was
102    confusing.
103
104  * Some repositories in the wild have commits that record nonsense
105    committer timezone (e.g. rails.git); "git fast-import" learned an
106    option to pass these nonsense timestamps intact to allow recreating
107    existing repositories as-is.
108    (merge d42a2fb72f en/fast-import-looser-date later to maint).
109
110  * The command line completion script (in contrib/) tried to complete
111    "git stash -p" as if it were "git stash push -p", but it was too
112    aggressive and also affected "git stash show -p", which has been
113    corrected.
114    (merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).
115
116  * On-the-wire protocol v2 easily falls into a deadlock between the
117    remote-curl helper and the fetch-pack process when the server side
118    prematurely throws an error and disconnects.  The communication has
119    been updated to make it more robust.
120
121  * "git checkout -p" did not handle a newly added path at all.
122    (merge 2c8bd8471a js/checkout-p-new-file later to maint).
123
124  * The code to parse "git bisect start" command line was lax in
125    validating the arguments.
126    (merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).
127
128  * Reduce memory usage during "diff --quiet" in a worktree with too
129    many stat-unmatched paths.
130    (merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).
131
132  * The reflog entries for "git clone" and "git fetch" did not
133    anonymize the URL they operated on.
134    (merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).
135
136  * The behaviour of "sparse-checkout" in the state "git clone
137    --no-checkout" left was changed accidentally in 2.27, which has
138    been corrected.
139
140  * Use of negative pathspec, while collecting paths including
141    untracked ones in the working tree, was broken.
142
143  * The same worktree directory must be registered only once, but
144    "git worktree move" allowed this invariant to be violated, which
145    has been corrected.
146    (merge 810382ed37 es/worktree-duplicate-paths later to maint).
147
148  * The effect of sparse checkout settings on submodules is documented.
149    (merge e7d7c73249 en/sparse-with-submodule-doc later to maint).
150
151  * Code clean-up around "git branch" with a minor bugfix.
152    (merge dc44639904 dl/branch-cleanup later to maint).
153
154  * A branch name used in a test has been clarified to match what is
155    going on.
156    (merge 08dc26061f pb/t4014-unslave later to maint).
157
158  * An in-code comment in "git diff" has been updated.
159    (merge c592fd4c83 dl/diff-usage-comment-update later to maint).
160
161  * Other code cleanup, docfix, build fix, etc.
162    (merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
163    (merge d63ae31962 cb/t5608-cleanup later to maint).
164    (merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
165    (merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
166    (merge b75a219904 es/advertise-contribution-doc later to maint).
167    (merge 0c9a4f638a rs/pull-leakfix later to maint).
168    (merge d546fe2874 rs/commit-reach-leakfix later to maint).