What's cooking (2015/05 #02)
[git.git] / whats-cooking.txt
blob79aceeb1bb8af76fbd86de7686d06e72cdbbd3e1
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (May 2015, #02; Wed, 6)
4 X-master-at: 8440f74997cf7958c7e8ec853f590828085049b8
5 X-next-at: 8e1974edaeee9161b10b8f31a7a86892259e9768
7 What's cooking in git.git (May 2015, #02; Wed, 6)
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 first batch for the next feature release (tentatively called 2.5)
15 has been merged to 'master'.  They mostly are fixes that are meant
16 for the first maintenance release for 2.4.x track.  The tip of 'next'
17 has been rewound and rebuilt.
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 * bc/object-id (2015-03-13) 10 commits
28   (merged to 'next' on 2015-05-05 at 975002f)
29  + apply: convert threeway_stage to object_id
30  + patch-id: convert to use struct object_id
31  + commit: convert parts to struct object_id
32  + diff: convert struct combine_diff_path to object_id
33  + bulk-checkin.c: convert to use struct object_id
34  + zip: use GIT_SHA1_HEXSZ for trailers
35  + archive.c: convert to use struct object_id
36  + bisect.c: convert leaf functions to use struct object_id
37  + define utility functions for object IDs
38  + define a structure for object IDs
40  Originally merged to 'next' on 2015-03-24
42  Identify parts of the code that knows that we use SHA-1 hash to
43  name our objects too much, and use (1) symbolic constants instead
44  of hardcoded 20 as byte count and/or (2) use struct object_id
45  instead of unsigned char [20] for object names.
48 * cn/bom-in-gitignore (2015-04-16) 5 commits
49   (merged to 'next' on 2015-05-05 at 8aa8b91)
50  + attr: skip UTF8 BOM at the beginning of the input file
51  + config: use utf8_bom[] from utf.[ch] in git_parse_source()
52  + utf8-bom: introduce skip_utf8_bom() helper
53  + add_excludes_from_file: clarify the bom skipping logic
54  + dir: allow a BOM at the beginning of exclude files
56  Originally merged to 'next' on 2015-04-21
58  Teach the codepaths that read .gitignore and .gitattributes files
59  that these files encoded in UTF-8 may have UTF-8 BOM marker at the
60  beginning; this makes it in line with what we do for configuration
61  files already.
64 * ep/fix-test-lib-functions-report (2015-04-16) 1 commit
65   (merged to 'next' on 2015-05-05 at e49e876)
66  + test-lib-functions.sh: fix the second argument to some helper functions
68  Originally merged to 'next' on 2015-04-21
71 * jc/diff-no-index-d-f (2015-03-26) 2 commits
72   (merged to 'next' on 2015-05-05 at 61538ca)
73  + diff-no-index: align D/F handling with that of normal Git
74  + diff-no-index: DWIM "diff D F" into "diff D/F F"
76  Originally merged to 'next' on 2015-03-27
78  The usual "git diff" when seeing a file turning into a directory
79  showed a patchset to remove the file and create all files in the
80  directory, but "git diff --no-index" simply refused to work.  Also,
81  when asked to compare a file and a directory, imitate POSIX "diff"
82  and compare the file with the file with the same name in the
83  directory, instead of refusing to run.
86 * jc/epochtime-wo-tz (2015-04-15) 2 commits
87   (merged to 'next' on 2015-05-05 at 3d10988)
88  + parse_date_basic(): let the system handle DST conversion
89  + parse_date_basic(): return early when given a bogus timestamp
91  Originally merged to 'next' on 2015-04-21
93  "git commit --date=now" or anything that relies on approxidate lost
94  the daylight-saving-time offset.
97 * jk/init-core-worktree-at-root (2015-04-02) 1 commit
98   (merged to 'next' on 2015-05-05 at 65c7453)
99  + init: don't set core.worktree when initializing /.git
101  Originally merged to 'next' on 2015-04-08
103  We avoid setting core.worktree when the repository location is the
104  ".git" directory directly at the top level of the working tree, but
105  the code misdetected the case in which the working tree is at the
106  root level of the filesystem (which arguably is a silly thing to
107  do, but still valid).
110 * jk/prune-mtime (2015-04-20) 3 commits
111   (merged to 'next' on 2015-05-05 at 6c0a311)
112  + sha1_file: only freshen packs once per run
113  + sha1_file: freshen pack objects before loose
114  + reachable: only mark local objects as recent
116  Originally merged to 'next' on 2015-04-21
118  Access to objects in repositories that borrow from another one on a
119  slow NFS server unnecessarily got more expensive due to recent code
120  becoming more cautious in a naive way not to lose objects to pruning.
123 * jk/type-from-string-gently (2015-04-17) 1 commit
124   (merged to 'next' on 2015-05-05 at 73b5c2a)
125  + type_from_string_gently: make sure length matches
127  Originally merged to 'next' on 2015-04-20
129  "git cat-file bl $blob" failed to barf even though there is no
130  object type that is "bl".
133 * ld/p4-filetype-detection (2015-04-04) 3 commits
134   (merged to 'next' on 2015-05-05 at ce95858)
135  + git-p4: fix filetype detection on files opened exclusively
136  + git-p4: small fix for locked-file-move-test
137  + git-p4: fix small bug in locked test scripts
139  Originally merged to 'next' on 2015-04-08
142 * mh/show-branch-topic (2015-03-31) 1 commit
143   (merged to 'next' on 2015-05-05 at 43c6237)
144  + show-branch: show all local heads when only giving one rev along --topics
146  Originally merged to 'next' on 2015-04-08
148  "git show-branch --topics HEAD" (with no other arguments) did not
149  do anything interesting.  Instead, contrast the given revision
150  against all the local branches by default.
153 * mm/usage-log-l-can-take-regex (2015-04-20) 2 commits
154   (merged to 'next' on 2015-05-05 at dbe590c)
155  + log -L: improve error message on malformed argument
156  + Documentation: change -L:<regex> to -L:<funcname>
158  Originally merged to 'next' on 2015-04-21
160  Documentation fix.
163 * nd/t1509-chroot-test (2015-04-18) 1 commit
164   (merged to 'next' on 2015-05-05 at e93f60e)
165  + t1509: update prepare script to be able to run t1509 in chroot again
167  Originally merged to 'next' on 2015-04-21
169  Correct test bitrot.
172 * oh/fix-config-default-user-name-section (2015-04-17) 1 commit
173   (merged to 'next' on 2015-05-05 at b4778c2)
174  + config: fix settings in default_user_config template
176  Originally merged to 'next' on 2015-04-20
178  The default $HOME/.gitconfig file created upon "git config --global"
179  that edits it had incorrectly spelled user.name and user.email
180  entries in it.
183 * sb/line-log-plug-pairdiff-leak (2015-03-30) 1 commit
184   (merged to 'next' on 2015-05-05 at 3d8e735)
185  + line-log.c: fix a memleak
187  Originally merged to 'next' on 2015-04-08
190 * sb/test-bitmap-free-at-end (2015-04-12) 1 commit
191   (merged to 'next' on 2015-05-05 at 2b83c75)
192  + pack-bitmap.c: fix a memleak
194  Originally merged to 'next' on 2015-04-14
197 * ts/checkout-advice-plural (2015-04-02) 1 commit
198   (merged to 'next' on 2015-05-05 at 546f824)
199  + checkout: call a single commit "it" intead of "them"
201  Originally merged to 'next' on 2015-04-08
203 --------------------------------------------------
204 [New Topics]
206 * jc/daemon-no-ipv6-for-2.4.1 (2015-05-05) 1 commit
207   (merged to 'next' on 2015-05-05 at 1eb279f)
208  + daemon: unbreak NO_IPV6 build regression
210  "git daemon" fails to build from the source under NO_IPV6
211  configuration (regression in 2.4).
213  Will merge to 'master' in the second batch.
216 * sb/prefix-path-free-results (2015-05-05) 1 commit
217  - prefix_path(): unconditionally free results in the callers
219  Code clean-up (not a leak-fix).
221  Will merge to 'next'.
224 * sg/completion-omit-credential-helpers (2015-05-05) 2 commits
225  - SQUASH???
226  - completion: remove credential helpers from porcelain commands
228  The Git subcommand completion (in contrib/) listed credential
229  helpers among candidates, which is not something the end user would
230  invoke interatively.
232  Will merge to 'next' after squashing the fix in.
235 * jk/skip-http-tests-under-no-curl (2015-05-06) 1 commit
236  - t/lib-httpd.sh: skip tests if NO_CURL is defined
238  Test clean-up.
240  Will merge to 'next'.
242 --------------------------------------------------
243 [Stalled]
245 * kk/log-merges-config (2015-04-21) 5 commits
246  - bash-completion: add support for git-log --merges= and log.merges
247  - t4202-log: add tests for --merges=
248  - Documentation: add git-log --merges= option and log.merges config. var
249  - log: honor log.merges= option
250  - revision: add --merges={show|only|hide} option
252  "git log" (but not other commands in the "log" family) learned to
253  pay attention to the log.merges configuration variable that can be
254  set to "show" (the normal behaviour), "only" (hide non-merge
255  commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
256  can be used to override the setting from the command line.
258  The documentation may need to be updated once more ($gmane/267250).
259  Waiting for a reroll.
262 * mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
263  - t/lib-git-svn: check same httpd module dirs as lib-httpd
264  - t/lib-httpd: load mod_unixd
266  This is the first two commits in a three-patch series $gmane/266962
267  Will be rerolled.
268  with updated log message ($gmane/268061).
271 * mh/numparse (2015-03-19) 14 commits
272  - diff_opt_parse(): use convert_i() when handling --abbrev=<num>
273  - diff_opt_parse(): use convert_i() when handling "-l<num>"
274  - opt_arg(): simplify pointer handling
275  - opt_arg(): report errors parsing option values
276  - opt_arg(): use convert_i() in implementation
277  - opt_arg(): val is always non-NULL
278  - builtin_diff(): detect errors when parsing --unified argument
279  - handle_revision_opt(): use convert_ui() when handling "--abbrev="
280  - strtoul_ui(), strtol_i(): remove functions
281  - handle_revision_opt(): use convert_i() when handling "-<digit>"
282  - handle_revision_opt(): use skip_prefix() in many places
283  - write_subdirectory(): use convert_ui() for parsing mode
284  - cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
285  - numparse: new module for parsing integral numbers
287  Many codepaths use unchecked use of strtol() and friends (or even
288  worse, atoi()).  Introduce a set of wrappers that try to be more
289  careful.
291  Will be rerolled.
292  ($gmane/268058).
295 * tf/gitweb-project-listing (2015-03-19) 5 commits
296  - gitweb: make category headings into links when they are directories
297  - gitweb: optionally set project category from its pathname
298  - gitweb: add a link under the search box to clear a project filter
299  - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
300  - gitweb: fix typo in man page
302  Update gitweb to make it more pleasant to deal with a hierarchical
303  forest of repositories.
305  Any comments from those who use or have their own code in Gitweb?
308 * jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
309  - "-" and "@{-1}" on various programs
311  Lose special case code to make a lone dash "-" mean the previous
312  branch aka "@{-1}" from a handful subcommands, and instead support
313  the notation throughout the system by reimplementing it at the
314  revisions layer.
316  Needs tests, documentation updates, etc.  Also does only a half-way
317  job dealing with range notation, which needs to be fixed before the
318  series goes anywhere.
321 * nd/list-files (2015-02-09) 21 commits
322  - t3080: tests for git-list-files
323  - list-files: -M aka diff-cached
324  - list-files -F: show submodules with the new indicator '&'
325  - list-files: add -F/--classify
326  - list-files: show directories as well as files
327  - list-files: do not show duplicate cached entries
328  - list-files: sort output and remove duplicates
329  - list-files: add -t back
330  - list-files: add -1 short for --no-column
331  - list-files: add -R/--recursive short for --max-depth=-1
332  - list-files: -u does not imply showing stages
333  - list-files: make alias 'ls' default to 'list-files'
334  - list-files: a user friendly version of ls-files and more
335  - ls-files: support --max-depth
336  - ls-files: add --column
337  - ls-files: add --color to highlight file names
338  - ls-files: buffer full item in strbuf before printing
339  - ls_colors.c: highlight submodules like directories
340  - ls_colors.c: add a function to color a file name
341  - ls_colors.c: parse color.ls.* from config file
342  - ls_colors.c: add $LS_COLORS parsing code
344  A new "git list-files" Porcelain command, "ls-files" with bells and
345  whistles.
347  Reroll to base on wt-status work ($gmane/265142) has seen some
348  positive discussions.
350  Waiting for a further polished reroll ($gmane/265534).
353 * js/fsck-opt (2015-01-21) 19 commits
354  - fsck: support ignoring objects in `git fsck` via fsck.skiplist
355  - fsck: git receive-pack: support excluding objects from fsck'ing
356  - fsck: introduce `git fsck --quick`
357  - fsck: support demoting errors to warnings
358  - fsck: document the new receive.fsck.* options
359  - fsck: allow upgrading fsck warnings to errors
360  - fsck: optionally ignore specific fsck issues completely
361  - fsck: disallow demoting grave fsck errors to warnings
362  - fsck: add a simple test for receive.fsck.*
363  - fsck: make fsck_tag() warn-friendly
364  - fsck: handle multiple authors in commits specially
365  - fsck: make fsck_commit() warn-friendly
366  - fsck: make fsck_ident() warn-friendly
367  - fsck: report the ID of the error/warning
368  - fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
369  - fsck: offer a function to demote fsck errors to warnings
370  - fsck: provide a function to parse fsck message IDs
371  - fsck: introduce identifiers for fsck messages
372  - fsck: introduce fsck options
374  "fsck.warnings = <list of error tokens>" I suggested turned out to
375  be an unpopular choice (sorry Dscho).
377  Expecting a reroll.
380 * nd/untracked-cache (2015-03-12) 24 commits
381  - git-status.txt: advertisement for untracked cache
382  - untracked cache: guard and disable on system changes
383  - mingw32: add uname()
384  - t7063: tests for untracked cache
385  - update-index: test the system before enabling untracked cache
386  - update-index: manually enable or disable untracked cache
387  - status: enable untracked cache
388  - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
389  - untracked cache: mark index dirty if untracked cache is updated
390  - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
391  - untracked cache: avoid racy timestamps
392  - read-cache.c: split racy stat test to a separate function
393  - untracked cache: invalidate at index addition or removal
394  - untracked cache: load from UNTR index extension
395  - untracked cache: save to an index extension
396  - ewah: add convenient wrapper ewah_serialize_strbuf()
397  - untracked cache: don't open non-existent .gitignore
398  - untracked cache: mark what dirs should be recursed/saved
399  - untracked cache: record/validate dir mtime and reuse cached output
400  - untracked cache: make a wrapper around {open,read,close}dir()
401  - untracked cache: invalidate dirs recursively if .gitignore changes
402  - untracked cache: initial untracked cache validation
403  - untracked cache: record .gitignore information and dir hierarchy
404  - dir.c: optionally compute sha-1 of a .gitignore file
406  Need extra sets of eyes to review this.
409 * nd/pathspec-strip-fix (2015-04-18) 1 commit
410  - pathspec: adjust prefixlen after striping trailing slash
412  Does not quite fix ($gmane/267614).
415 * jc/diff-b-m (2015-02-23) 5 commits
416  . WIPWIP
417  . WIP: diff-b-m
418  - diffcore-rename: allow easier debugging
419  - diffcore-rename.c: add locate_rename_src()
420  - diffcore-break: allow debugging
422  "git diff -B -M" produced incorrect patch when the postimage of a
423  completely rewritten file is similar to the preimage of a removed
424  file; such a resulting file must not be expressed as a rename from
425  other place.
427  The fix in this patch is broken, unfortunately.
430 * pw/remote-set-url-fetch (2014-11-26) 1 commit
431  - remote: add --fetch and --both options to set-url
433  Expecting a reroll.
436 * tr/remerge-diff (2014-11-10) 9 commits
437  - t4213: avoid "|" in sed regexp
438  - log --remerge-diff: show what the conflict resolution changed
439  - name-hash: allow dir hashing even when !ignore_case
440  - merge-recursive: allow storing conflict hunks in index
441  - merge_diff_mode: fold all merge diff variants into an enum
442  - combine-diff: do not pass revs->dense_combined_merges redundantly
443  - merge-recursive: -Xindex-only to leave worktree unchanged
444  - merge-recursive: internal flag to avoid touching the worktree
445  - merge-recursive: remove dead conditional in update_stages()
447  "log -p" output learns a new way to let users inspect a merge
448  commit by showing the differences between the automerged result
449  with conflicts the person who recorded the merge would have seen
450  and the final conflict resolution that was recorded in the merge.
452  Waiting for a reroll ($gmane/256591).
455 * hv/submodule-config (2014-11-11) 4 commits
456  - do not die on error of parsing fetchrecursesubmodules option
457  - use new config API for worktree configurations of submodules
458  - extract functions for submodule config set and lookup
459  - implement submodule config cache for lookup of submodule names
461  Kicked back to 'pu' per request ($gmane/255610).
464 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
465  - perf-lib: add test_perf_cleanup target
466  - perf-lib: split starting the test from the execution
468  Add test_perf_cleanup shell function to the perf suite, that allows
469  the script writers to define a test with a clean-up action.
471  Will hold.
474 * jc/show-branch (2014-03-24) 5 commits
475  - show-branch: use commit slab to represent bitflags of arbitrary width
476  - show-branch.c: remove "all_mask"
477  - show-branch.c: abstract out "flags" operation
478  - show-branch.c: lift all_mask/all_revs to a global static
479  - show-branch.c: update comment style
481  Waiting for the final step to lift the hard-limit.
483 --------------------------------------------------
484 [Cooking]
486 * mh/ref-directory-file (2015-05-05) 19 commits
487  - SQUASH???
488  - reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
489  - ref_transaction_commit(): delete extra "the" from error message
490  - ref_transaction_commit(): provide better error messages
491  - rename_ref(): integrate lock_ref_sha1_basic() errors into ours
492  - lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
493  - lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
494  - verify_refname_available(): report errors via a "struct strbuf *err"
495  - verify_refname_available(): rename function
496  - refs: check for D/F conflicts among refs processed in a transaction
497  - ref_transaction_commit(): use a string_list for detecting duplicates
498  - is_refname_available(): use dirname in first loop
499  - struct nonmatching_ref_data: store a refname instead of a ref_entry
500  - report_refname_conflict(): inline function
501  - entry_matches(): inline function
502  - is_refname_available(): convert local variable "dirname" to strbuf
503  - is_refname_available(): avoid shadowing "dir" variable
504  - is_refname_available(): explain the reason for an early exit
505  - t1404: new tests of D/F conflicts within ref transactions
506  (this branch uses mh/ref-lock-avoid-running-out-of-fds.)
508  Expecting a reroll.
511 * nd/dwim-wildcards-as-pathspecs (2015-05-03) 1 commit
512  - pathspec: avoid the need of "--" when wildcard is used
514  A heuristic to help the "git <cmd> <revs> <pathspec>" command line
515  convention to catch mistyped paths is to make sure all the non-rev
516  parameters in the later part of the command line are names of the
517  files in the working tree, but that means "git grep $str -- \*.c"
518  must always be disambiguated with "--", because nobody sane will
519  create a file whose name literally is asterisk-dot-see.  Loosen the
520  heuristic to declare that with a wildcard string the user likely
521  meant to give us a pathspec.
523  Will merge to 'next'.
526 * pt/pull-tests (2015-05-03) 7 commits
527  - t5521: test --dry-run does not make any changes
528  - t5520: test --rebase failure on unborn branch with index
529  - t5520: test --rebase with multiple branches
530  - t5520: test work tree fast-forward when fetch updates head
531  - t5520: test for failure if index has unresolved entries
532  - t5520: implement tests for no merge candidates cases
533  - t5520: test pulling multiple branches into an empty repository
535  Add more test coverage to "git pull".  This conflicts slightly with
536  a new test jc/merge topic adds, but resolution is fairly trivial.
538  Expecting a reroll ($gmane/268391).
541 * sg/complete-decorate-full-not-long (2015-05-03) 1 commit
542  - completion: fix and update 'git log --decorate=' options
544  The completion for "log --decorate=" parameter value was incorrect.
546  Will merge to 'next'.
549 * sg/completion-no-redundant-all-command-list (2015-05-03) 1 commit
550  - completion: remove redundant __git_compute_all_commands() call
552  Code simplification.
554  Will merge to 'next'.
557 * jc/hash-object (2015-05-05) 4 commits
558  - write_sha1_file(): do not use a separate sha1[] array
559  - t1007: add hash-object --literally tests
560  - hash-object --literally: fix buffer overrun with extra-long object type
561  - git-hash-object.txt: document --literally option
563  "hash-object --literally" introduced in v2.2 days was not prepared
564  to take a really long object type name.
566  Will merge to 'next'.
569 * jn/clean-use-error-not-fprintf-on-stderr (2015-05-04) 1 commit
570   (merged to 'next' on 2015-05-05 at 12391f1)
571  + config: use error() instead of fprintf(stderr, ...)
573  Some error messages in "git config" were emitted without calling
574  the usual error() facility.
576  Will merge to 'master' in the second batch.
579 * jc/clone-bundle (2015-04-30) 1 commit
580  - repack: optionally create a clone.bundle
582  Still an early WIP
585 * jk/at-push-sha1 (2015-05-03) 12 commits
586  - for-each-ref: accept "%(push)" format
587  - for-each-ref: use skip_prefix instead of starts_with
588  - sha1_name: implement @{push} shorthand
589  - sha1_name: refactor interpret_upstream_mark
590  - sha1_name: refactor upstream_mark
591  - remote.c: add branch_get_push
592  - remote.c: report specific errors from branch_get_upstream
593  - remote.c: introduce branch_get_upstream helper
594  - remote.c: provide per-branch pushremote name
595  - remote.c: hoist branch.*.remote lookup out of remote_get_1
596  - remote.c: drop "remote" pointer from "struct branch"
597  - remote.c: drop default_remote_name variable
599  Introduce <branch>@{push} short-hand to denote the remote-tracking
600  branch that tracks the branch at the remote the <branch> would be
601  pushed to.
603  Expecting a reroll ($gmane/268419, etc.).
606 * jk/rebase-quiet-noop (2015-04-28) 1 commit
607   (merged to 'next' on 2015-05-05 at 82780b9)
608  + rebase: silence "git checkout" for noop rebase
610  "git rebase --quiet" was not quite quiet when there is nothing to
611  do.
613  Will merge to 'master' in the second batch.
616 * ld/p4-case-fold (2015-04-28) 1 commit
617   (merged to 'next' on 2015-05-05 at 03ecbd0)
618  + git-p4: add failing tests for case-folding p4d
620  Will merge to 'master' in the second batch.
623 * va/fix-git-p4-tests (2015-04-28) 1 commit
624   (merged to 'next' on 2015-05-05 at 795e858)
625  + git-p4: t9814: prevent --chain-lint failure
627  Will merge to 'master' in the second batch.
630 * jk/filter-branch-use-of-sed-on-incomplete-line (2015-04-29) 1 commit
631  - filter-branch: avoid passing commit message through sed
633  "filter-branch" was broken by some "sed" implementations that
634  corrupt commit log message that ends with an incomplete line.
635  Work it around by avoiding to use "sed".
637  Will merge to 'next'.
640 * ph/rebase-i-redo (2015-04-29) 1 commit
641  - rebase -i: redo tasks that die during cherry-pick
643  "git rebase -i" moved the "current" command from "todo" to "done" a
644  bit too prematurely, losing a step when a "pick" did not even start.
646  Will merge to 'next'.
649 * ep/do-not-feed-a-pointer-to-array-size (2015-05-05) 1 commit
650  - git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array
652  Catch programmer mistake to feed a pointer not an array to
653  ARRAY_SIZE() macro, by using a couple of GCC extensions.
655  Will merge to 'next'.
658 * tb/blame-resurrect-convert-to-git (2015-05-03) 1 commit
659   (merged to 'next' on 2015-05-05 at 8e1974e)
660  + blame: CRLF in the working tree and LF in the repo
662  Some time ago, "git blame" (incorrectly) lost the convert_to_git()
663  call when synthesizing a fake "tip" commit that represents the
664  state in the working tree, which broke folks who record the history
665  with LF line ending to make their project portabile across
666  platforms while terminating lines in their working tree files with
667  CRLF for their platform.
669  Will merge to 'master' in the second batch.
672 * jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
673   (merged to 'next' on 2015-05-05 at bd94828)
674  + fmt-merge-msg: plug small leak of commit buffer
676  Originally merged to 'next' on 2015-04-21
678  Will merge to 'master' in the second batch.
681 * ee/clean-remove-dirs (2015-04-26) 5 commits
682  - clean: improve performance when removing lots of directories
683  - p7300: add performance tests for clean
684  - t7300: add tests to document behavior of clean and nested git
685  - setup: sanity check file size in read_gitfile_gently
686  - setup: add gentle version of read_gitfile
688  Replace "is this subdirectory a separate repository that should not
689  be touched?" check "git clean" does by checking if it has .git/HEAD
690  using the submodule-related code with a more optimized check.
692  Waiting for a reroll.
695 * jk/still-interesting (2015-04-17) 1 commit
696   (merged to 'next' on 2015-05-05 at 6a5c89c)
697  + limit_list: avoid quadratic behavior from still_interesting
699  Originally merged to 'next' on 2015-04-21
701  "git rev-list --objects $old --not --all" to see if everything that
702  is reachable from $old is already connected to the existing refs
703  was very inefficient.
705  Will merge to 'master' in the second batch.
708 * ls/p4-changes-block-size (2015-04-20) 1 commit
709   (merged to 'next' on 2015-05-05 at 92596d4)
710  + git-p4: use -m when running p4 changes
712  Originally merged to 'next' on 2015-04-21
714  "git p4" learned "--changes-block-size <n>" to read the changes in
715  chunks from Perforce, instead of making one call to "p4 changes"
716  that may trigger "too many rows scanned" error from Perforce.
718  Will merge to 'master' in the second batch.
721 * mm/add-p-split-error (2015-04-16) 5 commits
722   (merged to 'next' on 2015-05-05 at c556011)
723  + stash -p: demonstrate failure of split with mixed y/n
724  + t3904-stash-patch: factor PERL prereq at the top of the file
725  + t3904-stash-patch: fix test description
726  + add -p: demonstrate failure when running 'edit' after a split
727  + t3701-add-interactive: simplify code
729  Originally merged to 'next' on 2015-04-23
731  When "add--interactive" splits a hunk into two overlapping hunks
732  and then let the user choose only one, it sometimes feeds an
733  incorrect patch text to "git apply".  Add tests to demonstrate
734  this.
736  I have a slight suspicion that this may be $gmane/87202 coming back
737  and biting us (I seem to have said "let's run with this and see
738  what happens" back then).
740  Will merge to 'master' in the second batch.
743 * tb/t0027-crlf (2015-04-25) 3 commits
744   (merged to 'next' on 2015-05-05 at 36accbb)
745  + t0027: Add repoMIX and LF_nul
746  + t0027: support NATIVE_CRLF platforms
747  + t0027: cleanup: rename functions; avoid non-leading TABs
749  Originally merged to 'next' on 2015-04-21
751  More line-ending tests.
753  Will merge to 'master' in the second batch.
756 * jc/gitignore-precedence (2015-04-22) 1 commit
757   (merged to 'next' on 2015-05-05 at 6ef85da)
758  + ignore: info/exclude should trump core.excludesfile
760  core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
761  to be overridden by repository-specific .git/info/exclude file, but
762  the order was swapped from the beginning. This belatedly fixes it.
764  Will merge to 'master' in the third batch.
767 * jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
768   (merged to 'next' on 2015-05-05 at b3f9a45)
769  + stop putting argv[0] dirname at front of PATH
771  We have prepended $GIT_EXEC_PATH and the path "git" is installed in
772  (typically "/usr/bin") to $PATH when invoking subprograms and hooks
773  for almost eternity, but the original use case the latter tried to
774  support was semi-bogus (i.e. install git to /opt/foo/git and run it
775  without having /opt/foo on $PATH), and more importantly it has
776  become less and less relevant as Git grew more mainstream (i.e. the
777  users would _want_ to have it on their $PATH).  Stop prepending the
778  path in which "git" is installed to users' $PATH, as that would
779  interfere the command search order people depend on (e.g. they may
780  not like versions of programs that are unrelated to Git in /usr/bin
781  and want to override them by having different ones in /usr/local/bin
782  and have the latter directory earlier in their $PATH).
784  Will merge to 'master' in the third batch.
787 * jk/stash-require-clean-index (2015-04-22) 3 commits
788   (merged to 'next' on 2015-05-05 at b5f6c32)
789  + stash: require a clean index to apply
790  + t3903: avoid applying onto dirty index
791  + t3903: stop hard-coding commit sha1s
793  "git stash pop/apply" forgot to make sure that not just the working
794  tree is clean but also the index is clean. The latter is important
795  as a stash application can conflict and the index will be used for
796  conflict resolution.
798  Will merge to 'master' in the third batch.
801 * jc/merge (2015-04-29) 15 commits
802  - merge: deprecate 'git merge <message> HEAD <commit>' syntax
803  - merge: handle FETCH_HEAD internally
804  - merge: decide if we auto-generate the message early in collect_parents()
805  - merge: make collect_parents() auto-generate the merge message
806  - merge: extract prepare_merge_message() logic out
807  - merge: narrow scope of merge_names
808  - merge: split reduce_parents() out of collect_parents()
809  - merge: clarify collect_parents() logic
810  - merge: small leakfix and code simplification
811  - merge: do not check argc to determine number of remote heads
812  - merge: clarify "pulling into void" special case
813  - t5520: test pulling an octopus into an unborn branch
814  - t5520: style fixes
815  - merge: simplify code flow
816  - merge: test the top-level merge driver
817  (this branch is used by jc/merge-drop-old-syntax.)
819  "git merge FETCH_HEAD" learned that the previous "git fetch" could
820  be to create an Octopus merge, i.e. recording multiple branches
821  that are not marked as "not-for-merge"; this allows us to lose an
822  old style invocation "git merge <msg> HEAD $commits..." in the
823  implementation of "git pull" script; the old style syntax can now
824  be deprecated.
826  Will merge to 'next'.
829 * jc/merge-drop-old-syntax (2015-04-29) 1 commit
830  - merge: drop 'git merge <message> HEAD <commit>' syntax
831  (this branch uses jc/merge.)
833  Stop supporting "git merge <messsage> HEAD <commit>" syntax that
834  has been deprecated since October 2007.
836  Will merge to 'next' and keep there during the 2.5 cycle.
839 * jk/test-chain-lint (2015-04-28) 2 commits
840   (merged to 'next' on 2015-05-05 at e6f0290)
841  + test-lib: turn on GIT_TEST_CHAIN_LINT by default
842  + t7502-commit.sh: fix a broken and-chain
844  Developer support to automatically detect broken &&-chain in the
845  test scripts is now turned on by default.
847  Will merge to 'master' in the third batch.
850 * mh/ref-lock-avoid-running-out-of-fds (2015-04-25) 8 commits
851  - ref_transaction_commit(): only keep one lockfile open at a time
852  - ref_transaction_commit(): remove the local flags variables
853  - write_ref_sha1(): inline function at callers
854  - commit_ref_update(): new function, extracted from write_ref_sha1()
855  - write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
856  - refs.c: remove lock_fd from struct ref_lock
857  - t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
858  - update-ref: test handling large transactions properly
859  (this branch is used by mh/ref-directory-file.)
861  "git update-ref --stdin" was converted to be "transactional" some
862  time ago, but the ref transaction machinery was not prepared to
863  handle many refs, primarily because it tried to keep the loose ref
864  files open at the same time, which would cause us to hit the ENFILE
865  limit.  Fix the ref_transaction_commit() code not to keep the file
866  descriptors open unnecessarily.
868  We would want to apply the fix to older codebase, but this fix is
869  unfortunately done to apply only on v2.4.x track.
871  Expecting a rebase to older codebase.
874 * bc/connect-plink (2015-04-28) 3 commits
875   (merged to 'next' on 2015-05-05 at 9def2e1)
876  + connect: improve check for plink to reduce false positives
877  + t5601: fix quotation error leading to skipped tests
878  + connect: simplify SSH connection code path
880  The connection initiation code for "ssh" transport tried to absorb
881  differences between the stock "ssh" and Putty-supplied "plink" and
882  its derivatives, but the logic to tell that we are using "plink"
883  variants were too loose and falsely triggered when "plink" appeared
884  anywhere in the path (e.g. "/home/me/bin/uplink/ssh").
886  Will merge to 'master' in the third batch.
889 * jc/test-prereq-validate (2015-04-28) 1 commit
890   (merged to 'next' on 2015-05-05 at a30464c)
891  + test: validate prerequistes syntax
893  Help us to find broken test script that splits the body part of the
894  test by mistaken use of wrong kind of quotes.
896  Will merge to 'master' in the third batch.
899 * fg/document-commit-message-stripping (2015-04-27) 1 commit
900   (merged to 'next' on 2015-05-05 at 1892a99)
901  + Documentation: clarify how "git commit" cleans up the edited log message
903  Will merge to 'master' in the third batch.
906 * ah/usage-strings (2015-05-03) 2 commits
907  - branch: fix funny-sounding error message
908  - blame, log: format usage strings similarly to those in documentation
910  A few usage string updates.  The tip one still needs work.
913 * jk/reading-packed-refs (2015-04-16) 9 commits
914   (merged to 'next' on 2015-05-05 at 89b5694)
915  + t1430: add another refs-escape test
916  + read_packed_refs: avoid double-checking sane refs
917  + strbuf_getwholeline: use getdelim if it is available
918  + strbuf_getwholeline: avoid calling strbuf_grow
919  + strbuf_addch: avoid calling strbuf_grow
920  + config: use getc_unlocked when reading from file
921  + strbuf_getwholeline: use getc_unlocked
922  + git-compat-util: add fallbacks for unlocked stdio
923  + strbuf_getwholeline: use getc macro
925  Originally merged to 'next' on 2015-04-21
927  An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
928  to read packed-refs file revealed that the former is unacceptably
929  inefficient.
931  Will merge to 'master' in the second batch.
934 * kn/cat-file-literally (2015-05-04) 5 commits
935  - fixup! sha1_file: support reading from a loose object of unknown type
936  - t1006: add tests for git cat-file --allow-unknown-type
937  - cat-file: teach cat-file a '--allow-unknown-type' option
938  - cat-file: make the options mutually exclusive
939  - sha1_file: support reading from a loose object of unknown type
941  Add the "--allow-unknown-type" option to "cat-file" to allow
942  inspecting loose objects of an experimental or a broken type.
944  This is v10 $gmane/267960; I think with fixup! squashed in the
945  series is in a good shape (the test may fail without Eric's fix
946  to "hash-object --literally" elsewhere, though).
949 * lm/squelch-bg-progress (2015-04-15) 2 commits
950   (merged to 'next' on 2015-05-05 at a2fe74d)
951  + compat/mingw: stubs for getpgid() and tcgetpgrp()
952  + progress: no progress in background
954  Originally merged to 'next' on 2015-04-21
956  Many long-running operations show progress eye-candy, even when
957  they are later backgrounded.  Hide the eye-candy when the process
958  is sent to the background instead.
960  Will merge to 'master' in the second batch.
963 * va/p4-client-path (2015-04-23) 2 commits
964   (merged to 'next' on 2015-05-05 at 852facc)
965  + git-p4: improve client path detection when branches are used
966  + t9801: check git-p4's branch detection with client spec enabled
968  Originally merged to 'next' on 2015-04-23
970  git p4 attempts to better handle branches in Perforce.
972  Will merge to 'master' in the second batch.
975 * jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
976   (merged to 'next' on 2015-05-05 at a8de68e)
977  + sha1_file: squelch "packfile cannot be accessed" warnings
979  Originally merged to 'next' on 2015-04-21
981  Will merge to 'master' in the second batch.
984 * pt/credential-xdg (2015-03-25) 4 commits
985   (merged to 'next' on 2015-05-05 at 0d6711f)
986  + t0302: "unreadable" test needs POSIXPERM
987  + t0302: test credential-store support for XDG_CONFIG_HOME
988  + git-credential-store: support XDG_CONFIG_HOME
989  + git-credential-store: support multiple credential files
990  (this branch is used by pt/xdg-config-path.)
992  Originally merged to 'next' on 2015-03-25
994  Tweak the sample "store" backend of the credential helper to honor
995  XDG configuration file locations when specified.
997  Will merge to 'master' in the second batch.
1000 * pt/xdg-config-path (2015-05-06) 7 commits
1001  - path.c: remove home_config_paths()
1002  - git-config: replace use of home_config_paths()
1003  - git-commit: replace use of home_config_paths()
1004  - credential-store.c: replace home_config_paths() with xdg_config_home()
1005  - dir.c: replace home_config_paths() with xdg_config_home()
1006  - attr.c: replace home_config_paths() with xdg_config_home()
1007  - path.c: implement xdg_config_home()
1008  (this branch uses pt/credential-xdg.)
1010  Code clean-up for xdg configuration path support.
1012  Will merge to 'next'.
1015 * nd/diff-i-t-a (2015-03-23) 1 commit
1016   (merged to 'next' on 2015-05-05 at cba9cd9)
1017  + diff-lib.c: adjust position of i-t-a entries in diff
1019  Originally merged to 'next' on 2015-03-24
1021  After "git add -N", the path appeared in output of "git diff HEAD"
1022  and "git diff --cached HEAD", leading "git status" to classify it
1023  as "Changes to be committed".  Such a path, however, is not yet to
1024  be scheduled to be committed.  "git diff" showed the change to the
1025  path as modification, not as a "new file", in the header of its
1026  output.
1028  Treat such paths as "yet to be added to the index but Git already
1029  know about them"; "git diff HEAD" and "git diff --cached HEAD"
1030  should not talk about them, and "git diff" should show them as new
1031  files yet to be added to the index.
1033  Will merge to 'master' in the third batch.
1036 * nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
1037   (merged to 'next' on 2015-05-05 at 42bd845)
1038  + index-pack: kill union delta_base to save memory
1039  + index-pack: reduce object_entry size to save memory
1041  Originally merged to 'next' on 2015-04-21
1043  Memory usage of "git index-pack" has been trimmed by tens of
1044  per-cent.
1046  Will merge to 'master' in the second batch.
1049 * nd/multiple-work-trees (2015-03-31) 41 commits
1050   (merged to 'next' on 2015-05-05 at 0f04a1c)
1051  + prune --worktrees: fix expire vs worktree existence condition
1052  + t1501: fix test with split index
1053  + t2026: fix broken &&-chain
1054  + t2026 needs procondition SANITY
1055  + git-checkout.txt: a note about multiple checkout support for submodules
1056  + checkout: add --ignore-other-wortrees
1057  + checkout: pass whole struct to parse_branchname_arg instead of individual flags
1058  + git-common-dir: make "modules/" per-working-directory directory
1059  + checkout: do not fail if target is an empty directory
1060  + t2025: add a test to make sure grafts is working from a linked checkout
1061  + checkout: don't require a work tree when checking out into a new one
1062  + git_path(): keep "info/sparse-checkout" per work-tree
1063  + count-objects: report unused files in $GIT_DIR/worktrees/...
1064  + gc: support prune --worktrees
1065  + gc: factor out gc.pruneexpire parsing code
1066  + gc: style change -- no SP before closing parenthesis
1067  + checkout: clean up half-prepared directories in --to mode
1068  + checkout: reject if the branch is already checked out elsewhere
1069  + prune: strategies for linked checkouts
1070  + checkout: support checking out into a new working directory
1071  + use new wrapper write_file() for simple file writing
1072  + wrapper.c: wrapper to open a file, fprintf then close
1073  + setup.c: support multi-checkout repo setup
1074  + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
1075  + setup.c: convert check_repository_format_gently to use strbuf
1076  + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
1077  + setup.c: convert is_git_directory() to use strbuf
1078  + git-stash: avoid hardcoding $GIT_DIR/logs/....
1079  + *.sh: avoid hardcoding $GIT_DIR/hooks/...
1080  + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
1081  + $GIT_COMMON_DIR: a new environment variable
1082  + commit: use SEQ_DIR instead of hardcoding "sequencer"
1083  + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
1084  + reflog: avoid constructing .lock path with git_path
1085  + *.sh: respect $GIT_INDEX_FILE
1086  + git_path(): be aware of file relocation in $GIT_DIR
1087  + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
1088  + path.c: rename vsnpath() to do_git_path()
1089  + git_snpath(): retire and replace with strbuf_git_path()
1090  + path.c: make get_pathname() call sites return const char *
1091  + path.c: make get_pathname() return strbuf instead of static buffer
1093  Originally merged to 'next' on 2015-04-02
1095  A replacement for contrib/workdir/git-new-workdir that does not
1096  rely on symbolic links and make sharing of objects and refs safer
1097  by making the borrowee and borrowers aware of each other.
1099  Will merge to 'master' in the second batch.