]>
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 | ||
12 | ||
85f08378 JH |
13 | UI, Workflows & Features |
14 | ||
15 | * "git config --edit --global" starts from a skeletal per-user | |
16 | configuration file contents, instead of a total blank, when the | |
17 | user does not already have any. This immediately reduces the | |
18 | need for a later "Have you forgotten setting core.user?" and we | |
19 | can add more to the template as we gain more experience. | |
20 | ||
0c72b98f JH |
21 | * "git stash list -p" used to be almost always a no-op because each |
22 | stash entry is represented as a merge commit. It learned to show | |
23 | the difference between the base commit version and the working tree | |
24 | version, which is in line with what "git show" gives. | |
85f08378 | 25 | |
97b8860c JH |
26 | * Sometimes users want to report a bug they experience on their |
27 | repository, but they are not at liberty to share the contents of | |
28 | the repository. "fast-export" was taught an "--anonymize" option | |
29 | to replace blob contents, names of people and paths and log | |
30 | messages with bland and simple strings to help them. | |
31 | ||
32 | * "log --date=iso" uses a slight variant of ISO 8601 format that is | |
33 | made more human readable. A new "--date=iso-strict" option gives | |
34 | datetime output that is more strictly conformant. | |
35 | ||
36 | * A broken reimplementation of Git could write an invalid index that | |
37 | records both stage #0 and higher stage entries for the same path. | |
38 | We now notice and reject such an index, as there is no sensible | |
39 | fallback (we do not know if the broken tool wanted to resolve and | |
40 | forgot to remove higher stage entries, or if it wanted to unresolve | |
41 | and forgot to remove the stage#0 entry). | |
42 | ||
d29e9c89 JH |
43 | * The "pre-receive" and "post-receive" hooks are no longer required |
44 | to consume their input fully (not following this requirement used | |
45 | to result in intermittent errors in "git push"). | |
46 | ||
0bf7dd65 JH |
47 | * The pretty-format specifier "%d", which expanded to " (tagname)" |
48 | for a tagged commit, gained a cousin "%D" that just gives the | |
49 | "tagname" without frills. | |
97b8860c | 50 | |
85f08378 JH |
51 | Performance, Internal Implementation, etc. |
52 | ||
ce1d3a93 JH |
53 | * The API to manipulate the "refs" is currently undergoing a revamp |
54 | to make it more transactional, with the eventual goal to allow | |
55 | all-or-none atomic updates and migrating the storage to something | |
56 | other than the traditional filesystem based one (e.g. databases). | |
57 | ||
58 | * We no longer attempt to keep track of individual dependencies to | |
59 | the header files in the build procedure, relying on automated | |
60 | dependency generation support from modern compilers. | |
61 | ||
0c72b98f JH |
62 | * In tests, we have been using NOT_{MINGW,CYGWIN} test prerequisites |
63 | long before negated prerequisites e.g. !MINGW were invented. | |
64 | The former has been converted to the latter to avoid confusion. | |
65 | ||
85f08378 JH |
66 | * Looking up remotes configuration in a repository with very many |
67 | remotes defined has been optimized. | |
68 | ||
69 | * There are cases where you lock and open to write a file, close it | |
70 | to show the updated contents to external processes, and then have | |
71 | to update the file again while still holding the lock, but the | |
72 | lockfile API lacked support for such an access pattern. | |
73 | ||
ce1d3a93 JH |
74 | * The API to allocate the structure to keep track of commit |
75 | decoration has been updated to make it less cumbersome to use. | |
76 | ||
85f08378 | 77 | * An in-core caching layer to let us avoid reading the same |
ce1d3a93 JH |
78 | configuration files number of times has been added. A few commands |
79 | have been converted to use this subsystem. | |
85f08378 JH |
80 | |
81 | * Various code paths have been cleaned up and simplified by using | |
82 | "strbuf", "starts_with()", and "skip_prefix()" APIs more. | |
83 | ||
ce1d3a93 JH |
84 | * A few codepaths that died when large blobs that would not fit in |
85 | core are involved in their operation have been taught to punt | |
86 | instead, by e.g. marking too large a blob as not to be diffed. | |
87 | ||
88 | * A few more code paths in "commit" and "checkout" have been taught | |
89 | to repopulate the cache-tree in the index, to help speed up later | |
90 | "write-tree" (used in "commit") and "diff-index --cached" (used in | |
91 | "status"). | |
92 | ||
97b8860c JH |
93 | * A common programming mistake to assign the same short option name |
94 | to two separate options is detected by parse_options() API to help | |
95 | developers. | |
96 | ||
d29e9c89 JH |
97 | * The code path to write out the packed-refs file has been optimized, |
98 | which especially matters in a repository with a large number of | |
99 | refs. | |
100 | ||
101 | * The check to see if a ref $F can be created by making sure no | |
102 | existing ref has $F/ as its prefix has been optimized, which | |
103 | especially matters in a repository with a large number of existing | |
104 | refs. | |
105 | ||
106 | * "git fsck" was taught to check contents of tag objects a bit more. | |
107 | ||
108 | * "git hash-object" was taught a "--literally" option to help | |
109 | debugging. | |
110 | ||
85f08378 JH |
111 | |
112 | Also contains various documentation updates and code clean-ups. | |
113 | ||
114 | ||
115 | Fixes since v2.1 | |
116 | ---------------- | |
117 | ||
0c72b98f JH |
118 | Unless otherwise noted, all the fixes since v2.1 in the maintenance |
119 | track are contained in this release (see the maintenance releases' | |
120 | notes for details). | |
121 | ||
85f08378 JH |
122 | * "git log --pretty/format=" with an empty format string did not |
123 | mean the more obvious "No output whatsoever" but "Use default | |
124 | format", which was counterintuitive. | |
85f08378 JH |
125 | |
126 | * Implementations of "tar" that do not understand an extended pax | |
127 | header would extract the contents of it in a regular file; make | |
128 | sure the permission bits of this file follows the same tar.umask | |
129 | configuration setting. | |
130 | ||
0c72b98f JH |
131 | * "git -c section.var command" and "git -c section.var= command" |
132 | should pass the configuration differently (the former should be a | |
133 | boolean true, the latter should be an empty string). | |
85f08378 | 134 | |
0c72b98f JH |
135 | * Applying a patch not generated by Git in a subdirectory used to |
136 | check the whitespace breakage using the attributes for incorrect | |
137 | paths. Also whitespace checks were performed even for paths | |
138 | excluded via "git apply --exclude=<path>" mechanism. | |
0c72b98f JH |
139 | |
140 | * "git bundle create" with date-range specification were meant to | |
141 | exclude tags outside the range, but it didn't. | |
0c72b98f JH |
142 | |
143 | * "git add x" where x that used to be a directory has become a | |
144 | symbolic link to a directory misbehaved. | |
0c72b98f JH |
145 | |
146 | * The prompt script checked $GIT_DIR/ref/stash file to see if there | |
147 | is a stash, which was a no-no. | |
0c72b98f JH |
148 | |
149 | * Pack-protocol documentation had a minor typo. | |
ce1d3a93 JH |
150 | |
151 | * "git checkout -m" did not switch to another branch while carrying | |
152 | the local changes forward when a path was deleted from the index. | |
ce1d3a93 JH |
153 | |
154 | * With sufficiently long refnames, "git fast-import" could have | |
155 | overflown an on-stack buffer. | |
ce1d3a93 JH |
156 | |
157 | * After "pack-refs --prune" packed refs at the top-level, it failed | |
158 | to prune them. | |
ce1d3a93 JH |
159 | |
160 | * Progress output from "git gc --auto" was visible in "git fetch -q". | |
ce1d3a93 JH |
161 | |
162 | * We used to pass -1000 to poll(2), expecting it to also mean "no | |
163 | timeout", which should be spelled as -1. | |
97b8860c JH |
164 | |
165 | * "git rebase" documentation was unclear that it is required to | |
166 | specify on what <upstream> the rebase is to be done when telling it | |
167 | to first check out <branch>. | |
168 | (merge 95c6826 so/rebase-doc later to maint). | |
169 | ||
170 | * "git push" over HTTP transport had an artificial limit on number of | |
171 | refs that can be pushed imposed by the command line length. | |
172 | (merge 26be19b jk/send-pack-many-refspecs later to maint). | |
173 | ||
174 | * When receiving an invalid pack stream that records the same object | |
175 | twice, multiple threads got confused due to a race. | |
176 | (merge ab791dd jk/index-pack-threading-races later to maint). | |
177 | ||
178 | * An attempt to remove the entire tree in the "git fast-import" input | |
179 | stream caused it to misbehave. | |
180 | (merge 2668d69 mb/fast-import-delete-root later to maint). | |
181 | ||
182 | * Reachability check (used in "git prune" and friends) did not add a | |
183 | detached HEAD as a starting point to traverse objects still in use. | |
184 | (merge c40fdd0 mk/reachable-protect-detached-head later to maint). | |
185 | ||
186 | * "git config --add section.var val" used to lose existing | |
187 | section.var whose value was an empty string. | |
188 | (merge c1063be ta/config-add-to-empty-or-true-fix later to maint). | |
189 | ||
190 | * "git fsck" failed to report that it found corrupt objects via its | |
191 | exit status in some cases. | |
192 | (merge 30d1038 jk/fsck-exit-code-fix later to maint). | |
d29e9c89 JH |
193 | |
194 | * Use of "--verbose" option used to break "git branch --merged". | |
195 | (merge 12994dd jk/maint-branch-verbose-merged later to maint). | |
0bf7dd65 JH |
196 | |
197 | * Some MUAs mangled a line in a message that begins with "From " to | |
198 | ">From " when writing to a mailbox file and feeding such an input | |
199 | to "git am" used to lose such a line. | |
200 | (merge 85de86a jk/mbox-from-line later to maint). | |
201 | ||
202 | * "rev-parse --verify --quiet $name" is meant to quietly exit with a | |
203 | non-zero status when $name is not a valid object name, but still | |
204 | gave error messages in some cases. |