What's cooking (2015/03 #03)
[alt-git.git] / whats-cooking.txt
blobeaa01e39891c7dedf30a4164580ab1971b71fcb3
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Apr 2015, #03; Mon, 20)
4 X-master-at: 7c597ef345aed345576de616c51f27e6f4b342b3
5 X-next-at: aa1ae690dee8648c2e1169b5e9a10dbc28109e56
7 What's cooking in git.git (Apr 2015, #03; Mon, 20)
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 You can find the changes described here in the integration branches
15 of the repositories listed at
17     http://git-blame.blogspot.com/p/git-public-repositories.html
19 --------------------------------------------------
20 [Graduated to "master"]
22 * jc/push-cert (2015-04-02) 1 commit
23   (merged to 'next' on 2015-04-08 at aecdd43)
24  + push --signed: tighten what the receiving end can ask to sign
26  The "git push --signed" protocol extension did not limit what the
27  "nonce" that is a server-chosen string can contain or how long it
28  can be, which was unnecessarily lax.  Limit both the length and the
29  alphabet to a reasonably small space that can still have enough
30  entropy.
33 * ma/bash-completion-leaking-x (2015-04-12) 1 commit
34   (merged to 'next' on 2015-04-14 at 3a52a6d)
35  + completion: fix global bash variable leak on __gitcompappend
37  The completion script (in contrib/) contaminated global namespace
38  and clobbered on a shell variable $x.
41 * ps/grep-help-all-callback-arg (2015-04-12) 1 commit
42   (merged to 'next' on 2015-04-14 at e0a8092)
43  + grep: correctly initialize help-all option
45  Code clean-up.
48 * tb/connect-ipv6-parse-fix (2015-04-08) 1 commit
49   (merged to 'next' on 2015-04-14 at e720918)
50  + connect.c: ignore extra colon after hostname
52  An earlier update to the parser that disects a URL broke an
53  address, followed by a colon, followed by an empty string (instead
54  of the port number), e.g. ssh://example.com:/path/to/repo.
57 * va/fix-git-p4-tests (2015-04-12) 3 commits
58   (merged to 'next' on 2015-04-14 at 261bf90)
59  + t9814: guarantee only one source exists in git-p4 copy tests
60  + git-p4: fix copy detection test
61  + t9814: fix broken shell syntax in git-p4 rename test
63  Test fixes for git-p4.
65 --------------------------------------------------
66 [New Topics]
68 * jc/epochtime-wo-tz (2015-04-15) 2 commits
69  - parse_date_basic(): let the system handle DST conversion
70  - parse_date_basic(): return early when given a bogus timestamp
72  "git commit --date=now" or anything that relies on approxidate lost
73  the daylight-saving-time offset.
75  Will merge to 'next'.
78 * jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
79  - fmt-merge-msg: plug small leak of commit buffer
81  Will merge to 'next'.
84 * cn/bom-in-gitignore (2015-04-16) 5 commits
85  - attr: skip UTF8 BOM at the beginning of the input file
86  - config: use utf8_bom[] from utf.[ch] in git_parse_source()
87  - utf8-bom: introduce skip_utf8_bom() helper
88  - add_excludes_from_file: clarify the bom skipping logic
89  - dir: allow a BOM at the beginning of exclude files
91  Teach the codepaths that read .gitignore and .gitattributes files
92  that these files encoded in UTF-8 may have UTF-8 BOM marker at the
93  beginning; this makes it in line with what we do for configuration
94  files already.
96  Will merge to 'next'.
99 * ee/clean-remove-dirs (2015-04-18) 4 commits
100  - clean: improve performance when removing lots of directories
101  - p7300: add performance tests for clean
102  - t7300: add tests to document behavior of clean and nested git
103  - setup: add gentle version of read_gitfile
105  Still WIP.
108 * ep/fix-test-lib-functions-report (2015-04-16) 1 commit
109  - test-lib-functions.sh: fix the second argument to some helper functions
111  Will merge to 'next'.
114 * jk/still-interesting (2015-04-17) 1 commit
115  - limit_list: avoid quadratic behavior from still_interesting
117  "git rev-list --objects $old --not --all" to see if everything that
118  is reachable from $old is already connected to the existing refs
119  was very inefficient.
121  Will merge to 'next'.
124 * jk/type-from-string-gently (2015-04-17) 1 commit
125   (merged to 'next' on 2015-04-20 at a97611f)
126  + type_from_string_gently: make sure length matches
128  "git cat-file bl $blob" failed to barf even though there is no
129  object type that is "bl".
132 * ls/p4-changes-block-size (2015-04-20) 1 commit
133  - git-p4: use -m when running p4 changes
135  "git p4" learned "--changes-block-size <n>" to read the changes in
136  chunks from Perforce, instead of making one call to "p4 changes"
137  that may trigger "too many rows scanned" error from Perforce.
139  Will merge to 'next'.
142 * mg/show-notes-doc (2015-04-17) 1 commit
143   (merged to 'next' on 2015-04-20 at 2e93969)
144  + rev-list-options.txt: complete sentence about notes matching
146  Documentation fix.
148  Will merge to 'master' in the first batch of post v2.4 cycle.
151 * mm/add-p-split-error (2015-04-16) 5 commits
152  - stash -p: demonstrate failure of split with mixed y/n
153  - t3904-stash-patch: factor PERL prereq at the top of the file
154  - t3904-stash-patch: fix test description
155  - add -p: demonstrate failure when running 'edit' after a split
156  - t3701-add-interactive: simplify code
159 * mm/usage-log-l-can-take-regex (2015-04-20) 2 commits
160  - log -L: improve error message on malformed argument
161  - Documentation: change -L:<regex> to -L:<funcname>
163  Will merge to 'next'.
166 * nd/pathspec-strip-fix (2015-04-18) 1 commit
167  - pathspec: adjust prefixlen after striping trailing slash
170 * nd/t1509-chroot-test (2015-04-18) 1 commit
171  - t1509: update prepare script to be able to run t1509 in chroot again
173  Correct test bitrot.
175  Will merge to 'next'.
178 * oh/fix-config-default-user-name-section (2015-04-17) 1 commit
179   (merged to 'next' on 2015-04-20 at b74b914)
180  + config: fix settings in default_user_config template
182  The default $HOME/.gitconfig file created upon "git config --global"
183  that edits it had incorrectly spelled user.name and user.email
184  entries in it.
186  Will merge to 'master' in the first batch of post v2.4 cycle.
189 * tb/t0027-crlf (2015-04-18) 2 commits
190  - t0027: support NATIVE_CRLF platforms
191  - t0027: cleanup: rename functions; avoid non-leading TABs
193  Will merge to 'next'.
196 * jk/prune-mtime (2015-04-20) 3 commits
197  - sha1_file: only freshen packs once per run
198  - sha1_file: freshen pack objects before loose
199  - reachable: only mark local objects as recent
201  Access to objects in repositories that borrow from another one on a
202  slow NFS server unnecessarily got more expensive due to recent code
203  becoming more cautious in a naive way not to lose objects to pruning.
205  Will merge to 'next'.
208 * sb/remove-fd-from-ref-lock (2015-04-17) 5 commits
209  . refs.c: enable large transactions
210  . sha1_fiel.c: move get_max_fd_limit(void) to wrapper.c
211  . refs.c: remove lock_fd from struct ref_lock
212  . t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
213  . update-ref: test handling large transactions properly
215 --------------------------------------------------
216 [Stalled]
218 * mh/fdopen-with-retry (2015-03-06) 6 commits
219  - buffer_fdinit(): use fdopen_with_retry()
220  - update_info_file(): use fdopen_with_retry()
221  - copy_to_log(): use fdopen_with_retry()
222  - fdopen_lock_file(): use fdopen_with_retry()
223  - SQUASH??? $gmane/264889
224  - xfdopen(): if first attempt fails, free memory and try again
226  Various parts of the code where they call fdopen() can fail when
227  they run out of memory; attempt to proceed by retrying the
228  operation after freeing some resource.
230  Waiting for further comments.
233 * nd/untracked-cache (2015-03-12) 24 commits
234  - git-status.txt: advertisement for untracked cache
235  - untracked cache: guard and disable on system changes
236  - mingw32: add uname()
237  - t7063: tests for untracked cache
238  - update-index: test the system before enabling untracked cache
239  - update-index: manually enable or disable untracked cache
240  - status: enable untracked cache
241  - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
242  - untracked cache: mark index dirty if untracked cache is updated
243  - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
244  - untracked cache: avoid racy timestamps
245  - read-cache.c: split racy stat test to a separate function
246  - untracked cache: invalidate at index addition or removal
247  - untracked cache: load from UNTR index extension
248  - untracked cache: save to an index extension
249  - ewah: add convenient wrapper ewah_serialize_strbuf()
250  - untracked cache: don't open non-existent .gitignore
251  - untracked cache: mark what dirs should be recursed/saved
252  - untracked cache: record/validate dir mtime and reuse cached output
253  - untracked cache: make a wrapper around {open,read,close}dir()
254  - untracked cache: invalidate dirs recursively if .gitignore changes
255  - untracked cache: initial untracked cache validation
256  - untracked cache: record .gitignore information and dir hierarchy
257  - dir.c: optionally compute sha-1 of a .gitignore file
259  Need extra sets of eyes to review this.
262 * jc/diff-b-m (2015-02-23) 5 commits
263  . WIPWIP
264  . WIP: diff-b-m
265  - diffcore-rename: allow easier debugging
266  - diffcore-rename.c: add locate_rename_src()
267  - diffcore-break: allow debugging
269  "git diff -B -M" produced incorrect patch when the postimage of a
270  completely rewritten file is similar to the preimage of a removed
271  file; such a resulting file must not be expressed as a rename from
272  other place.
274  The fix in this patch is broken, unfortunately.
277 * pw/remote-set-url-fetch (2014-11-26) 1 commit
278  - remote: add --fetch and --both options to set-url
280  Expecting a reroll.
283 * tr/remerge-diff (2014-11-10) 9 commits
284  - t4213: avoid "|" in sed regexp
285  - log --remerge-diff: show what the conflict resolution changed
286  - name-hash: allow dir hashing even when !ignore_case
287  - merge-recursive: allow storing conflict hunks in index
288  - merge_diff_mode: fold all merge diff variants into an enum
289  - combine-diff: do not pass revs->dense_combined_merges redundantly
290  - merge-recursive: -Xindex-only to leave worktree unchanged
291  - merge-recursive: internal flag to avoid touching the worktree
292  - merge-recursive: remove dead conditional in update_stages()
294  "log -p" output learns a new way to let users inspect a merge
295  commit by showing the differences between the automerged result
296  with conflicts the person who recorded the merge would have seen
297  and the final conflict resolution that was recorded in the merge.
299  Waiting for a reroll ($gmane/256591).
302 * hv/submodule-config (2014-11-11) 4 commits
303  - do not die on error of parsing fetchrecursesubmodules option
304  - use new config API for worktree configurations of submodules
305  - extract functions for submodule config set and lookup
306  - implement submodule config cache for lookup of submodule names
308  Kicked back to 'pu' per request ($gmane/255610).
311 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
312  - perf-lib: add test_perf_cleanup target
313  - perf-lib: split starting the test from the execution
315  Add test_perf_cleanup shell function to the perf suite, that allows
316  the script writers to define a test with a clean-up action.
318  Will hold.
321 * jc/show-branch (2014-03-24) 5 commits
322  - show-branch: use commit slab to represent bitflags of arbitrary width
323  - show-branch.c: remove "all_mask"
324  - show-branch.c: abstract out "flags" operation
325  - show-branch.c: lift all_mask/all_revs to a global static
326  - show-branch.c: update comment style
328  Waiting for the final step to lift the hard-limit.
330 --------------------------------------------------
331 [Cooking]
333 * ah/usage-strings (2015-04-02) 2 commits
334  - branch: fix funny-sounding error message
335  - standardize usage strings that were missed the first time
337  A few usage string updates.
339  Will hold.
342 * jk/reading-packed-refs (2015-04-16) 9 commits
343  - t1430: add another refs-escape test
344  - read_packed_refs: avoid double-checking sane refs
345  - strbuf_getwholeline: use getdelim if it is available
346  - strbuf_getwholeline: avoid calling strbuf_grow
347  - strbuf_addch: avoid calling strbuf_grow
348  - config: use getc_unlocked when reading from file
349  - strbuf_getwholeline: use getc_unlocked
350  - git-compat-util: add fallbacks for unlocked stdio
351  - strbuf_getwholeline: use getc macro
353  An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
354  to read packed-refs file revealed that the former is unacceptably
355  inefficient.
357  Will merge to 'next'.
360 * kk/log-merges-config (2015-04-04) 5 commits
361  - bash-completion: add support for git-log --merges= and log.merges
362  - t4202-log: add tests for --merges=
363  - Documentation: add git-log --merges= option and log.merges config. var
364  - log: honor log.merges= option
365  - revision: add --merges={show|only|hide} option
367  "git log" (but not other commands in the "log" family) learned to
368  pay attention to the log.merges configuration variable that can be
369  set to "show" (the normal behaviour), "only" (hide non-merge
370  commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
371  can be used to override the setting from the command line.
373  The documentation may need to be updated once more.
376 * kn/cat-file-literally (2015-04-15) 5 commits
377  - SQUASH???
378  - t1006: add tests for git cat-file --literally
379  - cat-file: add documentation for '--literally' option.
380  - cat-file: teach cat-file a '--literally' option
381  - sha1_file.c: support reading from a loose object of unknown type
383  Add the "--literally" option to "cat-file" to allow inspecting
384  loose objects of an experimental or a broken type.
386  This is v8 $gmane/267213; getting closer to the final, I would say.
389 * ld/p4-filetype-detection (2015-04-04) 3 commits
390   (merged to 'next' on 2015-04-08 at da735b4)
391  + git-p4: fix filetype detection on files opened exclusively
392  + git-p4: small fix for locked-file-move-test
393  + git-p4: fix small bug in locked test scripts
395  Will merge to 'master' in the first batch of post v2.4 cycle.
398 * mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
399  - t/lib-git-svn: check same httpd module dirs as lib-httpd
400  - t/lib-httpd: load mod_unixd
402  This is the first two commits in a three-patch series $gmane/266962
405 * lm/squelch-bg-progress (2015-04-15) 2 commits
406  - compat/mingw: stubs for getpgid() and tcgetpgrp()
407  - progress: no progress in background
409  Many long-running operations show progress eye-candy, even when
410  they are later backgrounded.  Hide the eye-candy when the process
411  is sent to the background instead.
413  Will merge to 'next'.
416 * pt/xdg-config-path (2015-04-12) 7 commits
417  - path.c: remove home_config_paths()
418  - git-config: replace use of home_config_paths()
419  - git-commit: replace use of home_config_paths()
420  - credential-store.c: replace home_config_paths() with xdg_config_home()
421  - dir.c: replace home_config_paths() with xdg_config_home()
422  - attr.c: replace home_config_paths() with xdg_config_home()
423  - path.c: implement xdg_config_home()
424  (this branch uses pt/credential-xdg.)
427 * sb/test-bitmap-free-at-end (2015-04-12) 1 commit
428   (merged to 'next' on 2015-04-14 at 0ae4759)
429  + pack-bitmap.c: fix a memleak
431  Will merge to 'master' in the first batch of post v2.4 cycle.
434 * va/p4-client-path (2015-04-19) 2 commits
435  - git-p4: improve client path detection when branches are used
436  - t9801: check git-p4's branch detection and client view together
438  git p4 attempts to better handle branches in Perforce.
440  Will merge to 'next'.
443 * jk/at-push-sha1 (2015-03-31) 6 commits
444  - sha1_name: implement @{push} shorthand
445  - sha1_name: refactor upstream_mark
446  - remote.c: provide per-branch pushremote name
447  - remote.c: hoist branch.*.remote lookup out of remote_get_1
448  - remote.c: drop "remote" pointer from "struct branch"
449  - remote.c: drop default_remote_name variable
451  Introduce <branch>@{push} short-hand to denote the remote-tracking
452  branch that tracks the branch at the remote the <branch> would be
453  pushed to.
455  Waiting for a reroll ($gmane/266573).
458 * jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
459  - sha1_file: squelch "packfile cannot be accessed" warnings
461  Will merge to 'next'.
464 * mh/show-branch-topic (2015-03-31) 1 commit
465   (merged to 'next' on 2015-04-08 at 628ada5)
466  + show-branch: show all local heads when only giving one rev along --topics
468  "git show-branch --topics HEAD" (with no other arguments) did not
469  do anything interesting.  Instead, contrast the given revision
470  against all the local branches by default.
472  Will merge to 'master' in the first batch of post v2.4 cycle.
475 * sb/line-log-plug-pairdiff-leak (2015-03-30) 1 commit
476   (merged to 'next' on 2015-04-08 at 6ea8b71)
477  + line-log.c: fix a memleak
479  Will merge to 'master' in the first batch of post v2.4 cycle.
482 * jk/init-core-worktree-at-root (2015-04-02) 1 commit
483   (merged to 'next' on 2015-04-08 at 92a942b)
484  + init: don't set core.worktree when initializing /.git
486  We avoid setting core.worktree when the repository location is the
487  ".git" directory directly at the top level of the working tree, but
488  the code misdetected the case in which the working tree is at the
489  root level of the filesystem (which arguably is a silly thing to
490  do, but still valid).
492  Will merge to 'master' in the first batch of post v2.4 cycle.
495 * ts/checkout-advice-plural (2015-04-02) 1 commit
496   (merged to 'next' on 2015-04-08 at dd5c436)
497  + checkout: call a single commit "it" intead of "them"
499  Will merge to 'master' in the first batch of post v2.4 cycle.
502 * pt/credential-xdg (2015-03-25) 4 commits
503   (merged to 'next' on 2015-03-25 at 765128e)
504  + t0302: "unreadable" test needs POSIXPERM
505   (merged to 'next' on 2015-03-24 at 9a3706e)
506  + t0302: test credential-store support for XDG_CONFIG_HOME
507  + git-credential-store: support XDG_CONFIG_HOME
508  + git-credential-store: support multiple credential files
509  (this branch is used by pt/xdg-config-path.)
511  Tweak the sample "store" backend of the credential helper to honor
512  XDG configuration file locations when specified.
514  As this may see further updates, and also this is not an urgent
515  issue anyway, I'll give it a bit more time for it to simmer.
517  Will cook in 'next'.
520 * jc/merge-deprecate-old-syntax (2015-03-26) 1 commit
521  - merge: deprecate 'git merge <message> HEAD <commit>' syntax
522  (this branch is used by jc/merge-drop-old-syntax.)
524  The first step to really start the process of removing the ancient
525  syntax to invoke a two-way merge, which has been deprecated since
526  October 2007.
528  This regresses "git pull" in various ways; do not merge ($gmane/267432).
531 * jc/merge-drop-old-syntax (2015-03-26) 1 commit
532  - merge: drop 'git merge <message> HEAD <commit>' syntax
533  (this branch uses jc/merge-deprecate-old-syntax.)
535  Stop supporting "git merge <messsage> HEAD <commit>" syntax that
536  has been deprecated since October 2007.
538  This regresses "git pull" in various ways; do not merge ($gmane/267432).
541 * jc/diff-no-index-d-f (2015-03-26) 2 commits
542   (merged to 'next' on 2015-03-27 at 1f270f9)
543  + diff-no-index: align D/F handling with that of normal Git
544  + diff-no-index: DWIM "diff D F" into "diff D/F F"
546  The usual "git diff" when seeing a file turning into a directory
547  showed a patchset to remove the file and create all files in the
548  directory, but "git diff --no-index" simply refused to work.  Also,
549  when asked to compare a file and a directory, imitate POSIX "diff"
550  and compare the file with the file with the same name in the
551  directory, instead of refusing to run.
553  Will merge to 'master' in the first batch of post v2.4 cycle.
556 * nd/diff-i-t-a (2015-03-23) 1 commit
557   (merged to 'next' on 2015-03-24 at a6be89f)
558  + diff-lib.c: adjust position of i-t-a entries in diff
560  After "git add -N", the path appeared in output of "git diff HEAD"
561  and "git diff --cached HEAD", leading "git status" to classify it
562  as "Changes to be committed".  Such a path, however, is not yet to
563  be scheduled to be committed.  "git diff" showed the change to the
564  path as modification, not as a "new file", in the header of its
565  output.
567  Treat such paths as "yet to be added to the index but Git already
568  know about them"; "git diff HEAD" and "git diff --cached HEAD"
569  should not talk about them, and "git diff" should show them as new
570  files yet to be added to the index.
572  Will cook in 'next', as this brings in a new world order.
575 * mh/numparse (2015-03-19) 14 commits
576  - diff_opt_parse(): use convert_i() when handling --abbrev=<num>
577  - diff_opt_parse(): use convert_i() when handling "-l<num>"
578  - opt_arg(): simplify pointer handling
579  - opt_arg(): report errors parsing option values
580  - opt_arg(): use convert_i() in implementation
581  - opt_arg(): val is always non-NULL
582  - builtin_diff(): detect errors when parsing --unified argument
583  - handle_revision_opt(): use convert_ui() when handling "--abbrev="
584  - strtoul_ui(), strtol_i(): remove functions
585  - handle_revision_opt(): use convert_i() when handling "-<digit>"
586  - handle_revision_opt(): use skip_prefix() in many places
587  - write_subdirectory(): use convert_ui() for parsing mode
588  - cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
589  - numparse: new module for parsing integral numbers
591  Many codepaths use unchecked use of strtol() and friends (or even
592  worse, atoi()).  Introduce a set of wrappers that try to be more
593  careful.
595  Waiting for a reroll ($gmane/266209).
598 * tf/gitweb-project-listing (2015-03-19) 5 commits
599  - gitweb: make category headings into links when they are directories
600  - gitweb: optionally set project category from its pathname
601  - gitweb: add a link under the search box to clear a project filter
602  - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
603  - gitweb: fix typo in man page
605  Update gitweb to make it more pleasant to deal with a hierarchical
606  forest of repositories.
608  Any comments from those who use or have their own code in Gitweb?
611 * jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
612  - "-" and "@{-1}" on various programs
614  Lose special case code to make a lone dash "-" mean the previous
615  branch aka "@{-1}" from a handful subcommands, and instead support
616  the notation throughout the system by reimplementing it at the
617  revisions layer.
619  Needs tests, documentation updates, etc.  Also does only a half-way
620  job dealing with range notation, which needs to be fixed before the
621  series goes anywhere.
624 * bc/object-id (2015-03-13) 10 commits
625   (merged to 'next' on 2015-03-24 at 3ec4f83)
626  + apply: convert threeway_stage to object_id
627  + patch-id: convert to use struct object_id
628  + commit: convert parts to struct object_id
629  + diff: convert struct combine_diff_path to object_id
630  + bulk-checkin.c: convert to use struct object_id
631  + zip: use GIT_SHA1_HEXSZ for trailers
632  + archive.c: convert to use struct object_id
633  + bisect.c: convert leaf functions to use struct object_id
634  + define utility functions for object IDs
635  + define a structure for object IDs
637  Identify parts of the code that knows that we use SHA-1 hash to
638  name our objects too much, and use (1) symbolic constants instead
639  of hardcoded 20 as byte count and/or (2) use struct object_id
640  instead of unsigned char [20] for object names.
642  Will cook in 'next'.
643  Also waiting for reviews on the follow-up series ($gmane/265939)
644  that seems to have seen no interest X-<.
647 * nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
648  - index-pack: kill union delta_base to save memory
649  - index-pack: reduce object_entry size to save memory
651  Memory usage of "git index-pack" has been trimmed by tens of
652  per-cent.
654  Will merge to 'next'.
657 * nd/list-files (2015-02-09) 21 commits
658  - t3080: tests for git-list-files
659  - list-files: -M aka diff-cached
660  - list-files -F: show submodules with the new indicator '&'
661  - list-files: add -F/--classify
662  - list-files: show directories as well as files
663  - list-files: do not show duplicate cached entries
664  - list-files: sort output and remove duplicates
665  - list-files: add -t back
666  - list-files: add -1 short for --no-column
667  - list-files: add -R/--recursive short for --max-depth=-1
668  - list-files: -u does not imply showing stages
669  - list-files: make alias 'ls' default to 'list-files'
670  - list-files: a user friendly version of ls-files and more
671  - ls-files: support --max-depth
672  - ls-files: add --column
673  - ls-files: add --color to highlight file names
674  - ls-files: buffer full item in strbuf before printing
675  - ls_colors.c: highlight submodules like directories
676  - ls_colors.c: add a function to color a file name
677  - ls_colors.c: parse color.ls.* from config file
678  - ls_colors.c: add $LS_COLORS parsing code
680  A new "git list-files" Porcelain command, "ls-files" with bells and
681  whistles.
683  Reroll to base on wt-status work ($gmane/265142) has seen some
684  positive discussions.
686  Waiting for a further polished reroll ($gmane/265534).
689 * js/fsck-opt (2015-01-21) 19 commits
690  - fsck: support ignoring objects in `git fsck` via fsck.skiplist
691  - fsck: git receive-pack: support excluding objects from fsck'ing
692  - fsck: introduce `git fsck --quick`
693  - fsck: support demoting errors to warnings
694  - fsck: document the new receive.fsck.* options
695  - fsck: allow upgrading fsck warnings to errors
696  - fsck: optionally ignore specific fsck issues completely
697  - fsck: disallow demoting grave fsck errors to warnings
698  - fsck: add a simple test for receive.fsck.*
699  - fsck: make fsck_tag() warn-friendly
700  - fsck: handle multiple authors in commits specially
701  - fsck: make fsck_commit() warn-friendly
702  - fsck: make fsck_ident() warn-friendly
703  - fsck: report the ID of the error/warning
704  - fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
705  - fsck: offer a function to demote fsck errors to warnings
706  - fsck: provide a function to parse fsck message IDs
707  - fsck: introduce identifiers for fsck messages
708  - fsck: introduce fsck options
710  "fsck.warnings = <list of error tokens>" I suggested turned out to
711  be an unpopular choice (sorry Dscho).
713  Expecting a reroll.
716 * nd/multiple-work-trees (2015-03-31) 41 commits
717   (merged to 'next' on 2015-04-02 at 7ea51b4)
718  + prune --worktrees: fix expire vs worktree existence condition
719   (merged to 'next' on 2015-03-24 at 58b5a60)
720  + t1501: fix test with split index
721   (merged to 'next' on 2015-03-20 at cc98ed0)
722  + t2026: fix broken &&-chain
723   (merged to 'next' on 2015-02-18 at b51f696)
724  + t2026 needs procondition SANITY
725  + git-checkout.txt: a note about multiple checkout support for submodules
726  + checkout: add --ignore-other-wortrees
727  + checkout: pass whole struct to parse_branchname_arg instead of individual flags
728  + git-common-dir: make "modules/" per-working-directory directory
729  + checkout: do not fail if target is an empty directory
730  + t2025: add a test to make sure grafts is working from a linked checkout
731  + checkout: don't require a work tree when checking out into a new one
732  + git_path(): keep "info/sparse-checkout" per work-tree
733  + count-objects: report unused files in $GIT_DIR/worktrees/...
734  + gc: support prune --worktrees
735  + gc: factor out gc.pruneexpire parsing code
736  + gc: style change -- no SP before closing parenthesis
737  + checkout: clean up half-prepared directories in --to mode
738  + checkout: reject if the branch is already checked out elsewhere
739  + prune: strategies for linked checkouts
740  + checkout: support checking out into a new working directory
741  + use new wrapper write_file() for simple file writing
742  + wrapper.c: wrapper to open a file, fprintf then close
743  + setup.c: support multi-checkout repo setup
744  + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
745  + setup.c: convert check_repository_format_gently to use strbuf
746  + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
747  + setup.c: convert is_git_directory() to use strbuf
748  + git-stash: avoid hardcoding $GIT_DIR/logs/....
749  + *.sh: avoid hardcoding $GIT_DIR/hooks/...
750  + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
751  + $GIT_COMMON_DIR: a new environment variable
752  + commit: use SEQ_DIR instead of hardcoding "sequencer"
753  + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
754  + reflog: avoid constructing .lock path with git_path
755  + *.sh: respect $GIT_INDEX_FILE
756  + git_path(): be aware of file relocation in $GIT_DIR
757  + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
758  + path.c: rename vsnpath() to do_git_path()
759  + git_snpath(): retire and replace with strbuf_git_path()
760  + path.c: make get_pathname() call sites return const char *
761  + path.c: make get_pathname() return strbuf instead of static buffer
763  A replacement for contrib/workdir/git-new-workdir that does not
764  rely on symbolic links and make sharing of objects and refs safer
765  by making the borrowee and borrowers aware of each other.
767  Will cook in 'next'.
769 --------------------------------------------------
770 [Discarded]
772 * as/userdiff-sh (2015-03-13) 1 commit
773  . userdiff: funcname and word patterns for sh
775  Add a built-in "userdiff" patterns to word-split and identify
776  notable lines in shell scripts to help presentation of diff and
777  grep output.