What's cooking (2014/04 #03)
[git/jrn.git] / whats-cooking.txt
blob58c29c02fb44791eded326cc5da9187df0375a97
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Apr 2014, #03; Fri, 11)
4 X-master-at: 68773ac915580e88016c34ce1269730382b501d4
5 X-next-at: 5ae4ba539641e54f43a36c773306acca96600f24
7 What's cooking in git.git (Apr 2014, #03; Fri, 11)
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 number of topics cooking in 'next' has been shrinking, and the
15 cycle is getting long. Hopefully we will have -rc0 late next week to
16 close the 'master' branch and a few rounds of -rc iterations until
17 2.0 final. Other topics under discussion may continue to flow to
18 'next', as usual, during that time, to be pushed out early in the
19 next cycle.
21 You can find the changes described here in the integration branches
22 of the repositories listed at
24     http://git-blame.blogspot.com/p/git-public-repositories.html
26 --------------------------------------------------
27 [New Topics]
29 * nd/index-pack-one-fd-per-thread (2014-04-09) 1 commit
30  - index-pack: work around thread-unsafe pread()
32  Enable threaded index-pack on platforms without thread-unsafe
33  pread() emulation.
35  Will merge to 'next' and keep it there for the remainder of the cycle.
38 * tb/unicode-6.3-zero-width (2014-04-09) 1 commit
39  - utf8.c: partially update to version 6.3
41  Teach our display-column-counting logic about decomposed umlauts
42  and friends.
44  Will merge to 'next'.
47 * fc/complete-aliased-push (2014-04-09) 1 commit
48  - completion: fix completing args of aliased "push", "fetch", etc.
50  Will merge to 'next'.
53 * fc/remote-helper-fixes (2014-04-09) 4 commits
54  - remote-bzr: include authors field in pushed commits
55  - remote-bzr: add support for older versions
56  - remote-hg: always normalize paths
57  - remote-helpers: allow all tests running from any dir
59  Will merge to 'next'.
62 * fc/publish-vs-upstream (2014-04-11) 8 commits
63  - sha1_name: add support for @{publish} marks
64  - sha1_name: simplify track finding
65  - sha1_name: cleanup interpret_branch_name()
66  - branch: display publish branch
67  - push: add --set-publish option
68  - branch: add --set-publish-to option
69  - Add concept of 'publish' branch
70  - t5516 (fetch-push): fix test restoration
72  Add branch@{publish}; this round v3 hasn't yet seen much reviews
73  yet.
75  Seems to have some interactions to break tests when merged to 'pu'.
78 * ym/fix-opportunistic-index-update-race (2014-04-10) 2 commits
79  - read-cache.c: verify index file before we opportunistically update it
80  - wrapper.c: add xpread() similar to xread()
82  Duy raised a good point that we may need to do the same for the
83  normal writeout codepath, not just the "opportunistic" update
84  codepath.  While that is true, nobody sane would be running two
85  simultaneous operations that are clearly write-oriented competing
86  with each other against the same index file.  So in that sense that
87  can be done as a less urgent follow-up for this topic.
90 * km/avoid-bs-in-shell-glob (2014-04-11) 1 commit
91  - test: fix t5560 on FreeBSD
93  Portability fix.
94  Will merge to 'next' and to 'master'.
97 * km/avoid-cp-a (2014-04-11) 1 commit
98  - test: fix t7001 cp to use POSIX options
100  Portability fix.
101  Will merge to 'next' and hopefully to 'master'.
104 * rs/ref-closer-to-atomic (2014-04-11) 3 commits
105  - refs.c: change ref_transaction_commit to run the commit loops once all work is finished
106  - refs.c: split delete_ref_loose() into a separate flag-for-deletion and commit phase
107  - refs.c: split writing and commiting a ref into two separate functions
108  (this branch uses mh/ref-transaction.)
110  Builds on top of Michael's ref-transaction series to shrink the
111  race window during multiple ref updates.
113  Appears to break some tests even standalone, and somewhat conflicts
114  with Michael's mh/lockfile topic when merging to 'pu'.
116 --------------------------------------------------
117 [Graduated to "master"]
119 * ib/rev-parse-parseopt-argh (2014-04-01) 1 commit
120   (merged to 'next' on 2014-04-01 at 025578d)
121  + rev-parse: fix typo in example on manpage
123  Finishing touch to a new topic scheduled for 2.0
126 * jc/rev-parse-argh-dashed-multi-words (2014-03-24) 3 commits
127   (merged to 'next' on 2014-03-31 at 1c48649)
128  + parse-options: make sure argh string does not have SP or _
129  + update-index: teach --cacheinfo a new syntax "mode,sha1,path"
130  + parse-options: multi-word argh should use dash to separate words
132  Make sure that the help text given to describe the "<param>" part
133  of the "git cmd --option=<param>" does not contain SP or _,
134  e.g. "--gpg-sign=<key-id>" option for "git commit" is not spelled
135  as "--gpg-sign=<key id>".
138 * jk/commit-dates-parsing-fix (2014-04-01) 2 commits
139   (merged to 'next' on 2014-04-04 at c16eeb0)
140  + t4212: loosen far-in-future test for AIX
141  + date: recognize bogus FreeBSD gmtime output
143  Finishing touches for portability.
146 * jk/pack-bitmap (2014-04-04) 2 commits
147   (merged to 'next' on 2014-04-04 at 0306834)
148  + pack-objects: do not reuse packfiles without --delta-base-offset
149  + add `ignore_missing_links` mode to revwalk
151  Fixes the pack-bitmap already in 'master'.
154 * jl/nor-or-nand-and (2014-03-31) 4 commits
155   (merged to 'next' on 2014-04-04 at b5d1ac5)
156  + code and test: fix misuses of "nor"
157  + comments: fix misuses of "nor"
158  + contrib: fix misuses of "nor"
159  + Documentation: fix misuses of "nor"
161  Eradicate mistaken use of "nor" (that is, essentially "nor" used
162  not in "neither A nor B" ;-)) from in-code comments, command output
163  strings, and documentations.
166 * mh/update-ref-batch-create-fix (2014-04-02) 1 commit
167   (merged to 'next' on 2014-04-04 at 97e3f12)
168  + update-ref: fail create operation over stdin if ref already exists
170  Requesting "update-ref --stdin" to create a ref that already exists
171  should have errored out, but didn't.
174 * mr/msvc-link-with-invalidcontinue (2014-03-28) 1 commit
175   (merged to 'next' on 2014-03-31 at 051a29e)
176  + MSVC: link in invalidcontinue.obj for better POSIX compatibility
179 * mr/opt-set-ptr (2014-03-31) 3 commits
180   (merged to 'next' on 2014-04-03 at a26385b)
181  + parse-options: remove unused OPT_SET_PTR
182  + parse-options: add cast to correct pointer type to OPT_SET_PTR
183  + MSVC: fix t0040-parse-options crash
185  OPT_SET_PTR() implementation was broken on IL32P64 platforms;
186  it turns out that the macro is not used by any real user.
188 --------------------------------------------------
189 [Stalled]
191 * tr/merge-recursive-index-only (2014-02-05) 3 commits
192  - merge-recursive: -Xindex-only to leave worktree unchanged
193  - merge-recursive: internal flag to avoid touching the worktree
194  - merge-recursive: remove dead conditional in update_stages()
195  (this branch is used by tr/remerge-diff.)
197  Will hold.
200 * tr/remerge-diff (2014-02-26) 5 commits
201  . log --remerge-diff: show what the conflict resolution changed
202  . name-hash: allow dir hashing even when !ignore_case
203  . merge-recursive: allow storing conflict hunks in index
204  . revision: fold all merge diff variants into an enum merge_diff_mode
205  . combine-diff: do not pass revs->dense_combined_merges redundantly
206  (this branch uses tr/merge-recursive-index-only.)
208  "log -p" output learns a new way to let users inspect a merge
209  commit by showing the differences between the automerged result
210  with conflicts the person who recorded the merge would have seen
211  and the final conflict resolution that was recorded in the merge.
213  Needs to be rebased, now kb/fast-hashmap topic is in.
216 * bc/blame-crlf-test (2014-02-18) 1 commit
217  - blame: add a failing test for a CRLF issue.
219  I have a feeling that a fix for this should be fairly isolated and
220  trivial (it should be just the matter of paying attention to the
221  crlf settings when synthesizing the fake commit)---perhaps somebody
222  can squash in a fix to this?
225 * jk/makefile (2014-02-05) 16 commits
226  - FIXUP
227  - move LESS/LV pager environment to Makefile
228  - Makefile: teach scripts to include make variables
229  - FIXUP
230  - Makefile: auto-build C strings from make variables
231  - Makefile: drop *_SQ variables
232  - FIXUP
233  - Makefile: add c-quote helper function
234  - Makefile: introduce sq function for shell-quoting
235  - Makefile: always create files via make-var
236  - Makefile: store GIT-* sentinel files in MAKE/
237  - Makefile: prefer printf to echo for GIT-*
238  - Makefile: use tempfile/mv strategy for GIT-*
239  - Makefile: introduce make-var helper function
240  - Makefile: fix git-instaweb dependency on gitweb
241  - Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS
243  Simplify the Makefile rules and macros that exist primarily for
244  quoting purposes, and make it easier to robustly express the
245  dependency rules.
247  Expecting a reroll.
250 * po/everyday-doc (2014-01-27) 1 commit
251  - Make 'git help everyday' work
253  This may make the said command to emit something, but the source is
254  not meant to be formatted into a manual pages to begin with, and
255  also its contents are a bit stale.  It may be a good first step in
256  the right direction, but needs more work to at least get the
257  mark-up right before public consumption.
259  Will hold.
262 * jk/branch-at-publish-rebased (2014-01-17) 5 commits
263  . t1507 (rev-parse-upstream): fix typo in test title
264  . implement @{publish} shorthand
265  . branch_get: provide per-branch pushremote pointers
266  . branch_get: return early on error
267  . sha1_name: refactor upstream_mark
269  Give an easier access to the tracking branches from "other" side in
270  a triangular workflow by introducing B@{publish} that works in a
271  similar way to how B@{upstream} does.
273  Meant to be used as a basis for whatever Ram wants to build on.
275  Ejected from 'pu' to make room for fc/publish-vs-upstream topic.
278 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
279  - merge: drop unused arg from abort_commit method signature
280  - merge: make prepare_to_commit responsible for write_merge_state
281  - t7505: ensure cleanup after hook blocks merge
282  - t7505: add missing &&
284  Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
285  run during "git merge".  The log message stresses too much on one
286  hook, prepare-commit-msg, but it would equally apply to other hooks
287  like post-merge, I think.
289  Waiting for a reroll.
292 * jl/submodule-recursive-checkout (2013-12-26) 5 commits
293  - Teach checkout to recursively checkout submodules
294  - submodule: teach unpack_trees() to update submodules
295  - submodule: teach unpack_trees() to repopulate submodules
296  - submodule: teach unpack_trees() to remove submodule contents
297  - submodule: prepare for recursive checkout of submodules
299  Expecting a reroll.
302 * jc/graph-post-root-gap (2013-12-30) 3 commits
303  - WIP: document what we want at the end
304  - graph: remove unused code a bit
305  - graph: stuff the current commit into graph->columns[]
307  This was primarily a RFH ($gmane/239580).
310 * np/pack-v4 (2013-09-18) 90 commits
311  . packv4-parse.c: add tree offset caching
312  . t1050: replace one instance of show-index with verify-pack
313  . index-pack, pack-objects: allow creating .idx v2 with .pack v4
314  . unpack-objects: decode v4 trees
315  . unpack-objects: allow to save processed bytes to a buffer
316  - ...
318  Nico and Duy advancing the eternal vaporware pack-v4.  This is here
319  primarily for wider distribution of the preview edition.
321  Needs to be rebased, now the pack-bitmap series is in.
324 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
325  - perf-lib: add test_perf_cleanup target
326  - perf-lib: split starting the test from the execution
328  Add test_perf_cleanup shell function to the perf suite, that allows
329  the script writers to define a test with a clean-up action.
331  Will hold.
334 * jc/format-patch (2013-04-22) 2 commits
335  - format-patch: --inline-single
336  - format-patch: rename "no_inline" field
338  A new option to send a single patch to the standard output to be
339  appended at the bottom of a message.  I personally have no need for
340  this, but it was easy enough to cobble together.  Tests, docs and
341  stripping out more MIMEy stuff are left as exercises to interested
342  parties.
345 * jc/show-branch (2014-03-24) 5 commits
346  - show-branch: use commit slab to represent bitflags of arbitrary width
347  - show-branch.c: remove "all_mask"
348  - show-branch.c: abstract out "flags" operation
349  - show-branch.c: lift all_mask/all_revs to a global static
350  - show-branch.c: update comment style
352  Waiting for the final step to lift the hard-limit before sending it out.
354 --------------------------------------------------
355 [Cooking]
357 * jl/status-added-submodule-is-never-ignored (2014-04-07) 2 commits
358  - commit -m: commit staged submodules regardless of ignore config
359  - status/commit: show staged submodules regardless of ignore config
362 * mh/multimail (2014-04-07) 1 commit
363  - git-multimail: update to version 1.0.0
366 * mh/lockfile (2014-04-07) 25 commits
367  - trim_last_path_elm(): replace last_path_elm()
368  - resolve_symlink(): take a strbuf parameter
369  - resolve_symlink(): use a strbuf for internal scratch space
370  - Change lock_file::filename into a strbuf
371  - commit_lock_file(): use a strbuf to manage temporary space
372  - try_merge_strategy(): use a statically-allocated lock_file object
373  - try_merge_strategy(): remove redundant lock_file allocation
374  - lockfile: avoid transitory invalid states
375  - commit_lock_file(): make committing an unlocked lockfile a NOP
376  - commit_lock_file(): inline temporary variable
377  - remove_lock_file(): call rollback_lock_file()
378  - lock_file(): exit early if lockfile cannot be opened
379  - write_packed_entry_fn(): convert cb_data into a (const int *)
380  - prepare_index(): declare return value to be (const char *)
381  - delete_ref_loose(): don't muck around in the lock_file's filename
382  - lockfile: define a constant LOCK_SUFFIX_LEN
383  - lockfile.c: document the various states of lock_file objects
384  - struct lock_file: replace on_list field with flags field
385  - lock_file(): always add lock_file object to lock_file_list
386  - hold_lock_file_for_append(): release lock on errors
387  - lockfile: unlock file if lockfile permissions cannot be adjusted
388  - rollback_lock_file(): set fd to -1
389  - rollback_lock_file(): do not clear filename redundantly
390  - unable_to_lock_die(): rename function from unable_to_lock_index_die()
391  - api-lockfile: expand the documentation
393  Refactor and fix corner-case bugs in the lockfile API.
396 * mt/patch-id-stable (2014-03-31) 3 commits
397   (merged to 'next' on 2014-04-08 at 0188d44)
398  + patch-id-test: test --stable and --unstable flags
399  + patch-id: document new behaviour
400  + patch-id: make it stable against hunk reordering
402  Introduce a new way to compute patch-id for a patch that is not
403  affected by the order of the paths that appear in the input.
405  This changes the generated patch-id unless the users add an extra
406  option to their command lines, but I deliberately queued the series
407  to 'next' without reverting that compatibility breakage to see if
408  people complain.  It could be that we do not have to worry about
409  the default flipping at all.  We'll see.
411  Will keep in 'next' for the remainder of this cycle.
414 * mh/ref-transaction (2014-04-07) 27 commits
415  - ref_transaction_commit(): work with transaction->updates in place
416  - struct ref_update: add a type field
417  - struct ref_update: add a lock field
418  - ref_transaction_commit(): simplify code using temporary variables
419  - struct ref_update: store refname as a FLEX_ARRAY
420  - struct ref_update: rename field "ref_name" to "refname"
421  - refs: remove API function update_refs()
422  - update-ref --stdin: reimplement using reference transactions
423  - refs: add a concept of a reference transaction
424  - update-ref --stdin: harmonize error messages
425  - update-ref --stdin: improve the error message for unexpected EOF
426  - t1400: test one mistake at a time
427  - update-ref --stdin -z: deprecate interpreting the empty string as zeros
428  - update-ref.c: extract a new function, parse_next_sha1()
429  - t1400: test that stdin -z update treats empty <newvalue> as zeros
430  - update-ref --stdin: simplify error messages for missing oldvalues
431  - update-ref --stdin: make error messages more consistent
432  - update-ref --stdin: improve error messages for invalid values
433  - update-ref.c: extract a new function, parse_refname()
434  - parse_cmd_verify(): copy old_sha1 instead of evaluating <oldvalue> twice
435  - update-ref --stdin: read the whole input at once
436  - update_refs(): fix constness
437  - refs.h: rename the action_on_err constants
438  - t1400: add some more tests involving quoted arguments
439  - parse_arg(): really test that argument is properly terminated
440  - t1400: provide more usual input to the command
441  - t1400: fix name and expected result of one test
442  (this branch is used by rs/ref-closer-to-atomic.)
444  Update "update-ref --stdin [-z]" and then introduce a transactional
445  support for (multi-)reference updates.
447  Is this ready to be merged to 'next' for wider exposure?
450 * jc/apply-ignore-whitespace (2014-03-26) 1 commit
451   (merged to 'next' on 2014-04-04 at 53779a7)
452  + apply --ignore-space-change: lines with and without leading whitespaces do not match
454  "--ignore-space-change" option of "git apply" ignored the
455  spaces at the beginning of line too aggressively, which is
456  inconsistent with the option of the same name "diff" and "git diff"
457  have.
459  Will keep in 'next' for the remainder of this cycle.
462 * as/grep-fullname-config (2014-03-20) 1 commit
463   (merged to 'next' on 2014-03-28 at 810a076)
464  + grep: add grep.fullName config variable
466  Add a configuration variable to force --full-name to be default for
467  "git grep".
469  This may cause regressions on scripted users that do not expect
470  this new behaviour.
472  Will keep in 'next' for the remainder of this cycle.
475 * nd/multiple-work-trees (2014-03-25) 28 commits
476  - count-objects: report unused files in $GIT_DIR/repos/...
477  - gc: support prune --repos
478  - gc: style change -- no SP before closing bracket
479  - prune: strategies for linked checkouts
480  - checkout: detach if the branch is already checked out elsewhere
481  - checkout: clean up half-prepared directories in --to mode
482  - checkout: support checking out into a new working directory
483  - use new wrapper write_file() for simple file writing
484  - wrapper.c: wrapper to open a file, fprintf then close
485  - setup.c: support multi-checkout repo setup
486  - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
487  - setup.c: convert check_repository_format_gently to use strbuf
488  - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
489  - setup.c: convert is_git_directory() to use strbuf
490  - git-stash: avoid hardcoding $GIT_DIR/logs/....
491  - *.sh: avoid hardcoding $GIT_DIR/hooks/...
492  - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
493  - $GIT_COMMON_DIR: a new environment variable
494  - commit: use SEQ_DIR instead of hardcoding "sequencer"
495  - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
496  - reflog: avoid constructing .lock path with git_path
497  - *.sh: respect $GIT_INDEX_FILE
498  - git_path(): be aware of file relocation in $GIT_DIR
499  - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
500  - path.c: rename vsnpath() to do_git_path()
501  - git_snpath(): retire and replace with strbuf_git_path()
502  - path.c: make get_pathname() call sites return const char *
503  - path.c: make get_pathname() return strbuf instead of static buffer
505  A replacement for contrib/workdir/git-new-workdir that does not
506  rely on symbolic links and make sharing of objects and refs safer
507  by making the borrowee and borrowers aware of each other.
509  Will hold.
512 * ks/tree-diff-nway (2014-04-09) 20 commits
513   (merged to 'next' on 2014-04-09 at c17228e)
514  + mingw: activate alloca
515   (merged to 'next' on 2014-04-08 at 6b74773)
516  + combine-diff: speed it up, by using multiparent diff tree-walker directly
517  + tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
518  + Portable alloca for Git
519   (merged to 'next' on 2014-03-31 at 16a7bd4)
520  + tree-diff: reuse base str(buf) memory on sub-tree recursion
521  + tree-diff: no need to call "full" diff_tree_sha1 from show_path()
522  + tree-diff: rework diff_tree interface to be sha1 based
523  + tree-diff: diff_tree() should now be static
524  + tree-diff: remove special-case diff-emitting code for empty-tree cases
525   (merged to 'next' on 2014-03-25 at cfcbdac)
526  + tree-diff: simplify tree_entry_pathcmp
527  + tree-diff: show_path prototype is not needed anymore
528  + tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
529  + tree-diff: move all action-taking code out of compare_tree_entry()
530  + tree-diff: don't assume compare_tree_entry() returns -1,0,1
531   (merged to 'next' on 2014-03-21 at d872679)
532  + tree-diff: consolidate code for emitting diffs and recursion in one place
533  + tree-diff: show_tree() is not needed
534  + tree-diff: no need to pass match to skip_uninteresting()
535  + tree-diff: no need to manually verify that there is no mode change for a path
536  + combine-diff: move changed-paths scanning logic into its own function
537  + combine-diff: move show_log_first logic/action out of paths scanning
539  Instead of running N pair-wise diff-trees when inspecting a
540  N-parent merge, find the set of paths that were touched by walking
541  N+1 trees in parallel.  These set of paths can then be turned into
542  N pair-wise diff-tree results to be processed through rename
543  detections and such.  And N=2 case nicely degenerates to the usual
544  2-way diff-tree, which is very nice.
546  Will keep in 'next' for the remainder of this cycle.
549 * cc/interpret-trailers (2014-04-07) 12 commits
550  - trailer: add blank line before the trailers if needed
551  - Documentation: add documentation for 'git interpret-trailers'
552  - trailer: add tests for commands in config file
553  - trailer: execute command from 'trailer.<name>.command'
554  - trailer: add tests for "git interpret-trailers"
555  - trailer: add interpret-trailers command
556  - trailer: put all the processing together and print
557  - trailer: parse trailers from stdin
558  - trailer: process command line trailer arguments
559  - trailer: read and process config information
560  - trailer: process trailers from stdin and arguments
561  - trailer: add data structures and basic functions
563  A new filter to programatically edit the tail end of the commit log
564  messages.
566  I was planning to merge it to 'next' and keep it there for the
567  remainder of this cycle, but it appears that there still will be
568  another round of reroll, at least for the documentation?
570 --------------------------------------------------
571 [Discarded]
573 * sz/mingw-index-pack-threaded (2014-03-19) 1 commit
574  . Enable index-pack threading in msysgit.
576  Queued a different attempt by Duy on nd/index-pack-one-fd-per-thread