What's cooking (2012/04 #10)
[alt-git.git] / whats-cooking.txt
blobdeee4435984bb6ea82e5622abc2ea5384bb17226
1 To: git@vger.kernel.org
2 Subject: What's cooking in git.git (Apr 2012, #10; Thu, 26)
3 X-master-at: 010b260e6f23b8964ef53b989e1c1baa8973edbe
4 X-next-at: 9919198d495ad46119f57aec159ea212bd584242
6 What's cooking in git.git (Apr 2012, #10; Thu, 26)
7 --------------------------------------------------
9 Here are the topics that have been cooking.  Commits prefixed with '-' are
10 only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.
12 The fifth batch of topics in this cycle is now in 'master'.  I also
13 merged accumulated fixes that have been in 'master' since v1.7.10 to
14 'maint', so that we can issue the first maintenance release sometime
15 next week.
17 You can find the changes described here in the integration branches of the
18 repositories listed at
20     http://git-blame.blogspot.com/p/git-public-repositories.html
22 --------------------------------------------------
23 [Graduated to "master"]
25 * cc/fix-missing-va-end-in-revert (2012-04-21) 1 commit
26   (merged to 'next' on 2012-04-23 at b90eb70)
27  + revert: add missing va_end
29 * fc/completion-tests (2012-04-21) 7 commits
30   (merged to 'next' on 2012-04-23 at 9b42326)
31  + completion: fix completion after 'git --option <TAB>'
32  + completion: avoid trailing space for --exec-path
33  + completion: add missing general options
34  + completion: simplify by using $prev
35  + completion: simplify __gitcomp_1
36  + tests: add tests for the __gitcomp() completion helper function
37  + tests: add initial bash completion tests
39 * hv/submodule-recurse-push (2012-03-30) 3 commits
40   (merged to 'next' on 2012-04-20 at fe99e3d)
41  + push: teach --recurse-submodules the on-demand option
42  + Refactor submodule push check to use string list instead of integer
43  + Teach revision walking machinery to walk multiple times sequencially
45 "git push --recurse-submodules" learns to optionally look into the
46 histories of submodules bound to the superproject and push them out.
48 * it/fetch-pack-many-refs (2012-04-10) 4 commits
49   (merged to 'next' on 2012-04-20 at e2126d7)
50  + remote-curl: main test case for the OS command line overflow
51  + fetch-pack: test cases for the new --stdin option
52  + remote-curl: send the refs to fetch-pack on stdin
53  + fetch-pack: new --stdin option to read refs from stdin
55 When "git fetch" encounters repositories with too many references, the
56 command line of "fetch-pack" that is run by a helper e.g. remote-curl,
57 may fail to hold all of them. Now such an internal invocation can feed
58 the references through the standard input of "fetch-pack".
60 * jm/maint-strncpy-diff-no-index (2012-04-16) 1 commit
61   (merged to 'next' on 2012-04-20 at 638ed9f)
62  + diff: avoid stack-buffer-read-overrun for very long name
64 * mb/fetch-call-a-non-branch-a-ref (2012-04-17) 2 commits
65   (merged to 'next' on 2012-04-20 at df2c57e)
66  + fetch: describe new refs based on where it came from
67  + fetch: Give remote_ref to update_local_ref() as well
69 * mh/ref-api (2012-04-10) 13 commits
70   (merged to 'next' on 2012-04-20 at 94e9384)
71  + do_for_each_ref(): only iterate over the subtree that was requested
72  + refs: store references hierarchically
73  + sort_ref_dir(): simplify logic
74  + refs.c: rename ref_array -> ref_dir
75  + struct ref_entry: nest the value part in a union
76  + check_refname_component(): return 0 for zero-length components
77  + free_ref_entry(): new function
78  + names_conflict(): simplify implementation
79  + repack_without_ref(): reimplement using do_for_each_ref_in_array()
80  + do_for_each_ref_in_arrays(): new function
81  + do_for_each_ref_in_array(): new function
82  + refs: manage current_ref within do_one_ref()
83  + refs.c: reorder definitions more logically
85 * mk/gitweb-diff-hl (2012-04-11) 8 commits
86   (merged to 'next' on 2012-04-20 at 54179a2)
87  + gitweb: Refinement highlightning in combined diffs
88  + gitweb: Highlight interesting parts of diff
89  + gitweb: Push formatting diff lines to print_diff_chunk()
90  + gitweb: Use print_diff_chunk() for both side-by-side and inline diffs
91  + gitweb: Extract print_sidebyside_diff_lines()
92  + gitweb: Pass esc_html_hl_regions() options to esc_html()
93  + gitweb: esc_html_hl_regions(): Don't create empty <span> elements
94  + gitweb: Use descriptive names in esc_html_hl_regions()
96 "gitweb" learns to highlight the patch it outputs even more.
98 * pw/fast-import-dataref-parsing (2012-04-10) 1 commit
99   (merged to 'next' on 2012-04-20 at c299a63)
100  + fast-import: tighten parsing of datarefs
102 The parser in "fast-import" did not diagnose ":9" style references
103 that is not followed by required SP/LF as an error.
105 * rl/maint-stash-i18n-save-error (2012-04-14) 1 commit
106   (merged to 'next' on 2012-04-23 at 3692fec)
107  + stash: use eval_gettextln correctly
109 * zj/upstream-error-message (2012-04-15) 5 commits
110   (merged to 'next' on 2012-04-20 at 1ed9682)
111  + i18n: mark @{upstream} error messages for translation
112  + Be more specific if upstream branch is not tracked
113  + Provide better message for barnhc_wiht_tpyo@{u}
114  + Provide branch name in error message when using @{u}
115  + t1507: add tests to document @{upstream} behaviour
117 Error messages given when @{u} is used for a branch without its
118 upstream configured have been clatified.
120 --------------------------------------------------
121 [New Topics]
123 * mm/simple-push (2012-04-24) 7 commits
124  - push.default doc: explain simple after upstream
125  - push: document the future default change for push.default (matching -> simple)
126  - t5570: use explicit push refspec
127  - push: introduce new push.default mode "simple"
128  - t5528-push-default.sh: add helper functions
129  - Undocument deprecated alias 'push.default=tracking'
130  - Documentation: explain push.default option a bit more
131  (this branch is used by mm/push-default-switch-warning.)
133 New users tend to work on one branch at a time and push the result
134 out. The current and upstream modes of push is a more suitable default
135 mode than matching mode for these people, but neither is surprise-free
136 depending on how the project is set up. Introduce a "simple" mode that
137 is a subset of "upstream" but only works when the branch is named the same
138 between the remote and local repositories.
140 The plan is to make it the new default when push.default is not
141 configured.
143 * mh/ref-api-lazy-loose (2012-04-25) 30 commits
144  - refs: read loose references lazily
145  - create_dir_entry(): allow the flag value to be passed as an argument
146  - read_loose_refs(): access ref_cache via the ref_dir field
147  - read_loose_refs(): rename function from get_ref_dir()
148  - struct ref_dir: store a reference to the enclosing ref_cache
149  - sort_ref_dir(): take (ref_entry *) instead of (ref_dir *)
150  - do_for_each_ref_in_dir(): take (ref_entry *) instead of (ref_dir *)
151  - do_for_each_ref_in_dirs(): take (ref_entry *) instead of (ref_dir *)
152  - add_entry(): take (ref_entry *) instead of (ref_dir *)
153  - search_ref_dir(): take (ref_entry *) instead of (ref_dir *)
154  - search_for_subdir(): take (ref_entry *) instead of (ref_dir *)
155  - get_ref_dir(): remove dirname argument
156  - get_ref_dir(): take (ref_entry *) instead of (ref_dir *)
157  - find_containing_direntry(): use (ref_entry *) instead of (ref_dir *)
158  - add_ref(): take (ref_entry *) instead of (ref_dir *)
159  - read_packed_refs(): take (ref_entry *) instead of (ref_dir *)
160  - find_ref(): take (ref_entry *) instead of (ref_dir *)
161  - is_refname_available(): take (ref_entry *) instead of (ref_dir *)
162  - get_loose_refs(): return (ref_entry *) instead of (ref_dir *)
163  - get_packed_refs(): return (ref_entry *) instead of (ref_dir *)
164  - refs: wrap top-level ref_dirs in ref_entries
165  - do_for_each_reflog(): reuse strbuf across recursive function calls
166  - do_for_each_reflog(): use a strbuf to hold logfile name
167  - do_for_each_reflog(): return early on error
168  - get_ref_dir(): take the containing directory as argument
169  - refs.c: extract function search_for_subdir()
170  - get_ref_dir(): require that the dirname argument ends in '/'
171  - get_ref_dir(): rename "base" parameter to "dirname"
172  - get_ref_dir(): use a strbuf to hold refname
173  - get_ref_dir(): return early if directory cannot be read
175 Refs API is updated to lazily read sub-hierarchies of refs/ namespace,
176 so that we do not have to grab everything from the filesystem when we
177 are only interested in listing branches, for example.
179 * mm/include-userpath (2012-04-25) 2 commits
180   (merged to 'next' on 2012-04-26 at c68e261)
181  + fixup! config: expand tildes in include.path variable
182  + config: expand tildes in include.path variable
184 The new "include.path" directive in the configuration files learned
185 to understand "~/path" and "~user/path".
187 * rs/commit-list-append (2012-04-25) 3 commits
188   (merged to 'next' on 2012-04-26 at 2ba48b3)
189  + commit: remove commit_list_reverse()
190  + revision: append to list instead of insert and reverse
191  + sequencer: export commit_list_append()
193 * jk/maint-config-bogus-section (2012-04-25) 1 commit
194   (merged to 'next' on 2012-04-26 at 9919198)
195  + config: reject bogus section names for --rename-section
197 "git config --rename-section" to rename an existing section into a
198 bogus one did not check the new name.
200 * kk/maint-gitweb-missing-owner (2012-04-25) 1 commit
201  - gitweb: Don't set owner if got empty value from projects.list
202  (this branch is used by kk/gitweb-omit-expensive.)
204 Will merge to 'next'.
206 * jk/doc-asciidoc-inline-literal (2012-04-26) 1 commit
207  - docs: stop using asciidoc no-inline-literal
209 Our documentation was written for an ancient version of AsciiDoc,
210 making the source not very readable.
212 * kk/gitweb-omit-expensive (2012-04-26) 2 commits
213  - gitweb: Option to not display information about owner
214  - gitweb: Option to omit column with time of the last change
215  (this branch uses kk/maint-gitweb-missing-owner.)
217 "gitweb" learned to optionally omit output of fields that are expensive
218 to generate.
220 Will merge to 'next'.
222 --------------------------------------------------
223 [Stalled]
225 * jc/split-blob (2012-04-03) 7 commits
226  - chunked-object: streaming checkout
227  - chunked-object: fallback checkout codepaths
228  - bulk-checkin: support chunked-object encoding
229  - bulk-checkin: allow the same data to be multiply hashed
230  - new representation types in the packstream
231  - packfile: use varint functions
232  + varint: make it available outside the context of pack
233  (this branch is tangled with jc/index-v4.)
235 Not ready.
237 I finished the streaming checkout codepath, but as explained in
238 127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
239 these are still early steps of a long and painful journey. At least
240 pack-objects and fsck need to learn the new encoding for the series
241 to be usable locally, and then index-pack/unpack-objects needs to
242 learn it to be used remotely.
244 Given that I heard a lot of noise that people want large files, and
245 that I was asked by somebody at GitTogether'11 privately for an
246 advice on how to pay developers (not me) to help adding necessary
247 support, I am somewhat dissapointed that the original patch series
248 that was sent almost two months ago still remains here without much
249 comments and updates from the developer community. I even made the
250 interface to the logic that decides where to split chunks easily
251 replaceable, and I deliberately made the logic in the original patch
252 extremely stupid to entice others, especially the "bup" fanboys, to
253 come up with a better logic, thinking that giving people an easy
254 target to shoot for, they may be encouraged to help out. The plan is
255 not working :-(.
257 --------------------------------------------------
258 [Cooking]
260 * pw/t5800-import-race-fix (2012-04-24) 1 commit
261   (merged to 'next' on 2012-04-24 at e97bb42)
262  + git-remote-testgit: fix race when spawning fast-import
264 Longstanding bug in a test scaffolding that occasionally made t5800
265 hang was fixed.
267 * nd/i18n (2012-04-25) 11 commits
268  - help: replace underlining "help -a" headers using hyphens with a blank line
269   (merged to 'next' on 2012-04-24 at 07965a4)
270  + i18n: bundle: mark strings for translation
271  + i18n: index-pack: mark strings for translation
272  + i18n: apply: update say_patch_name to give translators complete sentence
273  + i18n: apply: mark strings for translation
274  + i18n: remote: mark strings for translation
275  + i18n: make warn_dangling_symref() automatically append \n
276  + i18n: help: mark strings for translation
277  + i18n: mark relative dates for translation
278  + strbuf: convenience format functions with \n automatically appended
279  + Makefile: feed all header files to xgettext
281 More message strings marked for i18n.
283 * nh/empty-rebase (2012-04-24) 4 commits
284   (merged to 'next' on 2012-04-24 at 91d2dfd)
285  + git-rebase: add keep_empty flag
286  + git-cherry-pick: Add test to validate new options
287  + git-cherry-pick: Add keep-redundant-commits option
288  + git-cherry-pick: add allow-empty option
290 "git rebase" learned to optionally keep commits that do not introduce
291 any change in the original history.
293 * rt/cherry-revert-conflict-summary (2012-04-19) 1 commit
294   (merged to 'next' on 2012-04-23 at e7766c2)
295  + sequencer: remove additional blank line
297 In the older days, the header "Conflicts:" in "cherry-pick" and
298 "merge" was separated by a blank line from the list of paths that
299 follow for readability, but when "merge" was rewritten in C, we lost
300 it by mistake. Remove the newline from "cherry-pick" to make them
301 match again.
303 Will merge to 'master'.
305 * js/fast-import-test-9300 (2012-04-20) 1 commit
306   (merged to 'next' on 2012-04-23 at a9bd236)
307  + t9300-fast-import: avoid 'exit' in test_expect_success snippets
309 Will merge to 'master'.
311 * lp/diffstat-with-graph (2012-04-18) 6 commits
312   (merged to 'next' on 2012-04-23 at 8de0747)
313  + Prevent graph_width of stat width from falling below min
314  + t4052: Test diff-stat output with minimum columns
315  + t4052: Adjust --graph --stat output for prefixes
316  + Adjust stat width calculations to take --graph output into account
317  + Add output_prefix_length to diff_options
318  + t4052: test --stat output with --graph
320 Looked reasonable.
321 Will merge to 'master'.
323 * jc/merge-reduce-parents-early (2012-04-18) 5 commits
324   (merged to 'next' on 2012-04-23 at 16e7e53)
325  + fmt-merge-msg: discard needless merge parents
326  + builtin/merge.c: reduce parents early
327  + builtin/merge.c: collect other parents early
328  + builtin/merge.c: remove "remoteheads" global variable
329  + merge tests: octopus with redundant parents
331 Will merge to 'master'.
333 * cb/cherry-pick-rev-path-confusion (2012-04-15) 1 commit
334   (merged to 'next' on 2012-04-23 at f872ba5)
335  + cherry-pick: do not expect file arguments
337 The command line parser choked "git cherry-pick $name" when $name can be
338 both revision name and a pathname, even though $name can never be a path
339 in the context of the command.
341 The issue the patch addresses is real, but the way it is implemented felt
342 unnecessarily invasive a bit.  It may be cleaner for this caller to add
343 the "--" to the end of the argv_array it passes to setup_revisions().
345 Will merge to 'master'.
347 * cb/daemon-test-race-fix (2012-04-19) 1 commit
348   (merged to 'next' on 2012-04-24 at d5c30be)
349  + git-daemon wrapper to wait until daemon is ready
351 Fix race condition between starting and waiting for git-daemon in the
352 test.
354 * cb/maint-report-mount-point-correctly-in-setup (2012-04-15) 1 commit
355   (merged to 'next' on 2012-04-23 at 9e0c8b4)
356  + properly keep track of current working directory
358 The filesystem boundary was not correctly reported when .git directory
359 discovery stopped at a mount point.
361 Will merge to 'master'.
363 * nd/columns (2012-04-20) 9 commits
364  - tag: add --column
365  - column: support piping stdout to external git-column process
366  - status: add --column
367  - branch: add --column
368  - help: reuse print_columns() for help -a
369  - column: add dense layout support
370  - column: add columnar layout
371  - Stop starting pager recursively
372  - Add column layout skeleton and git-column
374 A couple of commands learn --column option to produce columnar output.
376 * nl/http-proxy-more (2012-04-26) 8 commits
377  - http: try an uppercase version of $proto_proxy
378  - http: fix proxy password passing
379  - http: fix proxy authentication
380  - http: rename HTTP_REAUTH to HTTP_AUTH_RETRY
381  - http: Avoid limit of retrying request only twice
382  - http: handle proxy authentication failure (error 407)
383  - http: handle proxy proactive authentication
384  - http: try http_proxy env var when http.proxy config option is not set
386 The code to talk to http proxies learn to use the same credential
387 API used to talk to the final http destinations.  This still needs
388 to peek into $ENV{HTTPS_PROXY}.
390 * jk/repack-no-explode-objects-from-old-pack (2012-04-18) 4 commits
391   (merged to 'next' on 2012-04-20 at 4eb2534)
392  + gc: use argv-array for sub-commands
393  + argv-array: add a new "pushl" method
394  + argv-array: refactor empty_argv initialization
395   (merged to 'next' on 2012-04-15 at 7586e50)
396  + gc: do not explode objects which will be immediately pruned
398 * ld/git-p4-tags-and-labels (2012-04-25) 7 commits
399   (merged to 'next' on 2012-04-25 at 8b959e5)
400  + git p4: fix unit tests
401   (merged to 'next' on 2012-04-24 at bf55d92)
402  + git p4: move verbose to base class
403  + git p4: Ignore P4EDITOR if it is empty
404  + git p4: Squash P4EDITOR in test harness
405  + git p4: fix-up "import/export of labels to/from p4"
406   (merged to 'next' on 2012-04-15 at 1b1e9a1)
407  + git p4: import/export of labels to/from p4
408  + git p4: Fixing script editor checks
410 * nd/threaded-index-pack (2012-04-19) 4 commits
411  - index-pack: disable threading if NO_PREAD is defined
412  - index-pack: support multithreaded delta resolving
413  - index-pack: split second pass obj handling into own function
414  - compat/win32/pthread.h: Add an pthread_key_delete() implementation
416 * cb/http-multi-curl-auth (2012-04-14) 4 commits
417   (merged to 'next' on 2012-04-23 at b0259be)
418  + http: use newer curl options for setting credentials
419  + http: clean up leak in init_curl_http_auth
420  + fix http auth with multiple curl handles
421  + http auth fails with multiple curl handles
423 Fixes http authentication breakage when we keep multiple HTTP requests in
424 flight using curl-multi.
426 Will merge to 'master'.
428 * tr/xdiff-fast-hash (2012-04-09) 1 commit
429   (merged to 'next' on 2012-04-24 at ed693cf)
430  + xdiff: load full words in the inner loop of xdl_hash_record
432 * jc/index-v4 (2012-04-04) 10 commits
433   (merged to 'next' on 2012-04-19 at 5e4b029)
434  + update-index: upgrade/downgrade on-disk index version
435  + read-cache.c: write prefix-compressed names in the index
436  + read-cache.c: read prefix-compressed names in index on-disk version v4
437  + read-cache.c: move code to copy incore to ondisk cache to a helper function
438  + read-cache.c: move code to copy ondisk to incore cache to a helper function
439  + read-cache.c: report the header version we do not understand
440  + read-cache.c: make create_from_disk() report number of bytes it consumed
441  + read-cache.c: allow unaligned mapping of the index file
442  + cache.h: hide on-disk index details
443  + varint: make it available outside the context of pack
444  (this branch is tangled with jc/split-blob.)
446 Trivially shrinks the on-disk size of the index file to save both I/O and
447 checksum overhead.  The "v4" format represented here may not be what we
448 eventually want to have, but the preparatory refactoring steps and the way
449 how backward compatibility is retained should give plenty to learn to GSoC
450 student-hopefuls.
452 The bottom one makes use of "varint" encoding from the stalled
453 jc/split-blob topic.
455 * th/difftool-diffall (2012-04-23) 8 commits
456  - difftool: print list of valid tools with '--tool-help'
457  - difftool: teach difftool to handle directory diffs
458  - difftool: eliminate setup_environment function
459  - difftool: stop appending '.exe' to git
460  - difftool: remove explicit change of PATH
461  - difftool: exit(0) when usage is printed
462  - difftool: add '--no-gui' option
463  - difftool: parse options using Getopt::Long
465 Rolls the two-directory-diff logic from diffall script (in contrib/) into
466 "git difftool" framework. 
468 Still being reworked.
470 * jc/run-hook-env-1 (2012-03-11) 1 commit
471  - run_hook(): enhance the interface to pass arbitrary environment
473 Not urgent.
475 Updates run_hook() API to be much less specific to "commit".  It would
476 only be useful if people start doing more interesting things with hooks.
478 * mm/push-default-switch-warning (2012-04-26) 2 commits
479  - t5541: warning message is given even with --quiet
480  - push: start warning upcoming default change for push.default
481  (this branch uses mm/simple-push.)