What's cooking (2013/04 #07)
[alt-git.git] / whats-cooking.txt
blob13a93cc663766b41f488794afc51a4101dd427c3
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Apr 2013, #07; Mon, 22)
4 X-master-at: 118f60ee06612083ff4f1810424e80a3e896f73e
5 X-next-at: 46dda50f1b80376d17129b9546d08f602af44864
7 What's cooking in git.git (Apr 2013, #07; Mon, 22)
8 --------------------------------------------------
10 Here are the topics that have been cooking.  Commits prefixed with
11 '-' are only in 'pu' (proposed updates) while commits prefixed with
12 '+' are in 'next'.
14 Both of the two topics on preparing "git add" users for the
15 behaviour change in Git 2.0 are in 'master'.  We may want to tweak
16 the wording of warning messages and such before the feature freeze.
18 You can find the changes described here in the integration branches
19 of the repositories listed at
21     http://git-blame.blogspot.com/p/git-public-repositories.html
23 --------------------------------------------------
24 [Graduated to "master"]
26 * ap/strbuf-humanize (2013-04-10) 2 commits
27   (merged to 'next' on 2013-04-14 at 66d7af5)
28  + count-objects: add -H option to humanize sizes
29  + strbuf: create strbuf_humanise_bytes() to show byte sizes
31  Teach "--human-readable" aka "-H" option to "git count-objects" to
32  show various large numbers in Ki/Mi/GiB scaled as necessary.
34  I've decided to let this topic supersede mc/count-objects-kibibytes.
35  Human users will get an even easier output with "-H" and by not
36  changing the output without an explicit option we do not have to
37  break third-party tools that may have been reading from the output
38  of this command.
41 * as/clone-reference-with-gitfile (2013-04-09) 2 commits
42   (merged to 'next' on 2013-04-15 at ab0d128)
43  + clone: Allow repo using gitfile as a reference
44  + clone: Fix error message for reference repository
46  "git clone" did not work if a repository pointed at by the
47  "--reference" option is a gitfile that points at another place.
50 * fc/branch-upstream-color (2013-04-15) 1 commit
51   (merged to 'next' on 2013-04-15 at 2fc50fd)
52  + branch: colour upstream branches
54  Add more colors to "git branch -vv" output.
57 * fc/remote-hg (2013-04-11) 21 commits
58   (merged to 'next' on 2013-04-16 at cbeaf41)
59  + remote-hg: activate graphlog extension for hg_log()
60  + remote-hg: fix bad file paths
61  + remote-hg: document location of stored hg repository
62  + remote-hg: fix bad state issue
63  + remote-hg: add 'insecure' option
64  + remote-hg: add simple mail test
65  + remote-hg: add basic author tests
66  + remote-hg: show more proper errors
67  + remote-hg: force remote push
68  + remote-hg: push to the appropriate branch
69  + remote-hg: update tags globally
70  + remote-hg: update remote bookmarks
71  + remote-hg: refactor export
72  + remote-hg: split bookmark handling
73  + remote-hg: redirect buggy mercurial output
74  + remote-hg: trivial test cleanups
75  + remote-hg: make sure fake bookmarks are updated
76  + remote-hg: fix for files with spaces
77  + remote-hg: properly report errors on bookmark pushes
78  + remote-hg: add missing config variable in doc
79  + remote-hg: trivial cleanups
81  Updates remote-hg helper (in contrib/).
84 * jk/a-thread-only-dies-once (2013-04-16) 2 commits
85   (merged to 'next' on 2013-04-18 at 3208f44)
86  + run-command: use thread-aware die_is_recursing routine
87  + usage: allow pluggable die-recursion checks
89  A regression fix for the logic to detect die() handler triggering
90  itself recursively.
93 * jk/chopped-ident (2013-04-17) 3 commits
94   (merged to 'next' on 2013-04-19 at ecec2d4)
95  + blame: handle broken commit headers gracefully
96  + pretty: handle broken commit headers gracefully
97  + cat-file: print tags raw for "cat-file -p"
99  A commit object whose author or committer ident are malformed
100  crashed some code that trusted that a name, an email and an
101  timestamp can always be found in it.
104 * jk/doc-http-backend (2013-04-13) 3 commits
105   (merged to 'next' on 2013-04-19 at 7932840)
106  + doc/http-backend: match query-string in apache half-auth example
107  + doc/http-backend: give some lighttpd config examples
108  + doc/http-backend: clarify "half-auth" repo configuration
110  Improve documentation to illustrate "push authenticated, fetch
111  anonymous" configuration for smart HTTP servers.
114 * jx/i18n-branch-error-messages (2013-04-15) 1 commit
115   (merged to 'next' on 2013-04-18 at 630c211)
116  + i18n: branch: mark strings for translation
119 * lf/read-blob-data-from-index (2013-04-17) 3 commits
120   (merged to 'next' on 2013-04-17 at 611208f)
121  + convert.c: remove duplicate code
122  + read_blob_data_from_index(): optionally return the size of blob data
123  + attr.c: extract read_index_data() as read_blob_data_from_index()
125  Reduce duplicated code between convert.c and attr.c.
128 * mv/sequencer-pick-error-diag (2013-04-11) 1 commit
129   (merged to 'next' on 2013-04-16 at a2da926)
130  + cherry-pick: make sure all input objects are commits
132  "git cherry-pick $blob $tree" is diagnosed as a nonsense.
135 * mv/ssl-ftp-curl (2013-04-12) 1 commit
136   (merged to 'next' on 2013-04-15 at 7fdada6)
137  + Support FTP-over-SSL/TLS for regular FTP
139  Does anybody really use commit walkers over ftp???
142 * nd/checkout-keep-sparse (2013-04-15) 1 commit
143   (merged to 'next' on 2013-04-19 at 803dabc)
144  + checkout: add --ignore-skip-worktree-bits in sparse checkout mode
146  Make the initial "sparse" selection of the paths more sticky across
147  "git checkout".
150 * rt/commentchar-fmt-merge-msg (2013-04-18) 1 commit
151   (merged to 'next' on 2013-04-18 at 96799bd)
152  + t6200: avoid path mangling issue on Windows
154  A test fix for recent update.
157 * ta/glossary (2013-04-15) 4 commits
158   (merged to 'next' on 2013-04-19 at 63ee8a4)
159  + glossary: improve definitions of refspec and pathspec
160  + The name of the hash function is "SHA-1", not "SHA1"
161  + glossary: improve description of SHA-1 related topics
162  + glossary: remove outdated/misleading/irrelevant entries
165 * th/bisect-final-log (2013-04-15) 1 commit
166   (merged to 'next' on 2013-04-19 at 89d2041)
167  + bisect: Store first bad commit as comment in log file
169  Leave a commit to note what the final outcome was in the bisect log
170  file.
172 * tr/copy-revisions-from-stdin (2013-04-16) 1 commit
173   (merged to 'next' on 2013-04-16 at d882870)
174  + read_revisions_from_stdin: make copies for handle_revision_arg
176  A fix to a long-standing issue in the command line parser for
177  revisions, which was triggered by mv/sequence-pick-error-diag topic.
179 --------------------------------------------------
180 [New Topics]
182 * jh/checkout-auto-tracking (2013-04-21) 8 commits
183   (merged to 'next' on 2013-04-22 at 2356700)
184  + glossary: Update and rephrase the definition of a remote-tracking branch
185  + branch.c: Validate tracking branches with refspecs instead of refs/remotes/*
186  + t9114.2: Don't use --track option against "svn-remote"-tracking branches
187  + t7201.24: Add refspec to keep --track working
188  + t3200.39: tracking setup should fail if there is no matching refspec.
189  + checkout: Use remote refspecs when DWIMming tracking branches
190  + t2024: Show failure to use refspec when DWIMming remote branch names
191  + t2024: Add tests verifying current DWIM behavior of 'git checkout <branch>'
193  Updates "git checkout foo" that DWIMs the intended "upstream" and
194  turns it into "git checkout -t -b foo remotes/origin/foo" to
195  correctly take existing remote definitions into account.  The
196  remote "origin" may be what uniquely map its own branch to
197  remotes/some/where/foo but that some/where may not be "origin".
199  Will cook in 'next'.
202 * mg/more-textconv (2013-04-19) 6 commits
203  - grep: honor --textconv for the case rev:path
204  - grep: allow to use textconv filters
205  - t7008: demonstrate behavior of grep with textconv
206  - cat-file: do not die on --textconv without textconv filters
207  - show: honor --textconv for blobs
208  - t4030: demonstrate behavior of show with textconv
210  Will be rerolled.
213 * jk/receive-pack-deadlocks-with-early-failure (2013-04-19) 1 commit
214   (merged to 'next' on 2013-04-22 at 1e27177)
215  + receive-pack: close sideband fd on early pack errors
217  When receive-pack detects error in the pack header it received in
218  order to decide which of unpack-objects or index-pack to run, it
219  returned without closing the error stream, which led to a hang
220  sideband thread.
222  Will fast-track to 'master'.
225 * fc/untracked-zsh-prompt (2013-04-21) 1 commit
226   (merged to 'next' on 2013-04-22 at 472da3e)
227  + prompt: fix untracked files for zsh
229  Will fast-track to 'master'.
232 * jn/glossary-revision (2013-04-21) 1 commit
233  - glossary: a revision is just a commit
235  The wording for "revision" in the glossary wanted to say it refers
236  to "commit (noun) as a concept" but it was badly phrased.
238  Will cook in 'next'.
240  This may need further updates to hint that in contexts where it is
241  clear, the word may refer to an object name, not necessarily a
242  commit.
245 * rr/shortlog-doc (2013-04-22) 8 commits
246  - builtin/shortlog.c: make usage string consistent with log
247  - builtin/log.c: make usage string consistent with doc
248  - git-shortlog.txt: make SYNOPSIS match log, update OPTIONS
249  - git-log.txt: rewrite note on why "--" may be required
250  - git-log.txt: generalize <since>..<until>
251  - git-log.txt: order OPTIONS properly; move <since>..<until>
252  - revisions.txt: clarify the .. and ... syntax
253  - git-shortlog.txt: remove (-h|--help) from OPTIONS
255  Update documentation for "log" and "shortlog".
257  Looked reasonable.
258  Will merge to 'next'.
261 * mh/multimail (2013-04-21) 1 commit
262  - git-multimail: a replacement for post-receive-email
264  Waiting for comments.
266 --------------------------------------------------
267 [Stalled]
269 * jc/format-patch (2013-04-22) 2 commits
270  - format-patch: --inline-single
271  - format-patch: rename "no_inline" field
273  A new option to send a single patch to the standard output to be
274  appended at the bottom of a message.  I personally have no need for
275  this, but it was easy enough to cobble together.  Tests, docs and
276  stripping out more MIMEy stuff are left as exercises to interested
277  parties.
279  Not ready for inclusion.
282 * jk/gitweb-utf8 (2013-04-08) 4 commits
283  - gitweb: Fix broken blob action parameters on blob/commitdiff pages
284  - gitweb: Don't append ';js=(0|1)' to external links
285  - gitweb: Make feed title valid utf8
286  - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch
288  Various fixes to gitweb.
290  Waiting for a reroll after a review.
293 * jk/commit-info-slab (2013-04-19) 3 commits
294  - commit-slab: introduce a macro to define a slab for new type
295  - commit-slab: avoid large realloc
296  - commit: allow associating auxiliary info on-demand
298  Technology demonstration to show a way we could use unbound number
299  of flag bits on commit objects.
302 * jn/config-ignore-inaccessible (2013-04-15) 1 commit
303  - config: allow inaccessible configuration under $HOME
305  When $HOME is misconfigured to point at an unreadable directory, we
306  used to complain and die. This loosens the check.
308  I do not think we agreed that this is a good idea, though.
310 --------------------------------------------------
311 [Cooking]
313 * jc/prune-all (2013-04-18) 3 commits
314   (merged to 'next' on 2013-04-22 at b00ccf6)
315  + api-parse-options.txt: document "no-" for non-boolean options
316  + git-gc.txt, git-reflog.txt: document new expiry options
317  + date.c: add parse_expiry_date()
319  We used the approxidate() parser for "--expire=<timestamp>" options
320  of various commands, but it is better to treat --expire=all and
321  --expire=now a bit more specially than using the current timestamp.
322  Update "git gc" and "git reflog" with a new parsing function for
323  expiry dates.
325  Will cook in 'next'.
328 * nd/pretty-formats (2013-04-18) 13 commits
329   (merged to 'next' on 2013-04-22 at 3d63014)
330  + pretty: support %>> that steal trailing spaces
331  + pretty: support truncating in %>, %< and %><
332  + pretty: support padding placeholders, %< %> and %><
333  + pretty: add %C(auto) for auto-coloring
334  + pretty: split color parsing into a separate function
335  + pretty: two phase conversion for non utf-8 commits
336  + utf8.c: add reencode_string_len() that can handle NULs in string
337  + utf8.c: add utf8_strnwidth() with the ability to skip ansi sequences
338  + utf8.c: move display_mode_esc_sequence_len() for use by other functions
339  + pretty: share code between format_decoration and show_decorations
340  + pretty-formats.txt: wrap long lines
341  + pretty: get the correct encoding for --pretty:format=%e
342  + pretty: save commit encoding from logmsg_reencode if the caller needs it
344  pretty-printing body of the commit that is stored in non UTF-8
345  encoding did not work well.  The early part of this series fixes
346  it.  And then it adds %C(auto) specifier that turns the coloring on
347  when we are emitting to the terminal, and adds column-aligning
348  format directives.
350  Will merge to 'master'.
353 * kb/status-ignored-optim-2 (2013-04-15) 14 commits
354   (merged to 'next' on 2013-04-21 at d2a5c70)
355  + dir.c: git-status --ignored: don't scan the work tree twice
356  + dir.c: git-status --ignored: don't scan the work tree three times
357  + dir.c: git-status: avoid is_excluded checks for tracked files
358  + dir.c: replace is_path_excluded with now equivalent is_excluded API
359  + dir.c: unify is_excluded and is_path_excluded APIs
360  + dir.c: move prep_exclude
361  + dir.c: factor out parts of last_exclude_matching for later reuse
362  + dir.c: git-clean -d -X: don't delete tracked directories
363  + dir.c: make 'git-status --ignored' work within leading directories
364  + dir.c: git-status --ignored: don't list empty directories as ignored
365  + dir.c: git-ls-files --directories: don't hide empty directories
366  + dir.c: git-status --ignored: don't list empty ignored directories
367  + dir.c: git-status --ignored: don't list files in ignored directories
368  + dir.c: git-status --ignored: don't drop ignored directories
370  Rerolls kb/status-ignored-optim topic (reverted from 'next').
371  With help from Karsten, conflicts with as/check-ignore topic have
372  been sorted out and it is now in 'pu'.
374  Will merge to 'master'.
377 * as/check-ignore (2013-04-11) 5 commits
378   (merged to 'next' on 2013-04-21 at 7515aa8)
379  + Documentation: add caveats about I/O buffering for check-{attr,ignore}
380  + check-ignore: allow incremental streaming of queries via --stdin
381  + check-ignore: move setup into cmd_check_ignore()
382  + check-ignore: add -n / --non-matching option
383  + t0008: remove duplicated test fixture data
385  Enhance "check-ignore" (1.8.2 update) to work more like "check-attr"
386  over bidi-pipes.
388  Will cook in 'next'.
389  The test in the second from the tip needs to be updated.
392 * mh/packed-refs-various (2013-04-15) 33 commits
393  - refs: handle the main ref_cache specially
394  - refs: change do_for_each_*() functions to take ref_cache arguments
395  - pack_one_ref(): do some cheap tests before a more expensive one
396  - pack_one_ref(): use write_packed_entry() to do the writing
397  - pack_one_ref(): use function peel_entry()
398  - refs: inline function do_not_prune()
399  - pack_refs(): change to use do_for_each_entry()
400  - refs: use same lock_file object for both ref-packing functions
401  - pack_one_ref(): rename "path" parameter to "refname"
402  - pack-refs: merge code from pack-refs.{c,h} into refs.{c,h}
403  - pack-refs: rename handle_one_ref() to pack_one_ref()
404  - refs: extract a function write_packed_entry()
405  - repack_without_ref(): write peeled refs in the rewritten file
406  - t3211: demonstrate loss of peeled refs if a packed ref is deleted
407  - refs: change how packed refs are deleted
408  - search_ref_dir(): return an index rather than a pointer
409  - repack_without_ref(): silence errors for dangling packed refs
410  - t3210: test for spurious error messages for dangling packed refs
411  - refs: change the internal reference-iteration API
412  - refs: extract a function peel_entry()
413  - peel_ref(): fix return value for non-peelable, not-current reference
414  - peel_object(): give more specific information in return value
415  - refs: extract function peel_object()
416  - refs: extract a function ref_resolves_to_object()
417  - repack_without_ref(): use function get_packed_ref()
418  - peel_ref(): use function get_packed_ref()
419  - get_packed_ref(): return a ref_entry
420  - do_for_each_ref_in_dirs(): remove dead code
421  - refs: define constant PEELED_LINE_LENGTH
422  - refs: document how current_ref is used
423  - refs: document do_for_each_ref() and do_one_ref()
424  - refs: document the fields of struct ref_value
425  - refs: document flags constants REF_*
427  Updates reading and updating packed-refs file, correcting corner
428  case bugs.
430  Waiting for comments.
433 * jk/remote-helper-with-signed-tags (2013-04-15) 3 commits
434   (merged to 'next' on 2013-04-21 at 0231d45)
435  + transport-helper: add 'signed-tags' capability
436  + transport-helper: pass --signed-tags=warn-strip to fast-export
437  + fast-export: add --signed-tags=warn-strip mode
439  Allows remote-helpers to declare they can handle signed tags, and
440  issue a warning when using those that don't.
442  Will merge to 'master'.
445 * jn/gitweb-install-doc (2013-04-17) 2 commits
446   (merged to 'next' on 2013-04-22 at a5d4812)
447  + gitweb/INSTALL: GITWEB_CONFIG_SYSTEM is for backward compatibility
448  + gitweb/INSTALL: Simplify description of GITWEB_CONFIG_SYSTEM
450  Reword gitweb configuration instrutions.
452  Will merge to 'master'.
455 * fc/transport-helper-error-reporting (2013-04-17) 9 commits
456   (merged to 'next' on 2013-04-22 at 5ba6467)
457  + transport-helper: update remote helper namespace
458  + transport-helper: trivial code shuffle
459  + transport-helper: warn when refspec is not used
460  + transport-helper: clarify pushing without refspecs
461  + transport-helper: update refspec documentation
462  + transport-helper: clarify *:* refspec
463  + transport-helper: improve push messages
464  + transport-helper: mention helper name when it dies
465  + transport-helper: report errors properly
467  Update transport helper to report errors and maintain ref hierarchy
468  used to keep track of remote helper state better.
470  Will merge to 'master'.
473 * jk/submodule-subdirectory-ok (2013-04-18) 2 commits
474   (merged to 'next' on 2013-04-22 at f211e25)
475  + submodule: drop the top-level requirement
476  + rev-parse: add --prefix option
478  Allow various subcommands of "git submodule" to be run not from the
479  top of the working tree of the superproject.
481  Will cook in 'next'.
484 * jl/submodule-mv (2013-04-11) 4 commits
485   (merged to 'next' on 2013-04-19 at 45ae3c9)
486  + rm: delete .gitmodules entry of submodules removed from the work tree
487  + Teach mv to update the path entry in .gitmodules for moved submodules
488  + Teach mv to move submodules using a gitfile
489  + Teach mv to move submodules together with their work trees
491  "git mv A B" when moving a submodule A does "the right thing",
492  inclusing relocating its working tree and adjusting the paths in
493  the .gitmodules file.
495  Will cook in 'next'.
498 * jn/add-2.0-u-A-sans-pathspec (2013-04-03) 1 commit
499  - git add: -u/-A now affects the entire working tree
501  Will cook in 'next' until Git 2.0.
504 * nd/magic-pathspecs (2013-03-31) 45 commits
505  . Rename field "raw" to "_raw" in struct pathspec
506  . pathspec: support :(glob) syntax
507  . pathspec: make --literal-pathspecs disable pathspec magic
508  . pathspec: support :(literal) syntax for noglob pathspec
509  . Kill limit_pathspec_to_literal() as it's only used by parse_pathspec()
510  . parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN
511  . parse_pathspec: make sure the prefix part is wildcard-free
512  . tree-diff: remove the use of pathspec's raw[] in follow-rename codepath
513  . Remove match_pathspec() in favor of match_pathspec_depth()
514  . Remove init_pathspec() in favor of parse_pathspec()
515  . Remove diff_tree_{setup,release}_paths
516  . Convert common_prefix() to use struct pathspec
517  . Convert add_files_to_cache to take struct pathspec
518  . Convert {read,fill}_directory to take struct pathspec
519  . Convert refresh_index to take struct pathspec
520  . Convert report_path_error to take struct pathspec
521  . checkout: convert read_tree_some to take struct pathspec
522  . Convert unmerge_cache to take struct pathspec
523  . Convert run_add_interactive to use struct pathspec
524  . Convert read_cache_preload() to take struct pathspec
525  . reset: convert to use parse_pathspec
526  . add: convert to use parse_pathspec
527  . check-ignore: convert to use parse_pathspec
528  . archive: convert to use parse_pathspec
529  . ls-files: convert to use parse_pathspec
530  . rm: convert to use parse_pathspec
531  . checkout: convert to use parse_pathspec
532  . rerere: convert to use parse_pathspec
533  . status: convert to use parse_pathspec
534  . commit: convert to use parse_pathspec
535  . clean: convert to use parse_pathspec
536  . Guard against new pathspec magic in pathspec matching code
537  . parse_pathspec: support prefixing original patterns
538  . parse_pathspec: support stripping/checking submodule paths
539  . parse_pathspec: support stripping submodule trailing slashes
540  . parse_pathspec: a special flag for max_depth feature
541  . Convert some get_pathspec() calls to parse_pathspec()
542  . parse_pathspec: add PATHSPEC_PREFER_{CWD,FULL}
543  . parse_pathspec: save original pathspec for reporting
544  . Add parse_pathspec() that converts cmdline args to struct pathspec
545  . pathspec: add copy_pathspec
546  . pathspec: i18n-ize error strings in pathspec parsing code
547  . Move struct pathspec and related functions to pathspec.[ch]
548  . clean: remove unused variable "seen"
549  . setup.c: check that the pathspec magic ends with ")"
551  Migrate the rest of codebase to use "struct pathspec" more.
553  Will be rerolled.
556 * tr/line-log (2013-04-22) 13 commits
557   (merged to 'next' on 2013-04-22 at 8f2c1de)
558  + git-log(1): remove --full-line-diff description
559   (merged to 'next' on 2013-04-21 at cd92620)
560  + line-log: fix documentation formatting
561   (merged to 'next' on 2013-04-15 at 504559e)
562  + log -L: improve comments in process_all_files()
563  + log -L: store the path instead of a diff_filespec
564  + log -L: test merge of parallel modify/rename
565  + t4211: pass -M to 'git log -M -L...' test
566   (merged to 'next' on 2013-04-05 at 5afb00c)
567  + log -L: fix overlapping input ranges
568  + log -L: check range set invariants when we look it up
569   (merged to 'next' on 2013-04-01 at 5be920c)
570  + Speed up log -L... -M
571  + log -L: :pattern:file syntax to find by funcname
572  + Implement line-history search (git log -L)
573  + Export rewrite_parents() for 'log -L'
574  + Refactor parse_loc
576  Will cook in 'next'.
579 * jc/push-2.0-default-to-simple (2013-04-03) 1 commit
580  - push: switch default from "matching" to "simple"
582  The early bits to adjust the tests have been merged to 'master'.
584  Will cook in 'next' until Git 2.0.
587 * jc/add-2.0-delete-default (2013-04-21) 1 commit
588  - git add <pathspec>... defaults to "-A"
590  Will cook in 'next' until Git 2.0.