]>
Commit | Line | Data |
---|---|---|
298caa7e JH |
1 | Git v1.8.2 Release Notes |
2 | ======================== | |
3 | ||
4 | Backward compatibility notes | |
5 | ---------------------------- | |
6 | ||
7 | In the upcoming major release (tentatively called 1.8.2), we will | |
8 | change the behavior of the "git push" command. | |
9 | ||
10 | When "git push [$there]" does not say what to push, we have used the | |
11 | traditional "matching" semantics so far (all your branches were sent | |
12 | to the remote as long as there already are branches of the same name | |
13 | over there). We will use the "simple" semantics that pushes the | |
14 | current branch to the branch with the same name, only when the current | |
15 | branch is set to integrate with that remote branch. There is a user | |
16 | preference configuration variable "push.default" to change this. | |
17 | ||
3587b513 JH |
18 | "git push $there tag v1.2.3" used to allow replacing a tag v1.2.3 |
19 | that already exists in the repository $there, if the rewritten tag | |
20 | you are pushing points at a commit that is a decendant of a commit | |
21 | that the old tag v1.2.3 points at. This was found to be error prone | |
22 | and starting with this release, any attempt to update an existing | |
23 | ref under refs/tags/ hierarchy will fail, without "--force". | |
24 | ||
298caa7e JH |
25 | |
26 | Updates since v1.8.1 | |
27 | -------------------- | |
28 | ||
29 | UI, Workflows & Features | |
30 | ||
3e293fba JH |
31 | * Initial ports to QNX and z/OS UNIX System Services have started. |
32 | ||
33 | * Output from the tests is coloured using "green is okay, yellow is | |
34 | questionable, red is bad and blue is informative" scheme. | |
298caa7e | 35 | |
2f19ada7 JH |
36 | * Mention of "GIT/Git/git" in the documentation have been updated to |
37 | be more uniform and consistent. The name of the system and the | |
38 | concept it embodies is "Git"; the command the users type is "git". | |
39 | All-caps "GIT" was merely a way to imitate "Git" typeset in small | |
40 | caps in our ASCII text only documentation and to be avoided. | |
41 | ||
aa398289 JH |
42 | * The completion script (in contrib/completion) used to let the |
43 | default completer to suggest pathnames, which gave too many | |
44 | irrelevant choices (e.g. "git add" would not want to add an | |
45 | unmodified path). It learnt to use a more git-aware logic to | |
46 | enumerate only relevant ones. | |
47 | ||
32238aeb JH |
48 | * In bare repositories, "git shortlog" and other commands now read |
49 | mailmap files from the tip of the history, to help running these | |
50 | tools in server settings. | |
51 | ||
52 | * Color specifiers, e.g. "%C(blue)Hello%C(reset)", used in the | |
53 | "--format=" option of "git log" and friends can be disabled when | |
54 | the output is not sent to a terminal by prefixing them with | |
55 | "auto,", e.g. "%C(auto,blue)Hello%C(auto,reset)". | |
56 | ||
57 | * Scripts can ask Git that wildcard patterns in pathspecs they give do | |
58 | not have any significance, i.e. take them as literal strings. | |
59 | ||
3587b513 JH |
60 | * The patterns in .gitignore and .gitattributes files can have **/, |
61 | as a pattern that matches 0 or more levels of subdirectory. | |
62 | E.g. "foo/**/bar" matches "bar" in "foo" itself or in a | |
63 | subdirectory of "foo". | |
99621af8 | 64 | |
bcd45b40 JH |
65 | * When giving arguments without "--" disambiguation, object names |
66 | that come earlier on the command line must not be interpretable as | |
67 | pathspecs and pathspecs that come later on the command line must | |
68 | not be interpretable as object names. This disambiguation rule has | |
69 | been tweaked so that ":/" (no other string before or after) is | |
70 | always interpreted as a pathspec; "git cmd -- :/" is no longer | |
71 | needed, you can just say "git cmd :/". | |
72 | ||
f51a757f JH |
73 | * Various "hint" lines Git gives when it asks the user to edit |
74 | messages in the editor are commented out with '#' by default. The | |
75 | core.commentchar configuration variable can be used to customize | |
76 | this '#' to a different character. | |
77 | ||
78 | * "git add -u" and "git add -A" without pathspec issues warning to | |
79 | make users aware that they are only operating on paths inside the | |
80 | subdirectory they are in. Use ":/" (everything from the top) or | |
81 | "." (everything from the $cwd) to disambiguate. | |
82 | ||
77d07f51 JH |
83 | * "git blame" (and "git diff") learned the "--no-follow" option. |
84 | ||
a923c314 JH |
85 | * "git branch" now rejects some nonsense combinations of command line |
86 | arguments (e.g. giving more than one branch name to rename) with | |
87 | more case-specific error messages. | |
88 | ||
3587b513 JH |
89 | * "git check-ignore" command to help debugging .gitignore files has |
90 | been added. | |
91 | ||
99621af8 JH |
92 | * "git cherry-pick" can be used to replay a root commit to an unborn |
93 | branch. | |
94 | ||
fe73786b JH |
95 | * "git commit" can be told to use --cleanup=whitespace by setting the |
96 | configuration variable commit.cleanup to 'whitespace'. | |
97 | ||
32238aeb JH |
98 | * "git fetch --mirror" and fetch that uses other forms of refspec |
99 | with wildcard used to attempt to update a symbolic ref that match | |
100 | the wildcard on the receiving end, which made little sense (the | |
101 | real ref that is pointed at by the symbolic ref would be updated | |
102 | anyway). Symbolic refs no longer are affected by such a fetch. | |
103 | ||
44fe8350 JH |
104 | * "git format-patch" now detects more cases in which a whole branch |
105 | is being exported, and uses the description for the branch, when | |
106 | asked to write a cover letter for the series. | |
107 | ||
94702dd1 JH |
108 | * "git format-patch" learned "-v $count" option, and prepends a |
109 | string "v$count-" to the names of its output files, and also | |
110 | automatically sets the subject prefix to "PATCH v$count". This | |
111 | allows patches from rerolled series to be stored under different | |
112 | names and makes it easier to reuse cover letter messsages. | |
113 | ||
fe73786b JH |
114 | * "git log" and friends can be told with --use-mailmap option to |
115 | rewrite the names and email addresses of people using the mailmap | |
116 | mechanism. | |
117 | ||
02339dd5 JH |
118 | * "git log --cc --graph" now shows the combined diff output with the |
119 | ancestry graph. | |
120 | ||
a923c314 JH |
121 | * "git mergetool" and "git difftool" learned to list the available |
122 | tool backends in a more consistent manner. | |
123 | ||
124 | * "git mergetool" is aware of TortoiseGitMerge now and uses it over | |
125 | TortoiseMerge when available. | |
126 | ||
32238aeb JH |
127 | * "git push" now requires "-f" to update a tag, even if it is a |
128 | fast-forward, as tags are meant to be fixed points. | |
129 | ||
f51a757f JH |
130 | * Error messages from "git push" when it stops to prevent remote refs |
131 | from getting overwritten by mistake have been improved to explain | |
132 | various situations separately. | |
133 | ||
3587b513 JH |
134 | * "git push" will stop without doing anything if the new "pre-push" |
135 | hook exists and exits with a failure. | |
136 | ||
99621af8 JH |
137 | * When "git rebase" fails to generate patches to be applied (e.g. due |
138 | to oom), it failed to detect the failure and instead behaved as if | |
139 | there were nothing to do. A workaround to use a temporary file has | |
140 | been applied, but we probably would want to revisit this later, as | |
141 | it hurts the common case of not failing at all. | |
142 | ||
c4ada628 JH |
143 | * Input and preconditions to "git reset" has been loosened where |
144 | appropriate. "git reset $fromtree Makefile" requires $fromtree to | |
145 | be any tree (it used to require it to be a commit), for example. | |
146 | "git reset" (without options or parameters) used to error out when | |
147 | you do not have any commits in your history, but it now gives you | |
148 | an empty index (to match non-existent commit you are not even on). | |
149 | ||
02339dd5 JH |
150 | * "git status" says what branch is being bisected or rebased when |
151 | able, not just "bisecting" or "rebasing". | |
152 | ||
32238aeb JH |
153 | * "git submodule" started learning a new mode to integrate with the |
154 | tip of the remote branch (as opposed to integrating with the commit | |
155 | recorded in the superproject's gitlink). | |
156 | ||
157 | ||
298caa7e JH |
158 | Foreign Interface |
159 | ||
32238aeb JH |
160 | * "git fast-export" has been updated for its use in the context of |
161 | the remote helper interface. | |
162 | ||
44fe8350 JH |
163 | * A new remote helper to interact with bzr has been added to contrib/. |
164 | ||
bcd45b40 | 165 | * "git p4" got various bugfixes around its branch handling. It is |
f51a757f JH |
166 | also made usable with Python 2.4/2.5. In addition, its various |
167 | portability issues for Cygwin have been addressed. | |
c4ada628 JH |
168 | |
169 | * The remote helper to interact with Hg in contrib/ has seen a few | |
170 | fixes. | |
171 | ||
298caa7e JH |
172 | |
173 | Performance, Internal Implementation, etc. | |
174 | ||
32238aeb JH |
175 | * "git fsck" has been taught to be pickier about entries in tree |
176 | objects that should not be there, e.g. ".", ".git", and "..". | |
177 | ||
178 | * Matching paths with common forms of pathspecs that contain wildcard | |
179 | characters has been optimized further. | |
180 | ||
bcd45b40 JH |
181 | * We stopped paying attention to $GIT_CONFIG environment that points |
182 | at a single configuration file from any command other than "git config" | |
183 | quite a while ago, but "git clone" internally set, exported, and | |
184 | then unexported the variable during its operation unnecessarily. | |
185 | ||
c4ada628 JH |
186 | * "git reset" internals has been reworked and should be faster in |
187 | general. We tried to be careful not to break any behaviour but | |
188 | there could be corner cases, especially when running the command | |
189 | from a conflicted state, that we may have missed. | |
190 | ||
32238aeb | 191 | * The implementation of "imap-send" has been updated to reuse xml |
3587b513 JH |
192 | quoting code from http-push codepath, and lost a lot of unused |
193 | code. | |
32238aeb | 194 | |
99621af8 JH |
195 | * There is a simple-minded checker for the test scripts in t/ |
196 | directory to catch most common mistakes (it is not enabled by | |
197 | default). | |
198 | ||
3587b513 JH |
199 | * You can build with USE_WILDMATCH=YesPlease to use a replacement |
200 | implementation of pattern matching logic used for pathname-like | |
201 | things, e.g. refnames and paths in the repository. This new | |
202 | implementation is not expected change the existing behaviour of Git | |
203 | in this release, except for "git for-each-ref" where you can now | |
204 | say "refs/**/master" and match with both refs/heads/master and | |
205 | refs/remotes/origin/master. We plan to use this new implementation | |
206 | in wider places (e.g. "git ls-files '**/Makefile' may find Makefile | |
207 | at the top-level, and "git log '**/t*.sh'" may find commits that | |
208 | touch a shell script whose name begins with "t" at any level) in | |
209 | future versions of Git, but we are not there yet. By building with | |
210 | USE_WILDMATCH, using the resulting Git daily and reporting when you | |
211 | find breakages, you can help us get closer to that goal. | |
212 | ||
bcd45b40 JH |
213 | * Some reimplementations of Git do not write all the stat info back |
214 | to the index due to their implementation limitations (e.g. jgit). | |
215 | A configuration option can tell Git to ignore changes to most of | |
216 | the stat fields and only pay attention to mtime and size, which | |
217 | these implementations can reliably update. This can be used to | |
218 | avoid excessive revalidation of contents. | |
219 | ||
298caa7e JH |
220 | |
221 | Also contains minor documentation updates and code clean-ups. | |
222 | ||
223 | ||
224 | Fixes since v1.8.1 | |
225 | ------------------ | |
226 | ||
227 | Unless otherwise noted, all the fixes since v1.8.1 in the maintenance | |
228 | track are contained in this release (see release notes to them for | |
229 | details). | |
230 | ||
231 | * An element on GIT_CEILING_DIRECTORIES list that does not name the | |
232 | real path to a directory (i.e. a symbolic link) could have caused | |
233 | the GIT_DIR discovery logic to escape the ceiling. | |
298caa7e | 234 | |
44fe8350 JH |
235 | * When attempting to read the XDG-style $HOME/.config/git/config and |
236 | finding that $HOME/.config/git is a file, we gave a wrong error | |
237 | message, instead of treating the case as "a custom config file does | |
238 | not exist there" and moving on. | |
298caa7e | 239 | |
3e293fba JH |
240 | * The behaviour visible to the end users was confusing, when they |
241 | attempt to kill a process spawned in the editor that was in turn | |
242 | launched by Git with SIGINT (or SIGQUIT), as Git would catch that | |
243 | signal and die. We ignore these signals now. | |
f51a757f | 244 | (merge 0398fc34 pf/editor-ignore-sigint later to maint). |
3e293fba | 245 | |
94702dd1 JH |
246 | * A child process that was killed by a signal (e.g. SIGINT) was |
247 | reported in an inconsistent way depending on how the process was | |
248 | spawned by us, with or without a shell in between. | |
94702dd1 | 249 | |
298caa7e JH |
250 | * After failing to create a temporary file using mkstemp(), failing |
251 | pathname was not reported correctly on some platforms. | |
298caa7e | 252 | |
bcd45b40 JH |
253 | * We used to stuff "user@" and then append what we read from |
254 | /etc/mailname to come up with a default e-mail ident, but a bug | |
255 | lost the "user@" part. | |
bcd45b40 | 256 | |
32238aeb JH |
257 | * The attribute mechanism didn't allow limiting attributes to be |
258 | applied to only a single directory itself with "path/" like the | |
c4ada628 JH |
259 | exclude mechanism does. The initial implementation of this that |
260 | was merged to 'maint' and 1.8.1.2 was with a severe performance | |
261 | degradations and needs to merge a fix-up topic. | |
32238aeb | 262 | |
aa398289 JH |
263 | * The smart HTTP clients forgot to verify the content-type that comes |
264 | back from the server side to make sure that the request is being | |
265 | handled properly. | |
266 | (merge 3443db5 sp/smart-http-content-type-check later to maint). | |
267 | ||
08c0e7fd JH |
268 | * "git am" did not parse datestamp correctly from Hg generated patch, |
269 | when it is run in a locale outside C (or en). | |
08c0e7fd | 270 | |
44fe8350 JH |
271 | * "git apply" misbehaved when fixing whitespace breakages by removing |
272 | excess trailing blank lines. | |
44fe8350 | 273 | |
aa398289 JH |
274 | * "git apply --summary" has been taught to make sure the similarity |
275 | value shown in its output is sensible, even when the input had a | |
276 | bogus value. | |
277 | (merge afcb6ac jk/apply-similaritly-parsing later to maint). | |
278 | ||
99621af8 JH |
279 | * A tar archive created by "git archive" recorded a directory in a |
280 | way that made NetBSD's implementation of "tar" sometimes unhappy. | |
99621af8 | 281 | |
94702dd1 JH |
282 | * "git archive" did not record uncompressed size in the header when |
283 | streaming a zip archive, which confused some implementations of unzip. | |
94702dd1 | 284 | |
f51a757f JH |
285 | * "git archive" did not parse configuration values in tar.* namespace |
286 | correctly. | |
287 | (merge b3873c3 jk/config-parsing-cleanup later to maint). | |
288 | ||
bcd45b40 JH |
289 | * Attempt to "branch --edit-description" an existing branch, while |
290 | being on a detached HEAD, errored out. | |
bcd45b40 | 291 | |
c4ada628 JH |
292 | * "git clean" showed what it was going to do, but sometimes end up |
293 | finding that it was not allowed to do so, which resulted in a | |
294 | confusing output (e.g. after saying that it will remove an | |
295 | untracked directory, it found an embedded git repository there | |
296 | which it is not allowed to remove). It now performs the actions | |
297 | and then reports the outcome more faithfully. | |
298 | (merge f538a91 zk/clean-report-failure later to maint). | |
299 | ||
99621af8 JH |
300 | * When "git clone --separate-git-dir=$over_there" is interrupted, it |
301 | failed to remove the real location of the $GIT_DIR it created. | |
302 | This was most visible when interrupting a submodule update. | |
99621af8 | 303 | |
02339dd5 JH |
304 | * "git cvsimport" mishandled timestamps at DST boundary. |
305 | (merge 48c9162 bw/get-tz-offset-perl later to maint). | |
306 | ||
aa398289 JH |
307 | * We used to have an arbitrary 32 limit for combined diff input, |
308 | resulting in incorrect number of leading colons shown when showing | |
309 | the "--raw --cc" output. | |
310 | (merge edbc00e jc/combine-diff-many-parents later to maint). | |
311 | ||
bcd45b40 JH |
312 | * "git fetch --depth" was broken in at least three ways. The |
313 | resulting history was deeper than specified by one commit, it was | |
314 | unclear how to wipe the shallowness of the repository with the | |
315 | command, and documentation was misleading. | |
316 | (merge cfb70e1 nd/fetch-depth-is-broken later to maint). | |
317 | ||
f51a757f JH |
318 | * "git log --all -p" that walked refs/notes/textconv/ ref can later |
319 | try to use the textconv data incorrectly after it gets freed. | |
320 | (merge be5c9fb jk/read-commit-buffer-data-after-free later to maint). | |
321 | ||
2f19ada7 JH |
322 | * We forgot to close the file descriptor reading from "gpg" output, |
323 | killing "git log --show-signature" on a long history. | |
2f19ada7 | 324 | |
298caa7e JH |
325 | * The way "git svn" asked for password using SSH_ASKPASS and |
326 | GIT_ASKPASS was not in line with the rest of the system. | |
298caa7e JH |
327 | |
328 | * The --graph code fell into infinite loop when asked to do what the | |
329 | code did not expect. | |
298caa7e JH |
330 | |
331 | * http transport was wrong to ask for the username when the | |
332 | authentication is done by certificate identity. | |
298caa7e JH |
333 | |
334 | * "git pack-refs" that ran in parallel to another process that | |
335 | created new refs had a nasty race. | |
298caa7e | 336 | |
2f19ada7 JH |
337 | * Rebasing the history of superproject with change in the submodule |
338 | has been broken since v1.7.12. | |
2f19ada7 | 339 | |
298caa7e JH |
340 | * After "git add -N" and then writing a tree object out of the |
341 | index, the cache-tree data structure got corrupted. | |
298caa7e | 342 | |
c4ada628 JH |
343 | * "git clone" used to allow --bare and --separate-git-dir=$there |
344 | options at the same time, which was nonsensical. | |
345 | (merge 95b63f1 nd/clone-no-separate-git-dir-with-bare later to maint). | |
346 | ||
347 | * "git rebase --preserve-merges" lost empty merges in recent versions | |
348 | of Git. | |
c4ada628 | 349 | |
99621af8 JH |
350 | * "git merge --no-edit" computed who were involved in the work done |
351 | on the side branch, even though that information is to be discarded | |
352 | without getting seen in the editor. | |
99621af8 | 353 | |
44fe8350 JH |
354 | * "git merge" started calling prepare-commit-msg hook like "git |
355 | commit" does some time ago, but forgot to pay attention to the exit | |
356 | status of the hook. | |
44fe8350 | 357 | |
2f19ada7 JH |
358 | * A failure to push due to non-ff while on an unborn branch |
359 | dereferenced a NULL pointer when showing an error message. | |
2f19ada7 | 360 | |
77d07f51 JH |
361 | * When users spell "cc:" in lowercase in the fake "header" in the |
362 | trailer part, "git send-email" failed to pick up the addresses from | |
363 | there. As e-mail headers field names are case insensitive, this | |
364 | script should follow suit and treat "cc:" and "Cc:" the same way. | |
77d07f51 JH |
365 | |
366 | * Output from "git status --ignored" showed an unexpected interaction | |
367 | with "--untracked". | |
77d07f51 | 368 | |
298caa7e JH |
369 | * "gitweb", when sorting by age to show repositories with new |
370 | activities first, used to sort repositories with absolutely | |
371 | nothing in it early, which was not very useful. | |
298caa7e | 372 | |
44fe8350 JH |
373 | * "gitweb"'s code to sanitize control characters before passing it to |
374 | "highlight" filter lost known-to-be-safe control characters by | |
375 | mistake. | |
44fe8350 | 376 | |
a923c314 JH |
377 | * "gitweb" pages served over HTTPS, when configured to show picon or |
378 | gravatar, referred to these external resources to be fetched via | |
379 | HTTP, resulting in mixed contents warning in browsers. | |
380 | (merge 5748558 ab/gitweb-use-same-scheme later to maint). | |
381 | ||
298caa7e JH |
382 | * When a line to be wrapped has a solid run of non space characters |
383 | whose length exactly is the wrap width, "git shortlog -w" failed | |
384 | to add a newline after such a line. | |
298caa7e | 385 | |
bbc6f64b JH |
386 | * Command line completion leaked an unnecessary error message while |
387 | looking for possible matches with paths in <tree-ish>. | |
bbc6f64b JH |
388 | |
389 | * Command line completion for "tcsh" emitted an unwanted space | |
390 | after completing a single directory name. | |
08c0e7fd JH |
391 | |
392 | * Command line completion code was inadvertently made incompatible with | |
393 | older versions of bash by using a newer array notation. | |
bbc6f64b | 394 | |
298caa7e JH |
395 | * Some shells do not behave correctly when IFS is unset; work it |
396 | around by explicitly setting it to the default value. | |
44fe8350 JH |
397 | |
398 | * Some scripted programs written in Python did not get updated when | |
399 | PYTHON_PATH changed. | |
400 | (cherry-pick 96a4647fca54031974cd6ad1 later to maint). | |
401 | ||
402 | * When autoconf is used, any build on a different commit always ran | |
403 | "config.status --recheck" even when unnecessary. | |
44fe8350 | 404 | |
2f19ada7 JH |
405 | * A fix was added to the build procedure to work around buggy |
406 | versions of ccache broke the auto-generation of dependencies, which | |
407 | unfortunately is still relevant because some people use ancient | |
408 | distros. | |
2f19ada7 | 409 | |
aa398289 JH |
410 | * The autoconf subsystem passed --mandir down to generated |
411 | config.mak.autogen but forgot to do the same for --htmldir. | |
412 | (merge fc1c541 ct/autoconf-htmldir later to maint). | |
413 | ||
44fe8350 JH |
414 | * We have been carrying a translated and long-unmaintained copy of an |
415 | old version of the tutorial; removed. | |
08c0e7fd JH |
416 | |
417 | * t0050 had tests expecting failures from a bug that was fixed some | |
418 | time ago. | |
44fe8350 JH |
419 | |
420 | * t4014, t9502 and t0200 tests had various portability issues that | |
421 | broke on OpenBSD. | |
44fe8350 JH |
422 | |
423 | * t9020 and t3600 tests had various portability issues. | |
44fe8350 JH |
424 | |
425 | * t9200 runs "cvs init" on a directory that already exists, but a | |
426 | platform can configure this fail for the current user (e.g. you | |
427 | need to be in the cvsadmin group on NetBSD 6.0). | |
44fe8350 JH |
428 | |
429 | * t9020 and t9810 had a few non-portable shell script construct. | |
bcd45b40 JH |
430 | |
431 | * Scripts to test bash completion was inherently flaky as it was | |
432 | affected by whatever random things the user may have on $PATH. |