What's cooking (2015/03 #01)
[git.git] / whats-cooking.txt
blob767abe57508fc1cf265e86e5a631baedb7fd210f
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Mar 2015, #01; Mon, 2)
4 X-master-at: 7f4ba4b6e3ba7075ca6b379ba23fd3088cbe69a8
5 X-next-at: 993ae8bdc3df206f62a424eb695a49f1ba8fa118
7 What's cooking in git.git (Mar 2015, #01; Mon, 2)
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 Fifth batch of topics have been merged to 'master', including both
15 fixes and enhancements. First maintenance release for v2.3 was cut
16 with many fixes that have already been merged to 'master'.
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 [New Topics]
26 * ew/svn-fixes (2015-02-26) 2 commits
27  - Merge branch 'svn-maint-fixes' into svn-fixes
28  - git-svn: lazy load some modules
29  (this branch uses ew/svn-maint-fixes.)
31  Will merge to 'next'.
34 * ew/svn-maint-fixes (2015-02-26) 2 commits
35  - Git::SVN::*: avoid premature FileHandle closure
36  - git-svn: fix localtime=true on non-glibc environments
37  (this branch is used by ew/svn-fixes.)
39  Will merge to 'next' and soon to 'master'.
42 * mr/doc-clean-f-f (2015-02-26) 1 commit
43  - Documentation/git-clean.txt: document that -f may need to be given twice
45  Will merge to 'next'.
48 * ye/http-accept-language (2015-02-26) 1 commit
49  - gettext.c: move get_preferred_languages() from http.c
51  Compilation fix for a recent topic in 'master'.
53  Will merge to 'next'.
56 * jk/diffcore-rename-duplicate (2015-02-27) 2 commits
57  - diffcore-rename: avoid processing duplicate destinations
58  - diffcore-rename: split locate_rename_dst into two functions
60  A corrupt input to "git diff -M" can cause us to segfault.
62  Will merge to 'next'.
65 * nd/grep-exclude-standard-help-fix (2015-02-27) 1 commit
66  - grep: correct help string for --exclude-standard
68  Will merge to 'next'.
71 * nd/versioncmp-prereleases (2015-02-27) 1 commit
72  - versionsort: support reorder prerelease suffixes
74  The versionsort.prerelease configuration variable can be used to
75  specify that v1.0-pre1 comes before v1.0.
77  Will merge to 'next'.
80 * ja/clean-confirm-i18n (2015-03-02) 1 commit
81  - Add hint interactive cleaning
83  The prompt string "remove?" used when "git clean -i" asks the user
84  if a path should be removed was localizable, but the code always
85  expects a substring of "yes" to tell it to go ahead.  Always show
86  [y/N] as part of this prompt to hint that the answer is not (yet)
87  localized.
89  Will merge to 'next'.
92 * mk/diff-shortstat-dirstat-fix (2015-03-02) 1 commit
93  - diff --shortstat --dirstat: remove duplicate output
95  Will merge to 'next'.
97 --------------------------------------------------
98 [Stalled]
100 * jk/push-config (2015-02-17) 4 commits
101  - [NEEDSACK] push: allow --follow-tags to be set by config push.followTags
102  - cmd_push: pass "flags" pointer to config callback
103  - cmd_push: set "atomic" bit directly
104  - git_push_config: drop cargo-culted wt_status pointer
106  Waiting for Ack and/or update for the tip one from Dave Olszewski
107  ($gmane/263880, $gmane/263991).
110 * nd/untracked-cache (2015-02-09) 24 commits
111  - git-status.txt: advertisement for untracked cache
112  - untracked cache: guard and disable on system changes
113  - mingw32: add uname()
114  - t7063: tests for untracked cache
115  - update-index: test the system before enabling untracked cache
116  - update-index: manually enable or disable untracked cache
117  - status: enable untracked cache
118  - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
119  - untracked cache: mark index dirty if untracked cache is updated
120  - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
121  - untracked cache: avoid racy timestamps
122  - read-cache.c: split racy stat test to a separate function
123  - untracked cache: invalidate at index addition or removal
124  - untracked cache: load from UNTR index extension
125  - untracked cache: save to an index extension
126  - ewah: add convenient wrapper ewah_serialize_strbuf()
127  - untracked cache: don't open non-existent .gitignore
128  - untracked cache: mark what dirs should be recursed/saved
129  - untracked cache: record/validate dir mtime and reuse cached output
130  - untracked cache: make a wrapper around {open,read,close}dir()
131  - untracked cache: invalidate dirs recursively if .gitignore changes
132  - untracked cache: initial untracked cache validation
133  - untracked cache: record .gitignore information and dir hierarchy
134  - dir.c: optionally compute sha-1 of a .gitignore file
136  Need extra sets of eyes to review this.
139 * ak/stash-store-create-help (2015-01-13) 1 commit
140  - stash: show "create" and "store" subcommands in usage-help
142  Will discard.
145 * bp/diff-relative-config (2015-01-07) 2 commits
146  - diff: teach diff.relative to give default to --relative=<value>
147  - diff: teach --no-relative to override earlier --relative
149  No comments?  No interests?
152 * jc/diff-b-m (2015-02-23) 5 commits
153  . WIPWIP
154  . WIP: diff-b-m
155  - diffcore-rename: allow easier debugging
156  - diffcore-rename.c: add locate_rename_src()
157  - diffcore-break: allow debugging
158  (this branch uses jc/diff-test-updates.)
160  "git diff -B -M" produced incorrect patch when the postimage of a
161  completely rewritten file is similar to the preimage of a removed
162  file; such a resulting file must not be expressed as a rename from
163  other place.
165  The fix in this patch is broken, unfortunately.
168 * pw/remote-set-url-fetch (2014-11-26) 1 commit
169  - remote: add --fetch and --both options to set-url
171  Expecting a reroll.
174 * je/quiltimport-no-fuzz (2014-10-21) 2 commits
175  - git-quiltimport: flip the default not to allow fuzz
176  - git-quiltimport.sh: allow declining fuzz with --exact option
178  "quiltimport" drove "git apply" always with -C1 option to reduce
179  context of the patch in order to give more chance to somewhat stale
180  patches to apply.  Add an "--exact" option to disable, and also
181  "-C$n" option to customize this behaviour.  The top patch
182  optionally flips the default to "--exact".
184  Tired of waiting for an Ack
185  Will discard.
188 * tr/remerge-diff (2014-11-10) 9 commits
189  - t4213: avoid "|" in sed regexp
190  - log --remerge-diff: show what the conflict resolution changed
191  - name-hash: allow dir hashing even when !ignore_case
192  - merge-recursive: allow storing conflict hunks in index
193  - merge_diff_mode: fold all merge diff variants into an enum
194  - combine-diff: do not pass revs->dense_combined_merges redundantly
195  - merge-recursive: -Xindex-only to leave worktree unchanged
196  - merge-recursive: internal flag to avoid touching the worktree
197  - merge-recursive: remove dead conditional in update_stages()
199  "log -p" output learns a new way to let users inspect a merge
200  commit by showing the differences between the automerged result
201  with conflicts the person who recorded the merge would have seen
202  and the final conflict resolution that was recorded in the merge.
204  Waiting for a reroll ($gmane/256591).
207 * hv/submodule-config (2014-11-11) 4 commits
208  - do not die on error of parsing fetchrecursesubmodules option
209  - use new config API for worktree configurations of submodules
210  - extract functions for submodule config set and lookup
211  - implement submodule config cache for lookup of submodule names
213  Kicked back to 'pu' per request ($gmane/255610).
216 * ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
217  - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
218  - git-add--interactive: Preserve diff heading when splitting hunks
220  Waiting for a reroll.
223 * jn/gitweb-utf8-in-links (2014-05-27) 1 commit
224  - gitweb: Harden UTF-8 handling in generated links
226  $gmane/250758?
229 * ss/userdiff-update-csharp-java (2014-06-02) 2 commits
230  - userdiff: support Java try keyword
231  - userdiff: support C# async methods and correct C# keywords
233  Reviews sent; waiting for a response.
236 * bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
237  - git-rebase: print name of rev when using shorthand
239  Teach "git rebase -" to report the concrete name of the branch
240  (i.e. the previous one).
242  But it stops short and does not do the same for "git rebase @{-1}".
243  Expecting a reroll.
246 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
247  - merge: drop unused arg from abort_commit method signature
248  - merge: make prepare_to_commit responsible for write_merge_state
249  - t7505: ensure cleanup after hook blocks merge
250  - t7505: add missing &&
252  Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
253  run during "git merge".  The log message stresses too much on one
254  hook, prepare-commit-msg, but it would equally apply to other hooks
255  like post-merge, I think.
257  Waiting for a reroll.
260 * jc/graph-post-root-gap (2013-12-30) 3 commits
261  - WIP: document what we want at the end
262  - graph: remove unused code a bit
263  - graph: stuff the current commit into graph->columns[]
265  This was primarily a RFH ($gmane/239580).
268 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
269  - perf-lib: add test_perf_cleanup target
270  - perf-lib: split starting the test from the execution
272  Add test_perf_cleanup shell function to the perf suite, that allows
273  the script writers to define a test with a clean-up action.
275  Will hold.
278 * jc/show-branch (2014-03-24) 5 commits
279  - show-branch: use commit slab to represent bitflags of arbitrary width
280  - show-branch.c: remove "all_mask"
281  - show-branch.c: abstract out "flags" operation
282  - show-branch.c: lift all_mask/all_revs to a global static
283  - show-branch.c: update comment style
285  Waiting for the final step to lift the hard-limit before sending it out.
287 --------------------------------------------------
288 [Cooking]
290 * nd/slim-index-pack-memory-usage (2015-02-27) 2 commits
291  - index-pack: kill union delta_base to save memory
292  - index-pack: reduce object_entry size to save memory
294  Memory usage of "git index-pack" has been trimmed by tens of
295  per-cent.
298 * mg/detached-head-report (2015-02-23) 1 commit
299  - branch: name detached HEAD analogous to status
301  "git branch" on a detached HEAD always said "(detached from xyz)",
302  even when "git status" would report "detached at xyz".  The HEAD is
303  actually at xyz and haven't been moved since it was detached in
304  such a case, but the user cannot read what the current value of
305  HEAD is when "detached from" is used.
307  The goal is sound.  May want to share code between branch and
308  status in a reroll?  Are there other commands that give the same
309  information that share the code, too?
312 * mg/sequencer-commit-messages-always-verbatim (2015-02-23) 1 commit
313  - sequencer: preserve commit messages
315  Always replay the original commit message verbatim, regardless of
316  the commit.cleanup configuration settings by the user.
318  Is this a good idea?
321 * rj/no-xopen-source-for-cygwin (2015-02-22) 1 commit
322   (merged to 'next' on 2015-02-23 at 323ac75)
323  + git-compat-util.h: remove redundant code
325  Will merge to 'master'.
328 * nd/list-files (2015-02-09) 21 commits
329  - t3080: tests for git-list-files
330  - list-files: -M aka diff-cached
331  - list-files -F: show submodules with the new indicator '&'
332  - list-files: add -F/--classify
333  - list-files: show directories as well as files
334  - list-files: do not show duplicate cached entries
335  - list-files: sort output and remove duplicates
336  - list-files: add -t back
337  - list-files: add -1 short for --no-column
338  - list-files: add -R/--recursive short for --max-depth=-1
339  - list-files: -u does not imply showing stages
340  - list-files: make alias 'ls' default to 'list-files'
341  - list-files: a user friendly version of ls-files and more
342  - ls-files: support --max-depth
343  - ls-files: add --column
344  - ls-files: add --color to highlight file names
345  - ls-files: buffer full item in strbuf before printing
346  - ls_colors.c: highlight submodules like directories
347  - ls_colors.c: add a function to color a file name
348  - ls_colors.c: parse color.ls.* from config file
349  - ls_colors.c: add $LS_COLORS parsing code
351  A new "git list-files" Porcelain command, "ls-files" with bells and
352  whistles.
355 * mm/am-c-doc (2015-02-20) 2 commits
356   (merged to 'next' on 2015-02-23 at 1cd9b0f)
357  + Documentation/git-am.txt: mention mailinfo.scissors config variable
358  + Documentation/config.txt: document mailinfo.scissors
360  The configuration variable 'mailinfo.scissors' was hard to
361  discover in the documentation.
363  Will merge to 'master'.
366 * rs/simple-cleanups (2015-02-22) 4 commits
367   (merged to 'next' on 2015-02-23 at a89f034)
368  + sha1_name: use strlcpy() to copy strings
369  + pretty: use starts_with() to check for a prefix
370  + for-each-ref: use skip_prefix() to avoid duplicate string comparison
371  + connect: use strcmp() for string comparison
373  Will merge to 'master'.
376 * tb/connect-ipv6-parse-fix (2015-02-22) 3 commits
377   (merged to 'next' on 2015-02-24 at 6658564)
378  + t5500: show user name and host in diag-url
379  + t5601: add more test cases for IPV6
380  + connect.c: allow ssh://user@[2001:db8::1]/repo.git
382  We did not parse username followed by literal IPv6 address in SSH
383  transport URLs, e.g. ssh://user@[2001:db8::1]:22/repo.git
384  correctly.
386  Will merge to 'master'.
389 * jc/decorate-leaky-separator-color (2015-02-20) 2 commits
390  - config.txt: spell out how certain typed values are written
391  - log --decorate: do not leak "commit" color into the next item
393  "git log --decorate" did not reset colors correctly around the
394  branch names.
396  Waiting for discussion on the tip one.
399 * ms/submodule-update-config-doc (2015-03-02) 1 commit
400  - submodule: improve documentation of update subcommand
402  The interaction between "git submodule update" and the
403  submodule.*.update configuration was not clearly documented.
405  Will merge to 'next'.
408 * jc/diff-test-updates (2015-02-23) 7 commits
409   (merged to 'next' on 2015-02-23 at 9e863a7)
410  + test_ln_s_add: refresh stat info of fake symbolic links
411   (merged to 'next' on 2015-02-18 at f152c9f)
412  + t4008: modernise style
413  + t/diff-lib: check exact object names in compare_diff_raw
414  + tests: do not borrow from COPYING and README from the real source
415  + t4010: correct expected object names
416  + t9300: correct expected object names
417  + t4008: correct stale comments
418  (this branch is used by jc/diff-b-m.)
420  Test clean-up.
422  Will merge to 'master'.
425 * km/send-email-getopt-long-workarounds (2015-02-16) 1 commit
426   (merged to 'next' on 2015-02-18 at 84c1597)
427  + git-send-email.perl: support no- prefix with older GetOptions
429  Even though we officially haven't dropped Perl 5.8 support, the
430  Getopt::Long package that came with it does not support "--no-"
431  prefix to negate a boolean option; manually add support to help
432  people with older Getopt::Long package.
434  Will merge to 'master'.
437 * jk/daemon-interpolate (2015-02-17) 3 commits
438   (merged to 'next' on 2015-02-20 at 21118a7)
439  + daemon: sanitize incoming virtual hostname
440  + t5570: test git-daemon's --interpolated-path option
441  + git_connect: let user override virtual-host we send to daemon
443  The "interpolated-path" option of "git daemon" inserted any string
444  client declared on the "host=" capability request without checking.
445  Sanitize and limit %H and %CH to a saner and a valid DNS name.
447  Will merge to 'master'.
450 * rs/daemon-interpolate (2015-02-17) 2 commits
451   (merged to 'next' on 2015-02-18 at c0f5750)
452  + daemon: use callback to build interpolated path
453  + daemon: look up client-supplied hostname lazily
455  "git daemon" looked up the hostname even when "%CH" and "%IP"
456  interpolations are not requested, which was unnecessary.
458  Will merge to 'master'.
461 * mh/expire-updateref-fixes (2015-03-02) 9 commits
462  - reflog_expire(): never update a reference to null_sha1
463  - reflog_expire(): ignore --updateref for symbolic references
464  - reflog: improve and update documentation
465  - struct ref_lock: delete the force_write member
466  - lock_ref_sha1_basic(): do not set force_write for missing references
467  - write_ref_sha1(): move write elision test to callers
468  - write_ref_sha1(): remove check for lock == NULL
469  - Merge branch 'sb/atomic-push' into mh/ref-trans-value-check
470  - Merge branch 'mh/reflog-expire' into mh/ref-trans-value-check
472  Will wait for a short while before merging to 'next'.
473  ($gmane/264586).
476 * mh/refs-have-new (2015-02-17) 13 commits
477   (merged to 'next' on 2015-02-23 at b8929db)
478  + refs.h: remove duplication in function docstrings
479  + update_ref(): improve documentation
480  + ref_transaction_verify(): new function to check a reference's value
481  + ref_transaction_delete(): check that old_sha1 is not null_sha1
482  + ref_transaction_create(): check that new_sha1 is valid
483  + commit: avoid race when creating orphan commits
484  + commit: add tests of commit races
485  + ref_transaction_delete(): remove "have_old" parameter
486  + ref_transaction_update(): remove "have_old" parameter
487  + struct ref_update: move "have_old" into "flags"
488  + refs.c: change some "flags" to "unsigned int"
489  + refs: remove the gap in the REF_* constant values
490  + refs: move REF_DELETING to refs.c
492  Simplify the ref transaction API around how "the ref should be
493  pointing at this object" is specified.
495  Will merge to 'master'.
498 * jc/apply-beyond-symlink (2015-02-10) 4 commits
499   (merged to 'next' on 2015-02-18 at 4109de1)
500  + apply: do not touch a file beyond a symbolic link
501  + apply: do not read from beyond a symbolic link
502  + apply: do not read from the filesystem under --index
503  + apply: reject input that touches outside the working area
505  "git apply" was not very careful about reading from, removing,
506  updating and creating paths outside the working tree (under
507  --index/--cached) or the current directory (when used as a
508  replacement for GNU patch).
510  Will merge to 'master'.
513 * jc/apply-ws-fix-expands-report (2015-01-22) 1 commit
514   (merged to 'next' on 2015-02-18 at b571668)
515  + apply: detect and mark whitespace errors in context lines when fixing
517  "git apply --whitespace=fix" fixed whitespace errors in the common
518  context lines but did so without reporting.
520  Will merge to 'master'.
523 * js/fsck-opt (2015-01-21) 19 commits
524  - fsck: support ignoring objects in `git fsck` via fsck.skiplist
525  - fsck: git receive-pack: support excluding objects from fsck'ing
526  - fsck: introduce `git fsck --quick`
527  - fsck: support demoting errors to warnings
528  - fsck: document the new receive.fsck.* options
529  - fsck: allow upgrading fsck warnings to errors
530  - fsck: optionally ignore specific fsck issues completely
531  - fsck: disallow demoting grave fsck errors to warnings
532  - fsck: add a simple test for receive.fsck.*
533  - fsck: make fsck_tag() warn-friendly
534  - fsck: handle multiple authors in commits specially
535  - fsck: make fsck_commit() warn-friendly
536  - fsck: make fsck_ident() warn-friendly
537  - fsck: report the ID of the error/warning
538  - fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
539  - fsck: offer a function to demote fsck errors to warnings
540  - fsck: provide a function to parse fsck message IDs
541  - fsck: introduce identifiers for fsck messages
542  - fsck: introduce fsck options
544  "fsck.warnings = <list of error tokens>" I suggested turned out to
545  be an unpopular choice (sorry Dscho).
547  Expecting a reroll.
550 * nd/multiple-work-trees (2015-01-27) 38 commits
551   (merged to 'next' on 2015-02-18 at b51f696)
552  + t2026 needs procondition SANITY
553  + git-checkout.txt: a note about multiple checkout support for submodules
554  + checkout: add --ignore-other-wortrees
555  + checkout: pass whole struct to parse_branchname_arg instead of individual flags
556  + git-common-dir: make "modules/" per-working-directory directory
557  + checkout: do not fail if target is an empty directory
558  + t2025: add a test to make sure grafts is working from a linked checkout
559  + checkout: don't require a work tree when checking out into a new one
560  + git_path(): keep "info/sparse-checkout" per work-tree
561  + count-objects: report unused files in $GIT_DIR/worktrees/...
562  + gc: support prune --worktrees
563  + gc: factor out gc.pruneexpire parsing code
564  + gc: style change -- no SP before closing parenthesis
565  + checkout: clean up half-prepared directories in --to mode
566  + checkout: reject if the branch is already checked out elsewhere
567  + prune: strategies for linked checkouts
568  + checkout: support checking out into a new working directory
569  + use new wrapper write_file() for simple file writing
570  + wrapper.c: wrapper to open a file, fprintf then close
571  + setup.c: support multi-checkout repo setup
572  + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
573  + setup.c: convert check_repository_format_gently to use strbuf
574  + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
575  + setup.c: convert is_git_directory() to use strbuf
576  + git-stash: avoid hardcoding $GIT_DIR/logs/....
577  + *.sh: avoid hardcoding $GIT_DIR/hooks/...
578  + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
579  + $GIT_COMMON_DIR: a new environment variable
580  + commit: use SEQ_DIR instead of hardcoding "sequencer"
581  + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
582  + reflog: avoid constructing .lock path with git_path
583  + *.sh: respect $GIT_INDEX_FILE
584  + git_path(): be aware of file relocation in $GIT_DIR
585  + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
586  + path.c: rename vsnpath() to do_git_path()
587  + git_snpath(): retire and replace with strbuf_git_path()
588  + path.c: make get_pathname() call sites return const char *
589  + path.c: make get_pathname() return strbuf instead of static buffer
591  A replacement for contrib/workdir/git-new-workdir that does not
592  rely on symbolic links and make sharing of objects and refs safer
593  by making the borrowee and borrowers aware of each other.
595  Will cook in 'next'.