From: Junio C Hamano Date: Wed, 14 Feb 2018 01:28:09 +0000 (-0800) Subject: What's cooking (2018/02 #02) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2ecaec894b4265deec3a00e6355b23969379656d;p=thirdparty%2Fgit.git What's cooking (2018/02 #02) --- diff --git a/whats-cooking.txt b/whats-cooking.txt index c7029092fd..02b70e01e5 100644 --- a/whats-cooking.txt +++ b/whats-cooking.txt @@ -1,10 +1,10 @@ To: git@vger.kernel.org Bcc: lwn@lwn.net -Subject: What's cooking in git.git (Feb 2018, #01; Wed, 7) -X-master-at: 5be1f00a9a701532232f57958efab4be8c959a29 -X-next-at: fa21fb2ec8acbede1bf0ed3cca9e96e2445d38d1 +Subject: What's cooking in git.git (Feb 2018, #02; Tue, 13) +X-master-at: b2e45c695d09f6a31ce09347ae0a5d2cdfe9dd4e +X-next-at: e5215aaa5c9875adf01d63ed4237f0870ec897f1 -What's cooking in git.git (Feb 2018, #01; Wed, 7) +What's cooking in git.git (Feb 2018, #02; Tue, 13) -------------------------------------------------- Here are the topics that have been cooking. Commits prefixed with @@ -12,205 +12,520 @@ 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. -Many new topics appeared and are not yet marked with "Will do what" -labels. Except for some large ones, I think most are already in -good shape, but I'd want to double check by re-reading them. +You can find the changes described here in the integration branches +of the repositories listed at + + http://git-blame.blogspot.com/p/git-public-repositories.html + +-------------------------------------------------- +[Graduated to "master"] + +* ab/simplify-perl-makefile (2018-01-03) 3 commits + (merged to 'next' on 2018-01-23 at 1506e0651a) + + perl: treat PERLLIB_EXTRA as an extra path again + + perl: avoid *.pmc and fix Error.pm further + + Makefile: replace perl/Makefile.PL with simple make rules + + Originally merged to 'next' on 2018-01-03 + + The build procedure for perl/ part has been greatly simplified by + weaning ourselves off of MakeMaker. + + +* cc/sha1-file-name (2018-01-19) 2 commits + (merged to 'next' on 2018-02-07 at a50b171a84) + + sha1_file: improve sha1_file_name() perfs + + sha1_file: remove static strbuf from sha1_file_name() + + Code clean-up. + + +* cl/t9001-cleanup (2018-01-12) 1 commit + (merged to 'next' on 2018-02-07 at 9b194a9999) + + t9001: use existing helper in send-email test + + Test clean-up. + + +* ds/use-get-be64 (2018-01-19) 1 commit + (merged to 'next' on 2018-02-07 at 6d6d5ba71d) + + packfile: use get_be64() for large offsets + + Code clean-up. + + +* ew/svn-branch-segfault-fix (2018-01-30) 1 commit + (merged to 'next' on 2018-02-07 at 1bf8d8f74f) + + git-svn: control destruction order to avoid segfault + + Workaround for segfault with more recent versions of SVN. + + +* gs/retire-mru (2018-01-24) 1 commit + (merged to 'next' on 2018-02-07 at 4b2e893911) + + mru: Replace mru.[ch] with list.h implementation + (this branch uses ot/mru-on-list.) + + Retire mru API as it does not give enough abstraction over + underlying list API to be worth it. + + +* jc/mailinfo-cleanup-fix (2018-01-24) 1 commit + (merged to 'next' on 2018-02-07 at 65d41f993b) + + mailinfo: avoid segfault when can't open files + + Corner case bugfix. + + +* jh/fsck-promisors (2017-12-08) 10 commits + (merged to 'next' on 2018-01-23 at ca59f5c18e) + + gc: do not repack promisor packfiles + + rev-list: support termination at promisor objects + + sha1_file: support lazily fetching missing objects + + introduce fetch-object: fetch one promisor object + + index-pack: refactor writing of .keep files + + fsck: support promisor objects as CLI argument + + fsck: support referenced promisor objects + + fsck: support refs pointing to promisor objects + + fsck: introduce partialclone extension + + extension.partialclone: introduce partial clone extension + (this branch is used by jh/partial-clone.) + + Originally merged to 'next' on 2018-01-17 + + In preparation for implementing narrow/partial clone, the machinery + for checking object connectivity used by gc and fsck has been + taught that a missing object is OK when it is referenced by a + packfile specially marked as coming from trusted repository that + promises to make them available on-demand and lazily. + + +* jh/partial-clone (2017-12-08) 13 commits + (merged to 'next' on 2018-01-23 at de0f0111ea) + + t5616: test bulk prefetch after partial fetch + + fetch: inherit filter-spec from partial clone + + t5616: end-to-end tests for partial clone + + fetch-pack: restore save_commit_buffer after use + + unpack-trees: batch fetching of missing blobs + + clone: partial clone + + partial-clone: define partial clone settings in config + + fetch: support filters + + fetch: refactor calculation of remote list + + fetch-pack: test support excluding large blobs + + fetch-pack: add --no-filter + + fetch-pack, index-pack, transport: partial clone + + upload-pack: add object filtering for partial clone + (this branch uses jh/fsck-promisors.) + + Originally merged to 'next' on 2018-01-17 + + The machinery to clone & fetch, which in turn involves packing and + unpacking objects, have been told how to omit certain objects using + the filtering mechanism introduced by the jh/object-filtering + topic, and also mark the resulting pack as a promisor pack to + tolerate missing objects, taking advantage of the mechanism + introduced by the jh/fsck-promisors topic. + + +* jk/daemon-fixes (2018-01-25) 6 commits + (merged to 'next' on 2018-02-07 at 0e4fe8f8cc) + + daemon: fix length computation in newline stripping + + t/lib-git-daemon: add network-protocol helpers + + daemon: handle NULs in extended attribute string + + daemon: fix off-by-one in logging extended attributes + + t/lib-git-daemon: record daemon log + + t5570: use ls-remote instead of clone for interp tests + + Assorted fixes to "git daemon". + + +* jt/http-redact-cookies (2018-01-19) 2 commits + (merged to 'next' on 2018-02-07 at a8c3416a7d) + + http: support omitting data from traces + + http: support cookie redaction when tracing + + The http tracing code, often used to debug connection issues, + learned to redact potentially sensitive information from its output + so that it can be more safely sharable. + + +* jt/long-running-process-doc (2018-01-25) 1 commit + (merged to 'next' on 2018-02-07 at 8bbb42ad3c) + + Docs: split out long-running subprocess handshake + + Doc updates. + + +* ks/submodule-doc-updates (2018-01-16) 2 commits + (merged to 'next' on 2018-02-07 at aff2fa1650) + + Doc/git-submodule: improve readability and grammar of a sentence + + Doc/gitsubmodules: make some changes to improve readability and syntax + + Doc updates. + + +* mr/packed-ref-store-fix (2018-01-19) 1 commit + (merged to 'next' on 2018-02-07 at 17d32e99da) + + files_initial_transaction_commit(): only unlock if locked + + Crash fix for a corner case where an error codepath tried to unlock + what it did not acquire lock on. + + +* nd/diff-flush-before-warning (2018-01-16) 1 commit + (merged to 'next' on 2018-02-07 at 9c67f58ae0) + + diff.c: flush stdout before printing rename warnings + + Avoid showing a warning message in the middle of a line of "git + diff" output. + + +* nd/list-merge-strategy (2018-01-26) 1 commit + (merged to 'next' on 2018-02-07 at a75d04a675) + + completion: fix completing merge strategies on non-C locales + + Completion of "git merge -s" (in contrib/) did not work + well in non-C locale. + + +* nd/shared-index-fix (2018-01-24) 3 commits + (merged to 'next' on 2018-02-07 at c5d6e68c91) + + read-cache: don't write index twice if we can't write shared index + + read-cache.c: move tempfile creation/cleanup out of write_shared_index + + read-cache.c: change type of "temp" in write_shared_index() + + Code clean-up. + + +* nd/trace-with-env (2018-01-19) 7 commits + (merged to 'next' on 2018-02-07 at 68399411d9) + + run-command.c: print new cwd in trace_run_command() + + run-command.c: print env vars in trace_run_command() + + run-command.c: print program 'git' when tracing git_cmd mode + + run-command.c: introduce trace_run_command() + + trace.c: move strbuf_release() out of print_trace_line() + + trace: avoid unnecessary quoting + + sq_quote_argv: drop maxlen parameter + + The tracing machinery learned to report tweaking of environment + variables as well. + + +* ot/mru-on-list (2017-10-01) 1 commit + (merged to 'next' on 2018-02-07 at ee1ee4ac79) + + mru: use double-linked list from list.h + (this branch is used by gs/retire-mru.) + + The first step to getting rid of mru API and using the + doubly-linked list API directly instead. + + +* pc/submodule-helper (2018-01-16) 2 commits + (merged to 'next' on 2018-02-07 at 53b4524eca) + + submodule: port submodule subcommand 'deinit' from shell to C + + submodule: port submodule subcommand 'sync' from shell to C + + Rewrite two more "git submodule" subcommands in C. + + +* po/clang-format-functype-weight (2018-01-24) 1 commit + (merged to 'next' on 2018-02-07 at 0724aaae38) + + clang-format: adjust penalty for return type line break + + Prevent "clang-format" from breaking line after function return type. + + +* po/http-push-error-message (2018-01-24) 1 commit + (merged to 'next' on 2018-02-07 at 3dccd32857) + + http-push: improve error log + + Debugging aid. + + +* pw/sequencer-in-process-commit (2018-01-24) 14 commits + (merged to 'next' on 2018-02-07 at ab5961edd9) + + sequencer: run 'prepare-commit-msg' hook + + t7505: add tests for cherry-pick and rebase -i/-p + + t7505: style fixes + + sequencer: assign only free()able strings to gpg_sign + + sequencer: improve config handling + + t3512/t3513: remove KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1 + + sequencer: try to commit without forking 'git commit' + + sequencer: load commit related config + + sequencer: simplify adding Signed-off-by: trailer + + commit: move print_commit_summary() to libgit + + commit: move post-rewrite code to libgit + + Add a function to update HEAD after creating a commit + + commit: move empty message checks to libgit + + t3404: check intermediate squash messages + + The sequencer infrastructure is shared across "git cherry-pick", + "git rebase -i", etc., and has always spawned "git commit" when it + needs to create a commit. It has been taught to do so internally, + when able, by reusing the codepath "git commit" itself uses, which + gives performance boost for a few tens of percents in some sample + scenarios. + + +* rb/hashmap-h-compilation-fix (2018-01-16) 1 commit + (merged to 'next' on 2018-02-07 at 780bc6d06b) + + hashmap.h: remove unused variable + + Code clean-up. + + +* rs/describe-unique-abbrev (2018-01-16) 1 commit + (merged to 'next' on 2018-02-07 at b5383e2d05) + + describe: use strbuf_add_unique_abbrev() for adding short hashes + + Code clean-up. + + +* rs/strbuf-cocci-workaround (2018-01-19) 1 commit + (merged to 'next' on 2018-02-07 at 73a2c4c769) + + cocci: use format keyword instead of a literal string + + Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str) + + +* sg/cocci-move-array (2018-01-22) 1 commit + (merged to 'next' on 2018-02-07 at 6ced765979) + + Use MOVE_ARRAY + + Code clean-up. + + +* sg/travis-linux32-sanity (2018-01-30) 5 commits + (merged to 'next' on 2018-02-07 at 0349cf505c) + + travis-ci: don't fail if user already exists on 32 bit Linux build job + + travis-ci: don't run the test suite as root in the 32 bit Linux build + + travis-ci: don't repeat the path of the cache directory + + travis-ci: use 'set -e' in the 32 bit Linux build job + + travis-ci: use 'set -x' for the commands under 'su' in the 32 bit Linux build -I am migrating my build and integration environment to a different -machine; if you notice anything out of ordinary, please let me know -before I decomission and reimage my usual environment ;-) + Travis updates. -You can find the changes described here in the integration branches -of the repositories listed at - http://git-blame.blogspot.com/p/git-public-repositories.html +* tb/crlf-conv-flags (2018-01-16) 1 commit + (merged to 'next' on 2018-02-07 at 1981be1b46) + + convert_to_git(): safe_crlf/checksafe becomes int conv_flags + (this branch is used by ls/checkout-encoding.) + + Code clean-up. + + +* tg/split-index-fixes (2018-01-19) 3 commits + (merged to 'next' on 2018-02-07 at 52d7a92ec5) + + travis: run tests with GIT_TEST_SPLIT_INDEX + + split-index: don't write cache tree with null oid entries + + read-cache: fix reading the shared index for other repos + + The split-index mode had a few corner case bugs fixed. + + +* tz/doc-show-defaults-to-head (2018-01-30) 1 commit + (merged to 'next' on 2018-02-07 at fa21fb2ec8) + + doc: mention 'git show' defaults to HEAD + + Doc update. -------------------------------------------------- [New Topics] -* bc/hash-algo (2018-02-02) 12 commits - - bulk-checkin: abstract SHA-1 usage - - csum-file: abstract uses of SHA-1 - - csum-file: rename sha1file to hashfile - - read-cache: abstract away uses of SHA-1 - - pack-write: switch various SHA-1 values to abstract forms - - pack-check: convert various uses of SHA-1 to abstract forms - - fast-import: switch various uses of SHA-1 to the_hash_algo - - sha1_file: switch uses of SHA-1 to the_hash_algo - - builtin/unpack-objects: switch uses of SHA-1 to the_hash_algo - - builtin/index-pack: improve hash function abstraction - - hash: create union for hash context allocation - - hash: move SHA-1 macros to hash.h +* bp/name-hash-dirname-fix (2018-02-08) 1 commit + - name-hash: properly fold directory names in adjust_dirname_case() - More abstraction of hash function from the codepath. + "git add" files in the same directory, but spelling the directory + path in different cases on case insensitive filesystem, corrupted + the name hash data structure and led to unexpected results. This + has been corrected. Will merge to 'next'. -* bp/untracked-cache-noflush (2018-02-05) 1 commit - - dir.c: don't flag the index as dirty for changes to the untracked cache +* jk/doc-do-not-write-extern (2018-02-08) 1 commit + - CodingGuidelines: mention "static" and "extern" - Writing out the index file when the only thing that changed in it - is the untracked cache information is often wasteful, and this has - been optimized out. + Devdoc update. - Waiting for the discussion to finish. - cf. + Will merge to 'next'. -* cc/perf-aggregate (2018-02-02) 3 commits - - perf/aggregate: sort JSON fields in output - - perf/aggregate: add --reponame option - - perf/aggregate: add --subsection option +* jk/gettext-poison (2018-02-08) 2 commits + - git-sh-i18n: check GETTEXT_POISON before USE_GETTEXT_SCHEME + - t0205: drop redundant test + + Test updates. Will merge to 'next'. -* gs/rebase-allow-empty-message (2018-02-07) 1 commit - - rebase: add --allow-empty-message option +* js/fix-merge-arg-quoting-in-rebase-p (2018-02-08) 1 commit + - rebase -p: fix incorrect commit message when calling `git merge`. - "git rebase" learned to take "--allow-empty-message" option. + "git rebase -p" mangled log messages of a merge commit, which is + now fixed. Will merge to 'next'. -* jc/blame-missing-path (2018-02-07) 1 commit - - blame: tighten command line parser +* js/packet-read-line-check-null (2018-02-08) 2 commits + - always check for NULL return from packet_read_line() + - correct error messages for NULL packet_read_line() - "git blame HEAD COPYING" in a bare repository failed to run, while - "git blame HEAD -- COPYING" run just fine. + Some low level protocol codepath could crash when they get an + unexpected flush packet, which is now fixed. Will merge to 'next'. -* jt/binsearch-with-fanout (2018-02-02) 2 commits - - packfile: refactor hash search with fanout table - - packfile: remove GIT_DEBUG_LOOKUP log statements +* sb/color-h-cleanup (2018-02-13) 1 commit + - color.h: document and modernize header + (this branch is used by sb/blame-color.) - Refactor the code to binary search starting from a fan-out table - (which is how the packfile is indexed with object names) into a - reusable helper. + Devdoc update. Will merge to 'next'. -* lw/daemon-log-destination (2018-02-05) 1 commit - - daemon: add --log-destination=(stderr|syslog|none) +* ab/untracked-cache-invalidation-docs (2018-02-09) 2 commits + - update-index doc: note the caveat with "could not open..." + - update-index doc: note a fixed bug in the untracked cache + (this branch uses nd/fix-untracked-cache-invalidation.) - The log from "git daemon" can be redirected with a new option; one - relevant use case is to send the log to standard error (instead of - syslog) when running it from inetd. + Doc update to warn against remaining bugs in untracked cache. Will merge to 'next'. -* nd/diff-stat-with-summary (2018-02-02) 2 commits - - diff: add --stat-with-summary - - diff.c: refactor pprint_rename() to use strbuf +* as/ll-i18n (2018-02-13) 1 commit + - Mark messages for translations - Waiting for the discussion to finish. + Some messages in low level start-up codepath have been i18n-ized. + Will merge to 'next'. -* nd/parseopt-completion (2018-02-07) 42 commits - - SQUASH??? - - completion: use __gitcomp_builtin in _git_worktree - - completion: use __gitcomp_builtin in _git_tag - - completion: use __gitcomp_builtin in _git_status - - completion: use __gitcomp_builtin in _git_show_branch - - completion: use __gitcomp_builtin in _git_rm - - completion: use __gitcomp_builtin in _git_revert - - completion: use __gitcomp_builtin in _git_reset - - completion: use __gitcomp_builtin in _git_replace - - remote: force completing --mirror= instead of --mirror - - completion: use __gitcomp_builtin in _git_remote - - completion: use __gitcomp_builtin in _git_push - - completion: use __gitcomp_builtin in _git_pull - - completion: use __gitcomp_builtin in _git_notes - - completion: use __gitcomp_builtin in _git_name_rev - - completion: use __gitcomp_builtin in _git_mv - - completion: use __gitcomp_builtin in _git_merge_base - - completion: use __gitcomp_builtin in _git_merge - - completion: use __gitcomp_builtin in _git_ls_remote - - completion: use __gitcomp_builtin in _git_ls_files - - completion: use __gitcomp_builtin in _git_init - - completion: use __gitcomp_builtin in _git_help - - completion: use __gitcomp_builtin in _git_grep - - completion: use __gitcomp_builtin in _git_gc - - completion: use __gitcomp_builtin in _git_fsck - - completion: use __gitcomp_builtin in _git_fetch - - completion: use __gitcomp_builtin in _git_difftool - - completion: use __gitcomp_builtin in _git_describe - - completion: use __gitcomp_builtin in _git_config - - completion: use __gitcomp_builtin in _git_commit - - completion: use __gitcomp_builtin in _git_clone - - completion: use __gitcomp_builtin in _git_clean - - completion: use __gitcomp_builtin in _git_cherry_pick - - completion: use __gitcomp_builtin in _git_checkout - - completion: use __gitcomp_builtin in _git_branch - - completion: use __gitcomp_builtin in _git_apply - - completion: use __gitcomp_builtin in _git_am - - completion: use __gitcomp_builtin in _git_add - - git-completion.bash: introduce __gitcomp_builtin - - parse-options: let OPT__FORCE take optional flags argument - - parse-options: add OPT_xxx_F() variants - - parse-options: support --git-completion-helper +* bc/doc-interpret-trailers-grammofix (2018-02-13) 1 commit + - docs/interpret-trailers: fix agreement error -* nd/trace-index-ops (2018-02-02) 1 commit - - trace: measure where the time is spent in the index-heavy operations + Docfix. Will merge to 'next'. -* pc/submodule-helper-foreach (2018-02-02) 5 commits - - submodule: port submodule subcommand 'foreach' from shell to C - - submodule foreach: document variable '$displaypath' - - submodule foreach: clarify the '$toplevel' variable documentation - - submodule foreach: document '$sm_path' instead of '$path' - - submodule foreach: correct '$path' in nested submodules from a subdirectory +* jk/t0002-simplify (2018-02-12) 1 commit + - t0002: simplify error checking - Waiting for the discussion to finish. - cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com> + Code cleanup. + Will merge to 'next'. -* rs/cocci-strbuf-addf-to-addstr (2018-02-02) 1 commit - - cocci: simplify check for trivial format strings + +* ma/config-page-only-in-list-mode (2018-02-12) 3 commits + - config: change default of `pager.config` to "on" + - config: respect `pager.config` in list/get-mode only + - t7006: add tests for how git config paginates + + In a way similar to how "git tag" learned to honor the pager + setting only in the list mode, "git config" learned to ignore the + pager setting when it is used for setting values (i.e. when the + purpose of the operation is not to "show"). + + Waiting for discussion to conclude. + + +* ot/cat-batch-format (2018-02-12) 23 commits + - cat-file: update of docs + - cat-file: tests for new atoms added + - for-each-ref: tests for new atoms added + - ref-filter: unifying formatting of cat-file opts + - ref-filter: make populate_value() internal again + - cat-file: reuse printing logic from ref-filter + - ref-filter: make valid_atom general again + - ref-filter: make cat_file_info independent + - cat-file: move skip_object_info into ref-filter + - ref_filter: add is_atom_used function + - ref-filter: get rid of mark_atom_in_object_info() + - cat-file: start reusing populate_value() + - ref-filter: rename field in ref_array_item stuct + - ref-filter: make populate_value() global + - cat-file: start use ref_array_item struct + - ref-filter: reuse parse_ref_filter_atom() + - cat-file: start migrating formatting to ref-filter + - cat-file: split expand_atom() into 2 functions + - cat-file: move struct expand_data into ref-filter + - ref-filter: make valid_atom as function parameter + - cat-file: reuse struct ref_format + - ref-filter: add return value to some functions + - ref-filter: get rid of goto + + Teach "cat-file --batch" to reuse the formatting machinery shared + by for-each-ref, branch --list, and tag --list. + + +* rj/sparse-updates (2018-02-12) 2 commits + - Makefile: suppress a sparse warning for pack-revindex.c + - config.mak.uname: remove SPARSE_FLAGS setting for cygwin + + Devtool update. Will merge to 'next'. -* tg/reset-hard-show-head-with-pretty (2018-02-02) 1 commit - - reset --hard: make use of the pretty machinery +* rs/check-ignore-multi (2018-02-12) 1 commit + - check-ignore: fix mix of directories and other file types - The way "git reset --hard" reports the commit the updated HEAD - points at is made consistent with the way how the commit title is - generated by the other parts of the system. This matters when the - title is spread across physically multiple lines. + "git check-ignore" with multiple paths got confused when one is a + file and the other is a directory, which has been fixed. Will merge to 'next'. -* tg/worktree-add-existing-branch (2018-02-05) 3 commits - - worktree: teach "add" to check out existing branches - - worktree: be clearer when "add" dwim-ery kicks in - - worktree: improve message when creating a new worktree +* sb/describe-blob (2018-02-12) 1 commit + - describe: confirm that blobs actually exist - "git worktree add" learned to check out an existing branch. + "git describe $garbage" stopped giving any errors when the garbage + happens to be a string with 40 hexadecimal letters. - Expecting a reroll. - cf. - cf. - The general idea is good, just end-user facing messages are found - suboptimal. + Will merge to 'next'. -* nm/tag-edit (2018-02-07) 1 commit - - tag: add --edit option +* sg/doc-test-must-fail-args (2018-02-12) 1 commit + - t: document 'test_must_fail ok=' + Devdoc update. + + Will merge to 'next'. + + +* sg/t6300-modernize (2018-02-13) 1 commit + - t6300-for-each-ref: fix "more than one quoting style" tests + + Test update. + + WIll merge to 'next'. -* sm/mv-dry-run-update (2018-02-07) 2 commits - - mv: remove unneeded 'if (!show_only)' - - t7001: add test case for --dry-run + +* xz/send-email-batch-size (2018-02-12) 1 commit + - send-email: error out when relogin delay is missing + + "git send-email" learned to complain when the batch-size option is + not defined when the relogin-delay option is, since these two are + mutually required. + + +* pw/add-p-recount (2018-02-13) 4 commits + - add -p: calculate offset delta for edited patches + - add -p: adjust offsets of subsequent hunks when one is skipped + - t3701: add failing test for pathological context lines + - add -i: add function to format hunk header + + +* pw/add-p-single (2018-02-13) 3 commits + - add -p: improve error messages + - add -p: only bind search key if there's more than one hunk + - add -p: only display help for active keys -------------------------------------------------- [Stalled] @@ -354,174 +669,287 @@ of the repositories listed at -------------------------------------------------- [Cooking] -* ab/fetch-prune (2018-01-24) 11 commits - - fetch: add a --fetch-prune option and fetch.pruneTags config - - fetch tests: add scaffolding for the new fetch.pruneTags - - git-fetch & config doc: link to the new PRUNING section - - git remote doc: correct dangerous lies about what prune does - - git fetch doc: add a new section to explain the ins & outs of pruning - - fetch tests: test --prune and refspec interaction - - fetch tests: add a tag to be deleted to the pruning tests - - fetch tests: re-arrange arguments for future readability - - fetch tests: refactor in preparation for testing tag pruning - - fetch: stop accessing "remote" variable indirectly - - fetch: don't redundantly NULL something calloc() gave us +* bc/hash-algo (2018-02-09) 13 commits + (merged to 'next' on 2018-02-09 at 4437f3f132) + + hash: update obsolete reference to SHA1_HEADER + (merged to 'next' on 2018-02-08 at 18f36d12ed) + + bulk-checkin: abstract SHA-1 usage + + csum-file: abstract uses of SHA-1 + + csum-file: rename sha1file to hashfile + + read-cache: abstract away uses of SHA-1 + + pack-write: switch various SHA-1 values to abstract forms + + pack-check: convert various uses of SHA-1 to abstract forms + + fast-import: switch various uses of SHA-1 to the_hash_algo + + sha1_file: switch uses of SHA-1 to the_hash_algo + + builtin/unpack-objects: switch uses of SHA-1 to the_hash_algo + + builtin/index-pack: improve hash function abstraction + + hash: create union for hash context allocation + + hash: move SHA-1 macros to hash.h - Clarify how configured fetch refspecs interact with the "--prune" - option of "git fetch", and also add a handy short-hand for getting - rid of stale tags that are locally held. + More abstraction of hash function from the codepath. - Expecting a reroll. - cf. <87h8quytmq.fsf@evledraar.gmail.com> + Will merge to 'master'. -* gs/retire-mru (2018-01-24) 1 commit - (merged to 'next' on 2018-02-07 at 4b2e893911) - + mru: Replace mru.[ch] with list.h implementation - (this branch uses ot/mru-on-list.) +* bp/untracked-cache-noflush (2018-02-05) 1 commit + - dir.c: don't flag the index as dirty for changes to the untracked cache - Retire mru API as it does not give enough abstraction over - underlying list API to be worth it. + Writing out the index file when the only thing that changed in it + is the untracked cache information is often wasteful, and this has + been optimized out. + + Waiting for the discussion to finish. + cf. + + +* cc/perf-aggregate (2018-02-02) 3 commits + (merged to 'next' on 2018-02-08 at d8f074e6fb) + + perf/aggregate: sort JSON fields in output + + perf/aggregate: add --reponame option + + perf/aggregate: add --subsection option + + "make perf" enhancement. + + Will merge to 'master'. + + +* gs/rebase-allow-empty-message (2018-02-07) 1 commit + (merged to 'next' on 2018-02-08 at 9d81a2496c) + + rebase: add --allow-empty-message option + + "git rebase" learned to take "--allow-empty-message" option. + + Will merge to 'master'. + + +* jc/blame-missing-path (2018-02-07) 1 commit + - blame: tighten command line parser + + "git blame HEAD COPYING" in a bare repository failed to run, while + "git blame HEAD -- COPYING" run just fine. + + Will merge to 'next'. + + +* jt/binsearch-with-fanout (2018-02-02) 2 commits + (merged to 'next' on 2018-02-08 at 86fc3e8104) + + packfile: refactor hash search with fanout table + + packfile: remove GIT_DEBUG_LOOKUP log statements + + Refactor the code to binary search starting from a fan-out table + (which is how the packfile is indexed with object names) into a + reusable helper. + + cf. + + +* lw/daemon-log-destination (2018-02-05) 1 commit + (merged to 'next' on 2018-02-08 at da91bd56f4) + + daemon: add --log-destination=(stderr|syslog|none) + + The log from "git daemon" can be redirected with a new option; one + relevant use case is to send the log to standard error (instead of + syslog) when running it from inetd. Will merge to 'master'. -* ot/mru-on-list (2017-10-01) 1 commit - (merged to 'next' on 2018-02-07 at ee1ee4ac79) - + mru: use double-linked list from list.h - (this branch is used by gs/retire-mru.) +* nd/diff-stat-with-summary (2018-02-02) 2 commits + - diff: add --stat-with-summary + - diff.c: refactor pprint_rename() to use strbuf + + Waiting for the discussion to finish. + + +* nd/parseopt-completion (2018-02-09) 42 commits + - git-completion.bash: add GIT_COMPLETION_OPTIONS=all config + - completion: use __gitcomp_builtin in _git_worktree + - completion: use __gitcomp_builtin in _git_tag + - completion: use __gitcomp_builtin in _git_status + - completion: use __gitcomp_builtin in _git_show_branch + - completion: use __gitcomp_builtin in _git_rm + - completion: use __gitcomp_builtin in _git_revert + - completion: use __gitcomp_builtin in _git_reset + - completion: use __gitcomp_builtin in _git_replace + - remote: force completing --mirror= instead of --mirror + - completion: use __gitcomp_builtin in _git_remote + - completion: use __gitcomp_builtin in _git_push + - completion: use __gitcomp_builtin in _git_pull + - completion: use __gitcomp_builtin in _git_notes + - completion: use __gitcomp_builtin in _git_name_rev + - completion: use __gitcomp_builtin in _git_mv + - completion: use __gitcomp_builtin in _git_merge_base + - completion: use __gitcomp_builtin in _git_merge + - completion: use __gitcomp_builtin in _git_ls_remote + - completion: use __gitcomp_builtin in _git_ls_files + - completion: use __gitcomp_builtin in _git_init + - completion: use __gitcomp_builtin in _git_help + - completion: use __gitcomp_builtin in _git_grep + - completion: use __gitcomp_builtin in _git_gc + - completion: use __gitcomp_builtin in _git_fsck + - completion: use __gitcomp_builtin in _git_fetch + - completion: use __gitcomp_builtin in _git_difftool + - completion: use __gitcomp_builtin in _git_describe + - completion: use __gitcomp_builtin in _git_config + - completion: use __gitcomp_builtin in _git_commit + - completion: use __gitcomp_builtin in _git_clone + - completion: use __gitcomp_builtin in _git_clean + - completion: use __gitcomp_builtin in _git_cherry_pick + - completion: use __gitcomp_builtin in _git_checkout + - completion: use __gitcomp_builtin in _git_branch + - completion: use __gitcomp_builtin in _git_apply + - completion: use __gitcomp_builtin in _git_am + - completion: use __gitcomp_builtin in _git_add + - git-completion.bash: introduce __gitcomp_builtin + - parse-options: let OPT__FORCE take optional flags argument + - parse-options: add OPT_xxx_F() variants + - parse-options: support --git-completion-helper + + Will see another reroll. + cf. + - The first step to getting rid of mru API and using the - doubly-linked list API directly instead. +* nd/trace-index-ops (2018-02-02) 1 commit + (merged to 'next' on 2018-02-08 at 91e362b26a) + + trace: measure where the time is spent in the index-heavy operations Will merge to 'master'. -* jc/mailinfo-cleanup-fix (2018-01-24) 1 commit - (merged to 'next' on 2018-02-07 at 65d41f993b) - + mailinfo: avoid segfault when can't open files - - Corner case bugfix. - - Will merge to 'master'. +* pc/submodule-helper-foreach (2018-02-02) 5 commits + - submodule: port submodule subcommand 'foreach' from shell to C + - submodule foreach: document variable '$displaypath' + - submodule foreach: clarify the '$toplevel' variable documentation + - submodule foreach: document '$sm_path' instead of '$path' + - submodule foreach: correct '$path' in nested submodules from a subdirectory + Waiting for the discussion to finish. + cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com> -* po/clang-format-functype-weight (2018-01-24) 1 commit - (merged to 'next' on 2018-02-07 at 0724aaae38) - + clang-format: adjust penalty for return type line break - Prevent "clang-format" from breaking line after function return type. +* rs/cocci-strbuf-addf-to-addstr (2018-02-02) 1 commit + (merged to 'next' on 2018-02-08 at 0016008a97) + + cocci: simplify check for trivial format strings Will merge to 'master'. -* po/http-push-error-message (2018-01-24) 1 commit - (merged to 'next' on 2018-02-07 at 3dccd32857) - + http-push: improve error log +* tg/reset-hard-show-head-with-pretty (2018-02-02) 1 commit + (merged to 'next' on 2018-02-08 at 596a4ec00d) + + reset --hard: make use of the pretty machinery - Debugging aid. + The way "git reset --hard" reports the commit the updated HEAD + points at is made consistent with the way how the commit title is + generated by the other parts of the system. This matters when the + title is spread across physically multiple lines. Will merge to 'master'. -* po/object-id (2018-01-30) 12 commits - - sha1_file: rename hash_sha1_file_literally - - sha1_file: convert write_loose_object to object_id - - sha1_file: convert force_object_loose to object_id - - sha1_file: convert write_sha1_file to object_id - - notes: convert write_notes_tree to object_id - - notes: convert combine_notes_* to object_id - - commit: convert commit_tree* to object_id - - match-trees: convert splice_tree to object_id - - cache: clear whole hash buffer with oidclr - - sha1_file: convert hash_sha1_file to object_id - - dir: convert struct sha1_stat to use object_id - - sha1_file: convert pretend_sha1_file to object_id - - Conversion from uchar[20] to struct object_id continues. +* tg/worktree-add-existing-branch (2018-02-05) 3 commits + - worktree: teach "add" to check out existing branches + - worktree: be clearer when "add" dwim-ery kicks in + - worktree: improve message when creating a new worktree - Will merge to 'next'. + "git worktree add" learned to check out an existing branch. + Expecting a reroll. + cf. + cf. + The general idea is good, just end-user facing messages are found + suboptimal. -* sg/travis-linux32-sanity (2018-01-30) 5 commits - (merged to 'next' on 2018-02-07 at 0349cf505c) - + travis-ci: don't fail if user already exists on 32 bit Linux build job - + travis-ci: don't run the test suite as root in the 32 bit Linux build - + travis-ci: don't repeat the path of the cache directory - + travis-ci: use 'set -e' in the 32 bit Linux build job - + travis-ci: use 'set -x' for the commands under 'su' in the 32 bit Linux build - Travis updates. +* nm/tag-edit (2018-02-07) 1 commit + - tag: add --edit option - Will merge to 'master'. +* sm/mv-dry-run-update (2018-02-07) 2 commits + - mv: remove unneeded 'if (!show_only)' + - t7001: add test case for --dry-run -* jk/daemon-fixes (2018-01-25) 6 commits - (merged to 'next' on 2018-02-07 at 0e4fe8f8cc) - + daemon: fix length computation in newline stripping - + t/lib-git-daemon: add network-protocol helpers - + daemon: handle NULs in extended attribute string - + daemon: fix off-by-one in logging extended attributes - + t/lib-git-daemon: record daemon log - + t5570: use ls-remote instead of clone for interp tests - Assorted fixes to "git daemon". +* ab/fetch-prune (2018-02-09) 17 commits + - fetch: make the --prune-tags work with + - fetch: add a --prune-tags option and fetch.pruneTags config + - fetch tests: add scaffolding for the new fetch.pruneTags + - git-fetch & config doc: link to the new PRUNING section + - git remote doc: correct dangerous lies about what prune does + - git fetch doc: add a new section to explain the ins & outs of pruning + - fetch tests: fetch as well as fetch [] + - fetch tests: expand case/esac for later change + - fetch tests: double quote a variable for interpolation + - fetch tests: test --prune and refspec interaction + - fetch tests: add a tag to be deleted to the pruning tests + - fetch tests: re-arrange arguments for future readability + - fetch tests: refactor in preparation for testing tag pruning + - remote: add a macro for "refs/tags/*:refs/tags/*" + - fetch: stop accessing "remote" variable indirectly + - fetch: trivially refactor assignment to ref_nr + - fetch: don't redundantly NULL something calloc() gave us - Will merge to 'master'. + Clarify how configured fetch refspecs interact with the "--prune" + option of "git fetch", and also add a handy short-hand for getting + rid of stale tags that are locally held. -* jt/long-running-process-doc (2018-01-25) 1 commit - (merged to 'next' on 2018-02-07 at 8bbb42ad3c) - + Docs: split out long-running subprocess handshake +* po/object-id (2018-01-30) 12 commits + (merged to 'next' on 2018-02-08 at 701311e8ea) + + sha1_file: rename hash_sha1_file_literally + + sha1_file: convert write_loose_object to object_id + + sha1_file: convert force_object_loose to object_id + + sha1_file: convert write_sha1_file to object_id + + notes: convert write_notes_tree to object_id + + notes: convert combine_notes_* to object_id + + commit: convert commit_tree* to object_id + + match-trees: convert splice_tree to object_id + + cache: clear whole hash buffer with oidclr + + sha1_file: convert hash_sha1_file to object_id + + dir: convert struct sha1_stat to use object_id + + sha1_file: convert pretend_sha1_file to object_id - Doc updates. + Conversion from uchar[20] to struct object_id continues. Will merge to 'master'. * nd/format-patch-stat-width (2018-02-02) 2 commits - - format-patch: reduce patch diffstat width to 72 - - format-patch: keep cover-letter diffstat wrapped in 72 columns + (merged to 'next' on 2018-02-08 at c03e8a084e) + + format-patch: reduce patch diffstat width to 72 + + format-patch: keep cover-letter diffstat wrapped in 72 columns "git format-patch" learned to give 72-cols to diffstat, which is consistent with other line length limits the subcommand uses for its output meant for e-mails. - Will merge to 'next'. - - -* nd/list-merge-strategy (2018-01-26) 1 commit - (merged to 'next' on 2018-02-07 at a75d04a675) - + completion: fix completing merge strategies on non-C locales - - Completion of "git merge -s" (in contrib/) did not work - well in non-C locale. - Will merge to 'master'. * sb/pull-rebase-submodule (2018-01-25) 1 commit - - builtin/pull: respect verbosity settings in submodules + (merged to 'next' on 2018-02-08 at 38fa97f855) + + builtin/pull: respect verbosity settings in submodules - Will merge to 'next'. + "git pull --rebase" did not pass verbosity setting down when + recursing into a submodule. + + Will merge to 'master'. -* sg/test-i18ngrep (2018-01-26) 10 commits - - t: make 'test_i18ngrep' more informative on failure - - t: make sure that 'test_i18ngrep' got enough parameters - - t: forbid piping into 'test_i18ngrep' - - t: move 'test_i18ncmp' and 'test_i18ngrep' to 'test-lib-functions.sh' - - t5536: let 'test_i18ngrep' read the file without redirection - - t5510: consolidate 'grep' and 'test_i18ngrep' patterns - - t4001: don't run 'git status' upstream of a pipe - - t6022: don't run 'git merge' upstream of a pipe - - t5812: add 'test_i18ngrep's missing filename parameter - - t5541: add 'test_i18ngrep's missing filename parameter +* sg/test-i18ngrep (2018-02-08) 9 commits + (merged to 'next' on 2018-02-08 at e83eb33909) + + t: make 'test_i18ngrep' more informative on failure + + t: validate 'test_i18ngrep's parameters + + t: move 'test_i18ncmp' and 'test_i18ngrep' to 'test-lib-functions.sh' + + t5536: let 'test_i18ngrep' read the file without redirection + + t5510: consolidate 'grep' and 'test_i18ngrep' patterns + + t4001: don't run 'git status' upstream of a pipe + + t6022: don't run 'git merge' upstream of a pipe + + t5812: add 'test_i18ngrep's missing filename parameter + + t5541: add 'test_i18ngrep's missing filename parameter Test fixes. - Expecting a reroll. - cf. + Will merge to 'master'. * bw/c-plus-plus (2018-01-30) 37 commits @@ -549,206 +977,93 @@ of the repositories listed at - diff-lib: rename 'new' variable - commit: rename 'new' variables - combine-diff: rename 'new' variables - - remote: rename 'new' variables - - reflog: rename 'new' variables - - pack-redundant: rename 'new' variables - - help: rename 'new' variables - - checkout: rename 'new' variables - - apply: rename 'new' variables - - apply: rename 'try' variables - - diff: rename 'this' variables - - rev-parse: rename 'this' variable - - pack-objects: rename 'this' variables - - blame: rename 'this' variables - - object: rename function 'typename' to 'type_name' - - object_info: change member name from 'typename' to 'type_name' - - I do not mind refraining from using these keywords in a foreign - language in our codebase too much, but at the same time, renaming - must be done a bit more thoughtfully. When the original uses 'new' - together with and in contrast to 'old', renaming 'new' must be done - while preserving the pairing (which may involve renaming 'old' as - well), for example. - - Backburnered, i.e. will drop if other topics start to conflict with - it, but will accept rerolls. - - -* ew/svn-branch-segfault-fix (2018-01-30) 1 commit - (merged to 'next' on 2018-02-07 at 1bf8d8f74f) - + git-svn: control destruction order to avoid segfault - - Workaround for segfault with more recent versions of SVN. - - Will merge to 'master'. - - -* tz/doc-show-defaults-to-head (2018-01-30) 1 commit - (merged to 'next' on 2018-02-07 at fa21fb2ec8) - + doc: mention 'git show' defaults to HEAD - - Doc update. - - Will merge to 'master'. - - -* nd/ignore-glob-doc-update (2018-02-02) 1 commit - - gitignore.txt: elaborate shell glob syntax - - Doc update. - - Will merge to 'next'. - - -* nd/rebase-show-current-patch (2018-01-31) 3 commits - - rebase: introduce and use pseudo-ref ORIG_COMMIT - - rebase: add --show-current-patch - - am: add --show-current-patch - - The new "--show-current-patch" option gives an end-user facing way - to get the diff being applied when "git rebase" (and "git am") - stops with a conflict. - - Expecting a reroll. - cf. - - -* jh/status-no-ahead-behind (2018-01-24) 4 commits - - status: support --no-ahead-behind in long format - - status: update short status to respect --no-ahead-behind - - status: add --[no-]ahead-behind to status and commit for V2 format. - - stat_tracking_info: return +1 when branches not equal - - "git status" can spend a lot of cycles to compute the relation - between the current branch and its upstream, which can now be - disabled with "--no-ahead-behind" option. - - At v5; is this ready for 'next'? - - -* nd/worktree-move (2018-01-24) 7 commits - - worktree remove: allow it when $GIT_WORK_TREE is already gone - - worktree remove: new command - - worktree move: refuse to move worktrees with submodules - - worktree move: accept destination as directory - - worktree move: new command - - worktree.c: add update_worktree_location() - - worktree.c: add validate_worktree() - - "git worktree" learned move and remove subcommands. - - Expecting a reroll. - cf. <20180124095357.19645-1-pclouds@gmail.com> - - -* nd/trace-with-env (2018-01-19) 7 commits - (merged to 'next' on 2018-02-07 at 68399411d9) - + run-command.c: print new cwd in trace_run_command() - + run-command.c: print env vars in trace_run_command() - + run-command.c: print program 'git' when tracing git_cmd mode - + run-command.c: introduce trace_run_command() - + trace.c: move strbuf_release() out of print_trace_line() - + trace: avoid unnecessary quoting - + sq_quote_argv: drop maxlen parameter - - The tracing machinery learned to report tweaking of environment - variables as well. - - Will merge to 'master'. - - -* cl/t9001-cleanup (2018-01-12) 1 commit - (merged to 'next' on 2018-02-07 at 9b194a9999) - + t9001: use existing helper in send-email test - - Test clean-up. - - Will merge to 'master'. - - -* kg/packed-ref-cache-fix (2018-01-24) 6 commits - - packed_ref_cache: don't use mmap() for small files - - load_contents(): don't try to mmap an empty file - - packed_ref_iterator_begin(): make optimization more general - - find_reference_location(): make function safe for empty snapshots - - create_snapshot(): use `xmemdupz()` rather than a strbuf - - struct snapshot: store `start` rather than `header_len` - - Avoid mmapping small files while using packed refs (especially ones - with zero size, which would cause later munmap() to fail). - - Will merge to 'next'. - A change to a binsearch loop to work around picky complers was - unnecessarily hard to reason about, but it should do. - - -* ks/submodule-doc-updates (2018-01-16) 2 commits - (merged to 'next' on 2018-02-07 at aff2fa1650) - + Doc/git-submodule: improve readability and grammar of a sentence - + Doc/gitsubmodules: make some changes to improve readability and syntax - - Doc updates. - - Will merge to 'master'. - - -* nd/shared-index-fix (2018-01-24) 3 commits - (merged to 'next' on 2018-02-07 at c5d6e68c91) - + read-cache: don't write index twice if we can't write shared index - + read-cache.c: move tempfile creation/cleanup out of write_shared_index - + read-cache.c: change type of "temp" in write_shared_index() + - remote: rename 'new' variables + - reflog: rename 'new' variables + - pack-redundant: rename 'new' variables + - help: rename 'new' variables + - checkout: rename 'new' variables + - apply: rename 'new' variables + - apply: rename 'try' variables + - diff: rename 'this' variables + - rev-parse: rename 'this' variable + - pack-objects: rename 'this' variables + - blame: rename 'this' variables + - object: rename function 'typename' to 'type_name' + - object_info: change member name from 'typename' to 'type_name' - Code clean-up. + I do not mind refraining from using these keywords in a foreign + language in our codebase too much, but at the same time, renaming + must be done a bit more thoughtfully. When the original uses 'new' + together with and in contrast to 'old', renaming 'new' must be done + while preserving the pairing (which may involve renaming 'old' as + well), for example. - Will merge to 'master'. + Backburnered, i.e. will drop if other topics start to conflict with + it, but will accept rerolls. -* rs/describe-unique-abbrev (2018-01-16) 1 commit - (merged to 'next' on 2018-02-07 at b5383e2d05) - + describe: use strbuf_add_unique_abbrev() for adding short hashes +* nd/ignore-glob-doc-update (2018-02-02) 1 commit + (merged to 'next' on 2018-02-08 at 22ba92e49b) + + gitignore.txt: elaborate shell glob syntax - Code clean-up. + Doc update. Will merge to 'master'. -* tb/crlf-conv-flags (2018-01-16) 1 commit - (merged to 'next' on 2018-02-07 at 1981be1b46) - + convert_to_git(): safe_crlf/checksafe becomes int conv_flags - (this branch is used by ls/checkout-encoding.) - - Code clean-up. +* nd/rebase-show-current-patch (2018-02-12) 3 commits + - rebase: introduce and use pseudo-ref REBASE_HEAD + - rebase: add --show-current-patch + - am: add --show-current-patch - Will merge to 'master'. + The new "--show-current-patch" option gives an end-user facing way + to get the diff being applied when "git rebase" (and "git am") + stops with a conflict. -* nd/diff-flush-before-warning (2018-01-16) 1 commit - (merged to 'next' on 2018-02-07 at 9c67f58ae0) - + diff.c: flush stdout before printing rename warnings +* jh/status-no-ahead-behind (2018-01-24) 4 commits + - status: support --no-ahead-behind in long format + - status: update short status to respect --no-ahead-behind + - status: add --[no-]ahead-behind to status and commit for V2 format. + - stat_tracking_info: return +1 when branches not equal - Avoid showing a warning message in the middle of a line of "git - diff" output. + "git status" can spend a lot of cycles to compute the relation + between the current branch and its upstream, which can now be + disabled with "--no-ahead-behind" option. - Will merge to 'master'. + At v5; is this ready for 'next'? -* rb/hashmap-h-compilation-fix (2018-01-16) 1 commit - (merged to 'next' on 2018-02-07 at 780bc6d06b) - + hashmap.h: remove unused variable +* nd/worktree-move (2018-02-12) 7 commits + - worktree remove: allow it when $GIT_WORK_TREE is already gone + - worktree remove: new command + - worktree move: refuse to move worktrees with submodules + - worktree move: accept destination as directory + - worktree move: new command + - worktree.c: add update_worktree_location() + - worktree.c: add validate_worktree() - Code clean-up. + "git worktree" learned move and remove subcommands. - Will merge to 'master'. + Expecting a reroll. + cf. <20180124095357.19645-1-pclouds@gmail.com> -* cc/sha1-file-name (2018-01-19) 2 commits - (merged to 'next' on 2018-02-07 at a50b171a84) - + sha1_file: improve sha1_file_name() perfs - + sha1_file: remove static strbuf from sha1_file_name() +* kg/packed-ref-cache-fix (2018-01-24) 6 commits + (merged to 'next' on 2018-02-08 at 370f06a565) + + packed_ref_cache: don't use mmap() for small files + + load_contents(): don't try to mmap an empty file + + packed_ref_iterator_begin(): make optimization more general + + find_reference_location(): make function safe for empty snapshots + + create_snapshot(): use `xmemdupz()` rather than a strbuf + + struct snapshot: store `start` rather than `header_len` - Code clean-up. + Avoid mmapping small files while using packed refs (especially ones + with zero size, which would cause later munmap() to fail). Will merge to 'master'. + A change to a binsearch loop to work around picky complers was + unnecessarily hard to reason about, but it should do. * cl/send-email-reply-to (2018-01-17) 2 commits @@ -761,36 +1076,29 @@ of the repositories listed at cf. -* ds/use-get-be64 (2018-01-19) 1 commit - (merged to 'next' on 2018-02-07 at 6d6d5ba71d) - + packfile: use get_be64() for large offsets - - Code clean-up. - - Will merge to 'master'. - - * en/merge-recursive-fixes (2018-01-19) 3 commits - - merge-recursive: add explanation for src_entry and dst_entry - - merge-recursive: fix logic ordering issue - - Tighten and correct a few testcases for merging and cherry-picking + (merged to 'next' on 2018-02-08 at c254292070) + + merge-recursive: add explanation for src_entry and dst_entry + + merge-recursive: fix logic ordering issue + + Tighten and correct a few testcases for merging and cherry-picking (this branch is used by en/rename-directory-detection.) - Will merge to 'next'. + Will merge to 'master'. * jc/worktree-add-short-help (2018-01-17) 1 commit - - worktree: say that "add" takes an arbitrary commit in short-help + (merged to 'next' on 2018-02-08 at 9f59ca72ab) + + worktree: say that "add" takes an arbitrary commit in short-help Error message fix. - Will merge to 'next'. + Will merge to 'master'. -* js/rebase-recreate-merge (2018-01-30) 10 commits +* js/rebase-recreate-merge (2018-02-12) 12 commits - rebase -i: introduce --recreate-merges=[no-]rebase-cousins - pull: accept --rebase=recreate to recreate the branch topology - - sequencer: handle autosquash and post-rewrite for merge commands + - sequencer: handle post-rewrite for merge commands - sequencer: make refs generated by the `label` command worktree-local - rebase: introduce the --recreate-merges option - rebase-helper --make-script: introduce a flag to recreate merges @@ -798,89 +1106,38 @@ of the repositories listed at - sequencer: introduce the `merge` command - sequencer: introduce new commands to reset the revision - git-rebase--interactive: clarify arguments + - sequencer: make rearrange_squash() a bit more obvious + - sequencer: avoid using errno clobbered by rollback_lock_file() "git rebase" learned "--recreate-merges" to transplant the whole topology of commit graph elsewhere. - Not learning anything other than the parent info from an existing - merge was found unsatisfactory by some. It is something that can - be fixed incrementally without breaking end-user experience, I - would think, by doing the same cherry-pick 3-way merge. - cf. <87k1vpqq85.fsf@javad.com> - - -* jt/http-redact-cookies (2018-01-19) 2 commits - (merged to 'next' on 2018-02-07 at a8c3416a7d) - + http: support omitting data from traces - + http: support cookie redaction when tracing - - The http tracing code, often used to debug connection issues, - learned to redact potentially sensitive information from its output - so that it can be more safely sharable. - - Will merge to 'master'. - - -* mr/packed-ref-store-fix (2018-01-19) 1 commit - (merged to 'next' on 2018-02-07 at 17d32e99da) - + files_initial_transaction_commit(): only unlock if locked - - Crash fix for a corner case where an error codepath tried to unlock - what it did not acquire lock on. - - Will merge to 'master'. - - -* rs/strbuf-cocci-workaround (2018-01-19) 1 commit - (merged to 'next' on 2018-02-07 at 73a2c4c769) - + cocci: use format keyword instead of a literal string - - Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str) - - Will merge to 'master'. - - -* sg/cocci-move-array (2018-01-22) 1 commit - (merged to 'next' on 2018-02-07 at 6ced765979) - + Use MOVE_ARRAY - - Code clean-up. - - Will merge to 'master'. - -* tg/split-index-fixes (2018-01-19) 3 commits - (merged to 'next' on 2018-02-07 at 52d7a92ec5) - + travis: run tests with GIT_TEST_SPLIT_INDEX - + split-index: don't write cache tree with null oid entries - + read-cache: fix reading the shared index for other repos +* jt/fsck-code-cleanup (2018-01-23) 1 commit + (merged to 'next' on 2018-02-08 at 199ad41486) + + fsck: fix leak when traversing trees - The split-index mode had a few corner case bugs fixed. + Plug recently introduced leaks in fsck. Will merge to 'master'. -* jt/fsck-code-cleanup (2018-01-23) 1 commit - - fsck: fix leak when traversing trees - - Will merge to 'next'. - - * ab/wildmatch-tests (2018-01-30) 10 commits - - wildmatch test: mark test as EXPENSIVE_ON_WINDOWS - - test-lib: add an EXPENSIVE_ON_WINDOWS prerequisite - - wildmatch test: create & test files on disk in addition to in-memory - - wildmatch test: perform all tests under all wildmatch() modes - - wildmatch test: use test_must_fail, not ! for test-wildmatch - - wildmatch test: remove dead fnmatch() test code - - wildmatch test: use a paranoia pattern from nul_match() - - wildmatch test: don't try to vertically align our output - - wildmatch test: use more standard shell style - - wildmatch test: indent with tabs, not spaces + (merged to 'next' on 2018-02-08 at f999a3d732) + + wildmatch test: mark test as EXPENSIVE_ON_WINDOWS + + test-lib: add an EXPENSIVE_ON_WINDOWS prerequisite + + wildmatch test: create & test files on disk in addition to in-memory + + wildmatch test: perform all tests under all wildmatch() modes + + wildmatch test: use test_must_fail, not ! for test-wildmatch + + wildmatch test: remove dead fnmatch() test code + + wildmatch test: use a paranoia pattern from nul_match() + + wildmatch test: don't try to vertically align our output + + wildmatch test: use more standard shell style + + wildmatch test: indent with tabs, not spaces More tests for wildmatch functions. - Will merge to 'next'. + Will merge to 'master'. * bw/protocol-v2 (2018-02-07) 35 commits @@ -923,35 +1180,25 @@ of the repositories listed at The beginning of the next-gen transfer protocol. -* ls/checkout-encoding (2018-01-30) 6 commits +* ls/checkout-encoding (2018-02-09) 7 commits + - convert: add round trip check based on 'core.checkRoundtripEncoding' - convert: add tracing for 'working-tree-encoding' attribute - convert: add 'working-tree-encoding' attribute - utf8: add function to detect a missing UTF-16/32 BOM - utf8: add function to detect prohibited UTF-16/32 BOM - strbuf: add xstrdup_toupper() - strbuf: remove unnecessary NUL assignment in xstrdup_tolower() - (this branch uses tb/crlf-conv-flags.) The new "checkout-encoding" attribute can ask Git to convert the contents to the specified encoding when checking out to the working tree (and the other way around when checking in). -* pc/submodule-helper (2018-01-16) 2 commits - (merged to 'next' on 2018-02-07 at 53b4524eca) - + submodule: port submodule subcommand 'deinit' from shell to C - + submodule: port submodule subcommand 'sync' from shell to C - - Rewrite two more "git submodule" subcommands in C. - - Will merge to 'master'. - - -* sb/blame-color (2018-01-08) 4 commits +* sb/blame-color (2018-02-13) 3 commits - builtin/blame: highlight recently changed lines - builtin/blame: add option to color metadata fields separately - builtin/blame: dim uninteresting metadata - - color.h: document and modernize header + (this branch uses sb/color-h-cleanup.) Expecting a reroll. cf. https://public-inbox.org/git/20171110011002.10179-1-sbeller@google.com/#t @@ -961,20 +1208,22 @@ of the repositories listed at * sg/travis-build-during-script-phase (2018-01-08) 1 commit - travis-ci: build Git during the 'script' phase - Still under discussion. - cf. <5DE3FA05-2347-4BE7-8A1A-A6E5FEEC7C2B@gmail.com> + So... what do we want to do with this thing? * nd/fix-untracked-cache-invalidation (2018-02-07) 5 commits - - dir.c: ignore paths containing .git when invalidating untracked cache - - dir.c: stop ignoring opendir() error in open_cached_dir() - - dir.c: fix missing dir invalidation in untracked code - - dir.c: avoid stat() in valid_cached_dir() - - status: add a failing test showing a core.untrackedCache bug + (merged to 'next' on 2018-02-08 at 23bd5a5d2d) + + dir.c: ignore paths containing .git when invalidating untracked cache + + dir.c: stop ignoring opendir() error in open_cached_dir() + + dir.c: fix missing dir invalidation in untracked code + + dir.c: avoid stat() in valid_cached_dir() + + status: add a failing test showing a core.untrackedCache bug + (this branch is used by ab/untracked-cache-invalidation-docs.) Some bugs around "untracked cache" feature have been fixed. - Will merge to 'next'. + Seems to uncover bad untracked cache information a bit too loudly. + cf. <87d11omi2o.fsf@evledraar.gmail.com> * np/send-email-header-parsing (2017-12-15) 1 commit @@ -988,27 +1237,14 @@ of the repositories listed at * ab/sha1dc-build (2017-12-08) 3 commits - - sha1dc_git.h: re-arrange an ifdef chain for a subsequent change - - Makefile: under "make dist", include the sha1collisiondetection submodule - - Makefile: don't error out under DC_SHA1_EXTERNAL if DC_SHA1_SUBMODULE=auto + (merged to 'next' on 2018-02-08 at ba9ff2b836) + + sha1dc_git.h: re-arrange an ifdef chain for a subsequent change + + Makefile: under "make dist", include the sha1collisiondetection submodule + + Makefile: don't error out under DC_SHA1_EXTERNAL if DC_SHA1_SUBMODULE=auto Push the submodule version of collision-detecting SHA-1 hash implementation a bit harder on builders. - Will merge to 'next'. - - -* ab/simplify-perl-makefile (2018-01-03) 3 commits - (merged to 'next' on 2018-01-23 at 1506e0651a) - + perl: treat PERLLIB_EXTRA as an extra path again - + perl: avoid *.pmc and fix Error.pm further - + Makefile: replace perl/Makefile.PL with simple make rules - - Originally merged to 'next' on 2018-01-03 - - The build procedure for perl/ part has been greatly simplified by - weaning ourselves off of MakeMaker. - Will merge to 'master'. @@ -1051,84 +1287,3 @@ of the repositories listed at z/b and z/c, it is likely that x/d added in the meantime would also want to move to z/d by taking the hint that the entire directory 'x' moved to 'z'. - - -* pw/sequencer-in-process-commit (2018-01-24) 14 commits - (merged to 'next' on 2018-02-07 at ab5961edd9) - + sequencer: run 'prepare-commit-msg' hook - + t7505: add tests for cherry-pick and rebase -i/-p - + t7505: style fixes - + sequencer: assign only free()able strings to gpg_sign - + sequencer: improve config handling - + t3512/t3513: remove KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1 - + sequencer: try to commit without forking 'git commit' - + sequencer: load commit related config - + sequencer: simplify adding Signed-off-by: trailer - + commit: move print_commit_summary() to libgit - + commit: move post-rewrite code to libgit - + Add a function to update HEAD after creating a commit - + commit: move empty message checks to libgit - + t3404: check intermediate squash messages - - The sequencer infrastructure is shared across "git cherry-pick", - "git rebase -i", etc., and has always spawned "git commit" when it - needs to create a commit. It has been taught to do so internally, - when able, by reusing the codepath "git commit" itself uses, which - gives performance boost for a few tens of percents in some sample - scenarios. - - Will merge to 'master'. - - -* jh/fsck-promisors (2017-12-08) 10 commits - (merged to 'next' on 2018-01-23 at ca59f5c18e) - + gc: do not repack promisor packfiles - + rev-list: support termination at promisor objects - + sha1_file: support lazily fetching missing objects - + introduce fetch-object: fetch one promisor object - + index-pack: refactor writing of .keep files - + fsck: support promisor objects as CLI argument - + fsck: support referenced promisor objects - + fsck: support refs pointing to promisor objects - + fsck: introduce partialclone extension - + extension.partialclone: introduce partial clone extension - (this branch is used by jh/partial-clone.) - - Originally merged to 'next' on 2018-01-17 - - In preparation for implementing narrow/partial clone, the machinery - for checking object connectivity used by gc and fsck has been - taught that a missing object is OK when it is referenced by a - packfile specially marked as coming from trusted repository that - promises to make them available on-demand and lazily. - - Will merge to 'master'. - - -* jh/partial-clone (2017-12-08) 13 commits - (merged to 'next' on 2018-01-23 at de0f0111ea) - + t5616: test bulk prefetch after partial fetch - + fetch: inherit filter-spec from partial clone - + t5616: end-to-end tests for partial clone - + fetch-pack: restore save_commit_buffer after use - + unpack-trees: batch fetching of missing blobs - + clone: partial clone - + partial-clone: define partial clone settings in config - + fetch: support filters - + fetch: refactor calculation of remote list - + fetch-pack: test support excluding large blobs - + fetch-pack: add --no-filter - + fetch-pack, index-pack, transport: partial clone - + upload-pack: add object filtering for partial clone - (this branch uses jh/fsck-promisors.) - - Originally merged to 'next' on 2018-01-17 - - The machinery to clone & fetch, which in turn involves packing and - unpacking objects, have been told how to omit certain objects using - the filtering mechanism introduced by the jh/object-filtering - topic, and also mark the resulting pack as a promisor pack to - tolerate missing objects, taking advantage of the mechanism - introduced by the jh/fsck-promisors topic. - - Will merge to 'master'.