What's cooking (2015/01 #04)
[git.git] / whats-cooking.txt
blob80a53a3ff1a1f8c19618a1ca058b9a4c85666daa
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Jan 2015, #04; Wed, 21)
4 X-master-at: 627736ca799edacf13881da7e671964a0afb94b8
5 X-next-at: f40c73c9887141847a96136c6fdba64a4db3df37
7 What's cooking in git.git (Jan 2015, #04; Wed, 21)
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 First release candidate 2.3-rc1 has been tagged.  Please spend some
15 time to find and fix regressions, instead of spending all time
16 having fun with new and shiny toys ;-)
18 You can find the changes described here in the integration branches
19 of the repositories listed at
21     http://git-blame.blogspot.com/p/git-public-repositories.html
23 --------------------------------------------------
24 [Graduated to "master"]
26 * jk/http-push-symref-fix (2015-01-14) 1 commit
27  + http-push: trim trailing newline from remote symref
29  Using newer libCURL (or old one with security fixes) exposes this
30  old breakage.
32 --------------------------------------------------
33 [New Topics]
35 * ak/typofixes (2015-01-21) 2 commits
36  - t/lib-terminal.sh: fix typo
37  - pack-bitmap: fix typo
39  Will merge to 'next'.
42 * jc/apply-ws-fix-expands (2015-01-16) 4 commits
43  - apply: detect and mark whitespace errors in context lines when fixing
44  - apply: count the size of postimage correctly
45  - typofix
46  - apply: make update_pre_post_images() sanity check the given postlen
48  Needs rerolling and adding tests from Kyle J. McKay.
51 * jc/coding-guidelines (2015-01-15) 1 commit
52  - CodingGuidelines: clarify C #include rules
54  Will merge to 'next'.
57 * jc/pretty-format-doc (2015-01-15) 1 commit
58  - "log --pretty" documentation: do not forget "tformat:"
60  Will merge to 'next'.
63 * jc/unused-symbols (2015-01-15) 8 commits
64  - shallow.c: make check_shallow_file_for_update() static
65  - remote.c: make clear_cas_option() static
66  - urlmatch.c: make match_urls() static
67  - revision.c: make save_parents() and free_saved_parents() static
68  - line-log.c: make line_log_data_init() static
69  - pack-bitmap.c: make pack_bitmap_filename() static
70  - prompt.c: remove git_getpass() nobody uses
71  - http.c: make finish_active_slot() and handle_curl_result() static
73  Will merge to 'next'.
76 * jk/sanity (2015-01-16) 3 commits
77  - tests: SANITY requires POSIXPERM
78  - tests: correct misuses of POSIXPERM
79  - t/lib-httpd: switch SANITY check for NOT_ROOT
81  Saw Torsten's report on Cygwin, but I couldn't tell if it was about
82  existing breakages or new one introduced by this series.
85 * js/fsck-opt (2015-01-21) 19 commits
86  - fsck: support ignoring objects in `git fsck` via fsck.skiplist
87  - fsck: git receive-pack: support excluding objects from fsck'ing
88  - fsck: introduce `git fsck --quick`
89  - fsck: support demoting errors to warnings
90  - fsck: document the new receive.fsck.* options
91  - fsck: allow upgrading fsck warnings to errors
92  - fsck: optionally ignore specific fsck issues completely
93  - fsck: disallow demoting grave fsck errors to warnings
94  - fsck: add a simple test for receive.fsck.*
95  - fsck: make fsck_tag() warn-friendly
96  - fsck: handle multiple authors in commits specially
97  - fsck: make fsck_commit() warn-friendly
98  - fsck: make fsck_ident() warn-friendly
99  - fsck: report the ID of the error/warning
100  - fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
101  - fsck: offer a function to demote fsck errors to warnings
102  - fsck: provide a function to parse fsck message IDs
103  - fsck: introduce identifiers for fsck messages
104  - fsck: introduce fsck options
106  Need extra set of eyes to review this.
109 * ld/p4-exclude-in-sync (2015-01-20) 1 commit
110  - git-p4: support excluding paths on sync
112  Will merge to 'next'.
115 * tb/connect-ipv6-parse-fix (2015-01-20) 3 commits
116  - t5500: Show user name and host in diag-url
117  - t5601: Add more test cases for IPV6
118  - connect.c: Improve parsing of literal IPV6 addresses
120  Need extra set of eyes to review this.
123 * sb/atomic-push-fix (2015-01-21) 5 commits
124  - refs.c: enable large transactions
125  - refs.c: have a write_sha1_to_lock_file wrapper
126  - refs.c: remove lock_fd from struct ref_lock
127  - t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
128  - update-ref: test handling large transactions properly
129  (this branch uses mh/reflog-expire and sb/atomic-push.)
131  I had to wiggle this in and am not confident I did it correctly.
133  Need extra set of eyes to review this.
135 --------------------------------------------------
136 [Stalled]
138 * jn/doc-api-errors (2014-12-04) 1 commit
139  - doc: document error handling functions and conventions
141  For discussion.
144 * ye/http-accept-language (2015-01-21) 1 commit
145  . http: add Accept-Language header if possible
147  Not quite there yet.
150 * pw/remote-set-url-fetch (2014-11-26) 1 commit
151  - remote: add --fetch and --both options to set-url
153  Expecting a reroll.
156 * ms/submodule-update-config-doc (2014-11-03) 1 commit
157  - submodule: clarify documentation for update subcommand
159  Needs a reroll ($gmane/259037).
162 * je/quiltimport-no-fuzz (2014-10-21) 2 commits
163  - git-quiltimport: flip the default not to allow fuzz
164  - git-quiltimport.sh: allow declining fuzz with --exact option
166  "quiltimport" drove "git apply" always with -C1 option to reduce
167  context of the patch in order to give more chance to somewhat stale
168  patches to apply.  Add an "--exact" option to disable, and also
169  "-C$n" option to customize this behaviour.  The top patch
170  optionally flips the default to "--exact".
172  Tired of waiting for an Ack; will discard.
175 * tr/remerge-diff (2014-11-10) 9 commits
176  - t4213: avoid "|" in sed regexp
177  - log --remerge-diff: show what the conflict resolution changed
178  - name-hash: allow dir hashing even when !ignore_case
179  - merge-recursive: allow storing conflict hunks in index
180  - merge_diff_mode: fold all merge diff variants into an enum
181  - combine-diff: do not pass revs->dense_combined_merges redundantly
182  - merge-recursive: -Xindex-only to leave worktree unchanged
183  - merge-recursive: internal flag to avoid touching the worktree
184  - merge-recursive: remove dead conditional in update_stages()
186  "log -p" output learns a new way to let users inspect a merge
187  commit by showing the differences between the automerged result
188  with conflicts the person who recorded the merge would have seen
189  and the final conflict resolution that was recorded in the merge.
191  Waiting for a reroll ($gmane/256591).
194 * hv/submodule-config (2014-11-11) 4 commits
195  - do not die on error of parsing fetchrecursesubmodules option
196  - use new config API for worktree configurations of submodules
197  - extract functions for submodule config set and lookup
198  - implement submodule config cache for lookup of submodule names
200  Kicked back to 'pu' per request ($gmane/255610).
203 * ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
204  - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
205  - git-add--interactive: Preserve diff heading when splitting hunks
207  Waiting for a reroll.
210 * jn/gitweb-utf8-in-links (2014-05-27) 1 commit
211  - gitweb: Harden UTF-8 handling in generated links
213  $gmane/250758?
216 * ss/userdiff-update-csharp-java (2014-06-02) 2 commits
217  - userdiff: support Java try keyword
218  - userdiff: support C# async methods and correct C# keywords
220  Reviews sent; waiting for a response.
223 * bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
224  - git-rebase: print name of rev when using shorthand
226  Teach "git rebase -" to report the concrete name of the branch
227  (i.e. the previous one).
229  But it stops short and does not do the same for "git rebase @{-1}".
230  Expecting a reroll.
233 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
234  - merge: drop unused arg from abort_commit method signature
235  - merge: make prepare_to_commit responsible for write_merge_state
236  - t7505: ensure cleanup after hook blocks merge
237  - t7505: add missing &&
239  Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
240  run during "git merge".  The log message stresses too much on one
241  hook, prepare-commit-msg, but it would equally apply to other hooks
242  like post-merge, I think.
244  Waiting for a reroll.
247 * jc/graph-post-root-gap (2013-12-30) 3 commits
248  - WIP: document what we want at the end
249  - graph: remove unused code a bit
250  - graph: stuff the current commit into graph->columns[]
252  This was primarily a RFH ($gmane/239580).
255 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
256  - perf-lib: add test_perf_cleanup target
257  - perf-lib: split starting the test from the execution
259  Add test_perf_cleanup shell function to the perf suite, that allows
260  the script writers to define a test with a clean-up action.
262  Will hold.
265 * jc/show-branch (2014-03-24) 5 commits
266  - show-branch: use commit slab to represent bitflags of arbitrary width
267  - show-branch.c: remove "all_mask"
268  - show-branch.c: abstract out "flags" operation
269  - show-branch.c: lift all_mask/all_revs to a global static
270  - show-branch.c: update comment style
272  Waiting for the final step to lift the hard-limit before sending it out.
274 --------------------------------------------------
275 [Cooking]
277 * jk/strbuf-doc-to-header (2015-01-16) 7 commits
278  - strbuf.h: group documentation for trim functions
279  - strbuf.h: drop boilerplate descriptions of strbuf_split_*
280  - strbuf.h: reorganize api function grouping headers
281  - strbuf.h: format asciidoc code blocks as 4-space indent
282  - strbuf.h: drop asciidoc list formatting from API docs
283  - strbuf.h: unify documentation comments beginnings
284  - strbuf.h: integrate api-strbuf.txt documentation
286  Resolve the "doc vs header" to favor the latter.
289 * ah/usage-strings (2015-01-14) 1 commit
290  - standardize usage info string format
292  Will merge to and cook in 'next'.
295 * ak/cat-file-clean-up (2015-01-13) 1 commit
296   (merged to 'next' on 2015-01-15 at bb1a4b3)
297  + cat-file: use "type" and "size" from outer scope
299  Will merge to 'master'.
302 * ak/stash-store-create-help (2015-01-13) 1 commit
303  - stash: show "create" and "store" subcommands in usage-help
305  Undecided.
308 * jk/blame-commit-label (2015-01-13) 5 commits
309   (merged to 'next' on 2015-01-15 at 1b32e21)
310  + blame.c: fix garbled error message
311  + use xstrdup_or_null to replace ternary conditionals
312  + builtin/commit.c: use xstrdup_or_null instead of envdup
313  + builtin/apply.c: use xstrdup_or_null instead of null_strdup
314  + git-compat-util: add xstrdup_or_null helper
316  Will cook in 'next'.
319 * js/t1050 (2015-01-14) 1 commit
320   (merged to 'next' on 2015-01-15 at f010b00)
321  + t1050-large: generate large files without dd
323  Will merge to 'master'.
326 * bc/http-fallback-to-password-after-krb-fails (2015-01-07) 1 commit
327   (merged to 'next' on 2015-01-12 at 4c67038)
328  + remote-curl: fall back to Basic auth if Negotiate fails
330  After attempting and failing a password-less authentication
331  (e.g. kerberos), libcURL refuses to fall back to password based
332  Basic authentication without a bit of help/encouragement.
334  Will cook in 'next'.
337 * bp/diff-relative-config (2015-01-07) 2 commits
338  - diff: teach diff.relative to give default to --relative=<value>
339  - diff: teach --no-relative to override earlier --relative
342 * dk/format-patch-ignore-diff-submodule (2015-01-07) 2 commits
343   (merged to 'next' on 2015-01-12 at 6b4605b)
344  + format-patch: ignore diff.submodule setting
345  + t4255: test am submodule with diff.submodule
347  Setting diff.submodule to 'log' made "git format-patch" produce
348  broken patches.
350  Will cook in 'next'.
353 * nd/attr-optim (2014-12-29) 3 commits
354  - attr: avoid heavy work when we know the specified attr is not defined
355  - attr: do not attempt to expand when we know it's not a macro
356  - attr.c: rename arg name attr_nr to avoid shadowing the global one
359 * cj/log-invert-grep (2015-01-13) 1 commit
360   (merged to 'next' on 2015-01-13 at c908e99)
361  + log: teach --invert-grep option
363  Will cook in 'next'.
366 * km/gettext-n (2015-01-12) 1 commit
367   (merged to 'next' on 2015-01-12 at 0cbbf4a)
368  + gettext.h: add parentheses around N_ expansion if supported
370  Will cook in 'next'.
373 * jn/rerere-fail-on-auto-update-failure (2015-01-08) 1 commit
374   (merged to 'next' on 2015-01-12 at 313c449)
375  + rerere: error out on autoupdate failure
377  "git rerere" (invoked internally from many mergy operations) did
378  not correctly signal errors when told to update the working tree
379  files and failed to do so for whatever reason.
381  Will cook in 'next'.
384 * sb/atomic-push (2015-01-14) 11 commits
385   (merged to 'next' on 2015-01-14 at 12c4e28)
386  + Document receive.advertiseatomic
387   (merged to 'next' on 2015-01-12 at 411c6a6)
388  + t5543-atomic-push.sh: add basic tests for atomic pushes
389  + push.c: add an --atomic argument
390  + send-pack.c: add --atomic command line argument
391  + send-pack: rename ref_update_to_be_sent to check_to_send_update
392  + receive-pack.c: negotiate atomic push support
393  + receive-pack.c: add execute_commands_atomic function
394  + receive-pack.c: move transaction handling in a central place
395  + receive-pack.c: move iterating over all commands outside execute_commands
396  + receive-pack.c: die instead of error in case of possible future bug
397  + receive-pack.c: shorten the execute_commands loop over all commands
398  (this branch is used by sb/atomic-push-fix; uses mh/reflog-expire.)
400  "git push" has been taught a "--atomic" option that makes push to
401  update more than one ref an "all-or-none" affair.
403  Will cook in 'next'.
406 * mh/reflog-expire (2014-12-22) 24 commits
407   (merged to 'next' on 2015-01-12 at 12a7dff)
408  + refs.c: let fprintf handle the formatting
409  + refs.c: don't expose the internal struct ref_lock in the header file
410  + lock_any_ref_for_update(): inline function
411  + refs.c: remove unlock_ref/close_ref/commit_ref from the refs api
412  + reflog_expire(): new function in the reference API
413  + expire_reflog(): treat the policy callback data as opaque
414  + Move newlog and last_kept_sha1 to "struct expire_reflog_cb"
415  + expire_reflog(): move rewrite to flags argument
416  + expire_reflog(): move verbose to flags argument
417  + expire_reflog(): pass flags through to expire_reflog_ent()
418  + struct expire_reflog_cb: a new callback data type
419  + Rename expire_reflog_cb to expire_reflog_policy_cb
420  + expire_reflog(): move updateref to flags argument
421  + expire_reflog(): move dry_run to flags argument
422  + expire_reflog(): add a "flags" argument
423  + expire_reflog(): extract two policy-related functions
424  + Extract function should_expire_reflog_ent()
425  + expire_reflog(): use a lock_file for rewriting the reflog file
426  + expire_reflog(): return early if the reference has no reflog
427  + expire_reflog(): rename "ref" parameter to "refname"
428  + expire_reflog(): it's not an each_ref_fn anymore
429  + refs.c: add a function to append a reflog entry to a fd
430  + refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
431  + refs.c: make ref_transaction_create a wrapper for ref_transaction_update
432  (this branch is used by sb/atomic-push and sb/atomic-push-fix.)
434  Restructure "reflog expire" to fit the reflogs better with the
435  recently updated ref API.
437  Looked reasonable (except that some shortlog entries stood out like
438  a sore thumb).
440  Will cook in 'next'.
443 * jc/push-to-checkout (2015-01-08) 2 commits
444   (merged to 'next' on 2015-01-12 at e64df63)
445  + receive-pack: support push-to-checkout hook
446  + receive-pack: refactor updateInstead codepath
448  Extending the js/push-to-deploy topic, the behaviour of "git push"
449  when updating the working tree and the index with an update to the
450  branch that is checked out can be tweaked by push-to-checkout hook.
452  Will cook in 'next'.
455 * nd/list-files (2014-12-01) 19 commits
456  - list-files: -M aka diff-cached
457  - list-files -F: show submodules with the new indicator '&'
458  - list-files: add -F/--classify
459  - list-files: show directories as well as files
460  - list-files: do not show duplicate cached entries
461  - list-files: sort output and remove duplicates
462  - list-files: add -t back
463  - list-files: add -1 short for --no-column
464  - list-files: add -R/--recursive short for --max-depth=-1
465  - list-files: -u does not imply showing stages
466  - list-files: a user friendly version of ls-files and more
467  - ls-files: support --max-depth
468  - ls-files: add --column
469  - ls-files: add --color to highlight file names
470  - ls-files: buffer full item in strbuf before printing
471  - ls_colors.c: highlight submodules like directories
472  - ls_colors.c: add a function to color a file name
473  - ls_colors.c: parse color.ls.* from config file
474  - ls_colors.c: add $LS_COLORS parsing code
476  A new "git list-files" Porcelain command, "ls-files" with bells and
477  whistles.
479  Comments?
482 * nd/multiple-work-trees (2015-01-07) 37 commits
483  - git-checkout.txt: a note about multiple checkout support for submodules
484  - checkout: add --ignore-other-wortrees
485  - checkout: pass whole struct to parse_branchname_arg instead of individual flags
486  - git-common-dir: make "modules/" per-working-directory directory
487  - checkout: do not fail if target is an empty directory
488  - t2025: add a test to make sure grafts is working from a linked checkout
489  - checkout: don't require a work tree when checking out into a new one
490  - git_path(): keep "info/sparse-checkout" per work-tree
491  - count-objects: report unused files in $GIT_DIR/worktrees/...
492  - gc: support prune --worktrees
493  - gc: factor out gc.pruneexpire parsing code
494  - gc: style change -- no SP before closing parenthesis
495  - checkout: clean up half-prepared directories in --to mode
496  - checkout: reject if the branch is already checked out elsewhere
497  - prune: strategies for linked checkouts
498  - checkout: support checking out into a new working directory
499  - use new wrapper write_file() for simple file writing
500  - wrapper.c: wrapper to open a file, fprintf then close
501  - setup.c: support multi-checkout repo setup
502  - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
503  - setup.c: convert check_repository_format_gently to use strbuf
504  - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
505  - setup.c: convert is_git_directory() to use strbuf
506  - git-stash: avoid hardcoding $GIT_DIR/logs/....
507  - *.sh: avoid hardcoding $GIT_DIR/hooks/...
508  - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
509  - $GIT_COMMON_DIR: a new environment variable
510  - commit: use SEQ_DIR instead of hardcoding "sequencer"
511  - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
512  - reflog: avoid constructing .lock path with git_path
513  - *.sh: respect $GIT_INDEX_FILE
514  - git_path(): be aware of file relocation in $GIT_DIR
515  - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
516  - path.c: rename vsnpath() to do_git_path()
517  - git_snpath(): retire and replace with strbuf_git_path()
518  - path.c: make get_pathname() call sites return const char *
519  - path.c: make get_pathname() return strbuf instead of static buffer
521  A replacement for contrib/workdir/git-new-workdir that does not
522  rely on symbolic links and make sharing of objects and refs safer
523  by making the borrowee and borrowers aware of each other.
526 * nd/untracked-cache (2015-01-21) 24 commits
527  - git-status.txt: advertisement for untracked cache
528  - untracked cache: guard and disable on system changes
529  - mingw32: add uname()
530  - t7063: tests for untracked cache
531  - update-index: test the system before enabling untracked cache
532  - update-index: manually enable or disable untracked cache
533  - status: enable untracked cache
534  - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
535  - untracked cache: mark index dirty if untracked cache is updated
536  - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
537  - untracked cache: avoid racy timestamps
538  - read-cache.c: split racy stat test to a separate function
539  - untracked cache: invalidate at index addition or removal
540  - untracked cache: load from UNTR index extension
541  - untracked cache: save to an index extension
542  - ewah: add convenient wrapper ewah_serialize_strbuf()
543  - untracked cache: don't open non-existent .gitignore
544  - untracked cache: mark what dirs should be recursed/saved
545  - untracked cache: record/validate dir mtime and reuse cached output
546  - untracked cache: make a wrapper around {open,read,close}dir()
547  - untracked cache: invalidate dirs recursively if .gitignore changes
548  - untracked cache: initial untracked cache validation
549  - untracked cache: record .gitignore information and dir hierarchy
550  - dir.c: optionally compute sha-1 of a .gitignore file
552  Need extra set of eyes to review this.
554 --------------------------------------------------
555 [Discarded]
557 * jc/push-cert-hmac-optim (2014-09-25) 2 commits
558  . receive-pack: truncate hmac early and convert only necessary bytes
559  . sha1_to_hex: split out "hex-format n bytes" helper and use it
561  This is "we could do this if we wanted to", not "we measured and it
562  improves performance critical codepath".
565 * mt/patch-id-stable (2014-06-10) 1 commit
566  . patch-id: change default to stable
568  Nobody seems to be jumping up & down requesting this last step,
569  which makes the result somewhat backward incompatible.
572 * sb/copy-fd-errno (2014-11-17) 1 commit
573  . copy.c: make copy_fd preserve meaningful errno
576 * cj/grep-none-match (2015-01-06) 1 commit
577  . git-log: added --none-match option
579  "git log --none-match --grep=WIP" will show only commits that are
580  not marked as WIP.
582  cj/log-invert-grep replaces this.
585 * lf/blame-commit-label (2015-01-12) 1 commit
586  . blame.c: fix garbled error message
588  jk/blame-commit-label replaces this.