]> git.ipfire.org Git - thirdparty/git.git/commitdiff
What's cooking (2018/08 #05)
authorJunio C Hamano <gitster@pobox.com>
Mon, 20 Aug 2018 20:29:07 +0000 (13:29 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 20 Aug 2018 20:29:07 +0000 (13:29 -0700)
whats-cooking.txt

index a73ef1ab8a42229b0da58591f883b46d8f64d5c9..3a3dae402d3d9f9350fb1699d6b6b77e46dc61b5 100644 (file)
@@ -1,10 +1,10 @@
 To: git@vger.kernel.org
 Bcc: lwn@lwn.net
-Subject: What's cooking in git.git (Aug 2018, #04; Fri, 17)
-X-master-at: fa03cdc39b951d1cfbfd690fe6f3ac6c57ab6a44
-X-next-at: e017bf2cd19392a79e02d0636972bd4c284f89be
+Subject: What's cooking in git.git (Aug 2018, #05; Mon, 20)
+X-master-at: 7e8bfb0412581daf8f3c89909f1d37844e8610dd
+X-next-at: 281dcd1b4d06be64a0a976ddb7172bf180b74c09
 
-What's cooking in git.git (Aug 2018, #04; Fri, 17)
+What's cooking in git.git (Aug 2018, #05; Mon, 20)
 --------------------------------------------------
 
 Here are the topics that have been cooking.  Commits prefixed with
@@ -12,22 +12,9 @@ Here are the topics that have been cooking.  Commits prefixed with
 '+' are in 'next'.  The ones marked with '.' do not appear in any of
 the integration branches, but I am still holding onto them.
 
-Quite a many topics have graduated to 'master', and also a handful
-of topics have entered 'next'.  I am planning to tag -rc0 over the
-weekend, and some topics that are in 'next' and marked for 'master'
-in this issue of "What's cooking" report may be reclassified to cook
-in 'next' during the pre-release period when that happens.
-
-Usually, I refrain from merging larger topics in 'next' down to
-'master' when we get close to -rc0, but I am wondering if it is
-better to merge all of them to 'master', even the ones on the larger
-and possibly undercooked side, expecting that we collectively spend
-effort on hunting and fixing bugs in them during the pre-release
-freeze period.  If we were to go that route, I'd want everybody's
-buy-in and I'll promise to ignore any shiny new toys that appear on
-list that are not regression fixes to topics merged to 'master'
-since the end of the previous cycle to make sure people are not
-distracted.
+An early preview of the upcoming 2.19 release of Git has been tagged
+as v2.19.0-rc0; before -rc1, I plan to merge three more topics to
+'master' from 'next'.
 
 You can find the changes described here in the integration branches
 of the repositories listed at
@@ -37,230 +24,238 @@ of the repositories listed at
 --------------------------------------------------
 [Graduated to "master"]
 
-* ab/fetch-nego (2018-08-01) 3 commits
-  (merged to 'next' on 2018-08-08 at 87662bb344)
- + fetch doc: cross-link two new negotiation options
- + negotiator: unknown fetch.negotiationAlgorithm should error out
- + Merge branch 'jt/fetch-nego-tip' into ab/fetch-nego
+* ab/checkout-default-remote (2018-08-18) 1 commit
+  (merged to 'next' on 2018-08-20 at 21fff26f74)
+ + t2024: mark test using "checkout -p" with PERL prerequisite
 
Update to a few other topics around 'git fetch'.
Test fix.
 
 
-* ab/fsck-transfer-updates (2018-07-27) 10 commits
-  (merged to 'next' on 2018-08-08 at d92085269f)
- + fsck: test and document unknown fsck.<msg-id> values
- + fsck: add stress tests for fsck.skipList
- + fsck: test & document {fetch,receive}.fsck.* config fallback
- + fetch: implement fetch.fsck.*
- + transfer.fsckObjects tests: untangle confusing setup
- + config doc: elaborate on fetch.fsckObjects security
- + config doc: elaborate on what transfer.fsckObjects does
- + config doc: unify the description of fsck.* and receive.fsck.*
- + config doc: don't describe *.fetchObjects twice
- + receive.fsck.<msg-id> tests: remove dead code
+* ab/fetch-tags-noclobber (2018-08-13) 7 commits
+  (merged to 'next' on 2018-08-15 at eca0ac8afa)
+ + pull doc: fix a long-standing grammar error
+ + fetch tests: correct a comment "remove it" -> "remove them"
+ + push tests: assert re-pushing annotated tags
+ + push tests: add more testing for forced tag pushing
+ + push tests: fix logic error in "push" test assertion
+ + push tests: remove redundant 'git push' invocation
+ + fetch tests: change "Tag" test tag to "testTag"
+
+ Test and doc clean-ups.
+
+
+* ab/newhash-is-sha256 (2018-08-07) 2 commits
+  (merged to 'next' on 2018-08-15 at 2e808d75d3)
+ + doc hash-function-transition: pick SHA-256 as NewHash
+ + doc hash-function-transition: note the lack of a changelog
 
- The test performed at the receiving end of "git push" to prevent
- bad objects from entering repository can be customized via
- receive.fsck.* configuration variables; we now have gained a
- counterpart to do the same on the "git fetch" side, with
- fetch.fsck.* configuration variables.
+ Documentation update.
 
 
-* ab/sha1dc (2018-08-02) 1 commit
-  (merged to 'next' on 2018-08-08 at 920c190941)
- + sha1dc: update from upstream
+* ab/submodule-relative-url-tests (2018-08-14) 1 commit
+  (merged to 'next' on 2018-08-17 at 17b28d8262)
+ + submodule: add more exhaustive up-path testing
 
AIX portability update for the SHA1DC hash, imported from upstream.
Test updates.
 
 
-* ab/test-must-be-empty (2018-07-30) 1 commit
-  (merged to 'next' on 2018-08-08 at 06599ebd1f)
+* ab/test-must-be-empty-for-master (2018-07-30) 1 commit
+  (merged to 'next' on 2018-08-15 at 17652a77fb)
  + tests: make use of the test_must_be_empty function
 
  Test updates.
 
 
-* ar/t4150-am-scissors-test-fix (2018-08-06) 1 commit
-  (merged to 'next' on 2018-08-08 at e639183205)
- + t4150: fix broken test for am --scissors
+* ds/commit-graph-fsck (2018-08-13) 1 commit
+  (merged to 'next' on 2018-08-15 at a2f82d3cbd)
+ + t5318: use 'test_cmp_bin' to compare commit-graph files
 
  Test fix.
 
 
-* en/abort-df-conflict-fixes (2018-07-31) 2 commits
-  (merged to 'next' on 2018-08-08 at a19cad0bb7)
- + read-cache: fix directory/file conflict handling in read_index_unmerged()
- + t1015: demonstrate directory/file conflict recovery failures
-
- "git merge --abort" etc. did not clean things up properly when
there were conflicted entries in the index in certain order that
- are involved in D/F conflicts.  This has been corrected.
+* en/incl-forward-decl (2018-08-15) 6 commits
+  (merged to 'next' on 2018-08-17 at 04fc9c11bb)
+ + Remove forward declaration of an enum
+ + compat/precompose_utf8.h: use more common include guard style
+ + urlmatch.h: fix include guard
+ + Move definition of enum branch_track from cache.h to branch.h
+ alloc: make allocate_alloc_state and clear_alloc_state more consistent
+ + Add missing includes and forward declarations
 
+ Code hygiene improvement for the header files.
 
-* en/t3031-title-fix (2018-08-06) 1 commit
-  (merged to 'next' on 2018-08-08 at 3913b03884)
- + t3031: update test description to mention desired behavior
 
- Test fix.
+* en/t7406-fixes (2018-08-08) 5 commits
+  (merged to 'next' on 2018-08-15 at c6a740d828)
+ + t7406: avoid using test_must_fail for commands other than git
+ + t7406: prefer test_* helper functions to test -[feds]
+ + t7406: avoid having git commands upstream of a pipe
+ + t7406: simplify by using diff --name-only instead of diff --raw
+ + t7406: fix call that was failing for the wrong reason
 
+ Test fixes.
 
-* es/rebase-i-author-script-fix (2018-07-31) 4 commits
-  (merged to 'next' on 2018-08-08 at 6b34261b72)
- + sequencer: don't die() on bogus user-edited timestamp
- + sequencer: fix "rebase -i --root" corrupting author header timestamp
- + sequencer: fix "rebase -i --root" corrupting author header timezone
- + sequencer: fix "rebase -i --root" corrupting author header
- (this branch is used by pw/rebase-i-author-script-fix.)
 
- The "author-script" file "git rebase -i" creates got broken when
- we started to move the command away from shell script, which is
- getting fixed now.
+* en/update-index-doc (2018-08-08) 1 commit
+  (merged to 'next' on 2018-08-15 at 3ee0ae14dc)
+ + git-update-index.txt: reword possibly confusing example
 
+ Doc update.
 
-* es/want-color-fd-defensive (2018-08-03) 1 commit
-  (merged to 'next' on 2018-08-08 at a11d90d26f)
- + color: protect against out-of-bounds reads and writes
 
- Futureproofing a helper function that can easily be misused.
+* es/chain-lint-more (2018-08-13) 6 commits
+  (merged to 'next' on 2018-08-15 at bb5150ee96)
+ + chainlint: add test of pathological case which triggered false positive
+ + chainlint: recognize multi-line quoted strings more robustly
+ + chainlint: let here-doc and multi-line string commence on same line
+ + chainlint: recognize multi-line $(...) when command cuddled with "$("
+ + chainlint: match 'quoted' here-doc tags
+ + chainlint: match arbitrary here-docs tags rather than hard-coded names
 
+ Improve built-in facility to catch broken &&-chain in the tests.
 
-* hn/config-in-code-comment (2018-08-06) 1 commit
-  (merged to 'next' on 2018-08-08 at 1fae946a0f)
- + config: document git config getter return value
 
- Header update.
+* hn/highlight-sideband-keywords (2018-08-18) 2 commits
+  (merged to 'next' on 2018-08-20 at ec6f953f8c)
+ + sideband: do not read beyond the end of input
+  (merged to 'next' on 2018-08-15 at f8945f3be5)
+ + sideband: highlight keywords in remote sideband output
 
+ The sideband code learned to optionally paint selected keywords at
+ the beginning of incoming lines on the receiving end.
 
-* jk/diff-rendered-docs (2018-08-06) 1 commit
-  (merged to 'next' on 2018-08-08 at fe6e1b4dbe)
- + add a script to diff rendered documentation
 
- The end result of documentation update has been made to be
- inspected more easily to help developers.
+* jc/gpg-status (2018-08-09) 1 commit
+  (merged to 'next' on 2018-08-15 at 824781761a)
+ + gpg-interface: propagate exit status from gpg back to the callers
 
+ "git verify-tag" and "git verify-commit" have been taught to use
+ the exit status of underlying "gpg --verify" to signal bad or
+ untrusted signature they found.
 
-* jk/merge-subtree-heuristics (2018-08-02) 1 commit
-  (merged to 'next' on 2018-08-08 at 5126c2d717)
- + score_trees(): fix iteration over trees with missing entries
 
- The automatic tree-matching in "git merge -s subtree" was broken 5
- years ago and nobody has noticed since then, which is now fixed.
+* jc/update-index-doc (2018-08-08) 1 commit
+  (merged to 'next' on 2018-08-15 at 055994ccca)
+ + update-index: there no longer is `apply --index-info`
 
+ Doc update.
 
-* js/pull-rebase-type-shorthand (2018-08-06) 1 commit
-  (merged to 'next' on 2018-08-08 at 9213756b36)
- + pull --rebase=<type>: allow single-letter abbreviations for the type
 
- "git pull --rebase=interactive" learned "i" as a short-hand for
- "interactive".
+* jh/partial-clone-doc (2018-08-15) 1 commit
+  (merged to 'next' on 2018-08-15 at cf09e8be6a)
+ + partial-clone: render design doc using asciidoc
 
+ Doc updates.
 
-* jt/refspec-dwim-precedence-fix (2018-08-02) 1 commit
-  (merged to 'next' on 2018-08-08 at 34d0484d3a)
- + remote: make refspec follow the same disambiguation rule as local refs
 
- "git fetch $there refs/heads/s" ought to fetch the tip of the
- branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
- name is "refs/heads/s" exists at the same time, fetched that one
- instead by mistake.  This has been corrected to honor the usual
- disambiguation rules for abbreviated refnames.
+* jk/for-each-object-iteration (2018-08-14) 11 commits
+  (merged to 'next' on 2018-08-15 at e2558810ff)
+ + for_each_*_object: move declarations to object-store.h
+ + cat-file: use a single strbuf for all output
+ + cat-file: split batch "buf" into two variables
+ + cat-file: use oidset check-and-insert
+ + cat-file: support "unordered" output for --batch-all-objects
+ + cat-file: rename batch_{loose,packed}_object callbacks
+ + t1006: test cat-file --batch-all-objects with duplicates
+ + for_each_packed_object: support iterating in pack-order
+ + for_each_*_object: give more comprehensive docstrings
+ + for_each_*_object: take flag arguments as enum
+ + for_each_*_object: store flag definitions in a single location
 
+ The API to iterate over all objects learned to optionally list
+ objects in the order they appear in packfiles, which helps locality
+ of access if the caller accesses these objects while as objects are
+ enumerated.
 
-* mk/http-backend-content-length (2018-07-30) 4 commits
-  (merged to 'next' on 2018-08-08 at 0091062ec4)
- + t5562: avoid non-portable "export FOO=bar" construct
- + http-backend: respect CONTENT_LENGTH for receive-pack
- + http-backend: respect CONTENT_LENGTH as specified by rfc3875
- + http-backend: cleanup writing to child process
 
- The http-backend (used for smart-http transport) used to slurp the
- whole input until EOF, without paying attention to CONTENT_LENGTH
- that is supplied in the environment and instead expecting the Web
- server to close the input stream.  This has been fixed.
+* js/chain-lint-attrfix (2018-08-15) 1 commit
+  (merged to 'next' on 2018-08-15 at e9ad19a848)
+ + chainlint: fix for core.autocrlf=true
 
+ Test fix.
 
-* nd/complete-config-vars (2018-08-06) 1 commit
-  (merged to 'next' on 2018-08-08 at ffc8e1a3cd)
- + Makefile: add missing dependency for command-list.h
 
- Build fix.
+* js/mingw-o-append (2018-08-13) 1 commit
+  (merged to 'next' on 2018-08-15 at 284527a0fb)
+ + mingw: enable atomic O_APPEND
 
+ Among the three codepaths we use O_APPEND to open a file for
+ appending, one used for writing GIT_TRACE output requires O_APPEND
+ implementation that behaves sensibly when multiple processes are
+ writing to the same file.  POSIX emulation used in the Windows port
+ has been updated to improve in this area.
 
-* nd/config-blame-sort (2018-08-06) 1 commit
-  (merged to 'next' on 2018-08-08 at 34ebb9888f)
- + config.txt: reorder blame stuff to keep config keys sorted
 
- Doc fix.
+* js/range-diff (2018-08-13) 21 commits
+  (merged to 'next' on 2018-08-15 at 8d56067806)
+ + range-diff: use dim/bold cues to improve dual color mode
+ + range-diff: make --dual-color the default mode
+ + range-diff: left-pad patch numbers
+ + completion: support `git range-diff`
+ + range-diff: populate the man page
+ + range-diff --dual-color: skip white-space warnings
+ + range-diff: offer to dual-color the diffs
+ + diff: add an internal option to dual-color diffs of diffs
+ + color: add the meta color GIT_COLOR_REVERSE
+ + range-diff: use color for the commit pairs
+ + range-diff: add tests
+ + range-diff: do not show "function names" in hunk headers
+ + range-diff: adjust the output of the commit pairs
+ + range-diff: suppress the diff headers
+ + range-diff: indent the diffs just like tbdiff
+ + range-diff: right-trim commit messages
+ + range-diff: also show the diff between patches
+ + range-diff: improve the order of the shown commits
+ + range-diff: first rudimentary implementation
+ + Introduce `range-diff` to compare iterations of a topic branch
+ + linear-assignment: a function to solve least-cost assignment problems
+ (this branch is used by es/format-patch-rangediff and sb/range-diff-colors.)
 
+ "git tbdiff" that lets us compare individual patches in two
+ iterations of a topic has been rewritten and made into a built-in
+ command.
 
-* nd/no-extern (2018-08-03) 12 commits
-  (merged to 'next' on 2018-08-08 at bcce75766b)
- + submodule.h: drop extern from function declaration
- + revision.h: drop extern from function declaration
- + repository.h: drop extern from function declaration
- + rerere.h: drop extern from function declaration
- + line-range.h: drop extern from function declaration
- + diff.h: remove extern from function declaration
- + diffcore.h: drop extern from function declaration
- + convert.h: drop 'extern' from function declaration
- + cache-tree.h: drop extern from function declaration
- + blame.h: drop extern on func declaration
- + attr.h: drop extern from function declaration
- + apply.h: drop extern on func declaration
- (this branch is used by nd/no-the-index.)
 
- Noiseword "extern" has been removed from function decls in the
- header files.
+* js/rebase-merges-exec-fix (2018-08-09) 2 commits
+  (merged to 'next' on 2018-08-15 at 9de975d92d)
+ + rebase --exec: make it work with --rebase-merges
+ + t3430: demonstrate what -r, --autosquash & --exec should do
 
+ The "--exec" option to "git rebase --rebase-merges" placed the exec
+ commands at wrong places, which has been corrected.
 
-* ot/ref-filter-object-info (2018-07-17) 5 commits
-  (merged to 'next' on 2018-08-08 at 9ed619941b)
- + ref-filter: use oid_object_info() to get object
- + ref-filter: merge get_obj and get_object
- + ref-filter: initialize eaten variable
- + ref-filter: fill empty fields with empty values
- + ref-filter: add info_source to valid_atom
 
- A few atoms like %(objecttype) and %(objectsize) in the format
- specifier of "for-each-ref --format=<format>" can be filled without
- getting the full contents of the object, but just with the object
- header.  These cases have been optimized by calling
- oid_object_info() API (instead of reading and inspecting the data).
+* js/typofixes (2018-08-08) 2 commits
+  (merged to 'next' on 2018-08-15 at ce3932254a)
+ + remote-curl: remove spurious period
+ + git-compat-util.h: fix typo
 
+ Comment update.
 
-* rs/parse-opt-lithelp (2018-08-03) 7 commits
-  (merged to 'next' on 2018-08-08 at 3a4e0142fe)
- + parse-options: automatically infer PARSE_OPT_LITERAL_ARGHELP
- + shortlog: correct option help for -w
- + send-pack: specify --force-with-lease argument help explicitly
- + pack-objects: specify --index-version argument help explicitly
- + difftool: remove angular brackets from argument help
- + add, update-index: fix --chmod argument help
- + push: use PARSE_OPT_LITERAL_ARGHELP instead of unbalanced brackets
 
- The parse-options machinery learned to refrain from enclosing
- placeholder string inside a "<bra" and "ket>" pair automatically
- without PARSE_OPT_LITERAL_ARGHELP.  Existing help text for option
- arguments that are not formatted correctly have been identified and
- fixed.
+* jt/commit-graph-per-object-store (2018-08-13) 1 commit
+  (merged to 'next' on 2018-08-15 at 5d6db738d8)
+ + t5318: avoid unnecessary command substitutions
 
+ Test update.
 
-* sb/indent-heuristic-optim (2018-08-01) 1 commit
-  (merged to 'next' on 2018-08-08 at 539dcc967a)
- + xdiff: reduce indent heuristic overhead
 
- "git diff --indent-heuristic" had a bad corner case performance.
+* jt/fetch-negotiator-skipping (2018-08-10) 1 commit
+  (merged to 'next' on 2018-08-15 at 3cf8fa32f5)
+ + t5552: suppress upload-pack trace output
 
---------------------------------------------------
-[New Topics]
+ Test fix.
 
-* ep/worktree-quiet-option (2018-08-17) 1 commit
- - worktree: add --quiet option
 
- "git worktree" command learned "--quiet" option to make it less
- verbose.
+* jt/repack-promisor-packs (2018-08-09) 2 commits
+  (merged to 'next' on 2018-08-17 at 6869b53a69)
+ + repack: repack promisor objects if -a or -A is set
+ + repack: refactor setup of pack-objects cmd
 
- Will merge to 'next'.
+ After a partial clone, repeated fetches from promisor remote would
+ have accumulated many packfiles marked with .promisor bit without
+ getting them coalesced into fewer packfiles, hurting performance.
+ "git repack" now learned to repack them.
 
 
 * nd/cherry-pick-quit-fix (2018-08-16) 1 commit
@@ -271,17 +266,45 @@ of the repositories listed at
  though we won't be in a cherry-pick session after it returns, which
  has been corrected.
 
- Will merge to 'master'.
 
+* nd/no-the-index (2018-08-13) 24 commits
+  (merged to 'next' on 2018-08-15 at 41e53dc53b)
+ + blame.c: remove implicit dependency on the_index
+ + apply.c: remove implicit dependency on the_index
+ + apply.c: make init_apply_state() take a struct repository
+ + apply.c: pass struct apply_state to more functions
+ + resolve-undo.c: use the right index instead of the_index
+ + archive-*.c: use the right repository
+ + archive.c: avoid access to the_index
+ + grep: use the right index instead of the_index
+ + attr: remove index from git_attr_set_direction()
+ + entry.c: use the right index instead of the_index
+ + submodule.c: use the right index instead of the_index
+ + pathspec.c: use the right index instead of the_index
+ + unpack-trees: avoid the_index in verify_absent()
+ + unpack-trees: convert clear_ce_flags* to avoid the_index
+ + unpack-trees: don't shadow global var the_index
+ + unpack-trees: add a note about path invalidation
+ + unpack-trees: remove 'extern' on function declaration
+ + ls-files: correct index argument to get_convert_attr_ascii()
+ + preload-index.c: use the right index instead of the_index
+ + dir.c: remove an implicit dependency on the_index in pathspec code
+ + convert.c: remove an implicit dependency on the_index
+ + attr: remove an implicit dependency on the_index
+ + cache-tree: wrap the_index based wrappers with #ifdef
+ + diff.c: move read_index() code back to the caller
+
+ The more library-ish parts of the codebase learned to work on the
+ in-core index-state instance that is passed in by their callers,
+ instead of always working on the singleton "the_index" instance.
 
-* nd/config-core-checkstat-doc (2018-08-17) 1 commit
- - config.txt: clarify core.checkStat
 
- The meaning of the possible values the "core.checkStat"
- configuration variable can take were not adequately documented,
- which has been fixed.
+* ng/mergetool-lose-final-prompt (2018-08-13) 1 commit
+  (merged to 'next' on 2018-08-15 at f8f7ac365b)
+ + mergetool: don't suggest to continue after last file
 
- Will merge to 'next'.
+ "git mergetool" stopped and gave an extra prompt to continue after
+ the last path has been handled, which did not make much sense.
 
 
 * pw/rebase-i-merge-segv-fix (2018-08-16) 2 commits
@@ -292,7 +315,34 @@ of the repositories listed at
  "git rebase -i", when a 'merge <branch>' insn in its todo list
  fails, segfaulted, which has been (minimally) corrected.
 
- Will merge to 'master'.
+
+* pw/rebase-i-squash-number-fix (2018-08-15) 1 commit
+  (merged to 'next' on 2018-08-17 at ac54dfa51a)
+ + rebase -i: fix numbering in squash message
+
+ When "git rebase -i" is told to squash two or more commits into
+ one, it labeled the log message for each commit with its number.
+ It correctly called the first one "1st commit", but the next one
+ was "commit #1", which was off-by-one.  This has been corrected.
+
+
+* sb/config-write-fix (2018-08-08) 3 commits
+  (merged to 'next' on 2018-08-17 at 7d9c7ce81f)
+ + git-config: document accidental multi-line setting in deprecated syntax
+ + config: fix case sensitive subsection names on writing
+ + t1300: document current behavior of setting options
+
+ Recent update to "git config" broke updating variable in a
+ subsection, which has been corrected.
+
+
+* sb/pull-rebase-submodule (2018-08-14) 1 commit
+  (merged to 'next' on 2018-08-15 at 07c7b55cc9)
+ + git-submodule.sh: accept verbose flag in cmd_update to be non-quiet
+
+ "git pull --rebase -v" in a repository with a submodule barfed as
+ an intermediate process did not understand what "-v(erbose)" flag
+ meant, which has been fixed.
 
 
 * sb/submodule-cleanup (2018-08-16) 2 commits
@@ -302,25 +352,30 @@ of the repositories listed at
 
  A few preliminary minor clean-ups in the area around submodules.
 
- Will merge to 'master'.
 
+* sg/t5310-empty-input-fix (2018-08-14) 1 commit
+  (merged to 'next' on 2018-08-15 at c3c03973a0)
+ + t5310-pack-bitmaps: fix bogus 'pack-objects to file can use bitmap' test
 
-* sm/branch-sort-config (2018-08-16) 1 commit
- - branch: support configuring --sort via .gitconfig
+ Test fix.
 
- "git branch --list" learned to take the default sort order from the
- 'branch.sort' configuration variable, just like "git tag --list"
- pays attention to 'tag.sort'.
 
- Will merge to 'next'.
+* sk/instaweb-rh-update (2018-08-08) 2 commits
+  (merged to 'next' on 2018-08-15 at ce5f1115e9)
+ + git-instaweb: fix apache2 config with apache >= 2.4
+ + git-instaweb: support Fedora/Red Hat apache module path
 
+ "git instaweb" has been adjusted to run better with newer Apache on
+ RedHat based distros.
 
-* ab/unconditional-free-and-null (2018-08-17) 1 commit
- - refactor various if (x) FREE_AND_NULL(x) to just FREE_AND_NULL(x)
 
- Code clean-up.
+* wc/make-funnynames-shared-lazy-prereq (2018-08-06) 1 commit
+  (merged to 'next' on 2018-08-17 at b932a0894b)
+ + t: factor out FUNNYNAMES as shared lazy prereq
 
- Will merge to 'next'.
+ A test prerequisite defined by various test scripts with slightly
+ different semantics has been consolidated into a single copy and
+ made into a lazily defined one.
 
 --------------------------------------------------
 [Stalled]
@@ -419,251 +474,99 @@ of the repositories listed at
 --------------------------------------------------
 [Cooking]
 
-* bp/checkout-new-branch-optim (2018-08-16) 1 commit
- - checkout: optimize "git checkout -b <new_branch>"
-
- "git checkout -b newbranch [HEAD]" should not have to do as much as
- checking out a commit different from HEAD.  An attempt is made to
- optimize this special case.
-
- So... what is the status of this thing?  Is the other "optimize
- unpack-trees" effort turning out to be a safer and less hacky way
- to achieve similar gain and this no longer is needed?
-
-
-* en/t7406-fixes (2018-08-08) 5 commits
-  (merged to 'next' on 2018-08-15 at c6a740d828)
- + t7406: avoid using test_must_fail for commands other than git
- + t7406: prefer test_* helper functions to test -[feds]
- + t7406: avoid having git commands upstream of a pipe
- + t7406: simplify by using diff --name-only instead of diff --raw
- + t7406: fix call that was failing for the wrong reason
-
- Test fixes.
-
- Will merge to 'master'.
-
-
-* en/update-index-doc (2018-08-08) 1 commit
-  (merged to 'next' on 2018-08-15 at 3ee0ae14dc)
- + git-update-index.txt: reword possibly confusing example
-
- Doc update.
-
- Will merge to 'master'.
-
-
-* jc/update-index-doc (2018-08-08) 1 commit
-  (merged to 'next' on 2018-08-15 at 055994ccca)
- + update-index: there no longer is `apply --index-info`
-
- Doc update.
-
- Will merge to 'master'.
-
-
-* js/typofixes (2018-08-08) 2 commits
-  (merged to 'next' on 2018-08-15 at ce3932254a)
- + remote-curl: remove spurious period
- + git-compat-util.h: fix typo
-
- Comment update.
-
- Will merge to 'master'.
-
-
-* jt/repack-promisor-packs (2018-08-09) 2 commits
-  (merged to 'next' on 2018-08-17 at 6869b53a69)
- + repack: repack promisor objects if -a or -A is set
- + repack: refactor setup of pack-objects cmd
-
- After a partial clone, repeated fetches from promisor remote would
- have accumulated many packfiles marked with .promisor bit without
- getting them coalesced into fewer packfiles, hurting performance.
- "git repack" now learned to repack them.
-
- Will merge to 'master'.
-
-
-* sk/instaweb-rh-update (2018-08-08) 2 commits
-  (merged to 'next' on 2018-08-15 at ce5f1115e9)
- + git-instaweb: fix apache2 config with apache >= 2.4
- + git-instaweb: support Fedora/Red Hat apache module path
-
- "git instaweb" has been adjusted to run better with newer Apache on
- RedHat based distros.
-
- Will merge to 'master'.
-
-
-* ab/submodule-relative-url-tests (2018-08-14) 1 commit
-  (merged to 'next' on 2018-08-17 at 17b28d8262)
- + submodule: add more exhaustive up-path testing
-
- Test updates.
-
- Will merge to 'master'.
-
-
-* ao/submodule-wo-gitmodules-checked-out (2018-08-14) 7 commits
- - submodule: support reading .gitmodules even when it's not checked out
- - t7506: clean up .gitmodules properly before setting up new scenario
- - submodule: use the 'submodule--helper config' command
- - submodule--helper: add a new 'config' subcommand
- - t7411: be nicer to future tests and really clean things up
- - submodule: factor out a config_set_in_gitmodules_file_gently function
- - submodule: add a print_config_from_gitmodules() helper
-
- The submodule support has been updated to read from the blob at
- HEAD:.gitmodules when the .gitmodules file is missing from the
- working tree.
-
- I find the design a bit iffy in that our usual "missing in the
- working tree?  let's use the latest blob" fallback is to take it
- from the index, not from the HEAD.
-
-
-* bw/submodule-name-to-dir (2018-08-10) 2 commits
- - submodule: munge paths to submodule git directories
- - submodule: create helper to build paths to submodule gitdirs
+* ep/worktree-quiet-option (2018-08-17) 1 commit
+ - worktree: add --quiet option
 
- In modern repository layout, the real body of a cloned submodule
- repository is held in .git/modules/ of the superproject, indexed by
- the submodule name.  URLencode the submodule name before computing
- the name of the directory to make sure they form a flat namespace.
+ "git worktree" command learned "--quiet" option to make it less
+ verbose.
 
  Will merge to 'next'.
 
 
-* cc/delta-islands (2018-08-16) 7 commits
- - pack-objects: move 'layer' into 'struct packing_data'
- - pack-objects: move tree_depth into 'struct packing_data'
- - t5320: tests for delta islands
- - repack: add delta-islands support
- - pack-objects: add delta-islands support
- - pack-objects: refactor code into compute_layer_order()
- - Add delta-islands.{c,h}
-
- Lift code from GitHub to restrict delta computation so that an
- object that exists in one fork is not made into a delta against
- another object that does not appear in the same forked repository.
-
- What's the doneness of this topic?
-
-
-* ds/commit-graph-fsck (2018-08-13) 1 commit
-  (merged to 'next' on 2018-08-15 at a2f82d3cbd)
- + t5318: use 'test_cmp_bin' to compare commit-graph files
-
- Test fix.
-
- Will merge to 'master'.
-
-
-* en/incl-forward-decl (2018-08-15) 6 commits
-  (merged to 'next' on 2018-08-17 at 04fc9c11bb)
- + Remove forward declaration of an enum
- + compat/precompose_utf8.h: use more common include guard style
- + urlmatch.h: fix include guard
- + Move definition of enum branch_track from cache.h to branch.h
- + alloc: make allocate_alloc_state and clear_alloc_state more consistent
- + Add missing includes and forward declarations
-
- Code hygiene improvement for the header files.
-
- Will merge to 'master'.
-
-
-* es/chain-lint-more (2018-08-13) 6 commits
-  (merged to 'next' on 2018-08-15 at bb5150ee96)
- + chainlint: add test of pathological case which triggered false positive
- + chainlint: recognize multi-line quoted strings more robustly
- + chainlint: let here-doc and multi-line string commence on same line
- + chainlint: recognize multi-line $(...) when command cuddled with "$("
- + chainlint: match 'quoted' here-doc tags
- + chainlint: match arbitrary here-docs tags rather than hard-coded names
-
- Improve built-in facility to catch broken &&-chain in the tests.
-
- Will merge to 'master'.
-
+* nd/config-core-checkstat-doc (2018-08-17) 1 commit
+ - config.txt: clarify core.checkStat
 
-* jc/gpg-status (2018-08-09) 1 commit
-  (merged to 'next' on 2018-08-15 at 824781761a)
- + gpg-interface: propagate exit status from gpg back to the callers
+ The meaning of the possible values the "core.checkStat"
+ configuration variable can take were not adequately documented,
+ which has been fixed.
 
- Will merge to 'master'.
+ Will merge to 'next'.
 
 
-* jh/partial-clone-doc (2018-08-15) 1 commit
-  (merged to 'next' on 2018-08-15 at cf09e8be6a)
- + partial-clone: render design doc using asciidoc
+* sm/branch-sort-config (2018-08-16) 1 commit
+ - branch: support configuring --sort via .gitconfig
 
- Doc updates.
+ "git branch --list" learned to take the default sort order from the
+ 'branch.sort' configuration variable, just like "git tag --list"
+ pays attention to 'tag.sort'.
 
- Will merge to 'master'.
+ Will merge to 'next'.
 
 
-* jk/for-each-object-iteration (2018-08-14) 11 commits
-  (merged to 'next' on 2018-08-15 at e2558810ff)
- + for_each_*_object: move declarations to object-store.h
- + cat-file: use a single strbuf for all output
- + cat-file: split batch "buf" into two variables
- + cat-file: use oidset check-and-insert
- + cat-file: support "unordered" output for --batch-all-objects
- + cat-file: rename batch_{loose,packed}_object callbacks
- + t1006: test cat-file --batch-all-objects with duplicates
- + for_each_packed_object: support iterating in pack-order
- + for_each_*_object: give more comprehensive docstrings
- + for_each_*_object: take flag arguments as enum
- + for_each_*_object: store flag definitions in a single location
+* ab/unconditional-free-and-null (2018-08-17) 1 commit
+ - refactor various if (x) FREE_AND_NULL(x) to just FREE_AND_NULL(x)
 
- The API to iterate over all objects learned to optionally list
- objects in the order they appear in packfiles, which helps locality
- of access if the caller accesses these objects while as objects are
- enumerated.
+ Code clean-up.
 
- Will merge to 'master'.
+ Will merge to 'next'.
 
 
-* js/chain-lint-attrfix (2018-08-15) 1 commit
-  (merged to 'next' on 2018-08-15 at e9ad19a848)
- + chainlint: fix for core.autocrlf=true
+* bp/checkout-new-branch-optim (2018-08-16) 1 commit
+ - checkout: optimize "git checkout -b <new_branch>"
 
- Test fix.
+ "git checkout -b newbranch [HEAD]" should not have to do as much as
+ checking out a commit different from HEAD.  An attempt is made to
+ optimize this special case.
 
- Will merge to 'master'.
+ So... what is the status of this thing?  Is the other "optimize
+ unpack-trees" effort turning out to be a safer and less hacky way
+ to achieve similar gain and this no longer is needed?
 
 
-* js/mingw-o-append (2018-08-13) 1 commit
-  (merged to 'next' on 2018-08-15 at 284527a0fb)
- + mingw: enable atomic O_APPEND
+* ao/submodule-wo-gitmodules-checked-out (2018-08-14) 7 commits
+ - submodule: support reading .gitmodules even when it's not checked out
+ - t7506: clean up .gitmodules properly before setting up new scenario
+ - submodule: use the 'submodule--helper config' command
+ - submodule--helper: add a new 'config' subcommand
+ - t7411: be nicer to future tests and really clean things up
+ - submodule: factor out a config_set_in_gitmodules_file_gently function
+ - submodule: add a print_config_from_gitmodules() helper
 
- Among the three codepaths we use O_APPEND to open a file for
- appending, one used for writing GIT_TRACE output requires O_APPEND
- implementation that behaves sensibly when multiple processes are
- writing to the same file.  POSIX emulation used in the Windows port
- has been updated to improve in this area.
+ The submodule support has been updated to read from the blob at
+ HEAD:.gitmodules when the .gitmodules file is missing from the
+ working tree.
 
- Will merge to 'master'.
+ I find the design a bit iffy in that our usual "missing in the
+ working tree?  let's use the latest blob" fallback is to take it
+ from the index, not from the HEAD.
 
 
-* jt/commit-graph-per-object-store (2018-08-13) 1 commit
-  (merged to 'next' on 2018-08-15 at 5d6db738d8)
+ t5318: avoid unnecessary command substitutions
+* bw/submodule-name-to-dir (2018-08-10) 2 commits
+ - submodule: munge paths to submodule git directories
- submodule: create helper to build paths to submodule gitdirs
 
- Test update.
+ In modern repository layout, the real body of a cloned submodule
+ repository is held in .git/modules/ of the superproject, indexed by
+ the submodule name.  URLencode the submodule name before computing
+ the name of the directory to make sure they form a flat namespace.
 
- Will merge to 'master'.
+ Will merge to 'next'.
 
 
-* jt/fetch-negotiator-skipping (2018-08-10) 1 commit
-  (merged to 'next' on 2018-08-15 at 3cf8fa32f5)
- + t5552: suppress upload-pack trace output
+* cc/delta-islands (2018-08-16) 7 commits
+ - pack-objects: move 'layer' into 'struct packing_data'
+ - pack-objects: move tree_depth into 'struct packing_data'
+ - t5320: tests for delta islands
+ - repack: add delta-islands support
+ - pack-objects: add delta-islands support
+ - pack-objects: refactor code into compute_layer_order()
+ - Add delta-islands.{c,h}
 
- Test fix.
+ Lift code from GitHub to restrict delta computation so that an
+ object that exists in one fork is not made into a delta against
+ another object that does not appear in the same forked repository.
 
- Will merge to 'master'.
+ What's the doneness of this topic?
 
 
 * md/filter-trees (2018-08-16) 6 commits
@@ -678,50 +581,6 @@ of the repositories listed at
  "tree:0" filter.
 
 
-* nd/no-the-index (2018-08-13) 24 commits
-  (merged to 'next' on 2018-08-15 at 41e53dc53b)
- + blame.c: remove implicit dependency on the_index
- + apply.c: remove implicit dependency on the_index
- + apply.c: make init_apply_state() take a struct repository
- + apply.c: pass struct apply_state to more functions
- + resolve-undo.c: use the right index instead of the_index
- + archive-*.c: use the right repository
- + archive.c: avoid access to the_index
- + grep: use the right index instead of the_index
- + attr: remove index from git_attr_set_direction()
- + entry.c: use the right index instead of the_index
- + submodule.c: use the right index instead of the_index
- + pathspec.c: use the right index instead of the_index
- + unpack-trees: avoid the_index in verify_absent()
- + unpack-trees: convert clear_ce_flags* to avoid the_index
- + unpack-trees: don't shadow global var the_index
- + unpack-trees: add a note about path invalidation
- + unpack-trees: remove 'extern' on function declaration
- + ls-files: correct index argument to get_convert_attr_ascii()
- + preload-index.c: use the right index instead of the_index
- + dir.c: remove an implicit dependency on the_index in pathspec code
- + convert.c: remove an implicit dependency on the_index
- + attr: remove an implicit dependency on the_index
- + cache-tree: wrap the_index based wrappers with #ifdef
- + diff.c: move read_index() code back to the caller
-
- The more library-ish parts of the codebase learned to work on the
- in-core index-state instance that is passed in by their callers,
- instead of always working on the singleton "the_index" instance.
-
- Will merge to 'master'.
-
-
-* ng/mergetool-lose-final-prompt (2018-08-13) 1 commit
-  (merged to 'next' on 2018-08-15 at f8f7ac365b)
- + mergetool: don't suggest to continue after last file
-
- "git mergetool" stopped and gave an extra prompt to continue after
- the last path has been handled, which did not make much sense.
-
- Will merge to 'master'.
-
-
 * ng/status-i-short-for-ignored (2018-08-09) 1 commit
  - status: -i shorthand for --ignored command line option
 
@@ -822,95 +681,6 @@ of the repositories listed at
  - sha1-name.c: added 'get_oidf', which acts like 'get_oid'
 
 
-* pw/rebase-i-squash-number-fix (2018-08-15) 1 commit
-  (merged to 'next' on 2018-08-17 at ac54dfa51a)
- + rebase -i: fix numbering in squash message
-
- When "git rebase -i" is told to squash two or more commits into
- one, it labeled the log message for each commit with its number.
- It correctly called the first one "1st commit", but the next one
- was "commit #1", which was off-by-one.  This has been corrected.
-
- Will merge to 'master'.
-
-
-* sb/pull-rebase-submodule (2018-08-14) 1 commit
-  (merged to 'next' on 2018-08-15 at 07c7b55cc9)
- + git-submodule.sh: accept verbose flag in cmd_update to be non-quiet
-
- "git pull --rebase -v" in a repository with a submodule barfed as
- an intermediate process did not understand what "-v(erbose)" flag
- meant, which has been fixed.
-
- Will merge to 'master'.
-
-
-* sg/t5310-empty-input-fix (2018-08-14) 1 commit
-  (merged to 'next' on 2018-08-15 at c3c03973a0)
- + t5310-pack-bitmaps: fix bogus 'pack-objects to file can use bitmap' test
-
- Test fix.
-
- Will merge to 'master'.
-
-
-* js/rebase-merges-exec-fix (2018-08-09) 2 commits
-  (merged to 'next' on 2018-08-15 at 9de975d92d)
- + rebase --exec: make it work with --rebase-merges
- + t3430: demonstrate what -r, --autosquash & --exec should do
-
- The "--exec" option to "git rebase --rebase-merges" placed the exec
- commands at wrong places, which has been corrected.
-
- Will merge to 'master'.
-
-
-* wc/make-funnynames-shared-lazy-prereq (2018-08-06) 1 commit
-  (merged to 'next' on 2018-08-17 at b932a0894b)
- + t: factor out FUNNYNAMES as shared lazy prereq
-
- A test prerequisite defined by various test scripts with slightly
- different semantics has been consolidated into a single copy and
- made into a lazily defined one.
-
- Will merge to 'master'.
-
-
-* ab/test-must-be-empty-for-master (2018-07-30) 1 commit
-  (merged to 'next' on 2018-08-15 at 17652a77fb)
- + tests: make use of the test_must_be_empty function
-
- Test updates.
-
- Will merge to 'master'.
-
-
-* hn/highlight-sideband-keywords (2018-08-17) 2 commits
- - sideband: do not read beyond the end of input
-  (merged to 'next' on 2018-08-15 at f8945f3be5)
- + sideband: highlight keywords in remote sideband output
-
- The sideband code learned to optionally paint selected keywords at
- the beginning of incoming lines on the receiving end.
-
- Will merge to 'master'.
-
-
-* ab/fetch-tags-noclobber (2018-08-13) 7 commits
-  (merged to 'next' on 2018-08-15 at eca0ac8afa)
- + pull doc: fix a long-standing grammar error
- + fetch tests: correct a comment "remove it" -> "remove them"
- + push tests: assert re-pushing annotated tags
- + push tests: add more testing for forced tag pushing
- + push tests: fix logic error in "push" test assertion
- + push tests: remove redundant 'git push' invocation
- + fetch tests: change "Tag" test tag to "testTag"
-
- Test and doc clean-ups.
-
- Will merge to 'master'.
-
-
 * nd/clone-case-smashing-warning (2018-08-17) 1 commit
  - clone: report duplicate entries on case-insensitive filesystems
 
@@ -923,7 +693,9 @@ of the repositories listed at
  Will merge to 'next'.
 
 
-* nd/unpack-trees-with-cache-tree (2018-08-13) 5 commits
+* nd/unpack-trees-with-cache-tree (2018-08-18) 7 commits
+ - cache-tree: verify valid cache-tree in the test suite
+ - unpack-trees: add missing cache invalidation
  - unpack-trees: reuse (still valid) cache-tree from src_index
  - unpack-trees: reduce malloc in cache-tree walk
  - unpack-trees: optimize walking same trees with cache-tree
@@ -941,18 +713,6 @@ of the repositories listed at
  Will merge to and cook in 'next'.
 
 
-* sb/config-write-fix (2018-08-08) 3 commits
-  (merged to 'next' on 2018-08-17 at 7d9c7ce81f)
- + git-config: document accidental multi-line setting in deprecated syntax
- + config: fix case sensitive subsection names on writing
- + t1300: document current behavior of setting options
-
- Recent update to "git config" broke updating variable in a
- subsection, which has been corrected.
-
- Will merge to 'master'.
-
-
 * sb/range-diff-colors (2018-08-14) 8 commits
  - diff.c: rewrite emit_line_0 more understandably
  - diff.c: omit check for line prefix in emit_line_0
@@ -962,7 +722,6 @@ of the repositories listed at
  - diff.c: simplify caller of emit_line_0
  - t3206: add color test for range-diff --dual-color
  - test_decode_color: understand FAINT and ITALIC
- (this branch uses js/range-diff; is tangled with es/format-patch-rangediff.)
 
  The color output support for recently introduced "range-diff"
  command got tweaked a bit.
@@ -1079,7 +838,7 @@ of the repositories listed at
  - range-diff: respect diff_option.file rather than assuming 'stdout'
  - Merge branch 'es/format-patch-interdiff' into es/format-patch-rangediff
  - Merge branch 'js/range-diff' into es/format-patch-rangediff
- (this branch uses es/format-patch-interdiff and js/range-diff; is tangled with sb/range-diff-colors.)
+ (this branch uses es/format-patch-interdiff.)
 
  "git format-patch" learned a new "--range-diff" option to explain
  the difference between this version and the previous atttempt in
@@ -1096,16 +855,6 @@ of the repositories listed at
  producing a larger than necessary packfiles by missing
  opportunities to use large deltas.
 
- Will cook in 'next'.
-
-
-* ab/newhash-is-sha256 (2018-08-07) 2 commits
-  (merged to 'next' on 2018-08-15 at 2e808d75d3)
- + doc hash-function-transition: pick SHA-256 as NewHash
- + doc hash-function-transition: note the lack of a changelog
-
- Documentation update.
-
  Will merge to 'master'.
 
 
@@ -1167,7 +916,7 @@ of the repositories listed at
 
  "git submodule update" is getting rewritten piece-by-piece into C.
 
- Will cook in 'next'.
+ Will merge to 'master'.
 
 
 * tg/rerere (2018-08-06) 11 commits
@@ -1187,7 +936,7 @@ of the repositories listed at
  Fixes to "git rerere" corner cases, especially when conflict
  markers cannot be parsed in the file.
 
- Will cook in 'next'.
+ Will merge to 'master'.
 
 
 * ag/rebase-i-in-c (2018-08-10) 20 commits
@@ -1219,38 +968,6 @@ of the repositories listed at
  other topics need a bit more work to play with each other better.
 
 
-* js/range-diff (2018-08-13) 21 commits
-  (merged to 'next' on 2018-08-15 at 8d56067806)
- + range-diff: use dim/bold cues to improve dual color mode
- + range-diff: make --dual-color the default mode
- + range-diff: left-pad patch numbers
- + completion: support `git range-diff`
- + range-diff: populate the man page
- + range-diff --dual-color: skip white-space warnings
- + range-diff: offer to dual-color the diffs
- + diff: add an internal option to dual-color diffs of diffs
- + color: add the meta color GIT_COLOR_REVERSE
- + range-diff: use color for the commit pairs
- + range-diff: add tests
- + range-diff: do not show "function names" in hunk headers
- + range-diff: adjust the output of the commit pairs
- + range-diff: suppress the diff headers
- + range-diff: indent the diffs just like tbdiff
- + range-diff: right-trim commit messages
- + range-diff: also show the diff between patches
- + range-diff: improve the order of the shown commits
- + range-diff: first rudimentary implementation
- + Introduce `range-diff` to compare iterations of a topic branch
- + linear-assignment: a function to solve least-cost assignment problems
- (this branch is used by es/format-patch-rangediff and sb/range-diff-colors.)
-
- "git tbdiff" that lets us compare individual patches in two
- iterations of a topic has been rewritten and made into a built-in
- command.
-
- Will merge to 'master'.
-
-
 * lt/date-human (2018-07-09) 1 commit
  - Add 'human' date format