What's cooking (2013/05 #02)
[git.git] / whats-cooking.txt
blobb7664fc03093c3dc61efc4ea35a35e8629b086bd
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (May 2013, #02; Mon, 6)
4 X-master-at: 423ecb0bb66e9d60b6667aebc2844e82205369a1
5 X-next-at: cc59dccce3f551f6d04e123f8ba0564e5aee6c54
7 What's cooking in git.git (May 2013, #02; Mon, 6)
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 As we already have merged enough changes to 'master' during this
15 cycle that can potentially cause unforseen regressions, let's not
16 merge topics that are not regression fixes from 'next' to 'master',
17 either, until the final release.
19 You can find the changes described here in the integration branches
20 of the repositories listed at
22     http://git-blame.blogspot.com/p/git-public-repositories.html
24 --------------------------------------------------
25 [Graduated to "master"]
27 * fc/remote-bzr (2013-04-30) 18 commits
28  - remote-bzr: access branches only when needed
29  - remote-bzr: delay peer branch usage
30  - remote-bzr: iterate revisions properly
31  - remote-bzr: improve progress reporting
32  - remote-bzr: add option to specify branches
33  - remote-bzr: add custom method to find branches
34  - remote-bzr: improve author sanitazion
35  - remote-bzr: add support for shared repo
36  - remote-bzr: fix branch names
37  - remote-bzr: add support for bzr repos
38  - remote-bzr: use branch variable when appropriate
39  - remote-bzr: fix partially pushed merge
40  - remote-bzr: fixes for branch diverge
41  - remote-bzr: add support to push merges
42  - remote-bzr: always try to update the worktree
43  - remote-bzr: fix order of locking in CustomTree
44  - remote-bzr: delay blob fetching until the very end
45  - remote-bzr: cleanup CustomTree
47  To replace the one we pushed out in 1.8.2 after hearing that Emacs
48  folks had a good experience with this version, this will be in
49  1.8.3-rc2.
51 --------------------------------------------------
52 [New Topics]
54 * fc/fast-export-persistent-marks (2013-05-06) 3 commits
55  - fast-export: don't parse commits while reading marks file
56  - fast-export: do not parse non-commit objects while reading marks file
57  - fast-{import,export}: use get_sha1_hex() directly
59  Seems to break a handful of topics when merged to the tip of 'pu'.
62 * jc/core-checkstat-2.0 (2013-05-06) 2 commits
63  - core.statinfo: remove as promised in Git 2.0
64  - deprecate core.statinfo at Git 2.0 boundary
66  The bottom one is a fix for a breakage of a new feature in 1.8.2
67  but it is not all that urgent.
70 * jk/packed-refs-race (2013-05-06) 4 commits
71  - for_each_ref: load all loose refs before packed refs
72  - get_packed_refs: reload packed-refs file when it changes
73  - add a stat_validity struct
74  - resolve_ref: close race condition for packed refs
78 --------------------------------------------------
79 [Stalled]
81 * mg/more-textconv (2013-04-23) 7 commits
82  - git grep: honor textconv by default
83  - grep: honor --textconv for the case rev:path
84  - grep: allow to use textconv filters
85  - t7008: demonstrate behavior of grep with textconv
86  - cat-file: do not die on --textconv without textconv filters
87  - show: honor --textconv for blobs
88  - t4030: demonstrate behavior of show with textconv
90  Rerolled. I am not sure if I like "show <blob>" and "grep" that use
91  textconv by default, though.
94 * mh/multimail (2013-04-21) 1 commit
95  - git-multimail: a replacement for post-receive-email
97  Waiting for comments.
100 * jc/format-patch (2013-04-22) 2 commits
101  - format-patch: --inline-single
102  - format-patch: rename "no_inline" field
104  A new option to send a single patch to the standard output to be
105  appended at the bottom of a message.  I personally have no need for
106  this, but it was easy enough to cobble together.  Tests, docs and
107  stripping out more MIMEy stuff are left as exercises to interested
108  parties.
110  Not ready for inclusion.
113 * jk/gitweb-utf8 (2013-04-08) 4 commits
114  - gitweb: Fix broken blob action parameters on blob/commitdiff pages
115  - gitweb: Don't append ';js=(0|1)' to external links
116  - gitweb: Make feed title valid utf8
117  - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch
119  Various fixes to gitweb.
121  Waiting for a reroll after a review.
124 * jk/commit-info-slab (2013-04-19) 3 commits
125  - commit-slab: introduce a macro to define a slab for new type
126  - commit-slab: avoid large realloc
127  - commit: allow associating auxiliary info on-demand
128  (this branch is used by jc/show-branch.)
130  Technology demonstration to show a way we could use unbound number
131  of flag bits on commit objects.
134 * jn/config-ignore-inaccessible (2013-04-15) 1 commit
135  - config: allow inaccessible configuration under $HOME
137  When $HOME is misconfigured to point at an unreadable directory, we
138  used to complain and die. This loosens the check.
140  I do not think we agreed that this is a good idea, though.
142 --------------------------------------------------
143 [Cooking]
145 * fc/at-head (2013-05-02) 5 commits
146  - Add new @ shortcut for HEAD
147  - sha1_name: refactor reinterpret()
148  - sha1_name: compare variable with constant, not constant with variable
149  - sha1_name: remove unnecessary braces
150  - sha1_name: remove no-op
152  Instead of typing four capital letters "HEAD", you can say "@"
153  instead.
155  There was another series from Ram that looked mostly test updates
156  but I lost track of which one was which.  In any case, are people
157  happy with this series?
160 * jk/lookup-object-prefer-latest (2013-05-02) 1 commit
161   (merged to 'next' on 2013-05-06 at cc59dcc)
162  + lookup_object: prioritize recently found objects
164  Optimizes object lookup when the object hashtable starts to become
165  crowded.
168 * jk/subtree-do-not-push-if-split-fails (2013-05-01) 1 commit
169   (merged to 'next' on 2013-05-06 at 81bdf37)
170  + contrib/subtree: don't delete remote branches if split fails
172  "git subtree" (in contrib/) had one codepath with loose error
173  checks to lose data at the remote side.
176 * fc/completion (2013-04-27) 9 commits
177  - completion: remove __git_index_file_list_filter()
178  - completion: add space after completed filename
179  - completion: add hack to enable file mode in bash < 4
180  - completion: refactor __git_complete_index_file()
181  - completion: refactor diff_index wrappers
182  - completion: use __gitcompadd for __gitcomp_file
183  - completion; remove unuseful comments
184  - completion: document tilde expansion failure in tests
185  - completion: add file completion tests
187  I saw this discussed somewhat. Is everybody happy with this
188  version?  This is its v2, in the $gmane/222682 thread.
191 * jk/test-output (2013-05-06) 3 commits
192   (merged to 'next' on 2013-05-06 at 7c03af3)
193  + t/Makefile: don't define TEST_RESULTS_DIRECTORY recursively
194   (merged to 'next' on 2013-05-01 at 63827c9)
195  + test output: respect $TEST_OUTPUT_DIRECTORY
196  + t/Makefile: fix result handling with TEST_OUTPUT_DIRECTORY
198  When TEST_OUTPUT_DIRECTORY setting is used, it was handled somewhat
199  inconsistently between the test framework and t/Makefile, and logic
200  to summarize the results looked at a wrong place.
202  Will cook in 'next'.
205 * rj/mingw-cygwin (2013-04-28) 2 commits
206  - cygwin: Remove the CYGWIN_V15_WIN32API build variable
207  - mingw: rename WIN32 cpp macro to GIT_WINDOWS_NATIVE
209  Cygwin portability; both were reviewed by Jonathan, and the tip one
210  seems to want a bit further explanation.  Needs positive report
211  from Cygwin 1.7 users who have been on 1.7 to make sure it does not
212  regress for them.
215 * rj/sparse (2013-04-28) 10 commits
216   (merged to 'next' on 2013-05-01 at 649e16c)
217  + sparse: Fix mingw_main() argument number/type errors
218  + compat/mingw.c: Fix some sparse warnings
219  + compat/win32mmap.c: Fix some sparse warnings
220  + compat/poll/poll.c: Fix a sparse warning
221  + compat/win32/pthread.c: Fix a sparse warning
222  + compat/unsetenv.c: Fix a sparse warning
223  + compat/nedmalloc: Fix compiler warnings on linux
224  + compat/nedmalloc: Fix some sparse warnings
225  + compat/fnmatch/fnmatch.c: Fix a sparse error
226  + compat/regex/regexec.c: Fix some sparse warnings
228  Will cook in 'next'.
231 * js/transport-helper-error-reporting-fix (2013-04-28) 3 commits
232   (merged to 'next' on 2013-04-29 at 8cc4bb8)
233  + git-remote-testgit: build it to run under $SHELL_PATH
234  + git-remote-testgit: further remove some bashisms
235  + git-remote-testgit: avoid process substitution
236  (this branch uses fc/transport-helper-error-reporting.)
238  Finishing touches to fc/transport-helper-error-reporting topic.
239  Will cook in 'next'.
242 * mh/fetch-into-shallow (2013-05-02) 2 commits
243   (merged to 'next' on 2013-05-03 at 3fadc61)
244  + t5500: add test for fetching with an unknown 'shallow'
245   (merged to 'next' on 2013-04-29 at a167d3e)
246  + upload-pack: ignore 'shallow' lines with unknown obj-ids
248  Will cook in 'next'.
251 * kb/full-history-compute-treesame-carefully (2013-05-06) 11 commits
252  - revision.c: treat A...B merge bases as if manually specified
253  - revision.c: discount side branches when computing TREESAME
254  - simplify-merges: drop merge from irrelevant side branch
255  - simplify-merges: never remove all TREESAME parents
256  - t6012: update test for tweaked full-history traversal
257  - revision.c: Make --full-history consider more merges
258  - rev-list-options.txt: correct TREESAME for P
259  - t6111: allow checking the parents as well
260  - t6111: new TREESAME test set
261  - t6019: test file dropped in -s ours merge
262  - decorate.c: compact table when growing
264  Major update to a very core part of the system to improve culling
265  of irrelevant parents while traversing a mergy history.
267  Will not be a 1.8.3 material, but is an important topic.
270 * jh/checkout-auto-tracking (2013-04-21) 8 commits
271   (merged to 'next' on 2013-04-22 at 2356700)
272  + glossary: Update and rephrase the definition of a remote-tracking branch
273  + branch.c: Validate tracking branches with refspecs instead of refs/remotes/*
274  + t9114.2: Don't use --track option against "svn-remote"-tracking branches
275  + t7201.24: Add refspec to keep --track working
276  + t3200.39: tracking setup should fail if there is no matching refspec.
277  + checkout: Use remote refspecs when DWIMming tracking branches
278  + t2024: Show failure to use refspec when DWIMming remote branch names
279  + t2024: Add tests verifying current DWIM behavior of 'git checkout <branch>'
281  Updates "git checkout foo" that DWIMs the intended "upstream" and
282  turns it into "git checkout -t -b foo remotes/origin/foo" to
283  correctly take existing remote definitions into account.  The
284  remote "origin" may be what uniquely map its own branch to
285  remotes/some/where/foo but that some/where may not be "origin".
287  Will cook in 'next'.
290 * jc/prune-all (2013-04-25) 4 commits
291   (merged to 'next' on 2013-04-26 at 97a7387)
292  + prune: introduce OPT_EXPIRY_DATE() and use it
293   (merged to 'next' on 2013-04-22 at b00ccf6)
294  + api-parse-options.txt: document "no-" for non-boolean options
295  + git-gc.txt, git-reflog.txt: document new expiry options
296  + date.c: add parse_expiry_date()
297  (this branch is used by mh/packed-refs-various.)
299  We used the approxidate() parser for "--expire=<timestamp>" options
300  of various commands, but it is better to treat --expire=all and
301  --expire=now a bit more specially than using the current timestamp.
302  Update "git gc" and "git reflog" with a new parsing function for
303  expiry dates.
305  Will cook in 'next'.
308 * as/check-ignore (2013-04-29) 6 commits
309   (merged to 'next' on 2013-04-30 at 646931f)
310  + t0008: use named pipe (FIFO) to test check-ignore streaming
311   (merged to 'next' on 2013-04-21 at 7515aa8)
312  + Documentation: add caveats about I/O buffering for check-{attr,ignore}
313  + check-ignore: allow incremental streaming of queries via --stdin
314  + check-ignore: move setup into cmd_check_ignore()
315  + check-ignore: add -n / --non-matching option
316  + t0008: remove duplicated test fixture data
318  Enhance "check-ignore" (1.8.2 update) to work more like "check-attr"
319  over bidi-pipes.
321  Will cook in 'next'.
324 * mh/packed-refs-various (2013-05-01) 33 commits
325   (merged to 'next' on 2013-05-01 at e527153)
326  + refs: handle the main ref_cache specially
327  + refs: change do_for_each_*() functions to take ref_cache arguments
328  + pack_one_ref(): do some cheap tests before a more expensive one
329  + pack_one_ref(): use write_packed_entry() to do the writing
330  + pack_one_ref(): use function peel_entry()
331  + refs: inline function do_not_prune()
332  + pack_refs(): change to use do_for_each_entry()
333  + refs: use same lock_file object for both ref-packing functions
334  + pack_one_ref(): rename "path" parameter to "refname"
335  + pack-refs: merge code from pack-refs.{c,h} into refs.{c,h}
336  + pack-refs: rename handle_one_ref() to pack_one_ref()
337  + refs: extract a function write_packed_entry()
338  + repack_without_ref(): write peeled refs in the rewritten file
339  + t3211: demonstrate loss of peeled refs if a packed ref is deleted
340  + refs: change how packed refs are deleted
341  + search_ref_dir(): return an index rather than a pointer
342  + repack_without_ref(): silence errors for dangling packed refs
343  + t3210: test for spurious error messages for dangling packed refs
344  + refs: change the internal reference-iteration API
345  + refs: extract a function peel_entry()
346  + peel_ref(): fix return value for non-peelable, not-current reference
347  + peel_object(): give more specific information in return value
348  + refs: extract function peel_object()
349  + refs: extract a function ref_resolves_to_object()
350  + repack_without_ref(): use function get_packed_ref()
351  + peel_ref(): use function get_packed_ref()
352  + get_packed_ref(): return a ref_entry
353  + do_for_each_ref_in_dirs(): remove dead code
354  + refs: define constant PEELED_LINE_LENGTH
355  + refs: document how current_ref is used
356  + refs: document do_for_each_ref() and do_one_ref()
357  + refs: document the fields of struct ref_value
358  + refs: document flags constants REF_*
359  (this branch uses jc/prune-all.)
361  Updates reading and updating packed-refs file, correcting corner
362  case bugs.
364  Will cook in 'next'.
367 * fc/transport-helper-error-reporting (2013-04-25) 10 commits
368   (merged to 'next' on 2013-04-25 at 3358f1a)
369  + t5801: "VAR=VAL shell_func args" is forbidden
370   (merged to 'next' on 2013-04-22 at 5ba6467)
371  + transport-helper: update remote helper namespace
372  + transport-helper: trivial code shuffle
373  + transport-helper: warn when refspec is not used
374  + transport-helper: clarify pushing without refspecs
375  + transport-helper: update refspec documentation
376  + transport-helper: clarify *:* refspec
377  + transport-helper: improve push messages
378  + transport-helper: mention helper name when it dies
379  + transport-helper: report errors properly
380  (this branch is used by js/transport-helper-error-reporting-fix.)
382  Update transport helper to report errors and maintain ref hierarchy
383  used to keep track of remote helper state better.
385  Will cook in 'next', but may be 1.8.3 material depending on how things go.
388 * jk/submodule-subdirectory-ok (2013-04-24) 3 commits
389   (merged to 'next' on 2013-04-24 at 6306b29)
390  + submodule: fix quoting in relative_path()
391   (merged to 'next' on 2013-04-22 at f211e25)
392  + submodule: drop the top-level requirement
393  + rev-parse: add --prefix option
395  Allow various subcommands of "git submodule" to be run not from the
396  top of the working tree of the superproject.
398  Will cook in 'next'.
401 * jl/submodule-mv (2013-04-23) 5 commits
402   (merged to 'next' on 2013-04-23 at c04f574)
403  + submodule.c: duplicate real_path's return value
404   (merged to 'next' on 2013-04-19 at 45ae3c9)
405  + rm: delete .gitmodules entry of submodules removed from the work tree
406  + Teach mv to update the path entry in .gitmodules for moved submodules
407  + Teach mv to move submodules using a gitfile
408  + Teach mv to move submodules together with their work trees
410  "git mv A B" when moving a submodule A does "the right thing",
411  inclusing relocating its working tree and adjusting the paths in
412  the .gitmodules file.
414  Will cook in 'next'.
417 * jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
418  - git add: -u/-A now affects the entire working tree
420  Will cook in 'next' until Git 2.0.
423 * nd/magic-pathspecs (2013-03-31) 45 commits
424  . Rename field "raw" to "_raw" in struct pathspec
425  . pathspec: support :(glob) syntax
426  . pathspec: make --literal-pathspecs disable pathspec magic
427  . pathspec: support :(literal) syntax for noglob pathspec
428  . Kill limit_pathspec_to_literal() as it's only used by parse_pathspec()
429  . parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN
430  . parse_pathspec: make sure the prefix part is wildcard-free
431  . tree-diff: remove the use of pathspec's raw[] in follow-rename codepath
432  . Remove match_pathspec() in favor of match_pathspec_depth()
433  . Remove init_pathspec() in favor of parse_pathspec()
434  . Remove diff_tree_{setup,release}_paths
435  . Convert common_prefix() to use struct pathspec
436  . Convert add_files_to_cache to take struct pathspec
437  . Convert {read,fill}_directory to take struct pathspec
438  . Convert refresh_index to take struct pathspec
439  . Convert report_path_error to take struct pathspec
440  . checkout: convert read_tree_some to take struct pathspec
441  . Convert unmerge_cache to take struct pathspec
442  . Convert run_add_interactive to use struct pathspec
443  . Convert read_cache_preload() to take struct pathspec
444  . reset: convert to use parse_pathspec
445  . add: convert to use parse_pathspec
446  . check-ignore: convert to use parse_pathspec
447  . archive: convert to use parse_pathspec
448  . ls-files: convert to use parse_pathspec
449  . rm: convert to use parse_pathspec
450  . checkout: convert to use parse_pathspec
451  . rerere: convert to use parse_pathspec
452  . status: convert to use parse_pathspec
453  . commit: convert to use parse_pathspec
454  . clean: convert to use parse_pathspec
455  . Guard against new pathspec magic in pathspec matching code
456  . parse_pathspec: support prefixing original patterns
457  . parse_pathspec: support stripping/checking submodule paths
458  . parse_pathspec: support stripping submodule trailing slashes
459  . parse_pathspec: a special flag for max_depth feature
460  . Convert some get_pathspec() calls to parse_pathspec()
461  . parse_pathspec: add PATHSPEC_PREFER_{CWD,FULL}
462  . parse_pathspec: save original pathspec for reporting
463  . Add parse_pathspec() that converts cmdline args to struct pathspec
464  . pathspec: add copy_pathspec
465  . pathspec: i18n-ize error strings in pathspec parsing code
466  . Move struct pathspec and related functions to pathspec.[ch]
467  . clean: remove unused variable "seen"
468  . setup.c: check that the pathspec magic ends with ")"
470  Migrate the rest of codebase to use "struct pathspec" more.
472  This has nasty conflicts with kb/status-ignored-optim-2,
473  as/check-ignore and tr/line-log; I've already asked Duy to hold
474  this and later rebase on top of them.
476  Will defer.
479 * tr/line-log (2013-04-22) 13 commits
480   (merged to 'next' on 2013-04-22 at 8f2c1de)
481  + git-log(1): remove --full-line-diff description
482   (merged to 'next' on 2013-04-21 at cd92620)
483  + line-log: fix documentation formatting
484   (merged to 'next' on 2013-04-15 at 504559e)
485  + log -L: improve comments in process_all_files()
486  + log -L: store the path instead of a diff_filespec
487  + log -L: test merge of parallel modify/rename
488  + t4211: pass -M to 'git log -M -L...' test
489   (merged to 'next' on 2013-04-05 at 5afb00c)
490  + log -L: fix overlapping input ranges
491  + log -L: check range set invariants when we look it up
492   (merged to 'next' on 2013-04-01 at 5be920c)
493  + Speed up log -L... -M
494  + log -L: :pattern:file syntax to find by funcname
495  + Implement line-history search (git log -L)
496  + Export rewrite_parents() for 'log -L'
497  + Refactor parse_loc
499  Will cook in 'next'.
502 * jc/push-2.0-default-to-simple (2013-04-03) 1 commit
503  - push: switch default from "matching" to "simple"
505  The early bits to adjust the tests have been merged to 'master'.
507  Will cook in 'next' until Git 2.0.
510 * jc/add-2.0-ignore-removal (2013-04-22) 1 commit
511  - git add <pathspec>... defaults to "-A"
513  Updated endgame for "git add <pathspec>" that defaults to "--all"
514  aka "--no-ignore-removal".
516  Will cook in 'next' until Git 2.0.