What's cooking (2011/02 #06)

Junio C Hamano committed Feb 27, 2011 at 22:47 UTC 6e95fc4660b77a0e60ad282d9d3f68dd805b042b
1 file changed +224 -181
whats-cooking.txt
+224 -181
@@ -1,18 +1,220 @@
1 To: git@vger.kernel.org
2 -Subject: What's cooking in git.git (Feb 2011, #05; Wed, 23)
3 -X-master-at: 046613c5465e4fc0611f93a5ef31d3815fb50c22
4 -X-next-at: 426d48db1a78ffd5f2b882725c32f266e617529e
2 +Subject: What's cooking in git.git (Feb 2011, #06; Sun, 27)
3 +X-master-at: 8978166e531e0941811099d4117574ebbbcf35d8
4 +X-next-at: 4aa7278540f2c67a375cee26edfb39164695d3e8
5
6 -What's cooking in git.git (Feb 2011, #05; Wed, 23)
6 +What's cooking in git.git (Feb 2011, #06; Sun, 27)
7 --------------------------------------------------
8
9 Here are the topics that have been cooking. Commits prefixed with '-' are
10 only in 'pu' while commits prefixed with '+' are in 'next'.
11
12 +--------------------------------------------------
13 +[Graduated to "master"]
14 +
15 +* en/object-list-with-pathspec (2010-09-20) 2 commits
16 + (merged to 'next' on 2011-02-09 at ccf6c6a)
17 + + Add testcases showing how pathspecs are handled with rev-list --objects
18 + + Make rev-list --objects work together with pathspecs
19 + (this branch uses nd/struct-pathspec; is tangled with jc/grep--no-index-pathspec-fix.)
20 +
21 +* hv/mingw-fs-funnies (2011-02-07) 5 commits
22 + (merged to 'next' on 2011-02-09 at 3d0bb1a)
23 + + mingw_rmdir: set errno=ENOTEMPTY when appropriate
24 + + mingw: add fallback for rmdir in case directory is in use
25 + + mingw: make failures to unlink or move raise a question
26 + + mingw: work around irregular failures of unlink on windows
27 + + mingw: move unlink wrapper to mingw.c
28 +
29 +* jh/push-default-upstream-configname (2011-02-16) 1 commit
30 + (merged to 'next' on 2011-02-23 at b5c25fa)
31 + + push.default: Rename 'tracking' to 'upstream'
32 +
33 +* js/detach-doc (2011-02-20) 1 commit
34 + (merged to 'next' on 2011-02-21 at c384c3c)
35 + + git-checkout.txt: improve detached HEAD documentation
36 +
37 +* js/maint-merge-use-prepare-commit-msg-hook (2011-02-14) 1 commit
38 + (merged to 'next' on 2011-02-22 at 6458c4b)
39 + + merge: honor prepare-commit-msg hook
40 +
41 +* lp/config-vername-check (2011-02-01) 2 commits
42 + (merged to 'next' on 2011-02-23 at 426d48d)
43 + + Disallow empty section and variable names
44 + + Sanity-check config variable names
45 +
46 +* mg/patch-id (2011-02-17) 2 commits
47 + (merged to 'next' on 2011-02-22 at 6f4acd8)
48 + + git-patch-id: do not trip over "no newline" markers
49 + + git-patch-id: test for "no newline" markers
50 +
51 +* mg/placeholders-are-lowercase (2011-02-17) 5 commits
52 + (merged to 'next' on 2011-02-22 at 2754e21)
53 + + Make <identifier> lowercase in Documentation
54 + + Make <identifier> lowercase as per CodingGuidelines
55 + + Make <identifier> lowercase as per CodingGuidelines
56 + + Make <identifier> lowercase as per CodingGuidelines
57 + + CodingGuidelines: downcase placeholders in usage messages
58 +
59 +* mo/perl-bidi-pipe-envfix (2011-02-15) 1 commit
60 + (merged to 'next' on 2011-02-15 at c36e816)
61 + + perl: command_bidi_pipe() method should set-up git environmens
62 +
63 +* mz/rerere-remaining (2011-02-16) 2 commits
64 + (merged to 'next' on 2011-02-22 at fa2d5ab)
65 + + mergetool: don't skip modify/remove conflicts
66 + + rerere "remaining"
67 +
68 +* nd/hash-object-sanity (2011-02-05) 1 commit
69 + (merged to 'next' on 2011-02-22 at 09acf6f)
70 + + Make hash-object more robust against malformed objects
71 +
72 +* nd/sorted-builtin-command-list (2011-02-15) 1 commit
73 + (merged to 'next' on 2011-02-22 at 91fccd1)
74 + + git.c: reorder builtin command list
75 +
76 +* nd/struct-pathspec (2011-01-31) 22 commits
77 + (merged to 'next' on 2011-02-09 at b1e64ee)
78 + + t6004: add pathspec globbing test for log family
79 + + t7810: overlapping pathspecs and depth limit
80 + + grep: drop pathspec_matches() in favor of tree_entry_interesting()
81 + + grep: use writable strbuf from caller for grep_tree()
82 + + grep: use match_pathspec_depth() for cache/worktree grepping
83 + + grep: convert to use struct pathspec
84 + + Convert ce_path_match() to use match_pathspec_depth()
85 + + Convert ce_path_match() to use struct pathspec
86 + + struct rev_info: convert prune_data to struct pathspec
87 + + pathspec: add match_pathspec_depth()
88 + + tree_entry_interesting(): optimize wildcard matching when base is matched
89 + + tree_entry_interesting(): support wildcard matching
90 + + tree_entry_interesting(): fix depth limit with overlapping pathspecs
91 + + tree_entry_interesting(): support depth limit
92 + + tree_entry_interesting(): refactor into separate smaller functions
93 + + diff-tree: convert base+baselen to writable strbuf
94 + + glossary: define pathspec
95 + + Move tree_entry_interesting() to tree-walk.c and export it
96 + + tree_entry_interesting(): remove dependency on struct diff_options
97 + + Convert struct diff_options to use struct pathspec
98 + + diff-no-index: use diff_tree_setup_paths()
99 + + Add struct pathspec
100 + (this branch is used by en/object-list-with-pathspec and jc/grep--no-index-pathspec-fix.)
101 +
102 +* pw/p4 (2011-02-19) 8 commits
103 + (merged to 'next' on 2011-02-21 at 1a7b7d2)
104 + + git-p4: support clone --bare
105 + + git-p4: decode p4 wildcard characters
106 + + git-p4: better message for "git-p4 sync" when not cloned
107 + + git-p4: reinterpret confusing p4 message
108 + + git-p4: accommodate new move/delete type in p4
109 + + git-p4: add missing newline in initial import message
110 + + git-p4: fix key error for p4 problem
111 + + git-p4: test script
112 +
113 +* sp/maint-smart-http-sans-100-continue (2011-02-15) 1 commit
114 + (merged to 'next' on 2011-02-15 at 553e3e5)
115 + + smart-http: Don't use Expect: 100-Continue
116 +
117 +* uk/checkout-ambiguous-ref (2011-02-15) 5 commits
118 + (merged to 'next' on 2011-02-15 at 645dad6)
119 + + Rename t2019 with typo "amiguous" that meant "ambiguous"
120 + + checkout: rearrange update_refs_for_switch for clarity
121 + + checkout: introduce --detach synonym for "git checkout foo^{commit}"
122 + + checkout: split off a function to peel away branchname arg
123 + (merged to 'next' on 2011-02-03 at 9044724)
124 + + checkout: fix bug with ambiguous refs
125 +
126 +* va/p4 (2011-02-20) 2 commits
127 + (merged to 'next' on 2011-02-21 at d981b23)
128 + + git-p4: Add copy detection support
129 + + git-p4: Improve rename detection support
130 +
131 --------------------------------------------------
132 [New Topics]
133
15 -* ab/i18n (2011-02-22) 73 commits
134 +* jn/maint-commit-missing-template (2011-02-25) 1 commit
135 + (merged to 'next' on 2011-02-25 at c95589d)
136 + + commit: error out for missing commit message template
137 +
138 +* mg/maint-difftool-vim-readonly (2011-02-25) 1 commit
139 + (merged to 'next' on 2011-02-25 at 990579c)
140 + + mergetool-lib: call vim in readonly mode for diffs
141 +
142 +* fk/maint-cvsimport-early-failure (2011-01-31) 1 commit
143 + - git-cvsimport.perl: Bail out right away when reading from the server fails
144 +
145 +* jk/strbuf-vaddf (2011-02-25) 2 commits
146 + - strbuf: add strbuf_vaddf
147 + - compat: provide a fallback va_copy definition
148 + (this branch is used by ab/i18n-st, jk/trace-sifter and jn/status-translatable.)
149 +
150 +* jk/trace-sifter (2011-02-24) 6 commits
151 + - trace: give repo_setup trace its own key
152 + - add packet tracing debug code
153 + - trace: add trace_strbuf
154 + - trace: factor out "do we want to trace" logic
155 + - trace: refactor to support multiple env variables
156 + - trace: add trace_vprintf
157 + (this branch uses jk/strbuf-vaddf; is tangled with ab/i18n-st and jn/status-translatable.)
158 +
159 +* jn/maint-instaweb-plack-fix (2011-02-26) 1 commit
160 + - git-instaweb: Change how gitweb.psgi is made runnable as standalone app
161 +
162 +* jn/status-translatable (2011-02-25) 3 commits
163 + - commit, status: use status_printf{,_ln,_more} helpers
164 + - commit: refer to commit template as s->fp
165 + - wt-status: add helpers for printing wt-status lines
166 + (this branch is used by ab/i18n-st and ab/i18n-st; uses jk/strbuf-vaddf; is tangled with jk/trace-sifter.)
167 +
168 +* mh/p4 (2011-02-25) 1 commit
169 + (merged to 'next' on 2011-02-26 at 1693331)
170 + + git-p4 submit: prevent 'Jobs' section from being removed from p4 change log
171 +
172 +* nd/rfc-add-u-full-tree (2011-02-07) 1 commit
173 + - add: make "add -u" update full tree without pathspec
174 +
175 +* ss/git-gui-mergetool (2011-02-26) 2 commits
176 + - mergetool--lib: Add Beyond Compare 3 as a tool
177 + - mergetool--lib: Sort tools alphabetically for easier lookup
178 +
179 +* ss/mergetool--lib (2011-02-27) 2 commits
180 + - mergetool--lib: Add Beyond Compare 3 as a tool
181 + - mergetool--lib: Sort tools alphabetically for easier lookup
182 +
183 +--------------------------------------------------
184 +[Stalled]
185 +
186 +* jh/merge-sans-branch (2011-02-10) 4 commits
187 + . merge: add support for merging from upstream by default
188 + - merge: introduce per-branch-configuration helper function
189 + - merge: introduce setup_merge_commit helper function
190 + - merge: update the usage information to be more modern
191 +
192 +There was an objection to the tip one that determines the upstream in a
193 +wrong way?
194 +
195 +* jk/tag-contains (2010-07-05) 4 commits
196 + - Why is "git tag --contains" so slow?
197 + - default core.clockskew variable to one day
198 + - limit "contains" traversals based on commit timestamp
199 + - tag: speed up --contains calculation
200 +
201 +The idea of the bottom one is probably Ok, except that the use of object
202 +flags needs to be rethought, or at least the helper needs to be moved to
203 +builtin/tag.c to make it clear that it should not be used outside the
204 +current usage context.
205 +
206 +* jc/rename-degrade-cc-to-c (2011-01-06) 3 commits
207 + . diffcore-rename: fall back to -C when -C -C busts the rename limit
208 + . diffcore-rename: record filepair for rename src
209 + . diffcore-rename: refactor "too many candidates" logic
210 +
211 +--------------------------------------------------
212 +[Cooking]
213 +
214 +* nd/index-doc (2010-09-06) 1 commit
215 + - doc: technical details about the index file format
216 +
217 +* ab/i18n-st (2011-02-22) 74 commits
218 - i18n: git-shortlog basic messages
219 - i18n: git-revert split up "could not revert/apply" message
220 - i18n: git-revert literal "me" messages
@@ -82,18 +284,17 @@ only in 'pu' while commits prefixed with '+' are in 'next'.
284 - i18n: git-clone basic messages
285 - i18n: git-init "Initialized [...] repository" message
286 - i18n: git-init basic messages
287 + - i18n: "make distclean" should clean up after "make pot"
288 - i18n: Makefile: "pot" target to extract messages marked for translation
289 - i18n: do not poison translations unless GIT_GETTEXT_POISON envvar is set
87 - - i18n: add GETTEXT_POISON to simulate translated messages unfriendly translator
290 + - i18n: add GETTEXT_POISON to simulate unfriendly translator
291 - i18n: add no-op _() and N_() wrappers
292 + (this branch uses jk/strbuf-vaddf, jn/status-translatable and jn/status-translatable; is tangled with jk/trace-sifter.)
293
90 -Re^4-roll, coordinated between Ævar and Jonathan.
91 -
92 -I'd like to fast-track the basics (especially the bottom 3 patches), and
93 -am even tempted to rebase other patches on 'pu' that are not yet in 'next'
94 -on top of them, to make the transition easier, so please lend extra sets
95 -of eyeballs on an earlier ones to make sure they are sane (I thought they
96 -were, but I am far from perfect).
294 +Rebased on other infrastructure adjustments (tentatively renamed the
295 +branch). I'd like to fast-track the basics (especially the bottom 3
296 +patches), and am even tempted to rebase other patches on 'pu' that are not
297 +yet in 'next' on top of them, to make the transition easier.
298
299 * gr/cvsimport-alternative-cvspass-location (2011-02-18) 1 commit
300 - Look for password in both CVS and CVSNT password files.
@@ -106,8 +307,6 @@ Likes, dislikes?
307 * jh/maint-do-not-track-non-branches (2011-02-17) 1 commit
308 - branch/checkout --track: Ensure that upstream branch is indeed a branch
309
109 -This supersedes "do not track HEAD" from Thomas.
110 -
310 * jk/diffstat-binary (2011-02-19) 2 commits
311 (merged to 'next' on 2011-02-23 at 49da967)
312 + diff: don't retrieve binary blobs for diffstat
@@ -138,10 +337,6 @@ The above three all seemed sensible improvements.
337 + Introduce CHERRY_PICK_HEAD
338 + t3507: introduce pristine-detach helper
339
141 -* js/detach-doc (2011-02-20) 1 commit
142 - (merged to 'next' on 2011-02-21 at c384c3c)
143 - + git-checkout.txt: improve detached HEAD documentation
144 -
340 * lt/rename-no-extra-copy-detection (2011-02-18) 3 commits
341 (merged to 'next' on 2011-02-23 at 2c1f271)
342 + diffcore-rename: improve estimate_similarity() heuristics
@@ -161,11 +356,6 @@ The above three all seemed sensible improvements.
356 + t7406: "git submodule update {--merge|--rebase]" with new submodules
357 + submodule: no [--merge|--rebase] when newly cloned
358
164 -* va/p4 (2011-02-20) 2 commits
165 - (merged to 'next' on 2011-02-21 at d981b23)
166 - + git-p4: Add copy detection support
167 - + git-p4: Improve rename detection support
168 -
359 * jc/complete-symmetric-diff (2011-02-23) 1 commit
360 - completion: complete "git diff ...branc<TAB>"
361
@@ -177,100 +367,23 @@ The above three all seemed sensible improvements.
367 - fetch/pull: Add the 'on-demand' value to the --recurse-submodules option
368 - fetch/pull: recurse into submodules when necessary
369
180 -* jk/format-patch-multiline-header (2011-02-23) 2 commits
370 +* jk/format-patch-multiline-header (2011-02-23) 3 commits
371 + - format-patch: rfc2047-encode newlines in headers
372 - format-patch: wrap long header lines
373 - strbuf: add fixed-length version of add_wrapped_text
374
184 -* cp/mergetool-beyondcompare (2011-02-18) 1 commit
185 - - mergetool--lib: add support for beyond compare
186 -
187 -May want to have an independent success report on Windows.
188 -
189 ---------------------------------------------------
190 -[Stalled]
191 -
192 -* jk/tag-contains (2010-07-05) 4 commits
193 - - Why is "git tag --contains" so slow?
194 - - default core.clockskew variable to one day
195 - - limit "contains" traversals based on commit timestamp
196 - - tag: speed up --contains calculation
197 -
198 -The idea of the bottom one is probably Ok, except that the use of object
199 -flags needs to be rethought, or at least the helper needs to be moved to
200 -builtin/tag.c to make it clear that it should not be used outside the
201 -current usage context.
202 -
203 -* jc/rename-degrade-cc-to-c (2011-01-06) 3 commits
204 - . diffcore-rename: fall back to -C when -C -C busts the rename limit
205 - . diffcore-rename: record filepair for rename src
206 - . diffcore-rename: refactor "too many candidates" logic
207 -
208 -* nd/index-doc (2010-09-06) 1 commit
209 - . doc: technical details about the index file format
210 -
211 ---------------------------------------------------
212 -[Cooking]
213 -
375 * js/checkout-untracked-symlink (2011-02-20) 2 commits
376 (merged to 'next' on 2011-02-23 at 52a35ce)
377 + do not overwrite untracked symlinks
378 + Demonstrate breakage: checkout overwrites untracked symlink with directory
379
219 -* pw/p4 (2011-02-19) 8 commits
220 - (merged to 'next' on 2011-02-21 at 1a7b7d2)
221 - + git-p4: support clone --bare
222 - + git-p4: decode p4 wildcard characters
223 - + git-p4: better message for "git-p4 sync" when not cloned
224 - + git-p4: reinterpret confusing p4 message
225 - + git-p4: accommodate new move/delete type in p4
226 - + git-p4: add missing newline in initial import message
227 - + git-p4: fix key error for p4 problem
228 - + git-p4: test script
229 -
230 -* jh/push-default-upstream-configname (2011-02-16) 1 commit
231 - (merged to 'next' on 2011-02-23 at b5c25fa)
232 - + push.default: Rename 'tracking' to 'upstream'
233 -
234 -This is not "renaming" in the sense that breaks existing practice, but
235 -giving a new official name and deprecating the existing one.
236 -
237 -* js/maint-merge-use-prepare-commit-msg-hook (2011-02-14) 1 commit
238 - (merged to 'next' on 2011-02-22 at 6458c4b)
239 - + merge: honor prepare-commit-msg hook
240 -
241 -* mg/patch-id (2011-02-17) 2 commits
242 - (merged to 'next' on 2011-02-22 at 6f4acd8)
243 - + git-patch-id: do not trip over "no newline" markers
244 - + git-patch-id: test for "no newline" markers
245 -
246 -* mg/placeholders-are-lowercase (2011-02-17) 5 commits
247 - (merged to 'next' on 2011-02-22 at 2754e21)
248 - + Make <identifier> lowercase in Documentation
249 - + Make <identifier> lowercase as per CodingGuidelines
250 - + Make <identifier> lowercase as per CodingGuidelines
251 - + Make <identifier> lowercase as per CodingGuidelines
252 - + CodingGuidelines: downcase placeholders in usage messages
253 -
254 -* mo/perl-bidi-pipe-envfix (2011-02-15) 1 commit
255 - (merged to 'next' on 2011-02-15 at c36e816)
256 - + perl: command_bidi_pipe() method should set-up git environmens
257 -
258 -Looked reasonable.
259 -
260 -* nd/sorted-builtin-command-list (2011-02-15) 1 commit
261 - (merged to 'next' on 2011-02-22 at 91fccd1)
262 - + git.c: reorder builtin command list
263 -
264 -* sp/maint-smart-http-sans-100-continue (2011-02-15) 1 commit
265 - (merged to 'next' on 2011-02-15 at 553e3e5)
266 - + smart-http: Don't use Expect: 100-Continue
267 -
380 * jc/grep--no-index-pathspec-fix (2011-02-16) 1 commit
381 (merged to 'next' on 2011-02-23 at 58b03b1)
382 + grep --no-index: honor pathspecs correctly
271 - (this branch uses nd/struct-pathspec; is tangled with en/object-list-with-pathspec.)
383
273 -* mz/rebase (2011-02-09) 32 commits
384 +* mz/rebase (2011-02-24) 33 commits
385 + (merged to 'next' on 2011-02-25 at 52caa7a)
386 + + Makefile: do not install sourced rebase scripts
387 (merged to 'next' on 2011-02-22 at 3219155)
388 + rebase: use @{upstream} if no upstream specified
389 + rebase -i: remove unnecessary state rebase-root
@@ -308,80 +421,10 @@ Looked reasonable.
421 Minor UI regression was reported but otherwise it looked like that the
422 topic is in a good shape.
423
311 -* jh/merge-sans-branch (2011-02-10) 4 commits
312 - . merge: add support for merging from upstream by default
313 - - merge: introduce per-branch-configuration helper function
314 - - merge: introduce setup_merge_commit helper function
315 - - merge: update the usage information to be more modern
316 -
317 -There was an objection to the tip one that determines the upstream in a
318 -wrong way?
319 -
320 -* lp/config-vername-check (2011-02-01) 2 commits
321 - (merged to 'next' on 2011-02-23 at 426d48d)
322 - + Disallow empty section and variable names
323 - + Sanity-check config variable names
324 -
325 -* mz/rerere-remaining (2011-02-16) 2 commits
326 - (merged to 'next' on 2011-02-22 at fa2d5ab)
327 - + mergetool: don't skip modify/remove conflicts
328 - + rerere "remaining"
329 -
330 -Looked much better than my weatherbaloon patch.
331 -
332 -* nd/hash-object-sanity (2011-02-05) 1 commit
333 - (merged to 'next' on 2011-02-22 at 09acf6f)
334 - + Make hash-object more robust against malformed objects
335 -
336 -* hv/mingw-fs-funnies (2011-02-07) 5 commits
337 - (merged to 'next' on 2011-02-09 at 3d0bb1a)
338 - + mingw_rmdir: set errno=ENOTEMPTY when appropriate
339 - + mingw: add fallback for rmdir in case directory is in use
340 - + mingw: make failures to unlink or move raise a question
341 - + mingw: work around irregular failures of unlink on windows
342 - + mingw: move unlink wrapper to mingw.c
343 -
344 -Rerolled and seems ready to move forward.
345 -
346 -* nd/struct-pathspec (2011-01-31) 22 commits
347 - (merged to 'next' on 2011-02-09 at b1e64ee)
348 - + t6004: add pathspec globbing test for log family
349 - + t7810: overlapping pathspecs and depth limit
350 - + grep: drop pathspec_matches() in favor of tree_entry_interesting()
351 - + grep: use writable strbuf from caller for grep_tree()
352 - + grep: use match_pathspec_depth() for cache/worktree grepping
353 - + grep: convert to use struct pathspec
354 - + Convert ce_path_match() to use match_pathspec_depth()
355 - + Convert ce_path_match() to use struct pathspec
356 - + struct rev_info: convert prune_data to struct pathspec
357 - + pathspec: add match_pathspec_depth()
358 - + tree_entry_interesting(): optimize wildcard matching when base is matched
359 - + tree_entry_interesting(): support wildcard matching
360 - + tree_entry_interesting(): fix depth limit with overlapping pathspecs
361 - + tree_entry_interesting(): support depth limit
362 - + tree_entry_interesting(): refactor into separate smaller functions
363 - + diff-tree: convert base+baselen to writable strbuf
364 - + glossary: define pathspec
365 - + Move tree_entry_interesting() to tree-walk.c and export it
366 - + tree_entry_interesting(): remove dependency on struct diff_options
367 - + Convert struct diff_options to use struct pathspec
368 - + diff-no-index: use diff_tree_setup_paths()
369 - + Add struct pathspec
370 - (this branch is used by en/object-list-with-pathspec and jc/grep--no-index-pathspec-fix.)
371 -
372 -* en/object-list-with-pathspec (2010-09-20) 2 commits
373 - (merged to 'next' on 2011-02-09 at ccf6c6a)
374 - + Add testcases showing how pathspecs are handled with rev-list --objects
375 - + Make rev-list --objects work together with pathspecs
376 - (this branch uses nd/struct-pathspec; is tangled with jc/grep--no-index-pathspec-fix.)
424 +--------------------------------------------------
425 +[Discarded]
426
378 -* uk/checkout-ambiguous-ref (2011-02-15) 5 commits
379 - (merged to 'next' on 2011-02-15 at 645dad6)
380 - + Rename t2019 with typo "amiguous" that meant "ambiguous"
381 - + checkout: rearrange update_refs_for_switch for clarity
382 - + checkout: introduce --detach synonym for "git checkout foo^{commit}"
383 - + checkout: split off a function to peel away branchname arg
384 - (merged to 'next' on 2011-02-03 at 9044724)
385 - + checkout: fix bug with ambiguous refs
427 +* cp/mergetool-beyondcompare (2011-02-18) 1 commit
428 + . mergetool--lib: add support for beyond compare
429
387 -The topic has become about "checkout --detach" ;-).
430 +ss/mergetool--lib replaces this.