]>
Commit | Line | Data |
---|---|---|
85f08378 JH |
1 | Git v2.2 Release Notes |
2 | ====================== | |
3 | ||
4 | Updates since v2.1 | |
5 | ------------------ | |
6 | ||
0c72b98f JH |
7 | Ports |
8 | ||
9 | * Building on older MacOS X systems automatically sets | |
10 | the necessary NO_APPLE_COMMON_CRYPTO build-time option. | |
11 | ||
fbecd998 JH |
12 | * The support to build with NO_PTHREADS has been resurrected. |
13 | ||
5b509df0 JH |
14 | * Compilation options has been updated a bit to support z/OS port |
15 | better. | |
16 | ||
0c72b98f | 17 | |
85f08378 JH |
18 | UI, Workflows & Features |
19 | ||
63a45136 JH |
20 | * "git archive" learned to filter what gets archived with pathspec. |
21 | ||
85f08378 JH |
22 | * "git config --edit --global" starts from a skeletal per-user |
23 | configuration file contents, instead of a total blank, when the | |
24 | user does not already have any. This immediately reduces the | |
25 | need for a later "Have you forgotten setting core.user?" and we | |
26 | can add more to the template as we gain more experience. | |
27 | ||
0c72b98f JH |
28 | * "git stash list -p" used to be almost always a no-op because each |
29 | stash entry is represented as a merge commit. It learned to show | |
30 | the difference between the base commit version and the working tree | |
31 | version, which is in line with what "git show" gives. | |
85f08378 | 32 | |
97b8860c JH |
33 | * Sometimes users want to report a bug they experience on their |
34 | repository, but they are not at liberty to share the contents of | |
35 | the repository. "fast-export" was taught an "--anonymize" option | |
36 | to replace blob contents, names of people and paths and log | |
37 | messages with bland and simple strings to help them. | |
38 | ||
5b509df0 JH |
39 | * "git difftool" learned an option to stop feeding paths to the |
40 | diff backend when it exits with a non-zero status. | |
41 | ||
4ace7ff4 | 42 | * "git grep" allows to paint (or not paint) partial matches on |
dd835216 | 43 | context lines when showing "grep -C<num>" output in color. |
4ace7ff4 | 44 | |
97b8860c JH |
45 | * "log --date=iso" uses a slight variant of ISO 8601 format that is |
46 | made more human readable. A new "--date=iso-strict" option gives | |
47 | datetime output that is more strictly conformant. | |
48 | ||
5b509df0 JH |
49 | * The logic "git prune" uses is more resilient against various corner |
50 | cases. | |
51 | ||
97b8860c JH |
52 | * A broken reimplementation of Git could write an invalid index that |
53 | records both stage #0 and higher stage entries for the same path. | |
54 | We now notice and reject such an index, as there is no sensible | |
55 | fallback (we do not know if the broken tool wanted to resolve and | |
56 | forgot to remove higher stage entries, or if it wanted to unresolve | |
57 | and forgot to remove the stage#0 entry). | |
58 | ||
19b5d50c JH |
59 | * The temporary files "git mergetool" uses are named to avoid too |
60 | many dots in them (e.g. a temporary file for "hello.c" used to be | |
61 | named e.g. "hello.BASE.4321.c" but now uses underscore instead, | |
62 | e.g. "hello_BASE_4321.c"). | |
63 | ||
64 | * The temporary files "git mergetools" uses can be placed in a newly | |
dd835216 | 65 | created temporary directory, instead of the current directory, by |
19b5d50c JH |
66 | setting the mergetool.writeToTemp configuration variable. |
67 | ||
5b509df0 JH |
68 | * "git mergetool" understands "--tool bc" now, as version 4 of |
69 | BeyondCompare can be driven the same way as its version 3 and it | |
70 | feels awkward to say "--tool bc3". | |
71 | ||
d29e9c89 JH |
72 | * The "pre-receive" and "post-receive" hooks are no longer required |
73 | to consume their input fully (not following this requirement used | |
74 | to result in intermittent errors in "git push"). | |
75 | ||
0bf7dd65 JH |
76 | * The pretty-format specifier "%d", which expanded to " (tagname)" |
77 | for a tagged commit, gained a cousin "%D" that just gives the | |
78 | "tagname" without frills. | |
97b8860c | 79 | |
63a45136 JH |
80 | * "git push" learned "--signed" push, that allows a push (i.e. |
81 | request to update the refs on the other side to point at a new | |
82 | history, together with the transmission of necessary objects) to be | |
83 | signed, so that it can be verified and audited, using the GPG | |
84 | signature of the person who pushed, that the tips of branches at a | |
85 | public repository really point the commits the pusher wanted to, | |
86 | without having to "trust" the server. | |
87 | ||
f745acb0 | 88 | * "git interpret-trailers" is a new filter to programmatically edit |
13da0fc0 JH |
89 | the tail end of the commit log messages. |
90 | ||
91 | * "git help everyday" shows the "Everyday Git in 20 commands or so" | |
92 | document, whose contents have been updated to more modern Git | |
93 | practice. | |
94 | ||
4ace7ff4 JH |
95 | * On the "git svn" front, work to reduce memory consumption and |
96 | to improve handling of mergeinfo progresses. | |
97 | ||
13da0fc0 | 98 | |
85f08378 JH |
99 | Performance, Internal Implementation, etc. |
100 | ||
19b5d50c JH |
101 | * The API to manipulate the "refs" has been restructured to make it |
102 | more transactional, with the eventual goal to allow all-or-none | |
103 | atomic updates and migrating the storage to something other than | |
104 | the traditional filesystem based one (e.g. databases). | |
ce1d3a93 | 105 | |
670a3c1d JH |
106 | * The lockfile API and its users have been cleaned up. |
107 | ||
ce1d3a93 JH |
108 | * We no longer attempt to keep track of individual dependencies to |
109 | the header files in the build procedure, relying on automated | |
110 | dependency generation support from modern compilers. | |
111 | ||
0c72b98f JH |
112 | * In tests, we have been using NOT_{MINGW,CYGWIN} test prerequisites |
113 | long before negated prerequisites e.g. !MINGW were invented. | |
114 | The former has been converted to the latter to avoid confusion. | |
115 | ||
85f08378 JH |
116 | * Looking up remotes configuration in a repository with very many |
117 | remotes defined has been optimized. | |
118 | ||
119 | * There are cases where you lock and open to write a file, close it | |
120 | to show the updated contents to external processes, and then have | |
121 | to update the file again while still holding the lock, but the | |
122 | lockfile API lacked support for such an access pattern. | |
123 | ||
ce1d3a93 JH |
124 | * The API to allocate the structure to keep track of commit |
125 | decoration has been updated to make it less cumbersome to use. | |
126 | ||
85f08378 | 127 | * An in-core caching layer to let us avoid reading the same |
ce1d3a93 JH |
128 | configuration files number of times has been added. A few commands |
129 | have been converted to use this subsystem. | |
85f08378 JH |
130 | |
131 | * Various code paths have been cleaned up and simplified by using | |
132 | "strbuf", "starts_with()", and "skip_prefix()" APIs more. | |
133 | ||
ce1d3a93 JH |
134 | * A few codepaths that died when large blobs that would not fit in |
135 | core are involved in their operation have been taught to punt | |
136 | instead, by e.g. marking too large a blob as not to be diffed. | |
137 | ||
138 | * A few more code paths in "commit" and "checkout" have been taught | |
139 | to repopulate the cache-tree in the index, to help speed up later | |
140 | "write-tree" (used in "commit") and "diff-index --cached" (used in | |
141 | "status"). | |
142 | ||
97b8860c JH |
143 | * A common programming mistake to assign the same short option name |
144 | to two separate options is detected by parse_options() API to help | |
145 | developers. | |
146 | ||
d29e9c89 JH |
147 | * The code path to write out the packed-refs file has been optimized, |
148 | which especially matters in a repository with a large number of | |
149 | refs. | |
150 | ||
151 | * The check to see if a ref $F can be created by making sure no | |
152 | existing ref has $F/ as its prefix has been optimized, which | |
153 | especially matters in a repository with a large number of existing | |
154 | refs. | |
155 | ||
156 | * "git fsck" was taught to check contents of tag objects a bit more. | |
157 | ||
158 | * "git hash-object" was taught a "--literally" option to help | |
159 | debugging. | |
160 | ||
63a45136 JH |
161 | * When running a required clean filter, we do not have to mmap the |
162 | original before feeding the filter. Instead, stream the file | |
163 | contents directly to the filter and process its output. | |
85f08378 | 164 | |
13da0fc0 JH |
165 | * The scripts in the test suite can be run with "-x" option to show |
166 | a shell-trace of each command run in them. | |
167 | ||
fbecd998 JH |
168 | * The "run-command" API learned to manage the argv and environment |
169 | array for child process, alleviating the need for the callers to | |
170 | allocate and deallocate them. | |
171 | ||
5b509df0 JH |
172 | * Some people use AsciiDoctor, instead of AsciiDoc, to format our |
173 | documentation set; the documentation has been adjusted, as | |
174 | AsciiDoctor is pickier than AsciiDoc in its input mark-up. | |
175 | ||
13da0fc0 | 176 | |
85f08378 JH |
177 | Also contains various documentation updates and code clean-ups. |
178 | ||
179 | ||
180 | Fixes since v2.1 | |
181 | ---------------- | |
182 | ||
0c72b98f JH |
183 | Unless otherwise noted, all the fixes since v2.1 in the maintenance |
184 | track are contained in this release (see the maintenance releases' | |
185 | notes for details). | |
186 | ||
85f08378 JH |
187 | * "git log --pretty/format=" with an empty format string did not |
188 | mean the more obvious "No output whatsoever" but "Use default | |
189 | format", which was counterintuitive. | |
85f08378 | 190 | |
0c72b98f JH |
191 | * "git -c section.var command" and "git -c section.var= command" |
192 | should pass the configuration differently (the former should be a | |
193 | boolean true, the latter should be an empty string). | |
85f08378 | 194 | |
0c72b98f JH |
195 | * Applying a patch not generated by Git in a subdirectory used to |
196 | check the whitespace breakage using the attributes for incorrect | |
197 | paths. Also whitespace checks were performed even for paths | |
198 | excluded via "git apply --exclude=<path>" mechanism. | |
0c72b98f JH |
199 | |
200 | * "git bundle create" with date-range specification were meant to | |
201 | exclude tags outside the range, but it didn't. | |
0c72b98f JH |
202 | |
203 | * "git add x" where x that used to be a directory has become a | |
204 | symbolic link to a directory misbehaved. | |
0c72b98f JH |
205 | |
206 | * The prompt script checked $GIT_DIR/ref/stash file to see if there | |
207 | is a stash, which was a no-no. | |
0c72b98f JH |
208 | |
209 | * Pack-protocol documentation had a minor typo. | |
ce1d3a93 JH |
210 | |
211 | * "git checkout -m" did not switch to another branch while carrying | |
212 | the local changes forward when a path was deleted from the index. | |
ce1d3a93 | 213 | |
670a3c1d JH |
214 | * "git daemon" (with NO_IPV6 build configuration) used to incorrectly |
215 | use the hostname even when gethostbyname() reported that the given | |
216 | hostname is not found. | |
217 | (merge 107efbe rs/daemon-fixes later to maint). | |
218 | ||
ce1d3a93 JH |
219 | * With sufficiently long refnames, "git fast-import" could have |
220 | overflown an on-stack buffer. | |
ce1d3a93 JH |
221 | |
222 | * After "pack-refs --prune" packed refs at the top-level, it failed | |
223 | to prune them. | |
ce1d3a93 JH |
224 | |
225 | * Progress output from "git gc --auto" was visible in "git fetch -q". | |
ce1d3a93 JH |
226 | |
227 | * We used to pass -1000 to poll(2), expecting it to also mean "no | |
228 | timeout", which should be spelled as -1. | |
97b8860c JH |
229 | |
230 | * "git rebase" documentation was unclear that it is required to | |
231 | specify on what <upstream> the rebase is to be done when telling it | |
232 | to first check out <branch>. | |
233 | (merge 95c6826 so/rebase-doc later to maint). | |
234 | ||
235 | * "git push" over HTTP transport had an artificial limit on number of | |
236 | refs that can be pushed imposed by the command line length. | |
237 | (merge 26be19b jk/send-pack-many-refspecs later to maint). | |
238 | ||
239 | * When receiving an invalid pack stream that records the same object | |
240 | twice, multiple threads got confused due to a race. | |
241 | (merge ab791dd jk/index-pack-threading-races later to maint). | |
242 | ||
243 | * An attempt to remove the entire tree in the "git fast-import" input | |
244 | stream caused it to misbehave. | |
245 | (merge 2668d69 mb/fast-import-delete-root later to maint). | |
246 | ||
247 | * Reachability check (used in "git prune" and friends) did not add a | |
248 | detached HEAD as a starting point to traverse objects still in use. | |
249 | (merge c40fdd0 mk/reachable-protect-detached-head later to maint). | |
250 | ||
251 | * "git config --add section.var val" used to lose existing | |
252 | section.var whose value was an empty string. | |
253 | (merge c1063be ta/config-add-to-empty-or-true-fix later to maint). | |
254 | ||
255 | * "git fsck" failed to report that it found corrupt objects via its | |
256 | exit status in some cases. | |
257 | (merge 30d1038 jk/fsck-exit-code-fix later to maint). | |
d29e9c89 JH |
258 | |
259 | * Use of "--verbose" option used to break "git branch --merged". | |
260 | (merge 12994dd jk/maint-branch-verbose-merged later to maint). | |
0bf7dd65 JH |
261 | |
262 | * Some MUAs mangled a line in a message that begins with "From " to | |
263 | ">From " when writing to a mailbox file and feeding such an input | |
264 | to "git am" used to lose such a line. | |
265 | (merge 85de86a jk/mbox-from-line later to maint). | |
266 | ||
267 | * "rev-parse --verify --quiet $name" is meant to quietly exit with a | |
268 | non-zero status when $name is not a valid object name, but still | |
269 | gave error messages in some cases. | |
670a3c1d JH |
270 | |
271 | * A handful of C source files have been updated to include | |
272 | "git-compat-util.h" as the first thing, to conform better to our | |
273 | coding guidelines. | |
274 | (merge 1c4b660 da/include-compat-util-first-in-c later to maint). | |
275 | ||
276 | * t7004 test, which tried to run Git with small stack space, has been | |
277 | updated to give a bit larger stack to avoid false breakage on some | |
278 | platforms. | |
279 | (merge b9a1907 sk/tag-contains-wo-recursion later to maint). | |
280 | ||
281 | * A few documentation pages had example sections marked up not quite | |
282 | correctly, which passed AsciiDoc but failed with AsciiDoctor. | |
283 | (merge c30c43c bc/asciidoc-pretty-formats-fix later to maint). | |
13da0fc0 JH |
284 | (merge f8a48af bc/asciidoc later to maint). |
285 | ||
286 | * "gitweb" used deprecated CGI::startfrom, which was removed from | |
287 | CGI.pm as of 4.04; use CGI::start_from instead. | |
288 | (merge 4750f4b rm/gitweb-start-form later to maint). | |
19b5d50c JH |
289 | |
290 | * Newer versions of 'meld' breaks the auto-detection we use to see if | |
291 | they are new enough to support the `--output` option. | |
292 | (merge b12d045 da/mergetool-meld later to maint). | |
fbecd998 JH |
293 | |
294 | * "git pack-objects" forgot to disable the codepath to generate | |
dd835216 | 295 | object reachability bitmap when it needs to split the resulting |
fbecd998 JH |
296 | pack. |
297 | (merge 2113471 jk/pack-objects-no-bitmap-when-splitting later to maint). | |
f5709437 JH |
298 | |
299 | * The code to use cache-tree trusted the on-disk data too much and | |
300 | fell into an infinite loop upon seeing an incorrectly recorded | |
301 | index file. | |
302 | (merge 729dbbd jk/cache-tree-protect-from-broken-libgit2 later to maint). | |
303 | ||
304 | * "git fetch" into a repository where branch B was deleted earlier | |
305 | back when it had reflog enabled, and then branch B/C is fetched | |
306 | into it without reflog enabled, which is arguably an unlikely | |
307 | corner case, unnecessarily failed. | |
308 | (merge aae828b jk/fetch-reflog-df-conflict later to maint). | |
309 | ||
310 | * "git log --first-parent -L..." used to crash. | |
311 | (merge a8787c5 tm/line-log-first-parent later to maint). |