What's cooking (2015/05 #04)
[alt-git.git] / whats-cooking.txt
blob01f8aec8a481fcc1999a2143387066ae855ca7c2
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 Subject: What's cooking in git.git (May 2015, #04; Mon, 11)
4 X-master-at: c518059b263bb506b96a0ae90c4d40408c760cb0
5 X-next-at: 91e4f9ead74701a5690c950e19c8b631ee8c7a4b
7 What's cooking in git.git (May 2015, #04; Mon, 11)
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 Git 2.3.8 has been tagged; it contains Linus's favorite fix for "git
15 commit --date=now", among other things, and it will be the last for
16 2.3.x series for now.
18 You can find the changes described here in the integration branches
19 of the repositories listed at
21     http://git-blame.blogspot.com/p/git-public-repositories.html
23 --------------------------------------------------
24 [Graduated to "master"]
26 * ep/do-not-feed-a-pointer-to-array-size (2015-05-05) 1 commit
27   (merged to 'next' on 2015-05-07 at 64d9a20)
28  + git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array
30  Catch a programmer mistake to feed a pointer not an array to
31  ARRAY_SIZE() macro, by using a couple of GCC extensions.
34 * jc/daemon-no-ipv6-for-2.4.1 (2015-05-05) 1 commit
35   (merged to 'next' on 2015-05-05 at 1eb279f)
36  + daemon: unbreak NO_IPV6 build regression
38  "git daemon" fails to build from the source under NO_IPV6
39  configuration (regression in 2.4).
42 * jc/hash-object (2015-05-05) 4 commits
43   (merged to 'next' on 2015-05-07 at 9b81a06)
44  + write_sha1_file(): do not use a separate sha1[] array
45  + t1007: add hash-object --literally tests
46  + hash-object --literally: fix buffer overrun with extra-long object type
47  + git-hash-object.txt: document --literally option
49  "hash-object --literally" introduced in v2.2 was not prepared to
50  take a really long object type name.
53 * jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
54   (merged to 'next' on 2015-05-05 at bd94828)
55  + fmt-merge-msg: plug small leak of commit buffer
57  Originally merged to 'next' on 2015-04-21
60 * jk/filter-branch-use-of-sed-on-incomplete-line (2015-04-29) 1 commit
61   (merged to 'next' on 2015-05-07 at 849a24d)
62  + filter-branch: avoid passing commit message through sed
64  "filter-branch" corrupted commit log message that ends with an
65  incomplete line on platforms with some "sed" implementations that
66  munge such a line.  Work it around by avoiding to use "sed".
69 * jk/reading-packed-refs (2015-04-16) 9 commits
70   (merged to 'next' on 2015-05-05 at 89b5694)
71  + t1430: add another refs-escape test
72  + read_packed_refs: avoid double-checking sane refs
73  + strbuf_getwholeline: use getdelim if it is available
74  + strbuf_getwholeline: avoid calling strbuf_grow
75  + strbuf_addch: avoid calling strbuf_grow
76  + config: use getc_unlocked when reading from file
77  + strbuf_getwholeline: use getc_unlocked
78  + git-compat-util: add fallbacks for unlocked stdio
79  + strbuf_getwholeline: use getc macro
81  Originally merged to 'next' on 2015-04-21
83  An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
84  to read packed-refs file revealed that the former is unacceptably
85  inefficient.
88 * jk/rebase-quiet-noop (2015-04-28) 1 commit
89   (merged to 'next' on 2015-05-05 at 82780b9)
90  + rebase: silence "git checkout" for noop rebase
92  "git rebase --quiet" was not quite quiet when there is nothing to
93  do.
96 * jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
97   (merged to 'next' on 2015-05-05 at a8de68e)
98  + sha1_file: squelch "packfile cannot be accessed" warnings
100  Originally merged to 'next' on 2015-04-21
103 * jk/still-interesting (2015-04-17) 1 commit
104   (merged to 'next' on 2015-05-05 at 6a5c89c)
105  + limit_list: avoid quadratic behavior from still_interesting
107  Originally merged to 'next' on 2015-04-21
109  "git rev-list --objects $old --not --all" to see if everything that
110  is reachable from $old is already connected to the existing refs
111  was very inefficient.
114 * jn/clean-use-error-not-fprintf-on-stderr (2015-05-04) 1 commit
115   (merged to 'next' on 2015-05-05 at 12391f1)
116  + config: use error() instead of fprintf(stderr, ...)
118  Some error messages in "git config" were emitted without calling
119  the usual error() facility.
122 * ld/p4-case-fold (2015-04-28) 1 commit
123   (merged to 'next' on 2015-05-05 at 03ecbd0)
124  + git-p4: add failing tests for case-folding p4d
127 * lm/squelch-bg-progress (2015-04-15) 2 commits
128   (merged to 'next' on 2015-05-05 at a2fe74d)
129  + compat/mingw: stubs for getpgid() and tcgetpgrp()
130  + progress: no progress in background
132  Originally merged to 'next' on 2015-04-21
134  Many long-running operations show progress eye-candy, even when
135  they are later backgrounded.  Hide the eye-candy when the process
136  is sent to the background instead.
139 * ls/p4-changes-block-size (2015-04-20) 1 commit
140   (merged to 'next' on 2015-05-05 at 92596d4)
141  + git-p4: use -m when running p4 changes
143  Originally merged to 'next' on 2015-04-21
145  "git p4" learned "--changes-block-size <n>" to read the changes in
146  chunks from Perforce, instead of making one call to "p4 changes"
147  that may trigger "too many rows scanned" error from Perforce.
150 * mm/add-p-split-error (2015-04-16) 5 commits
151   (merged to 'next' on 2015-05-05 at c556011)
152  + stash -p: demonstrate failure of split with mixed y/n
153  + t3904-stash-patch: factor PERL prereq at the top of the file
154  + t3904-stash-patch: fix test description
155  + add -p: demonstrate failure when running 'edit' after a split
156  + t3701-add-interactive: simplify code
158  Originally merged to 'next' on 2015-04-23
160  When "add--interactive" splits a hunk into two overlapping hunks
161  and then let the user choose only one, it sometimes feeds an
162  incorrect patch text to "git apply".  Add tests to demonstrate
163  this.
165  I have a slight suspicion that this may be $gmane/87202 coming back
166  and biting us (I seem to have said "let's run with this and see
167  what happens" back then).
170 * nd/multiple-work-trees (2015-03-31) 41 commits
171   (merged to 'next' on 2015-05-05 at 0f04a1c)
172  + prune --worktrees: fix expire vs worktree existence condition
173  + t1501: fix test with split index
174  + t2026: fix broken &&-chain
175  + t2026 needs procondition SANITY
176  + git-checkout.txt: a note about multiple checkout support for submodules
177  + checkout: add --ignore-other-wortrees
178  + checkout: pass whole struct to parse_branchname_arg instead of individual flags
179  + git-common-dir: make "modules/" per-working-directory directory
180  + checkout: do not fail if target is an empty directory
181  + t2025: add a test to make sure grafts is working from a linked checkout
182  + checkout: don't require a work tree when checking out into a new one
183  + git_path(): keep "info/sparse-checkout" per work-tree
184  + count-objects: report unused files in $GIT_DIR/worktrees/...
185  + gc: support prune --worktrees
186  + gc: factor out gc.pruneexpire parsing code
187  + gc: style change -- no SP before closing parenthesis
188  + checkout: clean up half-prepared directories in --to mode
189  + checkout: reject if the branch is already checked out elsewhere
190  + prune: strategies for linked checkouts
191  + checkout: support checking out into a new working directory
192  + use new wrapper write_file() for simple file writing
193  + wrapper.c: wrapper to open a file, fprintf then close
194  + setup.c: support multi-checkout repo setup
195  + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
196  + setup.c: convert check_repository_format_gently to use strbuf
197  + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
198  + setup.c: convert is_git_directory() to use strbuf
199  + git-stash: avoid hardcoding $GIT_DIR/logs/....
200  + *.sh: avoid hardcoding $GIT_DIR/hooks/...
201  + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
202  + $GIT_COMMON_DIR: a new environment variable
203  + commit: use SEQ_DIR instead of hardcoding "sequencer"
204  + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
205  + reflog: avoid constructing .lock path with git_path
206  + *.sh: respect $GIT_INDEX_FILE
207  + git_path(): be aware of file relocation in $GIT_DIR
208  + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
209  + path.c: rename vsnpath() to do_git_path()
210  + git_snpath(): retire and replace with strbuf_git_path()
211  + path.c: make get_pathname() call sites return const char *
212  + path.c: make get_pathname() return strbuf instead of static buffer
214  Originally merged to 'next' on 2015-04-02
216  A replacement for contrib/workdir/git-new-workdir that does not
217  rely on symbolic links and make sharing of objects and refs safer
218  by making the borrowee and borrowers aware of each other.
221 * nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
222   (merged to 'next' on 2015-05-05 at 42bd845)
223  + index-pack: kill union delta_base to save memory
224  + index-pack: reduce object_entry size to save memory
226  Originally merged to 'next' on 2015-04-21
228  Memory usage of "git index-pack" has been trimmed by tens of
229  per-cent.
232 * pt/credential-xdg (2015-03-25) 4 commits
233   (merged to 'next' on 2015-05-05 at 0d6711f)
234  + t0302: "unreadable" test needs POSIXPERM
235  + t0302: test credential-store support for XDG_CONFIG_HOME
236  + git-credential-store: support XDG_CONFIG_HOME
237  + git-credential-store: support multiple credential files
238  (this branch is used by pt/xdg-config-path.)
240  Originally merged to 'next' on 2015-03-25
242  Tweak the sample "store" backend of the credential helper to honor
243  XDG configuration file locations when specified.
246 * pt/xdg-config-path (2015-05-06) 7 commits
247   (merged to 'next' on 2015-05-07 at 38e7071)
248  + path.c: remove home_config_paths()
249  + git-config: replace use of home_config_paths()
250  + git-commit: replace use of home_config_paths()
251  + credential-store.c: replace home_config_paths() with xdg_config_home()
252  + dir.c: replace home_config_paths() with xdg_config_home()
253  + attr.c: replace home_config_paths() with xdg_config_home()
254  + path.c: implement xdg_config_home()
255  (this branch uses pt/credential-xdg.)
257  Code clean-up for xdg configuration path support.
260 * sb/prefix-path-free-results (2015-05-05) 1 commit
261   (merged to 'next' on 2015-05-07 at 64f15a8)
262  + prefix_path(): unconditionally free results in the callers
264  Code clean-up (not a leak-fix).
267 * sg/complete-decorate-full-not-long (2015-05-03) 1 commit
268   (merged to 'next' on 2015-05-07 at 2beb429)
269  + completion: fix and update 'git log --decorate=' options
271  The completion for "log --decorate=" parameter value was incorrect.
274 * sg/completion-no-redundant-all-command-list (2015-05-03) 1 commit
275   (merged to 'next' on 2015-05-07 at 00b4bd9)
276  + completion: remove redundant __git_compute_all_commands() call
278  Code simplification.
281 * tb/blame-resurrect-convert-to-git (2015-05-03) 1 commit
282   (merged to 'next' on 2015-05-05 at 8e1974e)
283  + blame: CRLF in the working tree and LF in the repo
285  Some time ago, "git blame" (incorrectly) lost the convert_to_git()
286  call when synthesizing a fake "tip" commit that represents the
287  state in the working tree, which broke folks who record the history
288  with LF line ending to make their project portabile across
289  platforms while terminating lines in their working tree files with
290  CRLF for their platform.
293 * tb/t0027-crlf (2015-04-25) 3 commits
294   (merged to 'next' on 2015-05-05 at 36accbb)
295  + t0027: Add repoMIX and LF_nul
296  + t0027: support NATIVE_CRLF platforms
297  + t0027: cleanup: rename functions; avoid non-leading TABs
299  Originally merged to 'next' on 2015-04-21
301  More line-ending tests.
304 * va/fix-git-p4-tests (2015-04-28) 1 commit
305   (merged to 'next' on 2015-05-05 at 795e858)
306  + git-p4: t9814: prevent --chain-lint failure
309 * va/p4-client-path (2015-04-23) 2 commits
310   (merged to 'next' on 2015-05-05 at 852facc)
311  + git-p4: improve client path detection when branches are used
312  + t9801: check git-p4's branch detection with client spec enabled
314  Originally merged to 'next' on 2015-04-23
316  git p4 attempts to better handle branches in Perforce.
318 --------------------------------------------------
319 [New Topics]
321 * dl/branch-error-message (2015-05-06) 1 commit
322   (merged to 'next' on 2015-05-11 at ed947ab)
323  + branch: do not call a "remote-tracking branch" a "remote branch"
325  Error messages from "git branch" called remote-tracking branches as
326  "remote branches".
328  Will merge to 'master'.
331 * dl/subtree-push-no-squash (2015-05-07) 1 commit
332   (merged to 'next' on 2015-05-11 at 74d07ca)
333  + contrib/subtree: there's no push --squash
335  "git subtree" script (in contrib/) does not have --squash option
336  when pushing, but the documentation and help text pretended as if
337  it did.
339  Will merge to 'master'.
342 * ld/p4-editor-multi-words (2015-05-07) 2 commits
343  - git-p4: fix handling of multi-word P4EDITOR
344  - git-p4: add failing test for P4EDITOR handling
346  Unlike "$EDITOR" and "$GIT_EDITOR" that can hold the path to the
347  command and initial options (e.g. "/path/to/emacs -nw"), 'git p4'
348  did not let the shell interpolate the contents of the environment
349  variable that name the editor "$P4EDITOR" (and "$EDITOR", too).
350  Make it in line with the rest of Git, as well as with Perforce.
352  Reported to break some tests that assume the non-interpolating
353  behaviour that need to be fixed.
356 * dl/subtree-avoid-tricky-echo (2015-05-08) 1 commit
357   (merged to 'next' on 2015-05-11 at 36d4f0e)
358  + contrib/subtree: portability fix for string printing
360  "git subtree" script (in contrib/) used "echo -n" to produce
361  progress messages in a non-portable way.
363  Will merge to 'master'.
366 * ls/http-ssl-cipher-list (2015-05-08) 1 commit
367   (merged to 'next' on 2015-05-11 at 55764ce)
368  + http: add support for specifying an SSL cipher list
370  Introduce http.<url>.SSLCipherList configuration variable to tweak
371  the list of cipher suite to be used with libcURL when talking with
372  https:// sites.
374  Will merge to 'master'.
377 * ps/bundle-verify-arg (2015-05-08) 1 commit
378   (merged to 'next' on 2015-05-11 at 9f1b1ae)
379  + bundle: verify arguments more strictly
381  "git bundle verify" did not diagnose extra parameters on the
382  command line.
384  Will merge to 'master'.
387 * sg/help-subcommands (2015-05-08) 1 commit
388   (merged to 'next' on 2015-05-11 at 91e4f9e)
389  + command-list.txt: fix whitespace inconsistency
391  A preparatory clean-up step.
393  Will merge to 'master'.
396 * mh/ref-directory-file-2 (2015-05-10) 19 commits
397  - SQUASH???
398  - reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
399  - ref_transaction_commit(): delete extra "the" from error message
400  - ref_transaction_commit(): provide better error messages
401  - rename_ref(): integrate lock_ref_sha1_basic() errors into ours
402  - lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
403  - lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
404  - verify_refname_available(): report errors via a "struct strbuf *err"
405  - verify_refname_available(): rename function
406  - refs: check for D/F conflicts among refs processed in a transaction
407  - ref_transaction_commit(): use a string_list for detecting duplicates
408  - is_refname_available(): use dirname in first loop
409  - struct nonmatching_ref_data: store a refname instead of a ref_entry
410  - report_refname_conflict(): inline function
411  - entry_matches(): inline function
412  - is_refname_available(): convert local variable "dirname" to strbuf
413  - is_refname_available(): avoid shadowing "dir" variable
414  - is_refname_available(): explain the reason for an early exit
415  - t1404: new tests of D/F conflicts within ref transactions
416  (this branch uses mh/write-refs-sooner-2.2, mh/write-refs-sooner-2.3 and mh/write-refs-sooner-2.4.)
418  A reroll is posted, but haven't got a chance to pick it up yet.
421 * mh/write-refs-sooner-2.2 (2015-05-10) 8 commits
422  - ref_transaction_commit(): fix atomicity and avoid fd exhaustion
423  - ref_transaction_commit(): remove the local flags variable
424  - ref_transaction_commit(): inline call to write_ref_sha1()
425  - rename_ref(): inline calls to write_ref_sha1() from this function
426  - commit_ref_update(): new function, extracted from write_ref_sha1()
427  - write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
428  - t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
429  - update-ref: test handling large transactions properly
430  (this branch is used by mh/ref-directory-file-2, mh/write-refs-sooner-2.3 and mh/write-refs-sooner-2.4.)
432  Multi-ref transaction support we merged a few releases ago
433  unnecessarily kept many file descriptors open, risking to fail with
434  resource exhaustion.
437 * mh/write-refs-sooner-2.3 (2015-05-10) 1 commit
438  - Merge branch 'mh/write-refs-sooner' into mh/write-refs-sooner-2.3
439  (this branch is used by mh/ref-directory-file-2 and mh/write-refs-sooner-2.4; uses mh/write-refs-sooner-2.2.)
441  Multi-ref transaction support we merged a few releases ago
442  unnecessarily kept many file descriptors open, risking to fail with
443  resource exhaustion.  This is for 2.3.x track.
446 * mh/write-refs-sooner-2.4 (2015-05-10) 1 commit
447  - Merge branch 'mh/write-refs-sooner-2.3' into mh/write-refs-sooner-2.4
448  (this branch is used by mh/ref-directory-file-2; uses mh/write-refs-sooner-2.2 and mh/write-refs-sooner-2.3.)
450  Multi-ref transaction support we merged a few releases ago
451  unnecessarily kept many file descriptors open, risking to fail with
452  resource exhaustion.  This is for 2.4.x track.
455 * sb/ref-lock-lose-lock-fd (2015-05-10) 1 commit
456  - refs.c: remove lock_fd from struct ref_lock
458  The refs API uses ref_lock struct which had its own "int fd", even
459  though the same file descriptor was in the lock struct it contains.
460  Clean-up the code to lose this redundant field.
462  Will merge to 'next'.
464 --------------------------------------------------
465 [Stalled]
467 * kk/log-merges-config (2015-04-21) 5 commits
468  - bash-completion: add support for git-log --merges= and log.merges
469  - t4202-log: add tests for --merges=
470  - Documentation: add git-log --merges= option and log.merges config. var
471  - log: honor log.merges= option
472  - revision: add --merges={show|only|hide} option
474  "git log" (but not other commands in the "log" family) learned to
475  pay attention to the log.merges configuration variable that can be
476  set to "show" (the normal behaviour), "only" (hide non-merge
477  commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
478  can be used to override the setting from the command line.
480  The documentation may need to be updated once more ($gmane/267250).
481  Waiting for a reroll.
484 * mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
485  - t/lib-git-svn: check same httpd module dirs as lib-httpd
486  - t/lib-httpd: load mod_unixd
488  This is the first two commits in a three-patch series $gmane/266962
489  Will be rerolled.
490  with updated log message ($gmane/268061).
493 * mh/numparse (2015-03-19) 14 commits
494  - diff_opt_parse(): use convert_i() when handling --abbrev=<num>
495  - diff_opt_parse(): use convert_i() when handling "-l<num>"
496  - opt_arg(): simplify pointer handling
497  - opt_arg(): report errors parsing option values
498  - opt_arg(): use convert_i() in implementation
499  - opt_arg(): val is always non-NULL
500  - builtin_diff(): detect errors when parsing --unified argument
501  - handle_revision_opt(): use convert_ui() when handling "--abbrev="
502  - strtoul_ui(), strtol_i(): remove functions
503  - handle_revision_opt(): use convert_i() when handling "-<digit>"
504  - handle_revision_opt(): use skip_prefix() in many places
505  - write_subdirectory(): use convert_ui() for parsing mode
506  - cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
507  - numparse: new module for parsing integral numbers
509  Many codepaths use unchecked use of strtol() and friends (or even
510  worse, atoi()).  Introduce a set of wrappers that try to be more
511  careful.
513  Will be rerolled.
514  ($gmane/268058).
517 * tf/gitweb-project-listing (2015-03-19) 5 commits
518  - gitweb: make category headings into links when they are directories
519  - gitweb: optionally set project category from its pathname
520  - gitweb: add a link under the search box to clear a project filter
521  - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
522  - gitweb: fix typo in man page
524  Update gitweb to make it more pleasant to deal with a hierarchical
525  forest of repositories.
527  Any comments from those who use or have their own code in Gitweb?
530 * jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
531  - "-" and "@{-1}" on various programs
533  Lose special case code to make a lone dash "-" mean the previous
534  branch aka "@{-1}" from a handful subcommands, and instead support
535  the notation throughout the system by reimplementing it at the
536  revisions layer.
538  Needs tests, documentation updates, etc.  Also does only a half-way
539  job dealing with range notation, which needs to be fixed before the
540  series goes anywhere.
543 * nd/list-files (2015-02-09) 21 commits
544  - t3080: tests for git-list-files
545  - list-files: -M aka diff-cached
546  - list-files -F: show submodules with the new indicator '&'
547  - list-files: add -F/--classify
548  - list-files: show directories as well as files
549  - list-files: do not show duplicate cached entries
550  - list-files: sort output and remove duplicates
551  - list-files: add -t back
552  - list-files: add -1 short for --no-column
553  - list-files: add -R/--recursive short for --max-depth=-1
554  - list-files: -u does not imply showing stages
555  - list-files: make alias 'ls' default to 'list-files'
556  - list-files: a user friendly version of ls-files and more
557  - ls-files: support --max-depth
558  - ls-files: add --column
559  - ls-files: add --color to highlight file names
560  - ls-files: buffer full item in strbuf before printing
561  - ls_colors.c: highlight submodules like directories
562  - ls_colors.c: add a function to color a file name
563  - ls_colors.c: parse color.ls.* from config file
564  - ls_colors.c: add $LS_COLORS parsing code
566  A new "git list-files" Porcelain command, "ls-files" with bells and
567  whistles.
569  Reroll to base on wt-status work ($gmane/265142) has seen some
570  positive discussions.
572  Waiting for a further polished reroll ($gmane/265534).
575 * js/fsck-opt (2015-01-21) 19 commits
576  - fsck: support ignoring objects in `git fsck` via fsck.skiplist
577  - fsck: git receive-pack: support excluding objects from fsck'ing
578  - fsck: introduce `git fsck --quick`
579  - fsck: support demoting errors to warnings
580  - fsck: document the new receive.fsck.* options
581  - fsck: allow upgrading fsck warnings to errors
582  - fsck: optionally ignore specific fsck issues completely
583  - fsck: disallow demoting grave fsck errors to warnings
584  - fsck: add a simple test for receive.fsck.*
585  - fsck: make fsck_tag() warn-friendly
586  - fsck: handle multiple authors in commits specially
587  - fsck: make fsck_commit() warn-friendly
588  - fsck: make fsck_ident() warn-friendly
589  - fsck: report the ID of the error/warning
590  - fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
591  - fsck: offer a function to demote fsck errors to warnings
592  - fsck: provide a function to parse fsck message IDs
593  - fsck: introduce identifiers for fsck messages
594  - fsck: introduce fsck options
596  "fsck.warnings = <list of error tokens>" I suggested turned out to
597  be an unpopular choice (sorry Dscho).
599  Expecting a reroll.
602 * nd/untracked-cache (2015-03-12) 24 commits
603  - git-status.txt: advertisement for untracked cache
604  - untracked cache: guard and disable on system changes
605  - mingw32: add uname()
606  - t7063: tests for untracked cache
607  - update-index: test the system before enabling untracked cache
608  - update-index: manually enable or disable untracked cache
609  - status: enable untracked cache
610  - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
611  - untracked cache: mark index dirty if untracked cache is updated
612  - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
613  - untracked cache: avoid racy timestamps
614  - read-cache.c: split racy stat test to a separate function
615  - untracked cache: invalidate at index addition or removal
616  - untracked cache: load from UNTR index extension
617  - untracked cache: save to an index extension
618  - ewah: add convenient wrapper ewah_serialize_strbuf()
619  - untracked cache: don't open non-existent .gitignore
620  - untracked cache: mark what dirs should be recursed/saved
621  - untracked cache: record/validate dir mtime and reuse cached output
622  - untracked cache: make a wrapper around {open,read,close}dir()
623  - untracked cache: invalidate dirs recursively if .gitignore changes
624  - untracked cache: initial untracked cache validation
625  - untracked cache: record .gitignore information and dir hierarchy
626  - dir.c: optionally compute sha-1 of a .gitignore file
628  Need extra sets of eyes to review this.
631 * nd/pathspec-strip-fix (2015-04-18) 1 commit
632  - pathspec: adjust prefixlen after striping trailing slash
634  Does not quite fix ($gmane/267614).
637 * jc/diff-b-m (2015-02-23) 5 commits
638  . WIPWIP
639  . WIP: diff-b-m
640  - diffcore-rename: allow easier debugging
641  - diffcore-rename.c: add locate_rename_src()
642  - diffcore-break: allow debugging
644  "git diff -B -M" produced incorrect patch when the postimage of a
645  completely rewritten file is similar to the preimage of a removed
646  file; such a resulting file must not be expressed as a rename from
647  other place.
649  The fix in this patch is broken, unfortunately.
652 * pw/remote-set-url-fetch (2014-11-26) 1 commit
653  - remote: add --fetch and --both options to set-url
655  Expecting a reroll.
658 * tr/remerge-diff (2014-11-10) 9 commits
659  - t4213: avoid "|" in sed regexp
660  - log --remerge-diff: show what the conflict resolution changed
661  - name-hash: allow dir hashing even when !ignore_case
662  - merge-recursive: allow storing conflict hunks in index
663  - merge_diff_mode: fold all merge diff variants into an enum
664  - combine-diff: do not pass revs->dense_combined_merges redundantly
665  - merge-recursive: -Xindex-only to leave worktree unchanged
666  - merge-recursive: internal flag to avoid touching the worktree
667  - merge-recursive: remove dead conditional in update_stages()
669  "log -p" output learns a new way to let users inspect a merge
670  commit by showing the differences between the automerged result
671  with conflicts the person who recorded the merge would have seen
672  and the final conflict resolution that was recorded in the merge.
674  Waiting for a reroll ($gmane/256591).
677 * hv/submodule-config (2014-11-11) 4 commits
678  - do not die on error of parsing fetchrecursesubmodules option
679  - use new config API for worktree configurations of submodules
680  - extract functions for submodule config set and lookup
681  - implement submodule config cache for lookup of submodule names
683  Kicked back to 'pu' per request ($gmane/255610).
686 * tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
687  - perf-lib: add test_perf_cleanup target
688  - perf-lib: split starting the test from the execution
690  Add test_perf_cleanup shell function to the perf suite, that allows
691  the script writers to define a test with a clean-up action.
693  Will hold.
696 * jc/show-branch (2014-03-24) 5 commits
697  - show-branch: use commit slab to represent bitflags of arbitrary width
698  - show-branch.c: remove "all_mask"
699  - show-branch.c: abstract out "flags" operation
700  - show-branch.c: lift all_mask/all_revs to a global static
701  - show-branch.c: update comment style
703  Waiting for the final step to lift the hard-limit.
705 --------------------------------------------------
706 [Cooking]
708 * sg/completion-omit-credential-helpers (2015-05-06) 1 commit
709   (merged to 'next' on 2015-05-11 at aa7e554)
710  + completion: remove credential helpers from porcelain commands
712  The Git subcommand completion (in contrib/) listed credential
713  helpers among candidates, which is not something the end user would
714  invoke interatively.
716  Will merge to 'master'.
719 * jk/skip-http-tests-under-no-curl (2015-05-07) 2 commits
720   (merged to 'next' on 2015-05-11 at a52b711)
721  + tests: skip dav http-push tests under NO_EXPAT=NoThanks
722  + t/lib-httpd.sh: skip tests if NO_CURL is defined
724  Test clean-up.
726  Will merge to 'master'.
729 * nd/dwim-wildcards-as-pathspecs (2015-05-03) 1 commit
730   (merged to 'next' on 2015-05-07 at 8176de7)
731  + pathspec: avoid the need of "--" when wildcard is used
733  A heuristic to help the "git <cmd> <revs> <pathspec>" command line
734  convention to catch mistyped paths is to make sure all the non-rev
735  parameters in the later part of the command line are names of the
736  files in the working tree, but that means "git grep $str -- \*.c"
737  must always be disambiguated with "--", because nobody sane will
738  create a file whose name literally is asterisk-dot-see.  Loosen the
739  heuristic to declare that with a wildcard string the user likely
740  meant to give us a pathspec.
742  Will merge to 'master' in the third batch.
745 * pt/pull-tests (2015-05-03) 7 commits
746  - t5521: test --dry-run does not make any changes
747  - t5520: test --rebase failure on unborn branch with index
748  - t5520: test --rebase with multiple branches
749  - t5520: test work tree fast-forward when fetch updates head
750  - t5520: test for failure if index has unresolved entries
751  - t5520: implement tests for no merge candidates cases
752  - t5520: test pulling multiple branches into an empty repository
754  Add more test coverage to "git pull".  This conflicts slightly with
755  a new test jc/merge topic adds, but resolution is fairly trivial.
757  Expecting a reroll ($gmane/268391).
760 * jc/clone-bundle (2015-04-30) 1 commit
761  - repack: optionally create a clone.bundle
763  Still an early WIP
766 * jk/at-push-sha1 (2015-05-03) 12 commits
767  - for-each-ref: accept "%(push)" format
768  - for-each-ref: use skip_prefix instead of starts_with
769  - sha1_name: implement @{push} shorthand
770  - sha1_name: refactor interpret_upstream_mark
771  - sha1_name: refactor upstream_mark
772  - remote.c: add branch_get_push
773  - remote.c: report specific errors from branch_get_upstream
774  - remote.c: introduce branch_get_upstream helper
775  - remote.c: provide per-branch pushremote name
776  - remote.c: hoist branch.*.remote lookup out of remote_get_1
777  - remote.c: drop "remote" pointer from "struct branch"
778  - remote.c: drop default_remote_name variable
780  Introduce <branch>@{push} short-hand to denote the remote-tracking
781  branch that tracks the branch at the remote the <branch> would be
782  pushed to.
784  Expecting a reroll ($gmane/268419, etc.).
787 * ph/rebase-i-redo (2015-04-29) 1 commit
788   (merged to 'next' on 2015-05-07 at 8fc1f52)
789  + rebase -i: redo tasks that die during cherry-pick
791  "git rebase -i" moved the "current" command from "todo" to "done" a
792  bit too prematurely, losing a step when a "pick" did not even start.
794  Will merge to 'master' in the third batch.
797 * ee/clean-remove-dirs (2015-04-26) 5 commits
798  - clean: improve performance when removing lots of directories
799  - p7300: add performance tests for clean
800  - t7300: add tests to document behavior of clean and nested git
801  - setup: sanity check file size in read_gitfile_gently
802  - setup: add gentle version of read_gitfile
804  Replace "is this subdirectory a separate repository that should not
805  be touched?" check "git clean" does by checking if it has .git/HEAD
806  using the submodule-related code with a more optimized check.
808  Waiting for a reroll.
811 * jc/gitignore-precedence (2015-04-22) 1 commit
812   (merged to 'next' on 2015-05-05 at 6ef85da)
813  + ignore: info/exclude should trump core.excludesfile
815  core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
816  to be overridden by repository-specific .git/info/exclude file, but
817  the order was swapped from the beginning. This belatedly fixes it.
819  Will merge to 'master' in the third batch.
822 * jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
823   (merged to 'next' on 2015-05-05 at b3f9a45)
824  + stop putting argv[0] dirname at front of PATH
826  We have prepended $GIT_EXEC_PATH and the path "git" is installed in
827  (typically "/usr/bin") to $PATH when invoking subprograms and hooks
828  for almost eternity, but the original use case the latter tried to
829  support was semi-bogus (i.e. install git to /opt/foo/git and run it
830  without having /opt/foo on $PATH), and more importantly it has
831  become less and less relevant as Git grew more mainstream (i.e. the
832  users would _want_ to have it on their $PATH).  Stop prepending the
833  path in which "git" is installed to users' $PATH, as that would
834  interfere the command search order people depend on (e.g. they may
835  not like versions of programs that are unrelated to Git in /usr/bin
836  and want to override them by having different ones in /usr/local/bin
837  and have the latter directory earlier in their $PATH).
839  Will merge to 'master' in the third batch.
842 * jk/stash-require-clean-index (2015-04-22) 3 commits
843   (merged to 'next' on 2015-05-05 at b5f6c32)
844  + stash: require a clean index to apply
845  + t3903: avoid applying onto dirty index
846  + t3903: stop hard-coding commit sha1s
848  "git stash pop/apply" forgot to make sure that not just the working
849  tree is clean but also the index is clean. The latter is important
850  as a stash application can conflict and the index will be used for
851  conflict resolution.
853  Will merge to 'master' in the third batch.
856 * jc/merge (2015-04-29) 15 commits
857   (merged to 'next' on 2015-05-07 at 1c56512)
858  + merge: deprecate 'git merge <message> HEAD <commit>' syntax
859  + merge: handle FETCH_HEAD internally
860  + merge: decide if we auto-generate the message early in collect_parents()
861  + merge: make collect_parents() auto-generate the merge message
862  + merge: extract prepare_merge_message() logic out
863  + merge: narrow scope of merge_names
864  + merge: split reduce_parents() out of collect_parents()
865  + merge: clarify collect_parents() logic
866  + merge: small leakfix and code simplification
867  + merge: do not check argc to determine number of remote heads
868  + merge: clarify "pulling into void" special case
869  + t5520: test pulling an octopus into an unborn branch
870  + t5520: style fixes
871  + merge: simplify code flow
872  + merge: test the top-level merge driver
873  (this branch is used by jc/merge-drop-old-syntax.)
875  "git merge FETCH_HEAD" learned that the previous "git fetch" could
876  be to create an Octopus merge, i.e. recording multiple branches
877  that are not marked as "not-for-merge"; this allows us to lose an
878  old style invocation "git merge <msg> HEAD $commits..." in the
879  implementation of "git pull" script; the old style syntax can now
880  be deprecated.
882  Will merge to 'master' in the third batch.
885 * jc/merge-drop-old-syntax (2015-04-29) 1 commit
886  - merge: drop 'git merge <message> HEAD <commit>' syntax
887  (this branch uses jc/merge.)
889  Stop supporting "git merge <messsage> HEAD <commit>" syntax that
890  has been deprecated since October 2007.
892  Will merge to 'next' and keep there during the 2.5 cycle.
895 * jk/test-chain-lint (2015-04-28) 2 commits
896   (merged to 'next' on 2015-05-05 at e6f0290)
897  + test-lib: turn on GIT_TEST_CHAIN_LINT by default
898  + t7502-commit.sh: fix a broken and-chain
900  Developer support to automatically detect broken &&-chain in the
901  test scripts is now turned on by default.
903  Will merge to 'master' in the third batch.
906 * bc/connect-plink (2015-04-28) 3 commits
907   (merged to 'next' on 2015-05-05 at 9def2e1)
908  + connect: improve check for plink to reduce false positives
909  + t5601: fix quotation error leading to skipped tests
910  + connect: simplify SSH connection code path
912  The connection initiation code for "ssh" transport tried to absorb
913  differences between the stock "ssh" and Putty-supplied "plink" and
914  its derivatives, but the logic to tell that we are using "plink"
915  variants were too loose and falsely triggered when "plink" appeared
916  anywhere in the path (e.g. "/home/me/bin/uplink/ssh").
918  Will merge to 'master' in the third batch.
921 * jc/test-prereq-validate (2015-04-28) 1 commit
922   (merged to 'next' on 2015-05-05 at a30464c)
923  + test: validate prerequistes syntax
925  Help us to find broken test script that splits the body part of the
926  test by mistaken use of wrong kind of quotes.
928  Will merge to 'master' in the third batch.
931 * fg/document-commit-message-stripping (2015-04-27) 1 commit
932   (merged to 'next' on 2015-05-05 at 1892a99)
933  + Documentation: clarify how "git commit" cleans up the edited log message
935  Will merge to 'master' in the third batch.
938 * ah/usage-strings (2015-05-03) 2 commits
939  - branch: fix funny-sounding error message
940  - blame, log: format usage strings similarly to those in documentation
942  A few usage string updates.  The tip one still needs work.
945 * kn/cat-file-literally (2015-05-06) 4 commits
946  - t1006: add tests for git cat-file --allow-unknown-type
947  - cat-file: teach cat-file a '--allow-unknown-type' option
948  - cat-file: make the options mutually exclusive
949  - sha1_file: support reading from a loose object of unknown type
951  Add the "--allow-unknown-type" option to "cat-file" to allow
952  inspecting loose objects of an experimental or a broken type.
954  Will merge to 'next'.
957 * nd/diff-i-t-a (2015-03-23) 1 commit
958   (merged to 'next' on 2015-05-05 at cba9cd9)
959  + diff-lib.c: adjust position of i-t-a entries in diff
961  Originally merged to 'next' on 2015-03-24
963  After "git add -N", the path appeared in output of "git diff HEAD"
964  and "git diff --cached HEAD", leading "git status" to classify it
965  as "Changes to be committed".  Such a path, however, is not yet to
966  be scheduled to be committed.  "git diff" showed the change to the
967  path as modification, not as a "new file", in the header of its
968  output.
970  Treat such paths as "yet to be added to the index but Git already
971  know about them"; "git diff HEAD" and "git diff --cached HEAD"
972  should not talk about them, and "git diff" should show them as new
973  files yet to be added to the index.
975  Will merge to 'master' in the third batch.
977 --------------------------------------------------
978 [Discarded]
981 * mh/ref-directory-file (2015-05-05) 19 commits
982  . SQUASH???
983  . reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
984  . ref_transaction_commit(): delete extra "the" from error message
985  . ref_transaction_commit(): provide better error messages
986  . rename_ref(): integrate lock_ref_sha1_basic() errors into ours
987  . lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
988  . lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
989  . verify_refname_available(): report errors via a "struct strbuf *err"
990  . verify_refname_available(): rename function
991  . refs: check for D/F conflicts among refs processed in a transaction
992  . ref_transaction_commit(): use a string_list for detecting duplicates
993  . is_refname_available(): use dirname in first loop
994  . struct nonmatching_ref_data: store a refname instead of a ref_entry
995  . report_refname_conflict(): inline function
996  . entry_matches(): inline function
997  . is_refname_available(): convert local variable "dirname" to strbuf
998  . is_refname_available(): avoid shadowing "dir" variable
999  . is_refname_available(): explain the reason for an early exit
1000  . t1404: new tests of D/F conflicts within ref transactions
1001  (this branch uses mh/ref-lock-avoid-running-out-of-fds.)
1003  Reroll posted, but didn't have time to pick it up.
1007 * mh/ref-lock-avoid-running-out-of-fds (2015-04-25) 8 commits
1008  . ref_transaction_commit(): only keep one lockfile open at a time
1009  . ref_transaction_commit(): remove the local flags variables
1010  . write_ref_sha1(): inline function at callers
1011  . commit_ref_update(): new function, extracted from write_ref_sha1()
1012  . write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
1013  . refs.c: remove lock_fd from struct ref_lock
1014  . t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
1015  . update-ref: test handling large transactions properly
1016  (this branch is used by mh/ref-directory-file.)
1018  Superseded by mh/write-refs-sooner* series.