index-pack: remove redundant child field
[git] / Documentation / RelNotes / 2.29.0.txt
1 Git 2.29 Release Notes
2 ======================
3
4 Updates since v2.28
5 -------------------
6
7 UI, Workflows & Features
8
9  * "git help log" has been enhanced by sharing more material from the
10    documentation for the underlying "git rev-list" command.
11
12  * "git for-each-ref --format=<>" learned %(contents:size).
13
14  * "git merge" learned to selectively omit " into <branch>" at the end
15    of the title of default merge message with merge.suppressDest
16    configuration.
17
18  * The component to respond to "git fetch" request is made more
19    configurable to selectively allow or reject object filtering
20    specification used for partial cloning.
21
22  * Stop when "sendmail.*" configuration variables are defined, which
23    could be a mistaken attempt to define "sendemail.*" variables.
24
25  * The existing backends for "git mergetool" based on variants of vim
26    have been refactored and then support for "nvim" has been added.
27
28  * "git bisect" learns the "--first-parent" option to find the first
29    breakage along the first-parent chain.
30
31  * "git log --first-parent -p" showed patches only for single-parent
32    commits on the first-parent chain; the "--first-parent" option has
33    been made to imply "-m".  Use "--no-diff-merges" to restore the
34    previous behaviour to omit patches for merge commits.
35
36  * The commit labels used to explain each side of conflicted hunks
37    placed by the sequencer machinery have been made more readable by
38    humans.
39
40
41 Performance, Internal Implementation, Development Support etc.
42
43  * The changed-path Bloom filter is improved using ideas from an
44    independent implementation.
45
46  * Updates to the changed-paths bloom filter.
47
48  * The test framework has been updated so that most tests will run
49    with predictable (artificial) timestamps.
50
51  * Preliminary clean-up of the refs API in preparation for adding a
52    new refs backend "reftable".
53
54  * Dev support to limit the use of test_must_fail to only git commands.
55
56  * While packing many objects in a repository with a promissor remote,
57    lazily fetching missing objects from the promissor remote one by
58    one may be inefficient---the code now attempts to fetch all the
59    missing objects in batch (obviously this won't work for a lazy
60    clone that lazily fetches tree objects as you cannot even enumerate
61    what blobs are missing until you learn which trees are missing).
62
63  * The pretend-object mechanism checks if the given object already
64    exists in the object store before deciding to keep the data
65    in-core, but the check would have triggered lazy fetching of such
66    an object from a promissor remote.
67
68  * The argv_array API is useful for not just managing argv but any
69    "vector" (NULL-terminated array) of strings, and has seen adoption
70    to a certain degree.  It has been renamed to "strvec" to reduce the
71    barrier to adoption.
72
73  * The final leg of SHA-256 transition plus doc updates.  Note that
74    there is no inter-operability between SHA-1 and SHA-256
75    repositories yet.
76
77  * CMake support to build with MSVC for Windows bypassing the Makefile.
78
79  * A new helper function has_object() has been introduced to make it
80    easier to mark object existence checks that do and don't want to
81    trigger lazy fetches, and a few such checks are converted using it.
82
83  * A no-op replacement function implemented as a C preprocessor macro
84    does not perform as good a job as one implemented as a "static
85    inline" function in catching errors in parameters; replace the
86    former with the latter in <git-compat-util.h> header.
87
88  * Test framework update.
89    (merge d572f52a64 es/test-cmp-typocatcher later to maint).
90
91  * Updates to "git merge" tests, in preparation for a new merge
92    strategy backend.
93
94  * midx and commit-graph files now use the byte defined in their file
95    format specification for identifying the hash function used for
96    object names.
97
98
99 Fixes since v2.28
100 -----------------
101
102  * "git clone --separate-git-dir=$elsewhere" used to stomp on the
103    contents of the existing directory $elsewhere, which has been
104    taught to fail when $elsewhere is not an empty directory.
105    (merge dfaa209a79 bw/fail-cloning-into-non-empty later to maint).
106
107  * With the base fix to 2.27 regresion, any new extensions in a v0
108    repository would still be silently honored, which is not quite
109    right.  Instead, complain and die loudly.
110    (merge ec91ffca04 jk/reject-newer-extensions-in-v0 later to maint).
111
112  * Fetching from a lazily cloned repository resulted at the server
113    side in attempts to lazy fetch objects that the client side has,
114    many of which will not be available from the third-party anyway.
115    (merge 77aa0941ce jt/avoid-lazy-fetching-upon-have-check later to maint).
116
117  * Fix to an ancient bug caused by an over-eager attempt for
118    optimization.
119    (merge a98f7fb366 rs/add-index-entry-optim-fix later to maint).
120
121  * Pushing a ref whose name contains non-ASCII character with the
122    "--force-with-lease" option did not work over smart HTTP protocol,
123    which has been corrected.
124    (merge cd85b447bf bc/push-cas-cquoted-refname later to maint).
125
126  * "git mv src dst", when src is an unmerged path, errored out
127    correctly but with an incorrect error message to claim that src is
128    not tracked, which has been clarified.
129    (merge 9b906af657 ct/mv-unmerged-path-error later to maint).
130
131  * Fix to a regression introduced during 2.27 cycle.
132    (merge cada7308ad en/fill-directory-exponential later to maint).
133
134  * Command line completion (in contrib/) update.
135    (merge 688b87c81b mp/complete-show-color-moved later to maint).
136
137  * All "mergy" operations that internally use the merge-recursive
138    machinery should honor the merge.renormalize configuration, but
139    many of them didn't.
140
141  * Doc cleanup around "worktree".
142    (merge dc9c144be5 es/worktree-doc-cleanups later to maint).
143
144  * The "git blame --first-parent" option was not documented, but now
145    it is.
146    (merge 11bc12ae1e rp/blame-first-parent-doc later to maint).
147
148  * The logic to find the ref transaction hook script attempted to
149    cache the path to the found hook without realizing that it needed
150    to keep a copied value, as the API it used returned a transitory
151    buffer space.  This has been corrected.
152    (merge 09b2aa30c9 ps/ref-transaction-hook later to maint).
153
154  * Recent versions of "git diff-files" shows a diff between the index
155    and the working tree for "intent-to-add" paths as a "new file"
156    patch; "git apply --cached" should be able to take "git diff-files"
157    and should act as an equivalent to "git add" for the path, but the
158    command failed to do so for such a path.
159    (merge 4c025c667e rp/apply-cached-with-i-t-a later to maint).
160
161  * "git diff [<tree-ish>] $path" for a $path that is marked with i-t-a
162    bit was not showing the mode bits from the working tree.
163    (merge cb0dd22b82 rp/ita-diff-modefix later to maint).
164
165  * Ring buffer with size 4 used for bin-hex translation resulted in a
166    wrong object name in the sequencer's todo output, which has been
167    corrected.
168    (merge 5da69c0dac ak/sequencer-fix-find-uniq-abbrev later to maint).
169
170  * When given more than one target line ranges, "git blame -La,b
171    -Lc,d" was over-eager to coalesce groups of original lines and
172    showed incorrect results, which has been corrected.
173    (merge c2ebaa27d6 jk/blame-coalesce-fix later to maint).
174
175  * The regexp to identify the function boundary for FORTRAN programs
176    has been updated.
177    (merge 75c3b6b2e8 pb/userdiff-fortran-update later to maint).
178
179  * A few end-user facing messages have been updated to be
180    hash-algorithm agnostic.
181    (merge 4279000d3e jc/object-names-are-not-sha-1 later to maint).
182
183  * "unlink" emulation on MinGW has been optimized.
184    (merge 680e0b4524 jh/mingw-unlink later to maint).
185
186  * Other code cleanup, docfix, build fix, etc.
187    (merge 84544f2ea3 sk/typofixes later to maint).
188    (merge b17f411ab5 ar/help-guides-doc later to maint).
189    (merge 98c6871fad rs/grep-simpler-parse-object-or-die-call later to maint).
190    (merge 861c4ce141 en/typofixes later to maint).
191    (merge 60e47f6773 sg/ci-git-path-fix-with-pyenv later to maint).
192    (merge e2bfa50ac3 jb/doc-packfile-name later to maint).
193    (merge 918d8ff780 es/worktree-cleanup later to maint).
194    (merge dc156bc31f ma/t1450-quotefix later to maint).
195    (merge 56e743426b en/merge-recursive-comment-fixes later to maint).
196    (merge 7d23ff818f rs/bisect-oid-to-hex-fix later to maint).
197    (merge de20baf2c9 ny/notes-doc-sample-update later to maint).
198    (merge f649aaaf82 so/rev-parser-errormessage-fix later to maint).
199    (merge 6103d58b7f bc/sha-256-cvs-svn-updates later to maint).
200    (merge ac900fddb7 ma/stop-progress-null-fix later to maint).
201    (merge e767963ab6 rs/upload-pack-sigchain-fix later to maint).
202    (merge a831908599 rs/preserve-merges-unused-code-removal later to maint).
203    (merge 6dfefe70a9 jb/commit-graph-doc-fix later to maint).
204    (merge 847b37271e pb/set-url-docfix later to maint).