What's cooking (2015/01 #05)
[alt-git.git] / whats-cooking.txt
blob7a3c2e03955fd5e522f93ee0c921c515f4e1bdc5
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Jan 2015, #05; Tue, 27)
4 X-master-at: 15598cf41beed0d86cd2ac443e0f69c5a3b40321
5 X-next-at: 4b64765b7657288d677cec107fb5295afb4e3a29
7 What's cooking in git.git (Jan 2015, #05; Tue, 27)
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 Hopefully final release candidate 2.3-rc2 has been tagged.  Please
15 spend some time to find and fix regressions, instead of spending all
16 time having fun with new and shiny toys.  The final hopefully will
17 happen sometime next week.
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/cat-file-clean-up (2015-01-13) 1 commit
28   (merged to 'next' on 2015-01-15 at bb1a4b3)
29  + cat-file: use "type" and "size" from outer scope
32 * js/t1050 (2015-01-14) 1 commit
33   (merged to 'next' on 2015-01-15 at f010b00)
34  + t1050-large: generate large files without dd
36 --------------------------------------------------
37 [New Topics]
39 * jc/apply-ws-fix-expands-report (2015-01-22) 1 commit
40  - apply: detect and mark whitespace errors in context lines when fixing
41  (this branch uses jc/apply-ws-fix-expands.)
43  "git apply --whitespace=fix" fixed whitespace errors in the common
44  context lines but did so without reporting.
46  Will merge to 'next'.
49 * ks/rebase-i-abbrev (2015-01-22) 1 commit
50  - rebase -i: use full object name internally throughout the script
52  The insn sheet "git rebase -i" creates did not fully honor
53  core.abbrev settings.
55  Will merge to 'next'.
58 * mh/deref-symref-over-helper-transport (2015-01-21) 1 commit
59  - transport-helper: do not request symbolic refs to remote helpers
61  "git fetch" over a remote-helper that cannot respond to "list"
62  command could not fetch from a symbolic reference e.g. HEAD.
64  Will merge to 'next'.
67 * ak/add-i-empty-candidates (2015-01-22) 1 commit
68  - add -i: return from list_and_choose if there is no candidate
70  The interactive "show a list and let the user choose from it"
71  interface "add -i" used showed and prompted to the user even when
72  the candidate list was empty, against which the only "choice" the
73  user could have made was to choose nothing.
75  Will merge to 'next'.
78 * av/wincred-with-at-in-username-fix (2015-01-25) 1 commit
79  - wincred: fix get credential if username has "@"
81  Will merge to 'next'.
84 * jc/conf-var-doc (2015-01-27) 3 commits
85  - CodingGuidelines: describe naming rules for configuration variables
86  - config.txt: mark deprecated variables more prominently
87  - config.txt: clarify that add.ignore-errors as deprecated
89  Need to send this out for review before doing anything to it.
92 * jc/doc-log-rev-list-options (2015-01-23) 1 commit
93  - Documentation: what does "git log --indexed-objects" even mean?
95  Will merge to 'next'.
98 * jk/dumb-http-idx-fetch-fix (2015-01-27) 1 commit
99  - dumb-http: do not pass NULL path to parse_pack_index
101  Will merge to 'next'.
104 * ld/p4-submit-hint (2015-01-23) 1 commit
105   (merged to 'next' on 2015-01-23 at ed972d3)
106  + git-p4: correct --prepare-p4-only instructions
108  Will merge to 'master' after 2.3 final.
111 * mg/commit-author-no-match-malformed-message (2015-01-26) 1 commit
112  - commit: reword --author error message
114  Will merge to 'next'.
117 * mg/push-repo-option-doc (2015-01-27) 1 commit
118  - git-push.txt: document the behavior of --repo
120  Will merge to 'next'.
123 --------------------------------------------------
124 [Stalled]
126 * jn/doc-api-errors (2014-12-04) 1 commit
127  - doc: document error handling functions and conventions
129  For discussion.
132 * pw/remote-set-url-fetch (2014-11-26) 1 commit
133  - remote: add --fetch and --both options to set-url
135  Expecting a reroll.
138 * ms/submodule-update-config-doc (2014-11-03) 1 commit
139  - submodule: clarify documentation for update subcommand
141  Needs a reroll ($gmane/259037).
144 * je/quiltimport-no-fuzz (2014-10-21) 2 commits
145  - git-quiltimport: flip the default not to allow fuzz
146  - git-quiltimport.sh: allow declining fuzz with --exact option
148  "quiltimport" drove "git apply" always with -C1 option to reduce
149  context of the patch in order to give more chance to somewhat stale
150  patches to apply.  Add an "--exact" option to disable, and also
151  "-C$n" option to customize this behaviour.  The top patch
152  optionally flips the default to "--exact".
154  Tired of waiting for an Ack; will discard.
157 * tr/remerge-diff (2014-11-10) 9 commits
158  - t4213: avoid "|" in sed regexp
159  - log --remerge-diff: show what the conflict resolution changed
160  - name-hash: allow dir hashing even when !ignore_case
161  - merge-recursive: allow storing conflict hunks in index
162  - merge_diff_mode: fold all merge diff variants into an enum
163  - combine-diff: do not pass revs->dense_combined_merges redundantly
164  - merge-recursive: -Xindex-only to leave worktree unchanged
165  - merge-recursive: internal flag to avoid touching the worktree
166  - merge-recursive: remove dead conditional in update_stages()
168  "log -p" output learns a new way to let users inspect a merge
169  commit by showing the differences between the automerged result
170  with conflicts the person who recorded the merge would have seen
171  and the final conflict resolution that was recorded in the merge.
173  Waiting for a reroll ($gmane/256591).
176 * hv/submodule-config (2014-11-11) 4 commits
177  - do not die on error of parsing fetchrecursesubmodules option
178  - use new config API for worktree configurations of submodules
179  - extract functions for submodule config set and lookup
180  - implement submodule config cache for lookup of submodule names
182  Kicked back to 'pu' per request ($gmane/255610).
185 * ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
186  - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
187  - git-add--interactive: Preserve diff heading when splitting hunks
189  Waiting for a reroll.
192 * jn/gitweb-utf8-in-links (2014-05-27) 1 commit
193  - gitweb: Harden UTF-8 handling in generated links
195  $gmane/250758?
198 * ss/userdiff-update-csharp-java (2014-06-02) 2 commits
199  - userdiff: support Java try keyword
200  - userdiff: support C# async methods and correct C# keywords
202  Reviews sent; waiting for a response.
205 * bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
206  - git-rebase: print name of rev when using shorthand
208  Teach "git rebase -" to report the concrete name of the branch
209  (i.e. the previous one).
211  But it stops short and does not do the same for "git rebase @{-1}".
212  Expecting a reroll.
215 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
216  - merge: drop unused arg from abort_commit method signature
217  - merge: make prepare_to_commit responsible for write_merge_state
218  - t7505: ensure cleanup after hook blocks merge
219  - t7505: add missing &&
221  Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
222  run during "git merge".  The log message stresses too much on one
223  hook, prepare-commit-msg, but it would equally apply to other hooks
224  like post-merge, I think.
226  Waiting for a reroll.
229 * jc/graph-post-root-gap (2013-12-30) 3 commits
230  - WIP: document what we want at the end
231  - graph: remove unused code a bit
232  - graph: stuff the current commit into graph->columns[]
234  This was primarily a RFH ($gmane/239580).
237 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
238  - perf-lib: add test_perf_cleanup target
239  - perf-lib: split starting the test from the execution
241  Add test_perf_cleanup shell function to the perf suite, that allows
242  the script writers to define a test with a clean-up action.
244  Will hold.
247 * jc/show-branch (2014-03-24) 5 commits
248  - show-branch: use commit slab to represent bitflags of arbitrary width
249  - show-branch.c: remove "all_mask"
250  - show-branch.c: abstract out "flags" operation
251  - show-branch.c: lift all_mask/all_revs to a global static
252  - show-branch.c: update comment style
254  Waiting for the final step to lift the hard-limit before sending it out.
256 --------------------------------------------------
257 [Cooking]
259 * ye/http-accept-language (2015-01-27) 2 commits
260  - SQUASH???
261  - http: Add Accept-Language header if possible
263  Using environment variable LANGUAGE and friends on the client side,
264  send Accept-Language when making HTTP requests.
266  Almost there, I would think.
269 * ak/typofixes (2015-01-21) 2 commits
270   (merged to 'next' on 2015-01-22 at e36f25a)
271  + t/lib-terminal.sh: fix typo
272  + pack-bitmap: fix typo
274  Will merge to 'master'.
277 * jc/apply-ws-fix-expands (2015-01-22) 3 commits
278  - apply: count the size of postimage correctly
279  - apply: make update_pre_post_images() sanity check the given postlen
280  - apply.c: typofix
281  (this branch is used by jc/apply-ws-fix-expands-report.)
283  "git apply --whitespace=fix" used to under-allocate the memory
284  when the fix resulted in a longer text than the original patch.
286  Will merge to 'next'.
289 * jc/coding-guidelines (2015-01-15) 1 commit
290   (merged to 'next' on 2015-01-22 at 3c96639)
291  + CodingGuidelines: clarify C #include rules
293  Will merge to 'master'.
296 * jc/pretty-format-doc (2015-01-15) 1 commit
297   (merged to 'next' on 2015-01-22 at 2a81ecc)
298  + "log --pretty" documentation: do not forget "tformat:"
300  Will cook in 'next'.
303 * jc/unused-symbols (2015-01-15) 8 commits
304   (merged to 'next' on 2015-01-22 at 77fd5f0)
305  + shallow.c: make check_shallow_file_for_update() static
306  + remote.c: make clear_cas_option() static
307  + urlmatch.c: make match_urls() static
308  + revision.c: make save_parents() and free_saved_parents() static
309  + line-log.c: make line_log_data_init() static
310  + pack-bitmap.c: make pack_bitmap_filename() static
311  + prompt.c: remove git_getpass() nobody uses
312  + http.c: make finish_active_slot() and handle_curl_result() static
314  Mark file-local symbols as "static", and drop functions that nobody
315  uses.
317  Will cook in 'next'.
320 * jk/sanity (2015-01-27) 3 commits
321  - test-lib.sh: set prerequisite SANITY by testing what we really need
322  - tests: correct misuses of POSIXPERM
323  - t/lib-httpd: switch SANITY check for NOT_ROOT
325  Waiting for ack or counter-proposal from Torsten.
326  Otherwise looking good.
329 * js/fsck-opt (2015-01-21) 19 commits
330  - fsck: support ignoring objects in `git fsck` via fsck.skiplist
331  - fsck: git receive-pack: support excluding objects from fsck'ing
332  - fsck: introduce `git fsck --quick`
333  - fsck: support demoting errors to warnings
334  - fsck: document the new receive.fsck.* options
335  - fsck: allow upgrading fsck warnings to errors
336  - fsck: optionally ignore specific fsck issues completely
337  - fsck: disallow demoting grave fsck errors to warnings
338  - fsck: add a simple test for receive.fsck.*
339  - fsck: make fsck_tag() warn-friendly
340  - fsck: handle multiple authors in commits specially
341  - fsck: make fsck_commit() warn-friendly
342  - fsck: make fsck_ident() warn-friendly
343  - fsck: report the ID of the error/warning
344  - fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
345  - fsck: offer a function to demote fsck errors to warnings
346  - fsck: provide a function to parse fsck message IDs
347  - fsck: introduce identifiers for fsck messages
348  - fsck: introduce fsck options
350  Need extra set of eyes to review this.
353 * ld/p4-exclude-in-sync (2015-01-20) 1 commit
354   (merged to 'next' on 2015-01-22 at f6f1fc7)
355  + git-p4: support excluding paths on sync
357  Will merge to 'master' after 2.3 final.
360 * tb/connect-ipv6-parse-fix (2015-01-22) 3 commits
361  - t5500: show user name and host in diag-url
362  - t5601: add more test cases for IPV6
363  - connect.c: improve parsing of literal IPV6 addresses
365  Need extra set of eyes to review this.
368 * sb/atomic-push-fix (2015-01-23) 6 commits
369  - refs.c: enable large transactions
370  - refs.c: remove unlock_ref and commit_ref from write_ref_sha1
371  - refs.c: move static functions to close and commit refs
372  - refs.c: remove lock_fd from struct ref_lock
373  - t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
374  - update-ref: test handling large transactions properly
375  (this branch uses mh/reflog-expire and sb/atomic-push.)
377  I had to wiggle this in and am not confident I did it correctly.
379  Need extra set of eyes to review this.
382 * jk/strbuf-doc-to-header (2015-01-16) 7 commits
383  - strbuf.h: group documentation for trim functions
384  - strbuf.h: drop boilerplate descriptions of strbuf_split_*
385  - strbuf.h: reorganize api function grouping headers
386  - strbuf.h: format asciidoc code blocks as 4-space indent
387  - strbuf.h: drop asciidoc list formatting from API docs
388  - strbuf.h: unify documentation comments beginnings
389  - strbuf.h: integrate api-strbuf.txt documentation
391  Resolve the "doc vs header" to favor the latter.
394 * ah/usage-strings (2015-01-14) 1 commit
395   (merged to 'next' on 2015-01-22 at bfa5bab)
396  + standardize usage info string format
398  Will cook in 'next'.
401 * ak/stash-store-create-help (2015-01-13) 1 commit
402  - stash: show "create" and "store" subcommands in usage-help
404  Undecided.
407 * jk/blame-commit-label (2015-01-13) 5 commits
408   (merged to 'next' on 2015-01-15 at 1b32e21)
409  + blame.c: fix garbled error message
410  + use xstrdup_or_null to replace ternary conditionals
411  + builtin/commit.c: use xstrdup_or_null instead of envdup
412  + builtin/apply.c: use xstrdup_or_null instead of null_strdup
413  + git-compat-util: add xstrdup_or_null helper
415  Will cook in 'next'.
418 * bc/http-fallback-to-password-after-krb-fails (2015-01-07) 1 commit
419   (merged to 'next' on 2015-01-12 at 4c67038)
420  + remote-curl: fall back to Basic auth if Negotiate fails
422  After attempting and failing a password-less authentication
423  (e.g. kerberos), libcURL refuses to fall back to password based
424  Basic authentication without a bit of help/encouragement.
426  Will cook in 'next'.
429 * bp/diff-relative-config (2015-01-07) 2 commits
430  - diff: teach diff.relative to give default to --relative=<value>
431  - diff: teach --no-relative to override earlier --relative
434 * dk/format-patch-ignore-diff-submodule (2015-01-07) 2 commits
435   (merged to 'next' on 2015-01-12 at 6b4605b)
436  + format-patch: ignore diff.submodule setting
437  + t4255: test am submodule with diff.submodule
439  Setting diff.submodule to 'log' made "git format-patch" produce
440  broken patches.
442  Will cook in 'next'.
445 * nd/attr-optim (2014-12-29) 3 commits
446  - attr: avoid heavy work when we know the specified attr is not defined
447  - attr: do not attempt to expand when we know it's not a macro
448  - attr.c: rename arg name attr_nr to avoid shadowing the global one
451 * cj/log-invert-grep (2015-01-13) 1 commit
452   (merged to 'next' on 2015-01-13 at c908e99)
453  + log: teach --invert-grep option
455  Will cook in 'next'.
458 * km/gettext-n (2015-01-12) 1 commit
459   (merged to 'next' on 2015-01-12 at 0cbbf4a)
460  + gettext.h: add parentheses around N_ expansion if supported
462  Will cook in 'next'.
465 * jn/rerere-fail-on-auto-update-failure (2015-01-08) 1 commit
466   (merged to 'next' on 2015-01-12 at 313c449)
467  + rerere: error out on autoupdate failure
469  "git rerere" (invoked internally from many mergy operations) did
470  not correctly signal errors when told to update the working tree
471  files and failed to do so for whatever reason.
473  Will cook in 'next'.
476 * sb/atomic-push (2015-01-14) 11 commits
477   (merged to 'next' on 2015-01-14 at 12c4e28)
478  + Document receive.advertiseatomic
479   (merged to 'next' on 2015-01-12 at 411c6a6)
480  + t5543-atomic-push.sh: add basic tests for atomic pushes
481  + push.c: add an --atomic argument
482  + send-pack.c: add --atomic command line argument
483  + send-pack: rename ref_update_to_be_sent to check_to_send_update
484  + receive-pack.c: negotiate atomic push support
485  + receive-pack.c: add execute_commands_atomic function
486  + receive-pack.c: move transaction handling in a central place
487  + receive-pack.c: move iterating over all commands outside execute_commands
488  + receive-pack.c: die instead of error in case of possible future bug
489  + receive-pack.c: shorten the execute_commands loop over all commands
490  (this branch is used by sb/atomic-push-fix; uses mh/reflog-expire.)
492  "git push" has been taught a "--atomic" option that makes push to
493  update more than one ref an "all-or-none" affair.
495  Will cook in 'next'.
498 * mh/reflog-expire (2014-12-22) 24 commits
499   (merged to 'next' on 2015-01-12 at 12a7dff)
500  + refs.c: let fprintf handle the formatting
501  + refs.c: don't expose the internal struct ref_lock in the header file
502  + lock_any_ref_for_update(): inline function
503  + refs.c: remove unlock_ref/close_ref/commit_ref from the refs api
504  + reflog_expire(): new function in the reference API
505  + expire_reflog(): treat the policy callback data as opaque
506  + Move newlog and last_kept_sha1 to "struct expire_reflog_cb"
507  + expire_reflog(): move rewrite to flags argument
508  + expire_reflog(): move verbose to flags argument
509  + expire_reflog(): pass flags through to expire_reflog_ent()
510  + struct expire_reflog_cb: a new callback data type
511  + Rename expire_reflog_cb to expire_reflog_policy_cb
512  + expire_reflog(): move updateref to flags argument
513  + expire_reflog(): move dry_run to flags argument
514  + expire_reflog(): add a "flags" argument
515  + expire_reflog(): extract two policy-related functions
516  + Extract function should_expire_reflog_ent()
517  + expire_reflog(): use a lock_file for rewriting the reflog file
518  + expire_reflog(): return early if the reference has no reflog
519  + expire_reflog(): rename "ref" parameter to "refname"
520  + expire_reflog(): it's not an each_ref_fn anymore
521  + refs.c: add a function to append a reflog entry to a fd
522  + refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
523  + refs.c: make ref_transaction_create a wrapper for ref_transaction_update
524  (this branch is used by sb/atomic-push and sb/atomic-push-fix.)
526  Restructure "reflog expire" to fit the reflogs better with the
527  recently updated ref API.
529  Looked reasonable (except that some shortlog entries stood out like
530  a sore thumb).
532  Will cook in 'next'.
535 * jc/push-to-checkout (2015-01-08) 2 commits
536   (merged to 'next' on 2015-01-12 at e64df63)
537  + receive-pack: support push-to-checkout hook
538  + receive-pack: refactor updateInstead codepath
540  Extending the js/push-to-deploy topic, the behaviour of "git push"
541  when updating the working tree and the index with an update to the
542  branch that is checked out can be tweaked by push-to-checkout hook.
544  Will cook in 'next'.
547 * nd/list-files (2015-01-27) 22 commits
548  - t3080: tests for git-list-files
549  - list-files: -M aka diff-cached
550  - list-files -F: show submodules with the new indicator '&'
551  - list-files: add -F/--classify
552  - SQUASH???
553  - list-files: show directories as well as files
554  - list-files: do not show duplicate cached entries
555  - list-files: sort output and remove duplicates
556  - list-files: add -t back
557  - list-files: add -1 short for --no-column
558  - list-files: add -R/--recursive short for --max-depth=-1
559  - list-files: -u does not imply showing stages
560  - list-files: make alias 'ls' default to 'list-files'
561  - list-files: a user friendly version of ls-files and more
562  - ls-files: support --max-depth
563  - ls-files: add --column
564  - ls-files: add --color to highlight file names
565  - ls-files: buffer full item in strbuf before printing
566  - ls_colors.c: highlight submodules like directories
567  - ls_colors.c: add a function to color a file name
568  - ls_colors.c: parse color.ls.* from config file
569  - ls_colors.c: add $LS_COLORS parsing code
571  A new "git list-files" Porcelain command, "ls-files" with bells and
572  whistles.
574  Some comments seen on the list; may be gaining some interests?
577 * nd/multiple-work-trees (2015-01-27) 38 commits
578  - t2026 needs procondition SANITY
579  - git-checkout.txt: a note about multiple checkout support for submodules
580  - checkout: add --ignore-other-wortrees
581  - checkout: pass whole struct to parse_branchname_arg instead of individual flags
582  - git-common-dir: make "modules/" per-working-directory directory
583  - checkout: do not fail if target is an empty directory
584  - t2025: add a test to make sure grafts is working from a linked checkout
585  - checkout: don't require a work tree when checking out into a new one
586  - git_path(): keep "info/sparse-checkout" per work-tree
587  - count-objects: report unused files in $GIT_DIR/worktrees/...
588  - gc: support prune --worktrees
589  - gc: factor out gc.pruneexpire parsing code
590  - gc: style change -- no SP before closing parenthesis
591  - checkout: clean up half-prepared directories in --to mode
592  - checkout: reject if the branch is already checked out elsewhere
593  - prune: strategies for linked checkouts
594  - checkout: support checking out into a new working directory
595  - use new wrapper write_file() for simple file writing
596  - wrapper.c: wrapper to open a file, fprintf then close
597  - setup.c: support multi-checkout repo setup
598  - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
599  - setup.c: convert check_repository_format_gently to use strbuf
600  - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
601  - setup.c: convert is_git_directory() to use strbuf
602  - git-stash: avoid hardcoding $GIT_DIR/logs/....
603  - *.sh: avoid hardcoding $GIT_DIR/hooks/...
604  - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
605  - $GIT_COMMON_DIR: a new environment variable
606  - commit: use SEQ_DIR instead of hardcoding "sequencer"
607  - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
608  - reflog: avoid constructing .lock path with git_path
609  - *.sh: respect $GIT_INDEX_FILE
610  - git_path(): be aware of file relocation in $GIT_DIR
611  - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
612  - path.c: rename vsnpath() to do_git_path()
613  - git_snpath(): retire and replace with strbuf_git_path()
614  - path.c: make get_pathname() call sites return const char *
615  - path.c: make get_pathname() return strbuf instead of static buffer
617  A replacement for contrib/workdir/git-new-workdir that does not
618  rely on symbolic links and make sharing of objects and refs safer
619  by making the borrowee and borrowers aware of each other.
622 * nd/untracked-cache (2015-01-21) 24 commits
623  - git-status.txt: advertisement for untracked cache
624  - untracked cache: guard and disable on system changes
625  - mingw32: add uname()
626  - t7063: tests for untracked cache
627  - update-index: test the system before enabling untracked cache
628  - update-index: manually enable or disable untracked cache
629  - status: enable untracked cache
630  - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
631  - untracked cache: mark index dirty if untracked cache is updated
632  - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
633  - untracked cache: avoid racy timestamps
634  - read-cache.c: split racy stat test to a separate function
635  - untracked cache: invalidate at index addition or removal
636  - untracked cache: load from UNTR index extension
637  - untracked cache: save to an index extension
638  - ewah: add convenient wrapper ewah_serialize_strbuf()
639  - untracked cache: don't open non-existent .gitignore
640  - untracked cache: mark what dirs should be recursed/saved
641  - untracked cache: record/validate dir mtime and reuse cached output
642  - untracked cache: make a wrapper around {open,read,close}dir()
643  - untracked cache: invalidate dirs recursively if .gitignore changes
644  - untracked cache: initial untracked cache validation
645  - untracked cache: record .gitignore information and dir hierarchy
646  - dir.c: optionally compute sha-1 of a .gitignore file
648  Need extra set of eyes to review this.
650 --------------------------------------------------
651 [Discarded]
653 * jc/push-cert-hmac-optim (2014-09-25) 2 commits
654  . receive-pack: truncate hmac early and convert only necessary bytes
655  . sha1_to_hex: split out "hex-format n bytes" helper and use it
657  This is "we could do this if we wanted to", not "we measured and it
658  improves performance critical codepath".
661 * mt/patch-id-stable (2014-06-10) 1 commit
662  . patch-id: change default to stable
664  Nobody seems to be jumping up & down requesting this last step,
665  which makes the result somewhat backward incompatible.
668 * sb/copy-fd-errno (2014-11-17) 1 commit
669  . copy.c: make copy_fd preserve meaningful errno
672 * cj/grep-none-match (2015-01-06) 1 commit
673  . git-log: added --none-match option
675  "git log --none-match --grep=WIP" will show only commits that are
676  not marked as WIP.
678  cj/log-invert-grep replaces this.
681 * lf/blame-commit-label (2015-01-12) 1 commit
682  . blame.c: fix garbled error message
684  jk/blame-commit-label replaces this.