]>
Commit | Line | Data |
---|---|---|
2efbb7f5 JH |
1 | Git Release Notes |
2 | ================= | |
3 | ||
4 | Backward Compatibility Notes | |
5 | ---------------------------- | |
6 | ||
7 | * "git branch -l <foo>" used to be a way to ask a reflog to be | |
8 | created while creating a new branch, but that is no longer the | |
9 | case. It is a short-hand for "git branch --list <foo>" now. | |
10 | ||
11 | * "git push" into refs/tags/* hierarchy is rejected without getting | |
12 | forced, but "git fetch" (misguidedly) used the "fast forwarding" | |
13 | rule used for the refs/heads/* hierarchy; this has been corrected, | |
14 | which means some fetches of tags that did not fail with older | |
15 | version of Git will fail without "--force" with this version. | |
16 | ||
17 | ||
18 | Updates since v2.19 | |
19 | ------------------- | |
20 | ||
21 | UI, Workflows & Features | |
22 | ||
23 | * Running "git clone" against a project that contain two files with | |
24 | pathnames that differ only in cases on a case insensitive | |
25 | filesystem would result in one of the files lost because the | |
26 | underlying filesystem is incapable of holding both at the same | |
27 | time. An attempt is made to detect such a case and warn. | |
28 | ||
29 | * "git checkout -b newbranch [HEAD]" should not have to do as much as | |
30 | checking out a commit different from HEAD. An attempt is made to | |
31 | optimize this special case. | |
32 | ||
33 | * "git rev-list --stdin </dev/null" used to be an error; it now shows | |
34 | no output without an error. "git rev-list --stdin --default HEAD" | |
35 | still falls back to the given default when nothing is given on the | |
36 | standard input. | |
37 | ||
38 | * Lift code from GitHub to restrict delta computation so that an | |
39 | object that exists in one fork is not made into a delta against | |
40 | another object that does not appear in the same forked repository. | |
41 | ||
42 | * "git format-patch" learned new "--interdiff" and "--range-diff" | |
43 | options to explain the difference between this version and the | |
44 | previous attempt in the cover letter (or after the tree-dashes as | |
45 | a comment). | |
46 | ||
47 | * "git mailinfo" used in "git am" learned to make a best-effort | |
48 | recovery of a patch corrupted by MUA that sends text/plain with | |
49 | format=flawed option. | |
50 | (merge 3aa4d81f88 rs/mailinfo-format-flowed later to maint). | |
51 | ||
52 | * The rules used by "git push" and "git fetch" to determine if a ref | |
53 | can or cannot be updated were inconsistent; specifically, fetching | |
54 | to update existing tags were allowed even though tags are supposed | |
55 | to be unmoving anchoring points. "git fetch" was taught to forbid | |
56 | updates to existing tags without the "--force" option. | |
57 | ||
5a0cc8ac JH |
58 | * "git multi-pack-index" learned to detect corruption in the .midx |
59 | file it uses, and this feature has been integrated into "git fsck". | |
60 | ||
2efbb7f5 JH |
61 | |
62 | Performance, Internal Implementation, Development Support etc. | |
63 | ||
64 | * When there are too many packfiles in a repository (which is not | |
65 | recommended), looking up an object in these would require | |
66 | consulting many pack .idx files; a new mechanism to have a single | |
67 | file that consolidates all of these .idx files is introduced. | |
68 | ||
69 | * "git submodule update" is getting rewritten piece-by-piece into C. | |
70 | ||
71 | * The code for computing history reachability has been shuffled, | |
72 | obtained a bunch of new tests to cover them, and then being | |
73 | improved. | |
74 | ||
75 | * The unpack_trees() API used in checking out a branch and merging | |
76 | walks one or more trees along with the index. When the cache-tree | |
77 | in the index tells us that we are walking a tree whose flattened | |
78 | contents is known (i.e. matches a span in the index), as linearly | |
79 | scanning a span in the index is much more efficient than having to | |
80 | open tree objects recursively and listing their entries, the walk | |
81 | can be optimized, which has been done. | |
82 | ||
83 | * When creating a thin pack, which allows objects to be made into a | |
84 | delta against another object that is not in the resulting pack but | |
85 | is known to be present on the receiving end, the code learned to | |
86 | take advantage of the reachability bitmap; this allows the server | |
87 | to send a delta against a base beyond the "boundary" commit. | |
88 | ||
89 | * spatch transformation to replace boolean uses of !hashcmp() to | |
90 | newly introduced oideq() is added, and applied, to regain | |
91 | performance lost due to support of multiple hash algorithms. | |
92 | ||
93 | * Fix a bug in which the same path could be registered under multiple | |
94 | worktree entries if the path was missing (for instance, was removed | |
95 | manually). Also, as a convenience, expand the number of cases in | |
96 | which --force is applicable. | |
97 | ||
5a0cc8ac JH |
98 | * Split Documentation/config.txt for easier maintenance. |
99 | (merge 6014363f0b nd/config-split later to maint). | |
100 | ||
101 | * Test helper binaries clean-up. | |
102 | (merge c9a1f4161f nd/test-tool later to maint). | |
103 | ||
104 | * Various tests have been updated to make it easier to swap the | |
105 | hash function used for object identification. | |
106 | (merge ae0c89d41b bc/hash-independent-tests later to maint). | |
107 | ||
108 | * Update fsck.skipList implementation and documentation. | |
109 | (merge 371a655074 ab/fsck-skiplist later to maint). | |
110 | ||
2efbb7f5 JH |
111 | |
112 | Fixes since v2.19 | |
113 | ----------------- | |
114 | ||
115 | * "git interpret-trailers" and its underlying machinery had a buggy | |
116 | code that attempted to ignore patch text after commit log message, | |
117 | which triggered in various codepaths that will always get the log | |
118 | message alone and never get such an input. | |
119 | (merge 66e83d9b41 jk/trailer-fixes later to maint). | |
120 | ||
121 | * Malformed or crafted data in packstream can make our code attempt | |
122 | to read or write past the allocated buffer and abort, instead of | |
123 | reporting an error, which has been fixed. | |
124 | ||
125 | * "git rebase -i" did not clear the state files correctly when a run | |
126 | of "squash/fixup" is aborted and then the user manually amended the | |
127 | commit instead, which has been corrected. | |
128 | (merge 10d2f35436 js/rebase-i-autosquash-fix later to maint). | |
129 | ||
130 | * When fsmonitor is in use, after operation on submodules updates | |
131 | .gitmodules, we lost track of the fact that we did so and relied on | |
132 | stale fsmonitor data. | |
133 | (merge 43f1180814 bp/mv-submodules-with-fsmonitor later to maint). | |
134 | ||
135 | * Fix for a long-standing bug that leaves the index file corrupt when | |
136 | it shrinks during a partial commit. | |
137 | (merge 6c003d6ffb jk/reopen-tempfile-truncate later to maint). | |
138 | ||
139 | * Further fix for O_APPEND emulation on Windows | |
140 | (merge eeaf7ddac7 js/mingw-o-append later to maint). | |
141 | ||
142 | * A corner case bugfix in "git rerere" code. | |
143 | (merge ad2bf0d9b4 en/rerere-multi-stage-1-fix later to maint). | |
144 | ||
145 | * "git add ':(attr:foo)'" is not supported and is supposed to be | |
146 | rejected while the command line arguments are parsed, but we fail | |
147 | to reject such a command line upfront. | |
148 | (merge 84d938b732 nd/attr-pathspec-fix later to maint). | |
149 | ||
150 | * Recent update broke the reachability algorithm when refs (e.g. | |
151 | tags) that point at objects that are not commit were involved, | |
152 | which has been fixed. | |
153 | ||
154 | * "git rebase" etc. in Git 2.19 fails to abort when given an empty | |
155 | commit log message as result of editing, which has been corrected. | |
156 | (merge a3ec9eaf38 en/sequencer-empty-edit-result-aborts later to maint). | |
157 | ||
158 | * The code to backfill objects in lazily cloned repository did not | |
159 | work correctly, which has been corrected. | |
160 | (merge e68302011c jt/lazy-object-fetch-fix later to maint). | |
161 | ||
162 | * Update error messages given by "git remote" and make them consistent. | |
163 | (merge 5025425dff ms/remote-error-message-update later to maint). | |
164 | ||
165 | * "git update-ref" learned to make both "--no-deref" and "--stdin" | |
166 | work at the same time. | |
167 | (merge d345e9fbe7 en/update-ref-no-deref-stdin later to maint). | |
168 | ||
169 | * Recently added "range-diff" had a corner-case bug to cause it | |
170 | segfault, which has been corrected. | |
171 | (merge e467a90c7a tg/range-diff-corner-case-fix later to maint). | |
172 | ||
173 | * Code cleanup, docfix, build fix, etc. | |
174 | (merge 96a7501aad ts/doc-build-manpage-xsl-quietly later to maint). | |
175 | (merge b9b07efdb2 tg/conflict-marker-size later to maint). | |
176 | (merge fa0aeea770 sg/doc-trace-appends later to maint). | |
177 | (merge d64324cb60 tb/void-check-attr later to maint). | |
178 | (merge c3b9bc94b9 en/double-semicolon-fix later to maint). | |
179 | (merge 79336116f5 sg/t3701-tighten-trace later to maint). | |
180 | (merge 801fa63a90 jk/dev-build-format-security later to maint). | |
181 | (merge 0597dd62ba sb/string-list-remove-unused later to maint). | |
182 | (merge db2d36fad8 bw/protocol-v2 later to maint). | |
183 | (merge 456d7cd3a9 sg/split-index-test later to maint). |