To: git@vger.kernel.org
Bcc: lwn@lwn.net
-Subject: What's cooking in git.git (Aug 2016, #07; Thu, 18)
-X-master-at: d63263a4dee8fc7da9b97bbdedf9c0d1f33024d4
-X-next-at: 8e4bfbdedf0822fce7bdef0dcc37482a8deb3aca
+Subject: What's cooking in git.git (Aug 2016, #08; Wed, 24)
+X-master-at: 2632c897f74b1cc9b5533f467da459b9ec725538
+X-next-at: 3a084aaf40d3898679a48d19dac63e45ecde4cc7
-What's cooking in git.git (Aug 2016, #07; Thu, 18)
+What's cooking in git.git (Aug 2016, #08; Wed, 24)
--------------------------------------------------
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.
-The preview for the upcoming 2.10 release has been tagged as
-v2.10.0-rc0.
+v2.10.0-rc1 was tagged last week, then I got sick and lost an entire
+day. I've merged a handful more topics to 'next' and marked 5 among
+them to be merged to 'master' by -rc2. A notable is the ja/i18n
+topic, which hopefully will reduce the translator's load somewhat.
+Also the change to arrange the file-descriptors to the tempfile be
+closed for subprocesses to avoid deadlocks on Windows is also in;
+even though it is not a new problem, the fix looked safe enough.
+Linus's "32-bit GPG key-ids are so last century" change is already
+in, as reported in the 2.10.0-rc1 announcement.
You can find the changes described here in the integration branches
of the repositories listed at
--------------------------------------------------
[Graduated to "master"]
-* jk/tighten-alloc (2016-08-13) 2 commits
- (merged to 'next' on 2016-08-16 at 5399351)
- + receive-pack: use FLEX_ALLOC_MEM in queue_command()
- + correct FLEXPTR_* example in comment
-
- Small code and comment clean-up.
-
-
-* js/test-lint-pathname (2016-08-16) 1 commit
- (merged to 'next' on 2016-08-16 at d154f90)
- + t/Makefile: ensure that paths are valid on platforms we care
+* ab/hooks (2016-08-16) 1 commit
+ (merged to 'next' on 2016-08-17 at b56e55d)
+ + rev-parse: respect core.hooksPath in --git-path
- The "t/" hierarchy is prone to get an unusual pathname; "make test"
- has been taught to make sure they do not contain paths that cannot
- be checked out on Windows (and the mechanism can be reusable to
- catch pathnames that are not portable to other platforms as need
- arises).
+ "git rev-parse --git-path hooks/<hook>" learned to take
+ core.hooksPath configuration variable (introduced during 2.9 cycle)
+ into account.
-* rs/mailinfo-lib (2016-08-13) 1 commit
- (merged to 'next' on 2016-08-16 at 14101e3)
- + mailinfo: recycle strbuf in check_header()
+* jk/difftool-command-not-found (2016-08-15) 1 commit
+ (merged to 'next' on 2016-08-17 at 32baf03)
+ + difftool: always honor fatal error exit codes
- Small code clean-up.
+ "git difftool" by default ignores the error exit from the backend
+ commands it spawns, because often they signal that they found
+ differences by exiting with a non-zero status code just like "diff"
+ does; the exit status codes 126 and above however are special in
+ that they are used to signal that the command is not executable,
+ does not exist, or killed by a signal. "git difftool" has been
+ taught to notice these exit status codes.
-* sg/reflog-past-root (2016-08-15) 1 commit
- (merged to 'next' on 2016-08-16 at ee997a5)
- + t1410: remove superfluous 'git reflog' from the 'walk past root' test
+* lt/gpg-show-long-key-in-signature-verification (2016-08-16) 1 commit
+ (merged to 'next' on 2016-08-17 at 1ee8a00)
+ + Merge branch 'lt/gpg-show-long-key-in-signature-verification-maint' into lt/gpg-show-long-key-in-signature-verification
+ (this branch uses lt/gpg-show-long-key-in-signature-verification-maint.)
- A small test clean-up for a topic introduced in v2.9.1 and later.
+ "git log --show-signature" and other commands that display the
+ verification status of PGP signature now shows the longer key-id,
+ as 32-bit key-id is so last century.
+ A last-minute merge of this topic was a bit scary but I made sure
+ push-certificate codepath would not be negatively affected.
-* va/i18n (2016-08-12) 3 commits
- (merged to 'next' on 2016-08-16 at 6a06cd3)
- + t7411: become resilient to GETTEXT_POISON
- + t5520: become resilient to GETTEXT_POISON
- + t3404: become resilient to GETTEXT_POISON
- A handful of tests that were broken under gettext-poison build have
- been fixed.
+* lt/gpg-show-long-key-in-signature-verification-maint (2016-08-16) 1 commit
+ + gpg-interface: prefer "long" key format output when verifying pgp signatures
+ (this branch is used by lt/gpg-show-long-key-in-signature-verification.)
---------------------------------------------------
-[New Topics]
+ "git log --show-signature" and other commands that display the
+ verification status of PGP signature now shows the longer key-id,
+ as 32-bit key-id is so last century. This is based on older
+ codebase, just in case somebody wants to have it.
-* ab/hooks (2016-08-16) 1 commit
- (merged to 'next' on 2016-08-17 at b56e55d)
- + rev-parse: respect core.hooksPath in --git-path
- "git rev-parse --git-path hooks/<hook>" learned to take
- core.hooksPath configuration variable (introduced during 2.9 cycle)
- into account.
+* rs/pull-signed-tag (2016-08-13) 4 commits
+ (merged to 'next' on 2016-08-17 at cecca71)
+ + commit: use FLEX_ARRAY in struct merge_remote_desc
+ + merge-recursive: fix verbose output for multiple base trees
+ + commit: factor out set_merge_remote_desc()
+ + commit: use xstrdup() in get_merge_parent()
- Will merge to 'master'.
+ When "git merge-recursive" works on history with many criss-cross
+ merges in "verbose" mode, the names the command assigns to the
+ virtual merge bases could have overwritten each other by unintended
+ reuse of the same piece of memory.
* sb/checkout-explit-detach-no-advice (2016-08-15) 1 commit
an explicit enough sign that the user knows what is going on. The
advice message has been squelched in this case.
+
+* tb/t0027-raciness-fix (2016-08-14) 1 commit
+ (merged to 'next' on 2016-08-17 at 39a6635)
+ + convert: Correct NNO tests and missing `LF will be replaced by CRLF`
+
+ The t0027 test for CRLF conversion was timing dependent and flaky.
+
+--------------------------------------------------
+[New Topics]
+
+* cc/receive-pack-limit (2016-08-24) 3 commits
+ - receive-pack: allow a maximum input size to be specified
+ - unpack-objects: add --max-input-size=<size> option
+ - index-pack: add --max-input-size=<size> option
+
+ An incoming "git push" that attempts to push too many bytes can now
+ be rejected by setting a new configuration variable at the receiving
+ end.
+
+ Will merge to 'next'.
+
+
+* hv/doc-commit-reference-style (2016-08-17) 1 commit
+ (merged to 'next' on 2016-08-24 at b187d45)
+ + SubmittingPatches: document how to reference previous commits
+
+ A small doc update.
+
Will merge to 'master'.
-* lt/gpg-show-long-key-in-signature-verification (2016-08-16) 1 commit
- (merged to 'next' on 2016-08-17 at 1ee8a00)
- + Merge branch 'lt/gpg-show-long-key-in-signature-verification-maint' into lt/gpg-show-long-key-in-signature-verification
- (this branch uses lt/gpg-show-long-key-in-signature-verification-maint.)
+* js/no-html-bypass-on-windows (2016-08-19) 1 commit
+ (merged to 'next' on 2016-08-24 at 05728f8)
+ + Revert "display HTML in default browser using Windows' shell API"
- "git log --show-signature" and other commands that display the
- verification status of PGP signature now shows the longer key-id,
- as 32-bit key-id is so last century.
+ On Windows, help.browser configuration variable used to be ignored,
+ which has been corrected.
Will merge to 'master'.
-* lt/gpg-show-long-key-in-signature-verification-maint (2016-08-16) 1 commit
- + gpg-interface: prefer "long" key format output when verifying pgp signatures
- (this branch is used by lt/gpg-show-long-key-in-signature-verification.)
+* dg/document-git-c-in-git-config-doc (2016-08-23) 1 commit
+ (merged to 'next' on 2016-08-24 at a923eb0)
+ + doc: mention `git -c` in git-config(1)
- "git log --show-signature" and other commands that display the
- verification status of PGP signature now shows the longer key-id,
- as 32-bit key-id is so last century. This is based on older
- codebase, just in case somebody wants to have it.
+ The "git -c var[=val] cmd" facility to append a configuration
+ variable definition at the end of the search order was described in
+ git(1) manual page, but not in git-config(1), which was more likely
+ place for people to look for when they ask "can I make a one-shot
+ override, and if so how?"
+ Will merge to 'master'.
-* ak/curl-imap-send-explicit-scheme (2016-08-17) 1 commit
- - imap-send: Tell cURL to use imap:// or imaps://
- When we started cURL to talk to imap server when a new enough
- version of cURL library is available, we forgot to explicitly add
- imap(s):// before the destination. To some folks, that didn't work
- and the library tried to make HTTP(s) requests instead.
+* jk/format-patch-number-singleton-patch-with-cover (2016-08-23) 1 commit
+ - format-patch: show 0/1 and 1/1 for singleton patch with cover letter
- Needs review and testing.
+ "git format-patch --cover-letter HEAD^" to format a single patch
+ with a separate cover letter now numbers the output as [PATCH 0/1]
+ and [PATCH 1/1] by default.
+ Will merge to 'next'.
-* bw/mingw-avoid-inheriting-fd-to-lockfile (2016-08-18) 2 commits
- - mingw: ensure temporary file handles are not inherited by child processes
- - t6026-merge-attr: child processes must not inherit index.lock handles
- The tempfile (hence its user lockfile) API lets the caller to open
- a file descriptor to a temporary file, write into it and then
- finalize it by first closing the filehandle and then either
- removing or renaming the temporary file. When the process spawns a
- subprocess after obtaining the file descriptor, and if the
- subprocess has not exited when the attempt to remove or rename is
- made, the last step fails on Windows, because the subprocess has
- the file descriptor still open. Open tempfile with O_CLOEXEC flag
- to avoid this (on Windows, this is mapped to O_NOINHERIT).
+* cp/completion-negative-refs (2016-08-24) 1 commit
+ - completion: support excluding refs
- It was pointed out that not everybody has O_CLOEXEC flag during the
- review.
+ The command-line completion script (in contrib/) learned to
+ complete "git cmd ^mas<HT>" to complete the negative end of
+ reference to "git cmd ^master".
- Waiting for the review discussion to settle.
- cf. <20160818173555.GA29253@starla>
+ Waiting for a review.
+
+
+* ja/i18n (2016-08-24) 3 commits
+ (merged to 'next' on 2016-08-24 at 3a084aa)
+ + i18n: simplify numeric error reporting
+ + i18n: fix git rebase interactive commit messages
+ + i18n: fix typos for translation
+
+ The recent i18n patch we added during this cycle did a bit too much
+ refactoring of the messages to avoid word-legos; the repetition has
+ been reduced to help translators.
+
+ Will merge to 'master'.
+
+
+* jk/delta-base-cache (2016-08-23) 7 commits
+ - t/perf: add basic perf tests for delta base cache
+ - delta_base_cache: use hashmap.h
+ - delta_base_cache: drop special treatment of blobs
+ - delta_base_cache: use list.h for LRU
+ - release_delta_base_cache: reuse existing detach function
+ - clear_delta_base_cache_entry: use a more descriptive name
+ - cache_or_unpack_entry: drop keep_cache parameter
+
+ The delta-base-cache mechanism has been a key to the performance in
+ a repository with a tightly packed packfile, but it did not scale
+ well even with a larger value of core.deltaBaseCacheLimit.
+
+ Will merge to 'next'.
+
+
+* js/cat-file-filters (2016-08-24) 4 commits
+ - cat-file: support --textconv/--filters in batch mode
+ - cat-file --textconv/--filters: allow specifying the path separately
+ - cat-file: introduce the --filters option
+ - cat-file: fix a grammo in the man page
+ Even though "git hash-objects", which is a tool to take an
+ on-filesystem data stream and put it into the Git object store,
+ allowed to perform the "outside-world-to-Git" conversions (e.g.
+ end-of-line conversions and application of the clean-filter), and
+ it had the feature on by default from very early days, its reverse
+ operation "git cat-file", which takes an object from the Git object
+ store and externalize for the consumption by the outside world,
+ lacked an equivalent mechanism to run the "Git-to-outside-world"
+ conversion. The command learned the "--filters" option to do so.
+
+
+* sb/push-make-submodule-check-the-default (2016-08-24) 1 commit
+ - push: change submodule default to check
+
+ Turn the default of "push.recurseSubmodules" to "check".
+
+ Alas, this reveals that the "check" mode is too inefficient to use
+ in real projects.
+ cf. <xmqqh9aaot49.fsf@gitster.mtv.corp.google.com>
--------------------------------------------------
[Stalled]
--------------------------------------------------
[Cooking]
-* rt/help-unknown (2016-08-18) 2 commits
- - help: make option --help open man pages only for Git commands
- - help: introduce option --command-only
+* ak/curl-imap-send-explicit-scheme (2016-08-17) 1 commit
+ - imap-send: Tell cURL to use imap:// or imaps://
- "git nosuchcommand --help" said "No manual entry for gitnosuchcommand",
- which was not intuitive, given that "git nosuchcommand" said "git:
- 'nosuchcommand' is not a git command".
+ When we started cURL to talk to imap server when a new enough
+ version of cURL library is available, we forgot to explicitly add
+ imap(s):// before the destination. To some folks, that didn't work
+ and the library tried to make HTTP(s) requests instead.
- Will merge to 'next'.
+ Needs review and testing.
-* jk/difftool-command-not-found (2016-08-15) 1 commit
- (merged to 'next' on 2016-08-17 at 32baf03)
- + difftool: always honor fatal error exit codes
+* bw/mingw-avoid-inheriting-fd-to-lockfile (2016-08-23) 2 commits
+ (merged to 'next' on 2016-08-24 at 8389b0e)
+ + mingw: ensure temporary file handles are not inherited by child processes
+ + t6026-merge-attr: child processes must not inherit index.lock handles
- "git difftool" by default ignores the error exit from the backend
- commands it spawns, because often they signal that they found
- differences by exiting with a non-zero status code just like "diff"
- does; the exit status codes 126 and above however are special in
- that they are used to signal that the command is not executable,
- does not exist, or killed by a signal. "git difftool" has been
- taught to notice these exit status codes.
+ The tempfile (hence its user lockfile) API lets the caller to open
+ a file descriptor to a temporary file, write into it and then
+ finalize it by first closing the filehandle and then either
+ removing or renaming the temporary file. When the process spawns a
+ subprocess after obtaining the file descriptor, and if the
+ subprocess has not exited when the attempt to remove or rename is
+ made, the last step fails on Windows, because the subprocess has
+ the file descriptor still open. Open tempfile with O_CLOEXEC flag
+ to avoid this (on Windows, this is mapped to O_NOINHERIT).
Will merge to 'master'.
-* rs/pull-signed-tag (2016-08-13) 4 commits
- (merged to 'next' on 2016-08-17 at cecca71)
- + commit: use FLEX_ARRAY in struct merge_remote_desc
- + merge-recursive: fix verbose output for multiple base trees
- + commit: factor out set_merge_remote_desc()
- + commit: use xstrdup() in get_merge_parent()
+* rt/help-unknown (2016-08-18) 2 commits
+ - help: make option --help open man pages only for Git commands
+ - help: introduce option --command-only
- When "git merge-recursive" works on history with many criss-cross
- merges in "verbose" mode, the names the command assigns to the
- virtual merge bases could have overwritten each other by unintended
- reuse of the same piece of memory.
+ "git nosuchcommand --help" said "No manual entry for gitnosuchcommand",
+ which was not intuitive, given that "git nosuchcommand" said "git:
+ 'nosuchcommand' is not a git command".
- Will merge to 'master'.
+ Waiting for the review discussion to settle.
* po/range-doc (2016-08-13) 12 commits
Waiting for the review discussion to settle.
-* tb/t0027-raciness-fix (2016-08-14) 1 commit
- (merged to 'next' on 2016-08-17 at 39a6635)
- + convert: Correct NNO tests and missing `LF will be replaced by CRLF`
-
- The t0027 test for CRLF conversion was timing dependent and flaky.
-
- Will merge to 'master'.
-
-
-* jk/diff-submodule-diff-inline (2016-08-16) 3 commits
- - diff: add SUBMODULE_DIFF format to display submodule diff
+* jk/diff-submodule-diff-inline (2016-08-23) 8 commits
+ - diff: teach diff to display submodule difference with an inline diff
+ - submodule: refactor show_submodule_summary with helper function
+ - submodule: convert show_submodule_summary to use struct object_id *
+ - allow do_submodule_path to work even if submodule isn't checked out
+ - diff: prepare for additional submodule formats
- graph: add support for --line-prefix on all graph-aware output
- diff.c: remove output_prefix_length field
+ - cache: add empty_tree_oid object and helper function
The "git diff --submodule={short,log}" mechanism has been enhanced
to allow "--submodule=diff" to show the patch between the submodule
commits bound to the superproject.
- Still being worked on.
+ Waiting for the review discussion to settle.
+ I think it is getting there.
* jk/reduce-gc-aggressive-depth (2016-08-11) 1 commit
Any more comments?
-* mh/diff-indent-heuristic (2016-08-04) 8 commits
+* mh/diff-indent-heuristic (2016-08-23) 6 commits
- diff: improve positioning of add/delete blocks in diffs
- - is_blank_line: take a single xrecord_t as argument
- - xdl_change_compact(): keep track of the earliest end
- - xdl_change_compact(): fix compaction heuristic to adjust io
- - xdl_change_compact(): do one final shift or the other, not both
- - xdl_change_compact(): rename i to end
- - xdl_change_compact(): clarify code
- - xdl_change_compact(): rename some local variables for clarity
+ - xdl_change_compact(): introduce the concept of a change group
+ - recs_match(): take two xrecord_t pointers as arguments
+ - is_blank_line(): take a single xrecord_t as argument
+ - xdl_change_compact(): only use heuristic if group can't be matched
+ - xdl_change_compact(): fix compaction heuristic to adjust ixo
Output from "git diff" can be made easier to read by selecting
which lines are common and which lines are added/deleted
experiment to find a good heuristics.
Waiting for the review discussion to settle.
- cf. <cover.1470259583.git.mhagger@alum.mit.edu>
- cf. <20160804072705.a53mospcccksiz4e@sigill.intra.peff.net>
- cf. <20160804075631.jakbi5dbsbxsqcpr@sigill.intra.peff.net>
cf. <29c40cdd-363a-df09-f9e2-fe9070bb8a9c@ramsayjones.plus.com>
+ cf. <a27aa17e-f602-fc49-92b3-2198e4772e47@ramsayjones.plus.com>
* cc/apply-am (2016-08-11) 40 commits
We are almost there.
-
* jk/pack-objects-optim-mru (2016-08-11) 4 commits
(merged to 'next' on 2016-08-11 at c0a7dae)
+ pack-objects: use mru list when iterating over packs
would think.
-* pb/bisect (2016-08-12) 13 commits
+* pb/bisect (2016-08-23) 27 commits
+ . bisect--helper: remove the dequote in bisect_start()
+ . bisect--helper: retire `--bisect-auto-next` subcommand
+ . bisect--helper: retire `--bisect-autostart` subcommand
+ . bisect--helper: retire `--check-and-set-terms` subcommand
+ . bisect--helper: retire `--bisect-write` subcommand
+ . bisect--helper: `bisect_replay` shell function in C
+ . bisect--helper: `bisect_log` shell function in C
+ . bisect--helper: retire `--write-terms` subcommand
+ . bisect--helper: retire `--check-expected-revs` subcommand
+ . bisect--helper: `bisect_state` & `bisect_head` shell function in C
+ . bisect--helper: `bisect_autostart` shell function in C
+ . bisect--helper: retire `--next-all` subcommand
+ . bisect--helper: retire `--bisect-clean-state` subcommand
+ . bisect--helper: `bisect_next` and `bisect_auto_next` shell function in C
. bisect--helper: `bisect_start` shell function partially in C
. bisect--helper: `get_terms` & `bisect_terms` shell function in C
. bisect--helper: `bisect_next_check` & bisect_voc shell function in C
with the more generic ref-filter API.
Rerolled.
- This also really needs review.
+ Needs review.
* jc/merge-drop-old-syntax (2015-04-29) 1 commit