What's cooking (2015/01 #02)
[alt-git.git] / whats-cooking.txt
blob28ca27749e11cb824ddfbee43084a0bda6508fa8
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (Jan 2015, #02; Mon, 12)
4 X-master-at: addfb21a94fb4e6b9d07b270f7bb3748767a8f38
5 X-next-at: e64df63be2ed715bed73607afec1eb4bd0a8f3ce
7 What's cooking in git.git (Jan 2015, #02; Mon, 12)
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 The "preview" release candidate 2.3-rc0 has been tagged.  With the
15 slowness from the end-of-year holiday, this cycle turns out to be a
16 relatively lean one as I predicted (just 200 changes since 2.2, as
17 opposed to ~500 changes in an normal cycle), but that is fine.  From
18 time to time it is OK to have a release that does not add many new
19 things but just fixes niggles here and there.
21 A new maintenance release 2.2.2 is also out, which backports many
22 fixes that were not in 2.2.1 that have been used on 'master' for the
23 past few weeks.
25 You can find the changes described here in the integration branches
26 of the repositories listed at
28     http://git-blame.blogspot.com/p/git-public-repositories.html
30 --------------------------------------------------
31 [Graduated to "master"]
33 * bb/update-unicode-table (2014-12-22) 5 commits
34   (merged to 'next' on 2014-12-23 at b4ce669)
35  + update_unicode.sh: delete the command group
36  + update_unicode.sh: make the output structure visible
37  + update_unicode.sh: shorten uniset invocation path
38  + update_unicode.sh: set UNICODE_DIR only once
39  + update_unicode.sh: simplify output capture
41  Simplify the procedure to generate unicode table.
44 * bc/fetch-thin-less-aggressive-in-normal-repository (2014-12-29) 3 commits
45   (merged to 'next' on 2015-01-07 at 60f9ada)
46  + pack-objects: use --objects-edge-aggressive for shallow repos
47  + rev-list: add an option to mark fewer edges as uninteresting
48  + Documentation: add missing article in rev-list-options.txt
50  Earlier we made "rev-list --object-edge" more aggressively list the
51  objects at the edge commits, in order to reduce number of objects
52  fetched into a shallow repository, but the change affected cases
53  other than "fetching into a shallow repository" and made it
54  unusably slow (e.g. fetching into a normal repository should not
55  have to suffer the overhead from extra processing).  Limit it to a
56  more specific case by introducing --objects-edge-aggressive, a new
57  option to rev-list.
60 * br/imap-send-verbosity (2014-11-05) 1 commit
61   (merged to 'next' on 2014-12-15 at 504af0b)
62  + imap-send: use parse options API to determine verbosity
63  (this branch is used by br/imap-send-via-libcurl and km/imap-send-libcurl-options.)
65  "git imap-send" learned to take "-v" (verbose) and "-q" (quiet)
66  command line options.
69 * br/imap-send-via-libcurl (2014-11-10) 1 commit
70   (merged to 'next' on 2014-12-15 at 90db637)
71  + git-imap-send: use libcurl for implementation
72  (this branch is used by km/imap-send-libcurl-options; uses br/imap-send-verbosity.)
74  Newer libCurl knows how to talk IMAP; "git imap-send" has been
75  updated to use this instead of a hand-rolled OpenSSL calls.
78 * bw/maint-0090-awk-tweak (2014-12-23) 1 commit
79   (merged to 'next' on 2014-12-29 at 9301c36)
80  + t0090: tweak awk statement for Solaris /usr/xpg4/bin/awk
83 * cc/bisect-rev-parsing (2014-12-29) 2 commits
84   (merged to 'next' on 2015-01-07 at 7b76eed)
85  + bisect: add test to check that revs are properly parsed
86  + bisect: parse revs before passing them to check_expected_revs()
88  The logic in "git bisect bad HEAD" etc. to avoid forcing the test
89  of the common ancestor of bad and good commits was broken.
92 * es/checkout-index-temp (2014-12-29) 5 commits
93   (merged to 'next' on 2015-01-07 at d45c06d)
94  + checkout-index: fix --temp relative path mangling
95  + t2004: demonstrate broken relative path printing
96  + t2004: standardize file naming in symlink test
97  + t2004: drop unnecessary write-tree/read-tree
98  + t2004: modernize style
100  "git checkout-index --temp=$target $path" did not work correctly
101  for paths outside the current subdirectory in the project.
104 * es/squelch-openssl-warnings-on-macosx (2014-12-18) 1 commit
105   (merged to 'next' on 2014-12-23 at e88cf6a)
106  + git-compat-util: suppress unavoidable Apple-specific deprecation warnings
108  Squelch useless compiler warnings on Mac OS X.
111 * jc/checkout-local-track-report (2014-10-14) 1 commit
112   (merged to 'next' on 2014-12-15 at e91a7df)
113  + checkout: report upstream correctly even with loosely defined branch.*.merge
115  The report from "git checkout" on a branch that builds on another
116  local branch by setting its branch.*.merge to branch name (not a
117  full refname) incorrectly said that the upstream is gone.
120 * jc/clone-borrow (2014-10-15) 1 commit
121   (merged to 'next' on 2014-12-15 at 08fdf77)
122  + clone: --dissociate option to mark that reference is only temporary
124  Allow "git clone --reference" to be used more safely.
127 * jc/diff-b-m (2014-10-23) 1 commit
128   (merged to 'next' on 2014-12-15 at 59c6636)
129  + diff -B -M: fix output for "copy and then rewrite" case
131  Fix long-standing bug in "diff -B -M" output.
134 * jc/merge-bases (2014-10-30) 2 commits
135   (merged to 'next' on 2014-12-15 at cac279e)
136  + get_merge_bases(): always clean-up object flags
137  + bisect: clean flags after checking merge bases
139  The get_merge_bases*() API was easy to misuse by careless
140  copy&paste coders, leaving object flags tainted in the commits that
141  needed to be traversed.
144 * jc/strbuf-add-lines-avoid-sp-ht-sequence (2014-10-27) 1 commit
145   (merged to 'next' on 2014-12-15 at b499889)
146  + strbuf_add_commented_lines(): avoid SP-HT sequence in commented lines
148  The commented output used to blindly add a SP before the payload
149  line, resulting in "# \t<indented text>\n" when the payload began
150  with a HT.  Instead, produce "#\t<indented text>\n".
153 * jh/pre-push-sample-no-custom-ifs (2014-12-22) 1 commit
154   (merged to 'next' on 2014-12-29 at c516021)
155  + pre-push.sample: remove unnecessary and misleading IFS=' '
157  The sample pre-push hook used customized IFS=' ' for no good reason.
160 * jk/add-i-read-error (2014-12-15) 1 commit
161   (merged to 'next' on 2014-12-23 at 9b76001)
162  + add--interactive: leave main loop on read error
164  "git add -i" did not notice when the interactive command input
165  stream went away and kept asking.
168 * jk/approxidate-avoid-y-d-m-over-future-dates (2014-11-13) 2 commits
169   (merged to 'next' on 2014-12-15 at 397e986)
170  + approxidate: allow ISO-like dates far in the future
171  + pass TIME_DATE_NOW to approxidate future-check
173  Traditionally we tried to avoid interpreting date strings given by
174  the user as future dates, e.g. GIT_COMMITTER_DATE=2014-12-10 when
175  used early November 2014 was taken as "October 12, 2014" because it
176  is likely that a date in the future, December 10, is a mistake.
178  This heuristics has been loosened to allow people to express future
179  dates (most notably, --until=<date> may want to be far in the
180  future) and we no longer tiebreak by future-ness of the date when
182  (1) ISO-like format is used, and
183  (2) the string can make sense interpreted as both y-m-d and y-d-m.
185  Git may still have to use the heuristics to tiebreak between dd/mm/yy
186  and mm/dd/yy, though.
189 * lh/send-email-hide-x-mailer (2014-12-15) 2 commits
190   (merged to 'next' on 2014-12-23 at fc16c68)
191  + test/send-email: --[no-]xmailer tests
192  + send-email: add --[no-]xmailer option
194  "git send-email" normally identifies itself via X-Mailer: header
195  in the message it sends out.  A new command line flag allows the
196  header to be squelched.
199 * nd/lockfile-absolute (2014-11-03) 1 commit
200   (merged to 'next' on 2014-12-15 at 34db9af)
201  + lockfile.c: store absolute path
203  The lockfile API can get confused which file to clean up when the
204  process moved the $cwd after creating a lockfile.
207 * pd/completion-filenames-fix (2014-12-15) 1 commit
208   (merged to 'next' on 2014-12-23 at e2b10ab)
209  + Update documentation occurrences of filename .sh
211  The top-of-the-file instruction for completion scripts (in contrib/)
212  did not name the files correctly.
215 * rd/send-email-2047-fix (2014-12-15) 2 commits
216   (merged to 'next' on 2014-12-23 at 2b101ce)
217  + send-email: handle adjacent RFC 2047-encoded words properly
218  + send-email: align RFC 2047 decoding more closely with the spec
220  "git send-email" did not handle RFC 2047 encoded headers quite
221  right.
224 * rs/plug-strbuf-leak-in-lock-ref (2014-12-29) 1 commit
225   (merged to 'next' on 2015-01-07 at 4d4a600)
226  + refs: plug strbuf leak in lock_ref_sha1_basic()
229 * rs/plug-strbuf-leak-in-merge (2014-12-29) 1 commit
230   (merged to 'next' on 2015-01-07 at 2cb8cea)
231  + merge: release strbuf after use in suggest_conflicts()
234 * rs/simplify-parsing-commit-tree-S (2014-12-29) 1 commit
235   (merged to 'next' on 2015-01-07 at 51446e0)
236  + commit-tree: simplify parsing of option -S using skip_prefix()
239 * rs/simplify-transport-get (2014-12-29) 1 commit
240   (merged to 'next' on 2015-01-07 at cd27fc8)
241  + transport: simplify duplicating a substring in transport_get() using xmemdupz()
244 * sb/dco-indentation-fix (2014-12-22) 1 commit
245   (merged to 'next' on 2014-12-23 at c865690)
246  + Documentation/SubmittingPatches: unify whitespace/tabs for the DCO
249 * sb/doc-submitting-patches-keep-notes (2015-01-07) 1 commit
250   (merged to 'next' on 2015-01-07 at c362440)
251  + SubmittingPatches: explain rationale for using --notes with format-patch
254 * sb/t5400-remove-unused (2014-12-16) 1 commit
255   (merged to 'next' on 2014-12-23 at a992011)
256  + t5400: remove dead code
259 * tf/prompt-preserve-exit-status (2014-12-22) 1 commit
260   (merged to 'next' on 2014-12-23 at dfcd89f)
261  + git-prompt: preserve value of $? inside shell prompt
263  Using the exit status of the last command in the prompt, e.g.
264  PS1='$(__git_ps1) $? ', did not work well because the helper
265  function stomped on the exit status.
267 --------------------------------------------------
268 [New Topics]
270 * lf/blame-commit-label (2015-01-12) 1 commit
271  . blame.c: fix garbled error message
273  Needs fixing.
276 * aw/doc-smtp-ssl-cert-path (2015-01-07) 1 commit
277   (merged to 'next' on 2015-01-12 at 61d0b22)
278  + correct smtp-ssl-cert-path description
280  A long overdue documentation update to match an age-old code
281  update.
283  Will merge to 'master'.
286 * mm/complete-rebase-autostash (2015-01-07) 1 commit
287   (merged to 'next' on 2015-01-12 at edcdead)
288  + git-completion: add --autostash for 'git rebase'
290  Will merge to 'master'.
293 * rh/hide-prompt-in-ignored-directory (2015-01-07) 2 commits
294   (merged to 'next' on 2015-01-12 at 9aed017)
295  + git-prompt.sh: allow to hide prompt for ignored pwd
296  + git-prompt.sh: if pc mode, immediately set PS1 to a plain prompt
298  Will merge to 'master'.
301 * bc/http-fallback-to-password-after-krb-fails (2015-01-07) 1 commit
302   (merged to 'next' on 2015-01-12 at 4c67038)
303  + remote-curl: fall back to Basic auth if Negotiate fails
305  After attempting and failing a password-less authentication
306  (e.g. kerberos), libcURL refuses to fall back to password based
307  Basic authentication without a bit of help/encouragement.
309  Will cook in 'next'.
312 * bp/diff-relative-config (2015-01-07) 2 commits
313  - diff: teach diff.relative to give default to --relative=<value>
314  - diff: teach --no-relative to override earlier --relative
317 * dk/format-patch-ignore-diff-submodule (2015-01-07) 2 commits
318   (merged to 'next' on 2015-01-12 at 6b4605b)
319  + format-patch: ignore diff.submodule setting
320  + t4255: test am submodule with diff.submodule
322  Setting diff.submodule to 'log' made "git format-patch" produce
323  broken patches.
325  Will cook in 'next'.
328 * nd/attr-optim (2014-12-29) 3 commits
329  - attr: avoid heavy work when we know the specified attr is not defined
330  - attr: do not attempt to expand when we know it's not a macro
331  - attr.c: rename arg name attr_nr to avoid shadowing the global one
334 * ak/doc-add-v-n-options (2015-01-09) 1 commit
335   (merged to 'next' on 2015-01-12 at 0888edf)
336  + Documentation: list long options for -v and -n
338  Will merge to 'master'.
341 * ak/fewer-includes (2015-01-09) 2 commits
342   (merged to 'next' on 2015-01-12 at d425e96)
343  + cat-file: remove unused includes
344  + git.c: remove unnecessary #includes
346  Will merge to 'master'.
349 * ak/show-branch-usage-string (2015-01-08) 1 commit
350   (merged to 'next' on 2015-01-12 at 3a0de03)
351  + show-branch: line-wrap show-branch usage
353  Will merge to 'master'.
356 * cj/log-invert-grep (2015-01-12) 1 commit
357   (merged to 'next' on 2015-01-12 at 4589ca2)
358  + log: teach --invert-grep option
360  Will cook in 'next'.
363 * km/gettext-n (2015-01-12) 1 commit
364   (merged to 'next' on 2015-01-12 at 0cbbf4a)
365  + gettext.h: add parentheses around N_ expansion if supported
367  Will cook in 'next'.
370 * rh/autoconf-rhel3 (2015-01-09) 3 commits
371   (merged to 'next' on 2015-01-12 at 57f125c)
372  + configure.ac: check for HMAC_CTX_cleanup
373  + configure.ac: check for clock_gettime and CLOCK_MONOTONIC
374  + configure.ac: check 'tv_nsec' field in 'struct stat'
376  Build update for older RHEL.
378  Will merge to 'master'.
379 --------------------------------------------------
380 [Stalled]
382 * jn/doc-api-errors (2014-12-04) 1 commit
383  - doc: document error handling functions and conventions
385  For discussion.
388 * ye/http-accept-language (2014-12-22) 1 commit
389  - http: Add Accept-Language header if possible
391  Expecting a reroll ($gmane/261810).
394 * jk/strbuf-doc-to-header (2014-12-12) 4 commits
395  - strbuf.h: reorganize api function grouping headers
396  - strbuf.h: format asciidoc code blocks as 4-space indent
397  - strbuf.h: drop asciidoc list formatting from API docs
398  - strbuf: migrate api-strbuf.txt documentation to strbuf.h
400  Resolve the "doc vs header" to favor the latter.
402  Expecting to be rerolled.
405 * pw/remote-set-url-fetch (2014-11-26) 1 commit
406  - remote: add --fetch and --both options to set-url
408  Expecting a reroll.
411 * ms/submodule-update-config-doc (2014-11-03) 1 commit
412  - submodule: clarify documentation for update subcommand
414  Needs a reroll ($gmane/259037).
417 * je/quiltimport-no-fuzz (2014-10-21) 2 commits
418  - git-quiltimport: flip the default not to allow fuzz
419  - git-quiltimport.sh: allow declining fuzz with --exact option
421  "quiltimport" drove "git apply" always with -C1 option to reduce
422  context of the patch in order to give more chance to somewhat stale
423  patches to apply.  Add an "--exact" option to disable, and also
424  "-C$n" option to customize this behaviour.  The top patch
425  optionally flips the default to "--exact".
427  Tired of waiting for an Ack; will discard.
430 * tr/remerge-diff (2014-11-10) 9 commits
431  - t4213: avoid "|" in sed regexp
432  - log --remerge-diff: show what the conflict resolution changed
433  - name-hash: allow dir hashing even when !ignore_case
434  - merge-recursive: allow storing conflict hunks in index
435  - merge_diff_mode: fold all merge diff variants into an enum
436  - combine-diff: do not pass revs->dense_combined_merges redundantly
437  - merge-recursive: -Xindex-only to leave worktree unchanged
438  - merge-recursive: internal flag to avoid touching the worktree
439  - merge-recursive: remove dead conditional in update_stages()
441  "log -p" output learns a new way to let users inspect a merge
442  commit by showing the differences between the automerged result
443  with conflicts the person who recorded the merge would have seen
444  and the final conflict resolution that was recorded in the merge.
446  Waiting for a reroll ($gmane/256591).
449 * hv/submodule-config (2014-11-11) 4 commits
450  - do not die on error of parsing fetchrecursesubmodules option
451  - use new config API for worktree configurations of submodules
452  - extract functions for submodule config set and lookup
453  - implement submodule config cache for lookup of submodule names
455  Kicked back to 'pu' per request ($gmane/255610).
458 * ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
459  - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
460  - git-add--interactive: Preserve diff heading when splitting hunks
462  Waiting for a reroll.
465 * jn/gitweb-utf8-in-links (2014-05-27) 1 commit
466  - gitweb: Harden UTF-8 handling in generated links
468  $gmane/250758?
471 * ss/userdiff-update-csharp-java (2014-06-02) 2 commits
472  - userdiff: support Java try keyword
473  - userdiff: support C# async methods and correct C# keywords
475  Reviews sent; waiting for a response.
478 * bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
479  - git-rebase: print name of rev when using shorthand
481  Teach "git rebase -" to report the concrete name of the branch
482  (i.e. the previous one).
484  But it stops short and does not do the same for "git rebase @{-1}".
485  Expecting a reroll.
488 * rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
489  - merge: drop unused arg from abort_commit method signature
490  - merge: make prepare_to_commit responsible for write_merge_state
491  - t7505: ensure cleanup after hook blocks merge
492  - t7505: add missing &&
494  Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
495  run during "git merge".  The log message stresses too much on one
496  hook, prepare-commit-msg, but it would equally apply to other hooks
497  like post-merge, I think.
499  Waiting for a reroll.
502 * jc/graph-post-root-gap (2013-12-30) 3 commits
503  - WIP: document what we want at the end
504  - graph: remove unused code a bit
505  - graph: stuff the current commit into graph->columns[]
507  This was primarily a RFH ($gmane/239580).
510 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
511  - perf-lib: add test_perf_cleanup target
512  - perf-lib: split starting the test from the execution
514  Add test_perf_cleanup shell function to the perf suite, that allows
515  the script writers to define a test with a clean-up action.
517  Will hold.
520 * jc/show-branch (2014-03-24) 5 commits
521  - show-branch: use commit slab to represent bitflags of arbitrary width
522  - show-branch.c: remove "all_mask"
523  - show-branch.c: abstract out "flags" operation
524  - show-branch.c: lift all_mask/all_revs to a global static
525  - show-branch.c: update comment style
527  Waiting for the final step to lift the hard-limit before sending it out.
529 --------------------------------------------------
530 [Cooking]
532 * jn/rerere-fail-on-auto-update-failure (2015-01-08) 1 commit
533   (merged to 'next' on 2015-01-12 at 313c449)
534  + rerere: error out on autoupdate failure
536  "git rerere" (invoked internally from many mergy operations) did
537  not correctly signal errors when told to update the working tree
538  files and failed to do so for whatever reason.
540  Will cook in 'next'.
543 * jk/prune-packed-server-info (2015-01-06) 2 commits
544   (merged to 'next' on 2015-01-12 at 5e789e2)
545  + update-server-info: create info/* with mode 0666
546  + t1301: set umask in reflog sharedrepository=group test
548  Fix recent breakage in Git 2.2 that started creating info/refs and
549  objects/info/packs files with permission bits tighter than user's
550  umask.
552  Will merge to 'master'.
555 * km/imap-send-libcurl-options (2015-01-06) 2 commits
556   (merged to 'next' on 2015-01-12 at 5bb8802)
557  + imap-send.c: set CURLOPT_USE_SSL to CURLUSESSL_TRY
558  + imap-send.c: support GIT_CURL_VERBOSE
560  Now imap-send learned to talk to the server using cURL library,
561  allow the same GIT_CURL_VERBOSE environment variable to control the
562  verbosity of the chattering.
564  Will merge to 'master'.
567 * km/log-usage-string-i18n (2015-01-06) 1 commit
568   (merged to 'next' on 2015-01-12 at 437bf8a)
569  + log.c: fix translation markings
571  Will merge to 'master'.
574 * rc/for-each-ref-tracking (2015-01-12) 1 commit
575   (merged to 'next' on 2015-01-12 at 94eef27)
576  + for-each-ref: always check stat_tracking_info()'s return value
578  Will merge to 'master'.
581 * rh/test-color-avoid-terminfo-in-original-home (2015-01-07) 2 commits
582   (merged to 'next' on 2015-01-12 at eac0b93)
583  + test-lib.sh: do tests for color support after changing HOME
584  + test-lib: use 'test ...' instead of '[ ... ]'
586  We try to see if "tput" gives a useful result before switching TERM
587  to dumb and moving HOME to point to our fake location for stability
588  of the tests, and then use the command when coloring the output
589  from the tests, but there is no guarantee "tput" works after
590  switching HOME.
592  Will merge to 'master'.
595 * sp/subtree-doc (2015-01-06) 1 commit
596   (merged to 'next' on 2015-01-12 at 7c488d6)
597  + subtree: fix AsciiDoc list item continuation
599  Will merge to 'master'.
602 * js/remote-add-with-insteadof (2014-12-23) 2 commits
603   (merged to 'next' on 2015-01-12 at ccff14f)
604  + Add a regression test for 'git remote add <existing> <same-url>'
605  + git remote: allow adding remotes agreeing with url.<...>.insteadOf
607  "git remote add $name $URL" is now allowed when "url.$URL.insteadOf"
608  is already defined.
610  Will merge to 'master'.
613 * sb/atomic-push (2015-01-07) 10 commits
614   (merged to 'next' on 2015-01-12 at 411c6a6)
615  + t5543-atomic-push.sh: add basic tests for atomic pushes
616  + push.c: add an --atomic argument
617  + send-pack.c: add --atomic command line argument
618  + send-pack: rename ref_update_to_be_sent to check_to_send_update
619  + receive-pack.c: negotiate atomic push support
620  + receive-pack.c: add execute_commands_atomic function
621  + receive-pack.c: move transaction handling in a central place
622  + receive-pack.c: move iterating over all commands outside execute_commands
623  + receive-pack.c: die instead of error in case of possible future bug
624  + receive-pack.c: shorten the execute_commands loop over all commands
625  (this branch uses mh/reflog-expire.)
627  "git push" has been taught a "--atomic" option that makes push to
628  update more than one ref an "all-or-none" affair.
630  Will cook in 'next'.
633 * mh/reflog-expire (2014-12-22) 24 commits
634   (merged to 'next' on 2015-01-12 at 12a7dff)
635  + refs.c: let fprintf handle the formatting
636  + refs.c: don't expose the internal struct ref_lock in the header file
637  + lock_any_ref_for_update(): inline function
638  + refs.c: remove unlock_ref/close_ref/commit_ref from the refs api
639  + reflog_expire(): new function in the reference API
640  + expire_reflog(): treat the policy callback data as opaque
641  + Move newlog and last_kept_sha1 to "struct expire_reflog_cb"
642  + expire_reflog(): move rewrite to flags argument
643  + expire_reflog(): move verbose to flags argument
644  + expire_reflog(): pass flags through to expire_reflog_ent()
645  + struct expire_reflog_cb: a new callback data type
646  + Rename expire_reflog_cb to expire_reflog_policy_cb
647  + expire_reflog(): move updateref to flags argument
648  + expire_reflog(): move dry_run to flags argument
649  + expire_reflog(): add a "flags" argument
650  + expire_reflog(): extract two policy-related functions
651  + Extract function should_expire_reflog_ent()
652  + expire_reflog(): use a lock_file for rewriting the reflog file
653  + expire_reflog(): return early if the reference has no reflog
654  + expire_reflog(): rename "ref" parameter to "refname"
655  + expire_reflog(): it's not an each_ref_fn anymore
656  + refs.c: add a function to append a reflog entry to a fd
657  + refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
658  + refs.c: make ref_transaction_create a wrapper for ref_transaction_update
659  (this branch is used by sb/atomic-push.)
661  Restructure "reflog expire" to fit the reflogs better with the
662  recently updated ref API.
664  Looked reasonable (except that some shortlog entries stood out like
665  a sore thumb).
667  Will cook in 'next'.
670 * po/doc-core-ignorestat (2015-01-12) 2 commits
671   (merged to 'next' on 2015-01-12 at c660a71)
672  + doc: core.ignoreStat update, and clarify the --assume-unchanged effect
673   (merged to 'next' on 2014-12-23 at d2b3e84)
674  + doc: core.ignoreStat clarify the --assume-unchanged effect
676  Will merge to 'master'.
679 * jc/push-to-checkout (2015-01-08) 2 commits
680   (merged to 'next' on 2015-01-12 at e64df63)
681  + receive-pack: support push-to-checkout hook
682  + receive-pack: refactor updateInstead codepath
684  Extending the js/push-to-deploy topic, the behaviour of "git push"
685  when updating the working tree and the index with an update to the
686  branch that is checked out can be tweaked by push-to-checkout hook.
688  Will cook in 'next'.
691 * nd/list-files (2014-12-01) 19 commits
692  - list-files: -M aka diff-cached
693  - list-files -F: show submodules with the new indicator '&'
694  - list-files: add -F/--classify
695  - list-files: show directories as well as files
696  - list-files: do not show duplicate cached entries
697  - list-files: sort output and remove duplicates
698  - list-files: add -t back
699  - list-files: add -1 short for --no-column
700  - list-files: add -R/--recursive short for --max-depth=-1
701  - list-files: -u does not imply showing stages
702  - list-files: a user friendly version of ls-files and more
703  - ls-files: support --max-depth
704  - ls-files: add --column
705  - ls-files: add --color to highlight file names
706  - ls-files: buffer full item in strbuf before printing
707  - ls_colors.c: highlight submodules like directories
708  - ls_colors.c: add a function to color a file name
709  - ls_colors.c: parse color.ls.* from config file
710  - ls_colors.c: add $LS_COLORS parsing code
712  A new "git list-files" Porcelain command, "ls-files" with bells and
713  whistles.
715  Comments?
718 * nd/multiple-work-trees (2015-01-07) 37 commits
719  - git-checkout.txt: a note about multiple checkout support for submodules
720  - checkout: add --ignore-other-wortrees
721  - checkout: pass whole struct to parse_branchname_arg instead of individual flags
722  - git-common-dir: make "modules/" per-working-directory directory
723  - checkout: do not fail if target is an empty directory
724  - t2025: add a test to make sure grafts is working from a linked checkout
725  - checkout: don't require a work tree when checking out into a new one
726  - git_path(): keep "info/sparse-checkout" per work-tree
727  - count-objects: report unused files in $GIT_DIR/worktrees/...
728  - gc: support prune --worktrees
729  - gc: factor out gc.pruneexpire parsing code
730  - gc: style change -- no SP before closing parenthesis
731  - checkout: clean up half-prepared directories in --to mode
732  - checkout: reject if the branch is already checked out elsewhere
733  - prune: strategies for linked checkouts
734  - checkout: support checking out into a new working directory
735  - use new wrapper write_file() for simple file writing
736  - wrapper.c: wrapper to open a file, fprintf then close
737  - setup.c: support multi-checkout repo setup
738  - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
739  - setup.c: convert check_repository_format_gently to use strbuf
740  - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
741  - setup.c: convert is_git_directory() to use strbuf
742  - git-stash: avoid hardcoding $GIT_DIR/logs/....
743  - *.sh: avoid hardcoding $GIT_DIR/hooks/...
744  - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
745  - $GIT_COMMON_DIR: a new environment variable
746  - commit: use SEQ_DIR instead of hardcoding "sequencer"
747  - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
748  - reflog: avoid constructing .lock path with git_path
749  - *.sh: respect $GIT_INDEX_FILE
750  - git_path(): be aware of file relocation in $GIT_DIR
751  - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
752  - path.c: rename vsnpath() to do_git_path()
753  - git_snpath(): retire and replace with strbuf_git_path()
754  - path.c: make get_pathname() call sites return const char *
755  - path.c: make get_pathname() return strbuf instead of static buffer
757  A replacement for contrib/workdir/git-new-workdir that does not
758  rely on symbolic links and make sharing of objects and refs safer
759  by making the borrowee and borrowers aware of each other.
762 * nd/untracked-cache (2015-01-06) 24 commits
763  - fixup! untracked cache: load from UNTR index extension
764  - untracked cache: guard and disable on system changes
765  - mingw32: add uname()
766  - t7063: tests for untracked cache
767  - update-index: test the system before enabling untracked cache
768  - update-index: manually enable or disable untracked cache
769  - status: enable untracked cache
770  - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
771  - untracked cache: mark index dirty if untracked cache is updated
772  - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
773  - untracked cache: avoid racy timestamps
774  - read-cache.c: split racy stat test to a separate function
775  - untracked cache: invalidate at index addition or removal
776  - untracked cache: load from UNTR index extension
777  - untracked cache: save to an index extension
778  - ewah: add convenient wrapper ewah_serialize_strbuf()
779  - untracked cache: don't open non-existent .gitignore
780  - untracked cache: mark what dirs should be recursed/saved
781  - untracked cache: record/validate dir mtime and reuse cached output
782  - untracked cache: make a wrapper around {open,read,close}dir()
783  - untracked cache: invalidate dirs recursively if .gitignore changes
784  - untracked cache: initial untracked cache validation
785  - untracked cache: record .gitignore information and dir hierarchy
786  - dir.c: optionally compute sha-1 of a .gitignore file
788  Comments?
790 --------------------------------------------------
791 [Discarded]
793 * jc/push-cert-hmac-optim (2014-09-25) 2 commits
794  . receive-pack: truncate hmac early and convert only necessary bytes
795  . sha1_to_hex: split out "hex-format n bytes" helper and use it
797  This is "we could do this if we wanted to", not "we measured and it
798  improves performance critical codepath".
801 * mt/patch-id-stable (2014-06-10) 1 commit
802  . patch-id: change default to stable
804  Nobody seems to be jumping up & down requesting this last step,
805  which makes the result somewhat backward incompatible.
808 * sb/copy-fd-errno (2014-11-17) 1 commit
809  . copy.c: make copy_fd preserve meaningful errno
812 * cj/grep-none-match (2015-01-06) 1 commit
813  . git-log: added --none-match option
815  "git log --none-match --grep=WIP" will show only commits that are
816  not marked as WIP.
818  cj/log-invert-grep replaces this.