What's cooking (2015/01 #03)
[alt-git.git] / whats-cooking.txt
blob5f568a16fcfb46015e18a62d5d5425837772321a
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Jan 2015, #03; Wed, 14)
4 X-master-at: 563d4e59bd167fe2eecc5480e3841d878b1c8c2b
5 X-next-at: cfa011ed84d39e514c6604f2af14259d9ad5483a
7 What's cooking in git.git (Jan 2015, #03; Wed, 14)
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 Many small low-impact topics have been merged to 'master' in
15 preparation for 2.3-rc1 later in the week.  I see nothing pressing
16 that remain in 'next' other than a few bugfixes I am hoping that we
17 can merge and ship in the 2.3 final.
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 * ak/doc-add-v-n-options (2015-01-09) 1 commit
28   (merged to 'next' on 2015-01-12 at 0888edf)
29  + Documentation: list long options for -v and -n
32 * ak/fewer-includes (2015-01-09) 2 commits
33   (merged to 'next' on 2015-01-12 at d425e96)
34  + cat-file: remove unused includes
35  + git.c: remove unnecessary #includes
38 * ak/show-branch-usage-string (2015-01-08) 1 commit
39   (merged to 'next' on 2015-01-12 at 3a0de03)
40  + show-branch: line-wrap show-branch usage
43 * aw/doc-smtp-ssl-cert-path (2015-01-07) 1 commit
44   (merged to 'next' on 2015-01-12 at 61d0b22)
45  + correct smtp-ssl-cert-path description
47  A long overdue documentation update to match an age-old code
48  update.
51 * jk/prune-packed-server-info (2015-01-06) 2 commits
52   (merged to 'next' on 2015-01-12 at 5e789e2)
53  + update-server-info: create info/* with mode 0666
54  + t1301: set umask in reflog sharedrepository=group test
56  Fix recent breakage in Git 2.2 that started creating info/refs and
57  objects/info/packs files with permission bits tighter than user's
58  umask.
61 * js/remote-add-with-insteadof (2014-12-23) 2 commits
62   (merged to 'next' on 2015-01-12 at ccff14f)
63  + Add a regression test for 'git remote add <existing> <same-url>'
64  + git remote: allow adding remotes agreeing with url.<...>.insteadOf
66  "git remote add $name $URL" is now allowed when "url.$URL.insteadOf"
67  is already defined.
70 * km/imap-send-libcurl-options (2015-01-06) 2 commits
71   (merged to 'next' on 2015-01-12 at 5bb8802)
72  + imap-send.c: set CURLOPT_USE_SSL to CURLUSESSL_TRY
73  + imap-send.c: support GIT_CURL_VERBOSE
75  Now imap-send learned to talk to the server using cURL library,
76  allow the same GIT_CURL_VERBOSE environment variable to control the
77  verbosity of the chattering.
80 * km/log-usage-string-i18n (2015-01-06) 1 commit
81   (merged to 'next' on 2015-01-12 at 437bf8a)
82  + log.c: fix translation markings
85 * mm/complete-rebase-autostash (2015-01-07) 1 commit
86   (merged to 'next' on 2015-01-12 at edcdead)
87  + git-completion: add --autostash for 'git rebase'
90 * po/doc-core-ignorestat (2015-01-12) 2 commits
91   (merged to 'next' on 2015-01-12 at c660a71)
92  + doc: core.ignoreStat update, and clarify the --assume-unchanged effect
93   (merged to 'next' on 2014-12-23 at d2b3e84)
94  + doc: core.ignoreStat clarify the --assume-unchanged effect
97 * rc/for-each-ref-tracking (2015-01-12) 1 commit
98   (merged to 'next' on 2015-01-12 at 94eef27)
99  + for-each-ref: always check stat_tracking_info()'s return value
102 * rh/autoconf-rhel3 (2015-01-09) 3 commits
103   (merged to 'next' on 2015-01-12 at 57f125c)
104  + configure.ac: check for HMAC_CTX_cleanup
105  + configure.ac: check for clock_gettime and CLOCK_MONOTONIC
106  + configure.ac: check 'tv_nsec' field in 'struct stat'
108  Build update for older RHEL.
111 * rh/hide-prompt-in-ignored-directory (2015-01-07) 2 commits
112   (merged to 'next' on 2015-01-12 at 9aed017)
113  + git-prompt.sh: allow to hide prompt for ignored pwd
114  + git-prompt.sh: if pc mode, immediately set PS1 to a plain prompt
117 * rh/test-color-avoid-terminfo-in-original-home (2015-01-07) 2 commits
118   (merged to 'next' on 2015-01-12 at eac0b93)
119  + test-lib.sh: do tests for color support after changing HOME
120  + test-lib: use 'test ...' instead of '[ ... ]'
122  We try to see if "tput" gives a useful result before switching TERM
123  to dumb and moving HOME to point to our fake location for stability
124  of the tests, and then use the command when coloring the output
125  from the tests, but there is no guarantee "tput" works after
126  switching HOME.
129 * sp/subtree-doc (2015-01-06) 1 commit
130   (merged to 'next' on 2015-01-12 at 7c488d6)
131  + subtree: fix AsciiDoc list item continuation
133 --------------------------------------------------
134 [New Topics]
136 * ah/usage-strings (2015-01-14) 1 commit
137  - standardize usage info string format
139  Will merge to and cook in 'next'.
142 * ak/cat-file-clean-up (2015-01-13) 1 commit
143  - cat-file: use "type" and "size" from outer scope
145  Will merge to 'next'.
148 * ak/stash-store-create-help (2015-01-13) 1 commit
149  - stash: show "create" and "store" subcommands in usage-help
151  Undecided.
154 * jk/blame-commit-label (2015-01-13) 5 commits
155  - blame.c: fix garbled error message
156  - use xstrdup_or_null to replace ternary conditionals
157  - builtin/commit.c: use xstrdup_or_null instead of envdup
158  - builtin/apply.c: use xstrdup_or_null instead of null_strdup
159  - git-compat-util: add xstrdup_or_null helper
161  Will merge to 'next'.
164 * jk/http-push-symref-fix (2015-01-14) 1 commit
165  - http-push: trim trailing newline from remote symref
167  Will merge to 'next'.
170 * js/t1050 (2015-01-14) 1 commit
171  - t1050-large: generate large files without dd
173  Will merge to 'next'.
175 --------------------------------------------------
176 [Stalled]
178 * jn/doc-api-errors (2014-12-04) 1 commit
179  - doc: document error handling functions and conventions
181  For discussion.
184 * ye/http-accept-language (2014-12-22) 1 commit
185  - http: Add Accept-Language header if possible
187  Expecting a reroll ($gmane/261810).
190 * jk/strbuf-doc-to-header (2014-12-12) 4 commits
191  - strbuf.h: reorganize api function grouping headers
192  - strbuf.h: format asciidoc code blocks as 4-space indent
193  - strbuf.h: drop asciidoc list formatting from API docs
194  - strbuf: migrate api-strbuf.txt documentation to strbuf.h
196  Resolve the "doc vs header" to favor the latter.
198  Expecting to be rerolled.
201 * pw/remote-set-url-fetch (2014-11-26) 1 commit
202  - remote: add --fetch and --both options to set-url
204  Expecting a reroll.
207 * ms/submodule-update-config-doc (2014-11-03) 1 commit
208  - submodule: clarify documentation for update subcommand
210  Needs a reroll ($gmane/259037).
213 * je/quiltimport-no-fuzz (2014-10-21) 2 commits
214  - git-quiltimport: flip the default not to allow fuzz
215  - git-quiltimport.sh: allow declining fuzz with --exact option
217  "quiltimport" drove "git apply" always with -C1 option to reduce
218  context of the patch in order to give more chance to somewhat stale
219  patches to apply.  Add an "--exact" option to disable, and also
220  "-C$n" option to customize this behaviour.  The top patch
221  optionally flips the default to "--exact".
223  Tired of waiting for an Ack; will discard.
226 * tr/remerge-diff (2014-11-10) 9 commits
227  - t4213: avoid "|" in sed regexp
228  - log --remerge-diff: show what the conflict resolution changed
229  - name-hash: allow dir hashing even when !ignore_case
230  - merge-recursive: allow storing conflict hunks in index
231  - merge_diff_mode: fold all merge diff variants into an enum
232  - combine-diff: do not pass revs->dense_combined_merges redundantly
233  - merge-recursive: -Xindex-only to leave worktree unchanged
234  - merge-recursive: internal flag to avoid touching the worktree
235  - merge-recursive: remove dead conditional in update_stages()
237  "log -p" output learns a new way to let users inspect a merge
238  commit by showing the differences between the automerged result
239  with conflicts the person who recorded the merge would have seen
240  and the final conflict resolution that was recorded in the merge.
242  Waiting for a reroll ($gmane/256591).
245 * hv/submodule-config (2014-11-11) 4 commits
246  - do not die on error of parsing fetchrecursesubmodules option
247  - use new config API for worktree configurations of submodules
248  - extract functions for submodule config set and lookup
249  - implement submodule config cache for lookup of submodule names
251  Kicked back to 'pu' per request ($gmane/255610).
254 * ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
255  - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
256  - git-add--interactive: Preserve diff heading when splitting hunks
258  Waiting for a reroll.
261 * jn/gitweb-utf8-in-links (2014-05-27) 1 commit
262  - gitweb: Harden UTF-8 handling in generated links
264  $gmane/250758?
267 * ss/userdiff-update-csharp-java (2014-06-02) 2 commits
268  - userdiff: support Java try keyword
269  - userdiff: support C# async methods and correct C# keywords
271  Reviews sent; waiting for a response.
274 * bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
275  - git-rebase: print name of rev when using shorthand
277  Teach "git rebase -" to report the concrete name of the branch
278  (i.e. the previous one).
280  But it stops short and does not do the same for "git rebase @{-1}".
281  Expecting a reroll.
284 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
285  - merge: drop unused arg from abort_commit method signature
286  - merge: make prepare_to_commit responsible for write_merge_state
287  - t7505: ensure cleanup after hook blocks merge
288  - t7505: add missing &&
290  Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
291  run during "git merge".  The log message stresses too much on one
292  hook, prepare-commit-msg, but it would equally apply to other hooks
293  like post-merge, I think.
295  Waiting for a reroll.
298 * jc/graph-post-root-gap (2013-12-30) 3 commits
299  - WIP: document what we want at the end
300  - graph: remove unused code a bit
301  - graph: stuff the current commit into graph->columns[]
303  This was primarily a RFH ($gmane/239580).
306 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
307  - perf-lib: add test_perf_cleanup target
308  - perf-lib: split starting the test from the execution
310  Add test_perf_cleanup shell function to the perf suite, that allows
311  the script writers to define a test with a clean-up action.
313  Will hold.
316 * jc/show-branch (2014-03-24) 5 commits
317  - show-branch: use commit slab to represent bitflags of arbitrary width
318  - show-branch.c: remove "all_mask"
319  - show-branch.c: abstract out "flags" operation
320  - show-branch.c: lift all_mask/all_revs to a global static
321  - show-branch.c: update comment style
323  Waiting for the final step to lift the hard-limit before sending it out.
325 --------------------------------------------------
326 [Cooking]
328 * lf/blame-commit-label (2015-01-12) 1 commit
329  . blame.c: fix garbled error message
331  Needs fixing.
334 * bc/http-fallback-to-password-after-krb-fails (2015-01-07) 1 commit
335   (merged to 'next' on 2015-01-12 at 4c67038)
336  + remote-curl: fall back to Basic auth if Negotiate fails
338  After attempting and failing a password-less authentication
339  (e.g. kerberos), libcURL refuses to fall back to password based
340  Basic authentication without a bit of help/encouragement.
342  Will cook in 'next'.
345 * bp/diff-relative-config (2015-01-07) 2 commits
346  - diff: teach diff.relative to give default to --relative=<value>
347  - diff: teach --no-relative to override earlier --relative
350 * dk/format-patch-ignore-diff-submodule (2015-01-07) 2 commits
351   (merged to 'next' on 2015-01-12 at 6b4605b)
352  + format-patch: ignore diff.submodule setting
353  + t4255: test am submodule with diff.submodule
355  Setting diff.submodule to 'log' made "git format-patch" produce
356  broken patches.
358  Will cook in 'next'.
361 * nd/attr-optim (2014-12-29) 3 commits
362  - attr: avoid heavy work when we know the specified attr is not defined
363  - attr: do not attempt to expand when we know it's not a macro
364  - attr.c: rename arg name attr_nr to avoid shadowing the global one
367 * cj/log-invert-grep (2015-01-13) 1 commit
368   (merged to 'next' on 2015-01-13 at c908e99)
369  + log: teach --invert-grep option
371  Will cook in 'next'.
374 * km/gettext-n (2015-01-12) 1 commit
375   (merged to 'next' on 2015-01-12 at 0cbbf4a)
376  + gettext.h: add parentheses around N_ expansion if supported
378  Will cook in 'next'.
381 * jn/rerere-fail-on-auto-update-failure (2015-01-08) 1 commit
382   (merged to 'next' on 2015-01-12 at 313c449)
383  + rerere: error out on autoupdate failure
385  "git rerere" (invoked internally from many mergy operations) did
386  not correctly signal errors when told to update the working tree
387  files and failed to do so for whatever reason.
389  Will cook in 'next'.
392 * sb/atomic-push (2015-01-14) 11 commits
393   (merged to 'next' on 2015-01-14 at 12c4e28)
394  + Document receive.advertiseatomic
395   (merged to 'next' on 2015-01-12 at 411c6a6)
396  + t5543-atomic-push.sh: add basic tests for atomic pushes
397  + push.c: add an --atomic argument
398  + send-pack.c: add --atomic command line argument
399  + send-pack: rename ref_update_to_be_sent to check_to_send_update
400  + receive-pack.c: negotiate atomic push support
401  + receive-pack.c: add execute_commands_atomic function
402  + receive-pack.c: move transaction handling in a central place
403  + receive-pack.c: move iterating over all commands outside execute_commands
404  + receive-pack.c: die instead of error in case of possible future bug
405  + receive-pack.c: shorten the execute_commands loop over all commands
406  (this branch uses mh/reflog-expire.)
408  "git push" has been taught a "--atomic" option that makes push to
409  update more than one ref an "all-or-none" affair.
411  Will cook in 'next'.
414 * mh/reflog-expire (2014-12-22) 24 commits
415   (merged to 'next' on 2015-01-12 at 12a7dff)
416  + refs.c: let fprintf handle the formatting
417  + refs.c: don't expose the internal struct ref_lock in the header file
418  + lock_any_ref_for_update(): inline function
419  + refs.c: remove unlock_ref/close_ref/commit_ref from the refs api
420  + reflog_expire(): new function in the reference API
421  + expire_reflog(): treat the policy callback data as opaque
422  + Move newlog and last_kept_sha1 to "struct expire_reflog_cb"
423  + expire_reflog(): move rewrite to flags argument
424  + expire_reflog(): move verbose to flags argument
425  + expire_reflog(): pass flags through to expire_reflog_ent()
426  + struct expire_reflog_cb: a new callback data type
427  + Rename expire_reflog_cb to expire_reflog_policy_cb
428  + expire_reflog(): move updateref to flags argument
429  + expire_reflog(): move dry_run to flags argument
430  + expire_reflog(): add a "flags" argument
431  + expire_reflog(): extract two policy-related functions
432  + Extract function should_expire_reflog_ent()
433  + expire_reflog(): use a lock_file for rewriting the reflog file
434  + expire_reflog(): return early if the reference has no reflog
435  + expire_reflog(): rename "ref" parameter to "refname"
436  + expire_reflog(): it's not an each_ref_fn anymore
437  + refs.c: add a function to append a reflog entry to a fd
438  + refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
439  + refs.c: make ref_transaction_create a wrapper for ref_transaction_update
440  (this branch is used by sb/atomic-push.)
442  Restructure "reflog expire" to fit the reflogs better with the
443  recently updated ref API.
445  Looked reasonable (except that some shortlog entries stood out like
446  a sore thumb).
448  Will cook in 'next'.
451 * jc/push-to-checkout (2015-01-08) 2 commits
452   (merged to 'next' on 2015-01-12 at e64df63)
453  + receive-pack: support push-to-checkout hook
454  + receive-pack: refactor updateInstead codepath
456  Extending the js/push-to-deploy topic, the behaviour of "git push"
457  when updating the working tree and the index with an update to the
458  branch that is checked out can be tweaked by push-to-checkout hook.
460  Will cook in 'next'.
463 * nd/list-files (2014-12-01) 19 commits
464  - list-files: -M aka diff-cached
465  - list-files -F: show submodules with the new indicator '&'
466  - list-files: add -F/--classify
467  - list-files: show directories as well as files
468  - list-files: do not show duplicate cached entries
469  - list-files: sort output and remove duplicates
470  - list-files: add -t back
471  - list-files: add -1 short for --no-column
472  - list-files: add -R/--recursive short for --max-depth=-1
473  - list-files: -u does not imply showing stages
474  - list-files: a user friendly version of ls-files and more
475  - ls-files: support --max-depth
476  - ls-files: add --column
477  - ls-files: add --color to highlight file names
478  - ls-files: buffer full item in strbuf before printing
479  - ls_colors.c: highlight submodules like directories
480  - ls_colors.c: add a function to color a file name
481  - ls_colors.c: parse color.ls.* from config file
482  - ls_colors.c: add $LS_COLORS parsing code
484  A new "git list-files" Porcelain command, "ls-files" with bells and
485  whistles.
487  Comments?
490 * nd/multiple-work-trees (2015-01-07) 37 commits
491  - git-checkout.txt: a note about multiple checkout support for submodules
492  - checkout: add --ignore-other-wortrees
493  - checkout: pass whole struct to parse_branchname_arg instead of individual flags
494  - git-common-dir: make "modules/" per-working-directory directory
495  - checkout: do not fail if target is an empty directory
496  - t2025: add a test to make sure grafts is working from a linked checkout
497  - checkout: don't require a work tree when checking out into a new one
498  - git_path(): keep "info/sparse-checkout" per work-tree
499  - count-objects: report unused files in $GIT_DIR/worktrees/...
500  - gc: support prune --worktrees
501  - gc: factor out gc.pruneexpire parsing code
502  - gc: style change -- no SP before closing parenthesis
503  - checkout: clean up half-prepared directories in --to mode
504  - checkout: reject if the branch is already checked out elsewhere
505  - prune: strategies for linked checkouts
506  - checkout: support checking out into a new working directory
507  - use new wrapper write_file() for simple file writing
508  - wrapper.c: wrapper to open a file, fprintf then close
509  - setup.c: support multi-checkout repo setup
510  - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
511  - setup.c: convert check_repository_format_gently to use strbuf
512  - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
513  - setup.c: convert is_git_directory() to use strbuf
514  - git-stash: avoid hardcoding $GIT_DIR/logs/....
515  - *.sh: avoid hardcoding $GIT_DIR/hooks/...
516  - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
517  - $GIT_COMMON_DIR: a new environment variable
518  - commit: use SEQ_DIR instead of hardcoding "sequencer"
519  - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
520  - reflog: avoid constructing .lock path with git_path
521  - *.sh: respect $GIT_INDEX_FILE
522  - git_path(): be aware of file relocation in $GIT_DIR
523  - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
524  - path.c: rename vsnpath() to do_git_path()
525  - git_snpath(): retire and replace with strbuf_git_path()
526  - path.c: make get_pathname() call sites return const char *
527  - path.c: make get_pathname() return strbuf instead of static buffer
529  A replacement for contrib/workdir/git-new-workdir that does not
530  rely on symbolic links and make sharing of objects and refs safer
531  by making the borrowee and borrowers aware of each other.
534 * nd/untracked-cache (2015-01-06) 24 commits
535  - fixup! untracked cache: load from UNTR index extension
536  - untracked cache: guard and disable on system changes
537  - mingw32: add uname()
538  - t7063: tests for untracked cache
539  - update-index: test the system before enabling untracked cache
540  - update-index: manually enable or disable untracked cache
541  - status: enable untracked cache
542  - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
543  - untracked cache: mark index dirty if untracked cache is updated
544  - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
545  - untracked cache: avoid racy timestamps
546  - read-cache.c: split racy stat test to a separate function
547  - untracked cache: invalidate at index addition or removal
548  - untracked cache: load from UNTR index extension
549  - untracked cache: save to an index extension
550  - ewah: add convenient wrapper ewah_serialize_strbuf()
551  - untracked cache: don't open non-existent .gitignore
552  - untracked cache: mark what dirs should be recursed/saved
553  - untracked cache: record/validate dir mtime and reuse cached output
554  - untracked cache: make a wrapper around {open,read,close}dir()
555  - untracked cache: invalidate dirs recursively if .gitignore changes
556  - untracked cache: initial untracked cache validation
557  - untracked cache: record .gitignore information and dir hierarchy
558  - dir.c: optionally compute sha-1 of a .gitignore file
560  Comments?
562 --------------------------------------------------
563 [Discarded]
565 * jc/push-cert-hmac-optim (2014-09-25) 2 commits
566  . receive-pack: truncate hmac early and convert only necessary bytes
567  . sha1_to_hex: split out "hex-format n bytes" helper and use it
569  This is "we could do this if we wanted to", not "we measured and it
570  improves performance critical codepath".
573 * mt/patch-id-stable (2014-06-10) 1 commit
574  . patch-id: change default to stable
576  Nobody seems to be jumping up & down requesting this last step,
577  which makes the result somewhat backward incompatible.
580 * sb/copy-fd-errno (2014-11-17) 1 commit
581  . copy.c: make copy_fd preserve meaningful errno
584 * cj/grep-none-match (2015-01-06) 1 commit
585  . git-log: added --none-match option
587  "git log --none-match --grep=WIP" will show only commits that are
588  not marked as WIP.
590  cj/log-invert-grep replaces this.