What's cooking (2014/01 #06)
[git/jrn.git] / whats-cooking.txt
blob2408732c5f0a1b7550b7855d418128c16b7b2f12
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Jan 2014, #06; Wed, 29)
4 X-master-at: bd3e186d811a13d8687584856f345a767e3e4d67
5 X-next-at: 614c158afed5077691c76d341b6888596b24b9fd
7 What's cooking in git.git (Jan 2014, #06; Wed, 29)
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 The tip of 'master' is at 1.9-rc1; as far as new features are
15 concerned, this is pretty much it until the final.
17 On the maintenance track, we may have another 1.8.5.x maintenance
18 release before 1.9 final is tagged in 2-3 weeks.
20 You can find the changes described here in the integration branches
21 of the repositories listed at
23     http://git-blame.blogspot.com/p/git-public-repositories.html
25 --------------------------------------------------
26 [New Topics]
28 * bc/gpg-sign-everywhere (2014-01-27) 9 commits
29  - pull: add the --gpg-sign option.
30  - rebase: add the --gpg-sign option
31  - rebase: parse options in stuck-long mode
32  - rebase: don't try to match -M option
33  - rebase: remove useless arguments check
34  - am: add the --gpg-sign option
35  - am: parse options in stuck-long mode
36  - git-sh-setup.sh: add variable to use the stuck-long mode
37  - cherry-pick, revert: add the --gpg-sign option
39  Teach "--gpg-sign" option to many commands that create commits.
41  Changes to some scripted Porcelains use unsafe variable
42  substitutions and need to be tightened.
44  Waiting for a reroll.
47 * ds/rev-parse-required-args (2014-01-28) 1 commit
48  - rev-parse: check i before using argv[i] against argc
50  "git rev-parse --default" without the required option argument did
51  not diagnose it as an error.
53  Will merge to 'next'.
56 * jk/config-path-include-fix (2014-01-28) 2 commits
57  - handle_path_include: don't look at NULL value
58  - expand_user_path: do not look at NULL path
60  include.path variable (or any variable that expects a path that can
61  use ~username expansion) in the configuration file is not a
62  boolean, but the code failed to check it.
64  Will merge to 'next'.
67 * jk/repack-honor-pack-keep (2014-01-28) 1 commit
68  - repack: add `repack.honorpackkeep` config var
69  (this branch uses jk/pack-bitmap.)
71  Optionally allow "git repack" to include objects that exist in kept
72  packs in newly created packfiles.
74  Waiting for response to review comments.
77 * nd/submodule-pathspec-ending-with-slash (2014-01-27) 8 commits
78  - clean: use cache_name_is_other()
79  - clean: replace match_pathspec() with dir_path_match()
80  - Pass directory indicator to match_pathspec_item()
81  - match_pathspec: match pathspec "foo/" against directory "foo"
82  - dir.c: prepare match_pathspec_item for taking more flags
83  - Rename match_pathspec_depth() to match_pathspec()
84  - Convert some match_pathspec_depth() to dir_path_match()
85  - Convert some match_pathspec_depth() to ce_path_match()
87  Allow "git cmd path/", when the 'path' is where a submodule is
88  bound to the top-level working tree, to match 'path', despite the
89  extra and unnecessary trailing slash.
91  Will merge to 'next'.
93 --------------------------------------------------
94 [Stalled]
96 * jk/color-for-more-pagers (2014-01-17) 4 commits
97  - pager: disable colors for some known-bad configurations
98  - DONOTMERGE: needs matching change to git-sh-setup
99  - setup_pager: set MORE=R
100  - setup_pager: refactor LESS/LV environment setting
102  'more' implementation of BSD wants to be told with MORE=R
103  environment before it shows colored output, while 'more' on some
104  other platforms will die when seeing MORE=R environment.
106  It appears that we are coming to the consensus that trying to be
107  too intimately knowledgeable about quirks of various pager
108  implementations on different platforms is a losing proposition.
110  Waiting for a reroll.
113 * po/everyday-doc (2014-01-27) 1 commit
114  - Make 'git help everyday' work
116  This may make the said command to emit something, but the source is
117  not meant to be formatted into a manual pages to begin with, and
118  also its contents are a bit stale.  It may be a good first step in
119  the right direction, but needs more work to at least get the
120  mark-up right before public consumption.
122  Will hold.
125 * jk/branch-at-publish-rebased (2014-01-17) 5 commits
126  - t1507 (rev-parse-upstream): fix typo in test title
127  - implement @{publish} shorthand
128  - branch_get: provide per-branch pushremote pointers
129  - branch_get: return early on error
130  - sha1_name: refactor upstream_mark
132  Give an easier access to the tracking branches from "other" side in
133  a triangular workflow by introducing B@{publish} that works in a
134  similar way to how B@{upstream} does.
136  Will hold.
139 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
140  - merge: drop unused arg from abort_commit method signature
141  - merge: make prepare_to_commit responsible for write_merge_state
142  - t7505: ensure cleanup after hook blocks merge
143  - t7505: add missing &&
145  Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
146  run during "git merge".  The log message stresses too much on one
147  hook, prepare-commit-msg, but it would equally apply to other hooks
148  like post-merge, I think.
150  Waiting for a reroll.
153 * jl/submodule-recursive-checkout (2013-12-26) 5 commits
154  - Teach checkout to recursively checkout submodules
155  - submodule: teach unpack_trees() to update submodules
156  - submodule: teach unpack_trees() to repopulate submodules
157  - submodule: teach unpack_trees() to remove submodule contents
158  - submodule: prepare for recursive checkout of submodules
160  Expecting a reroll.
163 * jc/graph-post-root-gap (2013-12-30) 3 commits
164  - WIP: document what we want at the end
165  - graph: remove unused code a bit
166  - graph: stuff the current commit into graph->columns[]
168  This was primarily a RFH ($gmane/239580).
171 * fc/transport-helper-fixes (2013-12-09) 6 commits
172  - remote-bzr: support the new 'force' option
173  - test-hg.sh: tests are now expected to pass
174  - transport-helper: check for 'forced update' message
175  - transport-helper: add 'force' to 'export' helpers
176  - transport-helper: don't update refs in dry-run
177  - transport-helper: mismerge fix
179  Updates transport-helper, fast-import and fast-export to allow the
180  ref mapping and ref deletion in a way similar to the natively
181  supported transports.
183  Reported to break t5541.
184  Will hold.
187 * fc/completion (2013-12-09) 1 commit
188  - completion: fix completion of certain aliases
190  SZEDER Gábor noticed that this breaks "git -c var=val alias" and
191  also suggested a better description of the change.
193  Will hold.
196 * mo/subtree-split-updates (2013-12-10) 3 commits
197  - subtree: add --edit option
198  - subtree: allow --squash and --message with push
199  - subtree: support split --rejoin --squash
201  Comments?
204 * hv/submodule-ignore-fix (2013-12-06) 4 commits
205  - disable complete ignorance of submodules for index <-> HEAD diff
206  - always show committed submodules in summary after commit
207  - teach add -f option for ignored submodules
208  - fix 'git add' to skip submodules configured as ignored
210  Teach "git add" to be consistent with "git status" when changes to
211  submodules are set to be ignored, to avoid surprises after checking
212  with "git status" to see there isn't any change to be further added
213  and then see that "git add ." adds changes to them.
215  I think a reroll is coming, so this may need to be replaced, but I
216  needed some practice with heavy conflict resolution.  It conflicts
217  with two changes to "git add" that have been scheduled for Git 2.0
218  quite badly, and I think I got the resolution right this time.
220  Waiting for a reroll.
223 * kb/fast-hashmap (2014-01-03) 19 commits
224  - hashmap.h: make sure map entries are tightly packed
225   (merged to 'next' on 2014-01-03 at dc85001)
226  + name-hash: retire unused index_name_exists()
227  + hashmap.h: Use 'unsigned int' for hash-codes everywhere
228   (merged to 'next' on 2013-12-16 at bff99b1)
229  + Drop unnecessary #includes from test-hashmap
230  + Add test-hashmap to .gitignore
231   (merged to 'next' on 2013-12-06 at f90be3d)
232  + read-cache.c: fix memory leaks caused by removed cache entries
233  + builtin/update-index.c: cleanup update_one
234  + fix 'git update-index --verbose --again' output
235  + remove old hash.[ch] implementation
236  + name-hash.c: remove cache entries instead of marking them CE_UNHASHED
237  + name-hash.c: use new hash map implementation for cache entries
238  + name-hash.c: remove unreferenced directory entries
239  + name-hash.c: use new hash map implementation for directories
240  + diffcore-rename.c: use new hash map implementation
241  + diffcore-rename.c: simplify finding exact renames
242  + diffcore-rename.c: move code around to prepare for the next patch
243  + buitin/describe.c: use new hash map implementation
244  + add a hashtable implementation that supports O(1) removal
245  + submodule: don't access the .gitmodules cache entry after removing it
247  Improvements to our hash table to get it to meet the needs of the
248  msysgit fscache project, with some nice performance improvements.
250  The tip one does not seem to have reached concensus (yet).
252  Will hold.
255 * jc/create-directories-microopt (2013-11-11) 1 commit
256  - checkout: most of the time we have good leading directories
258  Of unknown value until tested on non-Linux platforms (especially
259  Windows).
261  Will hold.
264 * jt/commit-fixes-footer (2013-10-30) 1 commit
265  - commit: Add -f, --fixes <commit> option to add Fixes: line
267  There is an ongoing discussion around this topic; in general I am
268  fairly negative on a new feature that is too narrow and prefer a
269  more generic solution that can be tailored for specific needs, as
270  many people stated in the thread.
272  cc/interpret-trailers could be such a generic solution (although
273  there don't seem to be much concensus yet).
275  Will discard.
278 * np/pack-v4 (2013-09-18) 90 commits
279  . packv4-parse.c: add tree offset caching
280  . t1050: replace one instance of show-index with verify-pack
281  . index-pack, pack-objects: allow creating .idx v2 with .pack v4
282  . unpack-objects: decode v4 trees
283  . unpack-objects: allow to save processed bytes to a buffer
284  - ...
286  Nico and Duy advancing the eternal vaporware pack-v4.  This is here
287  primarily for wider distribution of the preview edition.
289  Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
290  this topic conflicts with.
293 * mf/graph-show-root (2013-10-25) 1 commit
294  . graph.c: mark root commit differently
296  In a repository with multiple-roots, "log --graph", especially with
297  "--oneline", does not give the reader enough visual cue to see
298  where one line of history ended and a separate history began.
300  This is the version that marks the roots 'x' when they would have
301  been marked as '*'; Keshav Kini suggested an alternative of giving
302  an extra blank line after every root, which I tend to think is a
303  better approach to the problem.
305  Will discard.
308 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
309  - perf-lib: add test_perf_cleanup target
310  - perf-lib: split starting the test from the execution
312  Add test_perf_cleanup shell function to the perf suite, that allows
313  the script writers to define a test with a clean-up action.
315  Will hold.
318 * yt/shortened-rename (2013-10-18) 2 commits
319  - SQUASH??? style fixes and s/omit/shorten/ where appropriate
320  - diff.c: keep arrow(=>) on show_stats()'s shortened filename part to make rename visible
322  Attempts to give more weight on the fact that a filepair represents
323  a rename than showing substring of the actual path when diffstat
324  lines are not wide enough.
326  I am not sure if that is solving a right problem, though.
329 * rv/send-email-cache-generated-mid (2013-08-21) 2 commits
330  - git-send-email: Cache generated message-ids, use them when prompting
331  - git-send-email: add optional 'choices' parameter to the ask sub
333  Will discard.
336 * rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
337  - ### DONTMERGE: needs better explanation on what config they need
338  - pack-refs.c: Add missing call to git_config()
339  - show-ref.c: Add missing call to git_config()
341  The changes themselves are probably good, but it is unclear what
342  basic setting needs to be read for which exact operation.
344  Waiting for clarification.
345  $gmane/228294
348 * jc/format-patch (2013-04-22) 2 commits
349  - format-patch: --inline-single
350  - format-patch: rename "no_inline" field
352  A new option to send a single patch to the standard output to be
353  appended at the bottom of a message.  I personally have no need for
354  this, but it was easy enough to cobble together.  Tests, docs and
355  stripping out more MIMEy stuff are left as exercises to interested
356  parties.
359 * jk/gitweb-utf8 (2013-04-08) 4 commits
360  - gitweb: Fix broken blob action parameters on blob/commitdiff pages
361  - gitweb: Don't append ';js=(0|1)' to external links
362  - gitweb: Make feed title valid utf8
363  - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch
365  Various fixes to gitweb.
367  Drew Northup volunteered to take a look into this.
368  $gmane/226216
371 * jc/show-branch (2013-06-07) 5 commits
372  - show-branch: use commit slab to represent bitflags of arbitrary width
373  - show-branch.c: remove "all_mask"
374  - show-branch.c: abstract out "flags" operation
375  - show-branch.c: lift all_mask/all_revs to a global static
376  - show-branch.c: update comment style
378  Waiting for the final step to lift the hard-limit before sending it out.
380 --------------------------------------------------
381 [Cooking]
383 * lt/request-pull (2014-01-23) 3 commits
384  - pull-request: test updates
385  - Make request-pull able to take a refspec of form local:remote
386  - Make 'git request-pull' more strict about matching
388  Waiting for the updates to settle.
391 * bk/refresh-missing-ok-in-merge-recursive (2014-01-27) 4 commits
392   (merged to 'next' on 2014-01-29 at 614c158)
393  + merge-recursive.c: Tolerate missing files while refreshing index
394  + read-cache.c: Extend make_cache_entry refresh flag with options
395  + read-cache.c: Refactor --ignore-missing implementation
396  + t3030-merge-recursive: Test known breakage with empty work tree
398  Allows "merge-recursive" to work in an empty (temporary) working
399  tree again when there are renames involved, correcting an old
400  regression in 1.7.7 era.
402  Will cook in 'next'.
405 * nd/diff-quiet-stat-dirty (2014-01-29) 3 commits
406  - diff: turn skip_stat_unmatch on selectively
407  - diff: do not quit early on stat-dirty files
408  - Move diffcore_skip_stat_unmatch core logic out for reuse later
410  Will merge to 'next'.
413 * cc/interpret-trailers (2014-01-27) 17 commits
414  - Documentation: add documentation for 'git interpret-trailers'
415  - trailer: add tests for commands using env variables
416  - trailer: set author and committer env variables
417  - trailer: add tests for trailer command
418  - trailer: execute command from 'trailer.<name>.command'
419  - strbuf: add strbuf_replace()
420  - trailer: add new_trailer_item() function
421  - trailer: if no input file is passed, read from stdin
422  - trailer: add tests for "git interpret-trailers"
423  - trailer: add interpret-trailers command
424  - trailer: put all the processing together and print
425  - trailer: parse trailers from input file
426  - strbuf: add strbuf_isspace()
427  - trailer: process command line trailer arguments
428  - trailer: read and process config information
429  - trailer: process trailers from file and arguments
430  - Add data structures and basic functions for commit trailers
432  Waiting for a reroll.
435 * dk/blame-janitorial (2014-01-22) 2 commits
436   (merged to 'next' on 2014-01-29 at 0b7ea97)
437  + Eliminate same_suspect function in builtin/blame.c
438  + builtin/blame.c: struct blame_entry does not need a prev link
440  Code clean-up.
442  Will hold.
445 * ks/diff-c-with-diff-order (2014-01-29) 5 commits
446  - combine_diff: simplify intersect_paths() further
447  - combine-diff: combine_diff_path.len is not needed anymore
448  - combine-diff: optimize combine_diff_path sets intersection
449  - diff test: add tests for combine-diff with orderfile
450  - diffcore-order: export generic ordering interface
452  Teach combine-diff to honour the path-output-order imposed by
453  diffcore-order.
455  Will merge to 'next'.
458 * bl/blame-full-history (2014-01-14) 1 commit
459  - blame: new option --prefer-first to better handle merged cherry-picks
461  By disabling the tree-same optimization (which is consistent with
462  the default behaviour of "git log"-family of commands), make "git
463  blame" sometimes produce different result from the original code.
465  Because the "git blame" output can give result for each line from
466  only one lineage of the history, however, this can be only useful
467  when you are lucky---unlike "--full-history" of "git log"-family,
468  where we can show commits from both lineages of histories with an
469  equal weight.  See $gmane/240392 for more detailed discussion.
471  Will discard.
474 * da/pull-ff-configuration (2014-01-15) 2 commits
475   (merged to 'next' on 2014-01-22 at 2686b09)
476  + pull: add --ff-only to the help text
477  + pull: add pull.ff configuration
479  "git pull" learned to pay attention to pull.ff configuration
480  variable.
482  Will cook in 'next'.
485 * wk/submodule-on-branch (2014-01-27) 4 commits
486  - Documentation: Describe 'submodule update --remote' use case
487  - submodule: Explicit local branch creation in module_clone
488  - submodule: Document module_clone arguments in comments
489  - submodule: Make 'checkout' update_module explicit
491  Makes sure 'submodule update' modes that do not detach HEADs can
492  be used more pleasantly by checking out a concrete branch when
493  cloning them to prime the well.
495  This round seems to be almost ready; further discussions are of
496  course very much welcomed.
499 * jk/warn-on-object-refname-ambiguity (2014-01-09) 6 commits
500  - get_sha1: drop object/refname ambiguity flag
501  - get_sha1: speed up ambiguous 40-hex test
502  - FIXUP: teach DO_FOR_EACH_NO_RECURSE to prime_ref_dir()
503  - refs: teach for_each_ref a flag to avoid recursion
504  - cat-file: fix a minor memory leak in batch_objects
505  - cat-file: refactor error handling of batch_objects
507  Expecting a reroll.
510 * ap/remote-hg-skip-null-bookmarks (2014-01-02) 1 commit
511  - remote-hg: do not fail on invalid bookmarks
513  Reported to break tests ($gmane/240005)
514  Expecting a reroll.
517 * jk/pack-bitmap (2014-01-23) 25 commits
518   (merged to 'next' on 2014-01-27 at 0b1dcb5)
519  + ewah: support platforms that require aligned reads
520  + read-cache: use get_be32 instead of hand-rolled ntoh_l
521  + block-sha1: factor out get_be and put_be wrappers
522   (merged to 'next' on 2014-01-16 at ddac2d2)
523  + do not discard revindex when re-preparing packfiles
524   (merged to 'next' on 2014-01-10 at bdbe0a4)
525  + pack-bitmap: implement optional name_hash cache
526  + t/perf: add tests for pack bitmaps
527  + t: add basic bitmap functionality tests
528  + count-objects: recognize .bitmap in garbage-checking
529  + repack: consider bitmaps when performing repacks
530  + repack: handle optional files created by pack-objects
531  + repack: turn exts array into array-of-struct
532  + repack: stop using magic number for ARRAY_SIZE(exts)
533  + pack-objects: implement bitmap writing
534  + rev-list: add bitmap mode to speed up object lists
535  + pack-objects: use bitmaps when packing objects
536  + pack-objects: split add_object_entry
537  + pack-bitmap: add support for bitmap indexes
538  + documentation: add documentation for the bitmap format
539  + ewah: compressed bitmap implementation
540  + compat: add endianness helpers
541  + sha1_file: export `git_open_noatime`
542  + revision: allow setting custom limiter function
543  + pack-objects: factor out name_hash
544  + pack-objects: refactor the packing list
545  + revindex: export new APIs
546  (this branch is used by jk/repack-honor-pack-keep.)
548  Borrows the bitmap index into packfiles from JGit to speed up
549  enumeration of objects involved in a commit range without having to
550  fully traverse the history.
552  Will cook in 'next'.
555 * nv/commit-gpgsign-config (2013-12-17) 3 commits
556   (merged to 'next' on 2014-01-03 at 9780cbb)
557  + test the commit.gpgsign config option
558  + commit-tree: add and document --no-gpg-sign
559  + Add the commit.gpgsign option to sign all commits
561  Introduce commit.gpgsign configuration variable to force every
562  commit to be GPG signed.  The variable cannot be overriden from the
563  command line of some of the commands that create commits except for
564  "git commit" and "git commit-tree", but I am not convinced that it
565  is a good idea to sprinkle support for --no-gpg-sign everywhere.
567  Will cook in 'next'.
570 * cc/starts-n-ends-with-endgame (2013-12-05) 1 commit
571   (merged to 'next' on 2014-01-07 at 4cdf8d0)
572  + strbuf: remove prefixcmp() and suffixcmp()
574  Endgame for the cc/starts-n-ends-with topic; this needs to be
575  evil-merged with other topics that introduce new uses of
576  prefix/suffix-cmp functions.
578  Will cook in 'next' until Git 2.0.
581 * gj/push-more-verbose-advice (2013-11-13) 1 commit
582   (merged to 'next' on 2013-12-06 at 574b18a)
583  + push: switch default from "matching" to "simple"
585  Originally merged to 'next' on 2013-11-21
587  Explain 'simple' and 'matching' in "git push" advice message; the
588  topmost patch is a rebase of jc/push-2.0-default-to-simple on top
589  of it.
591  Will cook in 'next' until Git 2.0.
594 * tr/merge-recursive-index-only (2013-10-28) 3 commits
595  - merge-recursive: -Xindex-only to leave worktree unchanged
596  - merge-recursive: internal flag to avoid touching the worktree
597  - merge-recursive: remove dead conditional in update_stages()
599  Will hold.
602 * jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
603   (merged to 'next' on 2013-12-06 at ead2ec8)
604  + git add: -u/-A now affects the entire working tree
606  Will cook in 'next' until Git 2.0.
609 * jc/core-checkstat-2.0 (2013-05-06) 1 commit
610   (merged to 'next' on 2013-12-06 at ae18007)
611  + core.statinfo: remove as promised in Git 2.0
613  Will cook in 'next' until Git 2.0.
616 * jc/push-2.0-default-to-simple (2013-06-18) 1 commit
617   (merged to 'next' on 2013-12-06 at 6fad61c)
618  + push: switch default from "matching" to "simple"
620  Will cook in 'next' until Git 2.0.
623 * jc/add-2.0-ignore-removal (2013-04-22) 1 commit
624   (merged to 'next' on 2013-12-06 at fbaa75a)
625  + git add <pathspec>... defaults to "-A"
627  Updated endgame for "git add <pathspec>" that defaults to "--all"
628  aka "--no-ignore-removal".
630  Will cook in 'next' until Git 2.0.
633 * jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
634   (merged to 'next' on 2013-12-06 at 083d67c)
635  + diff: remove "diff-files -q" in a version of Git in a distant future
637  Will cook in 'next' until a distant future.
639 --------------------------------------------------
640 [Discarded]
642 * jk/branch-at-publish (2014-01-23) 6 commits
643  . t1507 (rev-parse-upstream): fix typo in test title
644  . implement @{publish} shorthand
645  . branch_get: provide per-branch pushremote pointers
646  . branch_get: return early on error
647  . interpret_branch_name: factor out upstream handling
648  . sha1_name: refactor upstream_mark
650  Rebased to be jk/branch-at-publish-rebased to share the same change
651  with the jk/interpret-branch-name-fix topic.
654 * jn/git-gui-chmod+x (2013-11-25) 1 commit
655  . git-gui: chmod +x po2msg, windows/git-gui.sh
657  Now in 'master' from the upstream git-gui repository.
660 * jn/gitk-chmod+x (2013-11-25) 1 commit
661  . gitk: chmod +x po2msg
663  Now in 'master' from the upstream gitk repository.
666 * jc/parse-options-humint (2014-01-22) 1 commit
667  . parse-options: refactor human-friendly-integer parser out of pack-objects
669  Teach parse-options machinery to optionally parse numbers with a
670  unit suffix, e.g. 8g, 4m, 128k.