From: Junio C Hamano Date: Thu, 17 May 2018 06:00:51 +0000 (+0900) Subject: What's cooking (2018/05 #02) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b048814472b7dfc0e8ca250786c59c6bf0bc10a;p=thirdparty%2Fgit.git What's cooking (2018/05 #02) --- diff --git a/whats-cooking.txt b/whats-cooking.txt index c99530d5c1..28b9927993 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 (May 2018, #01; Mon, 7) -X-master-at: 1f1cddd558b54bb0ce19c8ace353fd07b758510d -X-next-at: d54016d9e3a3ac00b0483d3779ff96f3882b7094 +Subject: What's cooking in git.git (May 2018, #02; Thu, 17) +X-master-at: ccdcbd54c4475c2238b310f7113ab3075b5abc9c +X-next-at: 5d83f92caf205e137a75902ff5658d2d82c898c5 -What's cooking in git.git (May 2018, #01; Mon, 7) +What's cooking in git.git (May 2018, #02; Thu, 17) -------------------------------------------------- Here are the topics that have been cooking. Commits prefixed with @@ -17,284 +17,839 @@ of the repositories listed at http://git-blame.blogspot.com/p/git-public-repositories.html +-------------------------------------------------- +[Graduated to "master"] + +* hn/sort-ls-remote (2018-04-09) 1 commit + (merged to 'next' on 2018-04-30 at 244ca5d30a) + + ls-remote: create '--sort' option + + "git ls-remote" learned an option to allow sorting its output based + on the refnames being shown. + + +* sb/object-store-replace (2018-04-12) 15 commits + (merged to 'next' on 2018-04-25 at 9a213fb505) + + replace-object: allow lookup_replace_object to handle arbitrary repositories + + replace-object: allow do_lookup_replace_object to handle arbitrary repositories + + replace-object: allow prepare_replace_object to handle arbitrary repositories + + refs: allow for_each_replace_ref to handle arbitrary repositories + + refs: store the main ref store inside the repository struct + + replace-object: add repository argument to lookup_replace_object + + replace-object: add repository argument to do_lookup_replace_object + + replace-object: add repository argument to prepare_replace_object + + refs: add repository argument to for_each_replace_ref + + refs: add repository argument to get_main_ref_store + + replace-object: check_replace_refs is safe in multi repo environment + + replace-object: eliminate replace objects prepared flag + + object-store: move lookup_replace_object to replace-object.h + + replace-object: move replace_map to object store + + replace_object: use oidmap + (this branch is used by sb/object-store-alloc and sb/oid-object-info.) + + The effort to pass the repository in-core structure throughout the + API continues. This round deals with the code that implements the + refs/replace/ mechanism. + + +* ab/git-svn-get-record-typofix (2018-04-09) 1 commit + (merged to 'next' on 2018-04-30 at 23f875f6b9) + + git-svn: avoid warning on undef readline() + + "git svn" had a minor thinko/typo which has been fixed. + + +* ab/nuke-emacs-contrib (2018-04-16) 1 commit + (merged to 'next' on 2018-04-25 at 9b133d8a65) + + git{,-blame}.el: remove old bitrotting Emacs code + + The scripts in contrib/emacs/ have outlived their usefulness and + have been replaced with a stub that errors out and tells the user + there are replacements. + + +* ab/simplify-perl-makefile (2018-04-19) 2 commits + (merged to 'next' on 2018-04-25 at 906cf21682) + + Makefile: mark perllibdir as a .PHONY target + (merged to 'next' on 2018-04-17 at 4448756934) + + perl: fix installing modules from contrib + + Recent simplification of build procedure forgot a bit of tweak to + the build procedure of contrib/mw-to-git/ + + +* bt/gpg-interface (2018-04-16) 7 commits + (merged to 'next' on 2018-04-30 at 50c507b7d8) + + gpg-interface: find the last gpg signature line + + gpg-interface: extract gpg line matching helper + + gpg-interface: fix const-correctness of "eol" pointer + + gpg-interface: use size_t for signature buffer size + + gpg-interface: modernize function declarations + + gpg-interface: handle bool user.signingkey + + t7004: fix mistaken tag name + + What is queued here is only the obviously correct and + uncontroversial code clean-up part, which is an earlier 7 patches, + of a larger series. + + The remainder that is not queued introduces a few configuration + variables to deal with e-signature backends with different + signature format. + + +* bw/protocol-v2 (2018-03-15) 35 commits + (merged to 'next' on 2018-04-11 at 23ee234a2c) + + remote-curl: don't request v2 when pushing + + remote-curl: implement stateless-connect command + + http: eliminate "# service" line when using protocol v2 + + http: don't always add Git-Protocol header + + http: allow providing extra headers for http requests + + remote-curl: store the protocol version the server responded with + + remote-curl: create copy of the service name + + pkt-line: add packet_buf_write_len function + + transport-helper: introduce stateless-connect + + transport-helper: refactor process_connect_service + + transport-helper: remove name parameter + + connect: don't request v2 when pushing + + connect: refactor git_connect to only get the protocol version once + + fetch-pack: support shallow requests + + fetch-pack: perform a fetch using v2 + + upload-pack: introduce fetch server command + + push: pass ref prefixes when pushing + + fetch: pass ref prefixes when fetching + + ls-remote: pass ref prefixes when requesting a remote's refs + + transport: convert transport_get_remote_refs to take a list of ref prefixes + + transport: convert get_refs_list to take a list of ref prefixes + + connect: request remote refs using v2 + + ls-refs: introduce ls-refs server command + + serve: introduce git-serve + + test-pkt-line: introduce a packet-line test helper + + protocol: introduce enum protocol_version value protocol_v2 + + transport: store protocol version + + connect: discover protocol version outside of get_remote_heads + + connect: convert get_remote_heads to use struct packet_reader + + transport: use get_refs_via_connect to get refs + + upload-pack: factor out processing lines + + upload-pack: convert to a builtin + + pkt-line: add delim packet support + + pkt-line: allow peeking a packet line without consuming it + + pkt-line: introduce packet_read_with_status + (this branch is used by bw/server-options and jt/partial-clone-proto-v2.) + + The beginning of the next-gen transfer protocol. + + +* dj/runtime-prefix (2018-04-24) 7 commits + (merged to 'next' on 2018-04-25 at e7e635a70e) + + Makefile: quote $INSTLIBDIR when passing it to sed + + Makefile: remove unused @@PERLLIBDIR@@ substitution variable + (merged to 'next' on 2018-04-17 at a69aaa7a22) + + mingw/msvc: use the new-style RUNTIME_PREFIX helper + + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows + + exec_cmd: RUNTIME_PREFIX on some POSIX systems + + Makefile: add Perl runtime prefix support + + Makefile: generate Perl header from template file + (this branch is tangled with js/runtime-prefix.) + + A build-time option has been added to allow Git to be told to refer + to its associated files relative to the main binary, in the same + way that has been possible on Windows for quite some time, for + Linux, BSDs and Darwin. + + +* ds/commit-graph (2018-04-11) 16 commits + (merged to 'next' on 2018-04-25 at 18af3d28d9) + + commit-graph: implement "--append" option + + commit-graph: build graph from starting commits + + commit-graph: read only from specific pack-indexes + + commit: integrate commit graph with commit parsing + + commit-graph: close under reachability + + commit-graph: add core.commitGraph setting + + commit-graph: implement git commit-graph read + + commit-graph: implement git-commit-graph write + + commit-graph: implement write_commit_graph() + + commit-graph: create git-commit-graph builtin + + graph: add commit graph design document + + commit-graph: add format document + + csum-file: refactor finalize_hashfile() method + + csum-file: rename hashclose() to finalize_hashfile() + + Merge branch 'jk/cached-commit-buffer' into HEAD + + Merge branch 'jt/binsearch-with-fanout' into HEAD + (this branch is used by ds/generation-numbers and ds/lazy-load-trees.) + + Precompute and store information necessary for ancestry traversal + in a separate file to optimize graph walking. + + Will merge to 'master'. + + +* jc/parseopt-expiry-errors (2018-04-23) 2 commits + (merged to 'next' on 2018-04-30 at 637085f3d8) + + parseopt: handle malformed --expire arguments more nicely + + gc: do not upcase error message shown with die() + + "git gc --prune=nonsense" spent long time repacking and then + silently failed when underlying "git prune --expire=nonsense" + failed to parse its command line. This has been corrected. + + +* js/colored-push-errors (2018-04-24) 4 commits + (merged to 'next' on 2018-04-30 at 31076c52a2) + + config: document the settings to colorize push errors/hints + + push: test to verify that push errors are colored + + push: colorize errors + + color: introduce support for colorizing stderr + + Error messages from "git push" can be painted for more visibility. + + +* js/empty-config-section-fix (2018-04-09) 15 commits + (merged to 'next' on 2018-04-25 at 1690df3e5f) + + git_config_set: reuse empty sections + + git config --unset: remove empty sections (in the common case) + + git_config_set: make use of the config parser's event stream + + git_config_set: do not use a state machine + + config_set_store: rename some fields for consistency + + config: avoid using the global variable `store` + + config: introduce an optional event stream while parsing + + t1300: `--unset-all` can leave an empty section behind (bug) + + t1300: add a few more hairy examples of sections becoming empty + + t1300: remove unreasonable expectation from TODO + + t1300: avoid relying on a bug + + config --replace-all: avoid extra line breaks + + t1300: demonstrate that --replace-all can "invent" newlines + + t1300: rename it to reflect that `repo-config` was deprecated + + git_config_set: fix off-by-two + + "git config --unset a.b", when "a.b" is the last variable in an + otherwise empty section "a", left an empty section "a" behind, and + worse yet, a subsequent "git config a.c value" did not reuse that + empty shell and instead created a new one. These have been + (partially) corrected. + + +* js/ident-date-fix (2018-04-19) 1 commit + (merged to 'next' on 2018-04-30 at d50ec2f4c1) + + sequencer: reset the committer date before commits + + During a "rebase -i" session, the code could give older timestamp + to commits created by later "pick" than an earlier "reword", which + has been corrected. + + +* js/runtime-prefix (2018-04-24) 8 commits + (merged to 'next' on 2018-04-30 at c6cfccf40e) + + Avoid multiple PREFIX definitions + + git_setup_gettext: plug memory leak + + gettext: avoid initialization if the locale dir is not present + (merged to 'next' on 2018-04-17 at a69aaa7a22) + + mingw/msvc: use the new-style RUNTIME_PREFIX helper + + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows + + exec_cmd: RUNTIME_PREFIX on some POSIX systems + + Makefile: add Perl runtime prefix support + + Makefile: generate Perl header from template file + (this branch is tangled with dj/runtime-prefix.) + + +* ls/checkout-encoding (2018-04-16) 10 commits + (merged to 'next' on 2018-04-25 at e0f8554b2a) + + convert: add round trip check based on 'core.checkRoundtripEncoding' + + convert: add tracing for 'working-tree-encoding' attribute + + convert: check for detectable errors in UTF encodings + + 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 + + utf8: teach same_encoding() alternative UTF encoding names + + strbuf: add a case insensitive starts_with() + + strbuf: add xstrdup_toupper() + + strbuf: remove unnecessary NUL assignment in xstrdup_tolower() + + 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). + + +* ma/double-dashes-in-docs (2018-04-18) 4 commits + (merged to 'next' on 2018-04-25 at aaac2dc63c) + + git-submodule.txt: quote usage in monospace, drop backslash + + git-[short]log.txt: unify quoted standalone -- + + doc: convert [\--] to [--] + + doc: convert \--option to --option + + Doc formatting updates. + + +* ma/fast-export-skip-merge-fix (2018-04-21) 1 commit + (merged to 'next' on 2018-04-30 at f7fca02ab1) + + fast-export: fix regression skipping some merge-commits + + "git fast-export" had a regression in v2.15.0 era where it skipped + some merge commits in certain cases, which has been corrected. + + +* ma/http-walker-no-partial (2018-04-24) 2 commits + (merged to 'next' on 2018-04-30 at 4582c99ba8) + + walker: drop fields of `struct walker` which are always 1 + + http-fetch: make `-a` standard behavior + + "git http-fetch" (deprecated) had an optional and experimental + "feature" to fetch only commits and/or trees, which nobody used. + This has been removed. + + +* nd/submodule-status-fix (2018-04-19) 1 commit + (merged to 'next' on 2018-04-30 at 34d1f9ca83) + + submodule--helper: don't print null in 'submodule status' + + "git submodule status" did not check the symbolic revision name it + computed for the submodule HEAD is not the NULL, and threw it at + printf routines, which has been corrected. + + +* nd/warn-more-for-devs (2018-04-16) 4 commits + (merged to 'next' on 2018-04-25 at 2978e61414) + + Makefile: add a DEVOPTS to get all of -Wextra + + Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER + + Makefile: detect compiler and enable more warnings in DEVELOPER=1 + + connect.c: mark die_initial_contact() NORETURN + + The build procedure "make DEVELOPER=YesPlease" learned to enable a + bit more warning options depending on the compiler used to help + developers more. There also is "make DEVOPTS=tokens" knob + available now, for those who want to help fixing warnings we + usually ignore, for example. + + +* ot/libify-get-ref-atom-value (2018-03-29) 6 commits + (merged to 'next' on 2018-04-25 at 056bcaa69c) + + ref-filter: libify get_ref_atom_value() + + ref-filter: add return value to parsers + + ref-filter: change parsing function error handling + + ref-filter: add return value && strbuf to handlers + + ref-filter: start adding strbufs with errors + + ref-filter: add shortcut to work with strbufs + + Code restructuring, in preparation for further work. + + +* sa/send-email-dedup-some-headers (2018-04-19) 1 commit + (merged to 'next' on 2018-04-30 at 2a1fd8217e) + + send-email: avoid duplicate In-Reply-To/References + + When fed input that already has In-Reply-To: and/or References: + headers and told to add the same information, "git send-email" + added these headers separately, instead of appending to an existing + one, which is a violation of the RFC. This has been corrected. + + +* sb/submodule-move-nested (2018-03-29) 6 commits + (merged to 'next' on 2018-04-25 at 86b177433a) + + submodule: fixup nested submodules after moving the submodule + + submodule-config: remove submodule_from_cache + + submodule-config: add repository argument to submodule_from_{name, path} + + submodule-config: allow submodule_free to handle arbitrary repositories + + grep: remove "repo" arg from non-supporting funcs + + submodule.h: drop declaration of connect_work_tree_and_git_dir + + Moving a submodule that itself has submodule in it with "git mv" + forgot to make necessary adjustment to the nested sub-submodules; + now the codepath learned to recurse into the submodules. + + +* sb/worktree-remove-opt-force (2018-04-18) 1 commit + (merged to 'next' on 2018-04-25 at 0367d52a4b) + + worktree: accept -f as short for --force for removal + + "git worktree remove" learned that "-f" is a shorthand for + "--force" option, just like for "git worktree add". + + +* sg/completion-clear-cached (2018-04-18) 1 commit + (merged to 'next' on 2018-04-25 at 9178da6c3d) + + completion: reduce overhead of clearing cached --options + + The completion script (in contrib/) learned to clear cached list of + command line options upon dot-sourcing it again in a more efficient + way. + + +* sg/doc-gc-quote-mismatch-fix (2018-04-18) 1 commit + (merged to 'next' on 2018-04-25 at bc3d1abf45) + + docs/git-gc: fix minor rendering issue + + Doc formatting fix. + + +* so/glossary-ancestor (2018-04-17) 1 commit + (merged to 'next' on 2018-04-25 at 0a849fee00) + + glossary: substitute "ancestor" for "direct ancestor" in 'push' description. + + Docfix. + + +* tb/config-default (2018-04-23) 3 commits + (merged to 'next' on 2018-04-25 at 59bb6beb2a) + + builtin/config: introduce `color` type specifier + + config.c: introduce 'git_config_color' to parse ANSI colors + + builtin/config: introduce `--default` + (this branch uses tb/config-type.) + + "git config --get" learned the "--default" option, to help the + calling script. Building on top of the tb/config-type topic, the + "git config" learns "--type=color" type. Taken together, you can + do things like "git config --get foo.color --default blue" and get + the ANSI color sequence for the color given to foo.color variable, + or "blue" if the variable does not exist. + + +* tb/config-type (2018-04-19) 2 commits + (merged to 'next' on 2018-04-25 at fe69e93c82) + + builtin/config.c: support `--type=` as preferred alias for `--` + + builtin/config.c: treat type specifiers singularly + (this branch is used by tb/config-default.) + + The "git config" command uses separate options e.g. "--int", + "--bool", etc. to specify what type the caller wants the value to + be interpreted as. A new "--type=" option has been + introduced, which would make it cleaner to define new types. + + +* tg/demote-stash-save-in-completion (2018-04-20) 2 commits + (merged to 'next' on 2018-04-30 at 93d0af5375) + + completion: make stash -p and alias for stash push -p + + completion: stop showing 'save' for stash by default + + The command line completion (in contrib/) has been taught that "git + stash save" has been deprecated ("git stash push" is the preferred + spelling in the new world) and does not offer it as a possible + completion candidate when "git stash push" can be. + + +* tq/t1510 (2018-04-17) 1 commit + (merged to 'next' on 2018-04-25 at 5710c81979) + + t1510-repo-setup.sh: remove useless mkdir + + Test cleanup. + + +* tz/doc-git-urls-reference (2018-04-20) 1 commit + (merged to 'next' on 2018-04-30 at 39926c99fd) + + doc/clone: update caption for GIT URLS cross-reference + + Doc fix. + -------------------------------------------------- [New Topics] -* tb/test-apfs-utf8-normalization (2018-05-02) 1 commit - - test: correct detection of UTF8_NFD_TO_NFC for APFS +* hn/sort-ls-remote (2018-05-14) 1 commit + (merged to 'next' on 2018-05-16 at 64336850f2) + + t5512: run git fetch inside test + + Hotfix. + + Will merge to 'master'. - A test to see if the filesystem normalizes UTF-8 filename has been - updated to check what we need to know in a more direct way, i.e. a - path created in NFC form can be accessed with NFD form (or vice - versa) to cope with APFS as well as HFS. + +* sb/object-store-replace (2018-05-10) 2 commits + (merged to 'next' on 2018-05-16 at 41bbedcc81) + + replace-object.c: remove the_repository from prepare_replace_object + + object.c: free replace map in raw_object_store_clear + + Hotfix. + + Will merge to 'master'. + + +* sg/t6500-no-redirect-of-stdin (2018-05-09) 1 commit + - t6050-replace: don't disable stdin for the whole test script + + Test cleanup. Will merge to 'next'. -* ab/get-short-oid (2018-05-02) 12 commits - - get_short_oid: document & warn if we ignore the type selector - - config doc: document core.disambiguate - - get_short_oid / peel_onion: ^{commit} should be commit, not committish - - get_short_oid / peel_onion: ^{tree} should be tree, not treeish - - get_short_oid: learn to disambiguate by ^{blob} - - get_short_oid: learn to disambiguate by ^{tag} - - get_short_oid: sort ambiguous objects by type, then SHA-1 - - sha1-name.c: move around the collect_ambiguous() function - - cache.h: add comment explaining the order in object_type - - git-p4: change "commitish" typo to "committish" - - sha1-array.h: align function arguments - - sha1-name.c: remove stray newline +* ao/config-api-doc (2018-05-11) 1 commit + - doc: fix config API documentation about config_with_options + + Doc update. + + Will merge to 'next'. + + +* bc/hash-independent-tests (2018-05-16) 28 commits + - t5300: abstract away SHA-1-specific constants + - t4208: abstract away SHA-1-specific constants + - t4045: abstract away SHA-1-specific constants + - t4042: abstract away SHA-1-specific constants + - t4205: sort log output in a hash-independent way + - t/lib-diff-alternative: abstract away SHA-1-specific constants + - t4030: abstract away SHA-1-specific constants + - t4029: abstract away SHA-1-specific constants + - t4029: fix test indentation + - t4022: abstract away SHA-1-specific constants + - t4020: abstract away SHA-1-specific constants + - t4014: abstract away SHA-1-specific constants + - t4008: abstract away SHA-1-specific constants + - t4007: abstract away SHA-1-specific constants + - t3905: abstract away SHA-1-specific constants + - t3702: abstract away SHA-1-specific constants + - t3103: abstract away SHA-1-specific constants + - t2203: abstract away SHA-1-specific constants + - t: skip pack tests if not using SHA-1 + - t4044: skip test if not using SHA-1 + - t1512: skip test if not using SHA-1 + - t1007: annotate with SHA1 prerequisite + - t0000: annotate with SHA1 prerequisite + - t: switch $_x40 to $OID_REGEX + - t/test-lib: introduce OID_REGEX + - t: switch $_z40 to $ZERO_OID + - t/test-lib: introduce ZERO_OID + - t/test-lib: add an SHA1 prerequisite + + Many tests hardcode the raw object names, which would change once + we migrate away from SHA-1. While some of them must test against + exact object names, most of them do not have to use hardcoded + constants in the test. The latter kind of tests have been updated + to test the moral equivalent of the original without hardcoding the + actual object names. + + Will merge to 'next'. -* ah/misc-doc-updates (2018-05-06) 7 commits - - doc: normalize [--options] to [options] in git-diff - - doc: add note about shell quoting to revision.txt - - git-svn: remove ''--add-author-from' for 'commit-diff' - - doc: add '-d' and '-o' for 'git push' - - doc: clarify ignore rules for git ls-files - - doc: align 'diff --no-index' in text and synopsis - - doc: improve formatting in githooks.txt +* bp/status-rename-config (2018-05-13) 1 commit + - add status config and command line options for rename detection + (this branch uses em/status-rename-config.) - Misc doc fixes. + "git status" learned to honor a new status.renames configuration to + skip rename detection, which could be useful for those who want to + do so without disabling the default rename detection done by the + "git diff" command. Will merge to 'next'. -* bc/format-patch-cover-no-attach (2018-05-02) 1 commit - - format-patch: make cover letters always text/plain - - "git format-patch --cover --attach" created a broken MIME multipart - message for the cover letter, which has been fixed by keeping the - cover letter as plain text file. +* bw/refspec-api (2018-05-16) 35 commits + - submodule: convert push_unpushed_submodules to take a struct refspec + - remote: convert check_push_refs to take a struct refspec + - remote: convert match_push_refs to take a struct refspec + - http-push: store refspecs in a struct refspec + - transport: remove transport_verify_remote_names + - send-pack: store refspecs in a struct refspec + - transport: convert transport_push to take a struct refspec + - push: convert to use struct refspec + - push: check for errors earlier + - remote: convert match_explicit_refs to take a struct refspec + - remote: convert get_ref_match to take a struct refspec + - remote: convert query_refspecs to take a struct refspec + - remote: convert apply_refspecs to take a struct refspec + - remote: convert get_stale_heads to take a struct refspec + - fetch: convert prune_refs to take a struct refspec + - fetch: convert get_ref_map to take a struct refspec + - fetch: convert do_fetch to take a struct refspec + - refspec: remove the deprecated functions + - fetch: convert refmap to use struct refspec + - fetch: convert fetch_one to use struct refspec + - transport-helper: convert to use struct refspec + - remote: convert fetch refspecs to struct refspec + - remote: convert push refspecs to struct refspec + - fast-export: convert to use struct refspec + - clone: convert cmd_clone to use refspec_item_init + - remote: convert match_push_refs to use struct refspec + - remote: convert check_push_refs to use struct refspec + - transport: convert transport_push to use struct refspec + - pull: convert get_tracking_branch to use refspec_item_init + - submodule--helper: convert push_check to use struct refspec + - refspec: convert valid_fetch_refspec to use parse_refspec + - refspec: introduce struct refspec + - refspec: rename struct refspec to struct refspec_item + - refspec: factor out parsing a single refspec + - refspec: move refspec parsing logic into its own file + + An API update for handling of refspecs used by fetch & push + codepath. Will merge to 'next'. -* bp/test-drop-caches (2018-05-04) 1 commit - - test-drop-caches: simplify delay loading of NtSetSystemInformation +* ds/commit-graph-lockfile-fix (2018-05-11) 1 commit + - commit-graph: fix UX issue when .lock file exists + (this branch uses ds/generation-numbers and ds/lazy-load-trees.) - Code simplification. + Update to ds/generation-numbers topic. + + +* jk/apply-p-doc (2018-05-11) 1 commit + - apply: clarify "-p" documentation + + Doc update. Will merge to 'next'. -* cc/perf-bisect (2018-05-06) 1 commit - - perf/bisect_run_script: disable codespeed +* jk/unavailable-can-be-missing (2018-05-13) 4 commits + - mark_parents_uninteresting(): avoid most allocation + - mark_parents_uninteresting(): replace list with stack + - mark_parents_uninteresting(): drop missing object check + - mark_tree_contents_uninteresting(): drop missing object check - Performance test updates. + Code clean-up to turn history traversal more robust in a + semi-corrupt repository. Will merge to 'next'. -* cf/submodule-progress-dissociate (2018-05-04) 3 commits - - submodule: add --dissociate option to add/update commands - - submodule: add --progress option to add command - - submodule: clean up subsititions in script +* lm/credential-netrc (2018-05-14) 2 commits + - git-credential-netrc: accept gpg option + - git-credential-netrc: adapt to test framework for git - "git submodule update" and "git submodule add" supported the - "--reference" option to borrow objects from a neighbouring local - repository like "git clone" does, but lacked the more recent - invention "--dissociate". Also "git submodule add" has been taught - to take the "--progress" option. + Update credential-netrc helper (in contrib/) to allow customizing + the GPG used to decrypt the encrypted .netrc file. - Is this ready for 'next'? Should "git submodule -h" list the new - options in its short help? + Will merge to 'next'. -* dd/send-email-reedit (2018-05-06) 1 commit - - git-send-email: allow re-editing of message +* ma/create-pseudoref-with-null-old-oid (2018-05-13) 3 commits + - refs: handle zero oid for pseudorefs + - t1400: add tests around adding/deleting pseudorefs + - refs.c: refer to "object ID", not "sha1", in error messages - "git send-email" can sometimes offer confirmation dialog "Send this - email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action - 'Edit' has been added to this dialog's choice. - - Waiting briefly for an ack or two. - cf. + "git update-ref A B" is supposed to ensure that ref A does not yet + exist when B is a NULL OID, but this check was not done correctly + for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD. + Will merge to 'next'. -* em/status-rename-config (2018-05-06) 1 commit - - wt-status: use settings from git_diff_ui_config - "git status" learned to pay attention to UI related diff - configuration variables such as diff.renames. +* ma/lockfile-cleanup (2018-05-10) 5 commits + - lock_file: move static locks into functions + - lock_file: make function-local locks non-static + - refs.c: do not die if locking fails in `delete_pseudoref()` + - refs.c: do not die if locking fails in `write_pseudoref()` + - t/helper/test-write-cache: clean up lock-handling + + Code clean-up to adjust to a more recent lockfile API convention that + allows lockfile instances kept on the stack. Will merge to 'next'. -* jm/cache-entry-from-mem-pool (2018-05-02) 5 commits - - block alloc: add validations around cache_entry lifecyle - - block alloc: allocate cache entries from mem_pool - - mem-pool: fill out functionality - - block alloc: add lifecycle APIs for cache_entry structs - - read-cache: teach refresh_cache_entry() to take istate +* nd/commit-util-to-slab (2018-05-14) 14 commits + - commit.h: delete 'util' field in struct commit + - merge: use commit-slab in merge remote desc instead of commit->util + - log: use commit-slab in prepare_bases() instead of commit->util + - show-branch: use commit-slab for commit-name instead of commit->util + - name-rev: use commit-slab for rev-name instead of commit->util + - bisect.c: use commit-slab for commit weight instead of commit->util + - revision.c: use commit-slab for show_source + - sequencer.c: use commit-slab to associate todo items to commits + - sequencer.c: use commit-slab to mark seen commits + - shallow.c: use commit-slab for commit depth instead of commit->util + - describe: use commit-slab for commit names instead of commit->util + - blame: use commit-slab for blame suspects instead of commit->util + - commit-slab: support shared commit-slab + - commit-slab.h: code split + + The in-core "commit" object had an all-purpose "void *util" field, + which was tricky to use especially in library-ish part of the + code. All of the existing uses of the field has been migrated to a + more dedicated "commit-slab" mechanism and the field is eliminated. - For a large tree, the index needs to hold many cache entries - allocated on heap. These cache entries are now allocated out of a - dedicated memory pool to amortize malloc(3) overhead. + Will merge to 'next'. - Needs review. - Is the "caller always knows which pool an entry came from and calls - the right kind of free" a feasible approach? +* nd/diff-apply-ita (2018-05-14) 2 commits + - apply: add --intent-to-add + - diff: turn --ita-invisible-in-index on by default -* js/branch-diff (2018-05-06) 18 commits - - completion: support branch-diff - - branch-diff: add a man page - - branch-diff --dual-color: work around bogus white-space warning - - branch-diff: offer to dual-color the diffs - - diff: add an internal option to dual-color diffs of diffs - - color: provide inverted colors, too - - branch-diff: use color for the commit pairs - - branch-diff: add tests - - branch-diff: do not show "function names" in hunk headers - - branch-diff: adjust the output of the commit pairs - - branch-diff: suppress the diff headers - - branch-diff: indent the diffs just like tbdiff - - branch-diff: right-trim commit messages - - branch-diff: also show the diff between patches - - branch-diff: improve the order of the shown commits - - branch-diff: first rudimentary implementation - - Add a new builtin: branch-diff - - Add a function to solve least-cost assignment problems + "git diff" compares the index and the working tree. For paths + added with intent-to-add bit, the command shows the full contents + of them as added, but the paths themselves were not marked as new + files. They are now shown as new by default. - "git tbdiff" that lets us compare individual patches in two - iterations of a topic has been rewritten and made into a built-in - command. + "git apply" learned the "--intent-to-add" option so that an + otherwise working-tree-only application of a patch will add new + paths to the index marked with the "intent-to-add" bit. - Expecting a reroll. - cf. + Will merge to and cook in 'next'. -* js/sequencer-and-root-commits (2018-05-06) 6 commits - - rebase --rebase-merges: root commits can be cousins, too - - rebase --rebase-merges: a "merge" into a new root is a fast-forward - - sequencer: allow introducing new root commits - - rebase -i --root: let the sequencer handle even the initial part - - sequencer: learn about the special "fake root commit" handling - - sequencer: extract helper to update active_cache_tree - (this branch uses js/rebase-recreate-merge.) +* nd/pack-format-doc (2018-05-13) 1 commit + - pack-format.txt: more details on pack file format - The implementation of "git rebase -i --root" has been updaed to use - the sequencer machinery more. + Doc update. Will merge to 'next'. -* js/use-bug-macro (2018-05-06) 4 commits - - Convert remaining die*(BUG) messages - - Replace all die("BUG: ...") calls by BUG() ones - - run-command: use BUG() to report bugs, not die() - - test-tool: help verifying BUG() code paths +* nd/pack-struct-commit (2018-05-13) 1 commit + - commit.h: rearrange 'index' to shrink struct commit + Memory optimization. -* jt/partial-clone-proto-v2 (2018-05-06) 4 commits - - {fetch,upload}-pack: support filter in protocol v2 - - upload-pack: read config when serving protocol v2 - - upload-pack: fix error message typo - - Merge branch 'bw/protocol-v2' into jt/partial-clone-proto-v2 - (this branch uses bw/protocol-v2; is tangled with bw/server-options.) + Will merge to 'next'. - Transfer protocol v2 learned to support the partial clone. + +* nd/repo-clear-keep-the-index (2018-05-10) 1 commit + - repository: fix free problem with repo_clear(the_repository) + + the_repository->index is not a allocated piece of memory but + repo_clear() indiscriminately attempted to free(3) it, which has + been corrected. Will merge to 'next'. -* ma/doc-expand-tabs (2018-05-02) 1 commit - - revisions.txt: expand tabs to spaces in diagram +* nd/term-columns (2018-05-13) 2 commits + - column: fix off-by-one default width + - pager: set COLUMNS to term_columns() - Fix one instance of asciidoctor's misformatting by expanding a tab - into spaces in a literal block. + The code did not propagate the terminal width to subprocesses via + COLUMNS environment variable, which it now does. This caused + trouble to "git column" helper subprocess when "git tag --column=row" + tried to list the existing tags on a display with non-default width. - Will discard. This approach is less maintainable than the approach - taken by bc/asciidoctor-tab-width topic. + Will merge to 'next'. -* nd/completion-aliasfiletype-typofix (2018-05-06) 1 commit - - completion: fix misspelled config key aliasesfiletype +* nd/travis-gcc-7 (2018-05-14) 1 commit + - travis-ci: run gcc-7 on linux-gcc jobs - Typofix. + Developer support. Use newer GCC on one of the builds done at + TravisCI.org to get more warnings and errors diagnosed. Will merge to 'next'. -* nd/doc-header (2018-05-02) 1 commit - - doc: keep first level section header in upper case +* rs/no-null-ptr-arith-in-fast-export (2018-05-10) 1 commit + - fast-export: avoid NULL pointer arithmetic - Doc formatting fix. + Code clean-up to avoid non-standard-conformant pointer arithmetic. Will merge to 'next'. -* nd/pack-unreachable-objects-doc (2018-05-06) 1 commit - - pack-objects: validation and documentation about unreachable options - - Doc update. +* sb/grep-die-on-unreadable-index (2018-05-16) 1 commit + - grep: handle corrupt index files early + + +* sb/object-store-grafts (2018-05-16) 19 commits + - commit: allow lookup_commit_graft to handle arbitrary repositories + - commit: allow prepare_commit_graft to handle arbitrary repositories + - shallow: migrate shallow information into the object parser + - path.c: migrate git_path_ to take a repository argument + - cache: convert get_graft_file to handle arbitrary repositories + - commit: convert read_graft_file to handle arbitrary repositories + - commit: convert register_commit_graft to handle arbitrary repositories + - commit: convert commit_graft_pos() to handle arbitrary repositories + - shallow: add repository argument to is_repository_shallow + - shallow: add repository argument to check_shallow_file_for_update + - shallow: add repository argument to register_shallow + - shallow: add repository argument to set_alternate_shallow_file + - commit: add repository argument to lookup_commit_graft + - commit: add repository argument to prepare_commit_graft + - commit: add repository argument to read_graft_file + - commit: add repository argument to register_commit_graft + - commit: add repository argument to commit_graft_pos + - object: move grafts to object parser + - object-store: move object access functions to object-store.h + (this branch uses sb/object-store-alloc and sb/oid-object-info.) + + +* sb/submodule-merge-in-merge-recursive (2018-05-16) 3 commits + - merge-recursive: give notice when submodule commit gets fast-forwarded + - merge-recursive: i18n submodule merge output and respect verbosity + - submodule.c: move submodule merging to merge-recursive.c + + By code restructuring of submodule merge in merge-recursive, + informational messages from the codepath are now given using the + same mechanism as other output, and honor the merge.verbosity + configuration. The code also learned to give a few new messages + when a submodule three-way merge resolves cleanly when one side + records a descendant of the commit chosen by the other side. Will merge to 'next'. -* sb/object-store-alloc (2018-05-02) 14 commits - - alloc.c: include alloc.h - - alloc: allow arbitrary repositories for alloc functions - - object: allow create_object to handle arbitrary repositories - - object: allow grow_object_hash to handle arbitrary repositories - - alloc: add repository argument to alloc_commit_index - - alloc: add repository argument to alloc_report - - alloc: add repository argument to alloc_object_node - - alloc: add repository argument to alloc_tag_node - - alloc: add repository argument to alloc_commit_node - - alloc: add repository argument to alloc_tree_node - - alloc: add repository argument to alloc_blob_node - - object: add repository argument to grow_object_hash - - object: add repository argument to create_object - - repository: introduce object parser field - (this branch uses sb/object-store-replace and sb/oid-object-info.) +* sb/submodule-update-try-harder (2018-05-16) 1 commit + - git-submodule.sh: try harder to fetch a submodule - The conversion to pass "the_repository" and then "a_repository" - throughout the object access API continues. + "git submodule update" attempts two different kinds of "git fetch" + against the upstream repository to grab a commit bound at the + submodule's path, but it incorrectly gave up if the first kind + (i.e. a normal fetch) failed, making the second "last resort" one + (i.e. fetching an exact commit object by object name) ineffective. + This has been corrected. + Will merge to 'next'. -* tb/grep-column (2018-05-06) 7 commits - - contrib/git-jump/git-jump: jump to match column in addition to line - - grep.c: add configuration variables to show matched option - - builtin/grep.c: add '--column' option to 'git-grep(1)' - - grep.c: display column number of first match - - grep.[ch]: extend grep_opt to allow showing matched column - - grep.c: expose matched column in match_line() - - Documentation/config.txt: camel-case lineNumber for consistency - "git grep" learned the "--column" option that gives not just the - line number but the column number of the hit. +* sg/t5310-jgit-bitmap-test (2018-05-11) 1 commit + - t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX + Test update. -* bc/asciidoctor-tab-width (2018-05-07) 2 commits - - Documentation: render revisions correctly under Asciidoctor - - Documentation: use 8-space tabs with Asciidoctor + Will merge to 'next'. - Asciidoctor gives a reasonable imitation for AsciiDoc, but does not - render illustration in a literal block correctly when indented with - HT by default. The problem is fixed by forcing 8-space tabs. + +* sg/t5516-fixes (2018-05-11) 2 commits + - t5516-fetch-push: fix broken &&-chain + - t5516-fetch-push: fix 'push with dry-run' test + + Test fixes. Will merge to 'next'. -* bc/mailmap-self (2018-05-07) 1 commit - - mailmap: update brian m. carlson's email address +* sg/t7005-spaces-in-filenames-cleanup (2018-05-15) 1 commit + - t7005-editor: get rid of the SPACES_IN_FILENAMES prereq + + Test update. Will merge to 'next'. + +* tb/grep-only-matching (2018-05-14) 2 commits + - builtin/grep.c: teach '-o', '--only-matching' to 'git-grep' + - grep.c: extract show_line_header() + (this branch uses tb/grep-column.) + -------------------------------------------------- [Stalled] -* 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 +* jm/cache-entry-from-mem-pool (2018-05-02) 5 commits + - block alloc: add validations around cache_entry lifecyle + - block alloc: allocate cache entries from mem_pool + - mem-pool: fill out functionality + - block alloc: add lifecycle APIs for cache_entry structs + - read-cache: teach refresh_cache_entry() to take istate + + For a large tree, the index needs to hold many cache entries + allocated on heap. These cache entries are now allocated out of a + dedicated memory pool to amortize malloc(3) overhead. + + Needs review. + Is the "caller always knows which pool an entry came from and calls + the right kind of free" a feasible approach? + Oh, another thing, there is "lifecyle" typo in the title. - Expecting a response to review comments - e.g. cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com> + +* ab/fetch-tags-noclobber (2018-05-16) 9 commits + - fixup! push tests: assert re-pushing annotated tags + - fetch: stop clobbering existing tags without --force + - fetch tests: add a test clobbering tag behavior + - fetch tests: correct a comment "remove it" -> "remove them" + - push doc: correct lies about how push refspecs work + - 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 + + Expecting a reboot of the discussion to take it to some conclusion + and then a reroll. + cf. + cf. + cf. + cf. * pw/add-p-select (2018-03-16) 3 commits @@ -342,15 +897,6 @@ of the repositories listed at Seems to break a few tests. -* ld/p4-unshelve (2018-02-22) 1 commit - - git-p4: add unshelve command - - "git p4" learned to "unshelve" shelved commit from P4. - - Will hold, perhaps drop and use format-change that uses a proper "diff". - cf. - - * av/fsmonitor-updates (2018-01-04) 6 commits - fsmonitor: use fsmonitor data in `git diff` - fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh @@ -386,289 +932,423 @@ of the repositories listed at - SQUASH??? - http-backend: respect CONTENT_LENGTH as specified by rfc3875 - 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. + 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. + + Expecting a reroll. + Suggested fixes to be used when rerolling is queued, but I'd + prefer _not_ squashing them myself. + + Also, it may be too complex solution for the problem. + cf. <20171204171308.GA13332@sigill.intra.peff.net> + + +* jk/drop-ancient-curl (2017-08-09) 5 commits + - http: #error on too-old curl + - curl: remove ifdef'd code never used with curl >=7.19.4 + - http: drop support for curl < 7.19.4 + - http: drop support for curl < 7.16.0 + - http: drop support for curl < 7.11.1 + + Some code in http.c that has bitrot is being removed. + + Expecting a reroll. + + +* mk/use-size-t-in-zlib (2017-08-10) 1 commit + . zlib.c: use size_t for size + + The wrapper to call into zlib followed our long tradition to use + "unsigned long" for sizes of regions in memory, which have been + updated to use "size_t". + + Needs resurrecting by making sure the fix is good and still applies + (or adjusted to today's codebase). + +-------------------------------------------------- +[Cooking] + +* ld/p4-unshelve (2018-05-16) 1 commit + - git-p4: add unshelve command + + "git p4" learned to "unshelve" shelved commit from P4. + + Will merge to 'next'. + + +* pc/submodule-helper-foreach (2018-05-11) 4 commits + - submodule: port submodule subcommand 'foreach' from shell to C + - submodule foreach: document variable '$displaypath' + - submodule foreach: document '$sm_path' instead of '$path' + - submodule foreach: correct '$path' in nested submodules from a subdirectory + + The bulk of "git submodule foreach" has been rewritten in C. + + Will merge to and cook in 'next'. + + +* tb/test-apfs-utf8-normalization (2018-05-02) 1 commit + (merged to 'next' on 2018-05-16 at feabe72b42) + + test: correct detection of UTF8_NFD_TO_NFC for APFS + + A test to see if the filesystem normalizes UTF-8 filename has been + updated to check what we need to know in a more direct way, i.e. a + path created in NFC form can be accessed with NFD form (or vice + versa) to cope with APFS as well as HFS. + + Will merge to 'master'. + + +* ab/get-short-oid (2018-05-11) 5 commits + - get_short_oid: sort ambiguous objects by type, then SHA-1 + - sha1-name.c: move around the collect_ambiguous() function + - git-p4: change "commitish" typo to "committish" + - sha1-array.h: align function arguments + - sha1-name.c: remove stray newline + + When a short hexadecimal string is used to name an object but there + are multiple objects that share the string as the prefix of their + names, the code lists these ambiguous candidates in a help message. + These object names are now sorted according to their types for + easier eyeballing. + + Will merge to 'next'. + + +* ah/misc-doc-updates (2018-05-06) 7 commits + (merged to 'next' on 2018-05-16 at e2e3b68a66) + + doc: normalize [--options] to [options] in git-diff + + doc: add note about shell quoting to revision.txt + + git-svn: remove ''--add-author-from' for 'commit-diff' + + doc: add '-d' and '-o' for 'git push' + + doc: clarify ignore rules for git ls-files + + doc: align 'diff --no-index' in text and synopsis + + doc: improve formatting in githooks.txt + + Misc doc fixes. + + Will merge to 'master'. + + +* bc/format-patch-cover-no-attach (2018-05-02) 1 commit + (merged to 'next' on 2018-05-16 at fa1ffeb3fe) + + format-patch: make cover letters always text/plain + + "git format-patch --cover --attach" created a broken MIME multipart + message for the cover letter, which has been fixed by keeping the + cover letter as plain text file. + + Will merge to 'master'. + - Expecting a reroll. - Suggested fixes to be used when rerolling is queued, but I'd - prefer _not_ squashing them myself. +* bp/test-drop-caches (2018-05-04) 1 commit + (merged to 'next' on 2018-05-16 at 0e40ab2408) + + test-drop-caches: simplify delay loading of NtSetSystemInformation - Also, it may be too complex solution for the problem. - cf. <20171204171308.GA13332@sigill.intra.peff.net> + Code simplification. + Will merge to 'master'. -* jk/drop-ancient-curl (2017-08-09) 5 commits - - http: #error on too-old curl - - curl: remove ifdef'd code never used with curl >=7.19.4 - - http: drop support for curl < 7.19.4 - - http: drop support for curl < 7.16.0 - - http: drop support for curl < 7.11.1 - Some code in http.c that has bitrot is being removed. +* cc/perf-bisect (2018-05-06) 1 commit + (merged to 'next' on 2018-05-16 at 5a078a2fdf) + + perf/bisect_run_script: disable codespeed - Expecting a reroll. + Performance test updates. + Will merge to 'master'. -* mk/use-size-t-in-zlib (2017-08-10) 1 commit - . zlib.c: use size_t for size - The wrapper to call into zlib followed our long tradition to use - "unsigned long" for sizes of regions in memory, which have been - updated to use "size_t". +* cf/submodule-progress-dissociate (2018-05-04) 3 commits + - submodule: add --dissociate option to add/update commands + - submodule: add --progress option to add command + - submodule: clean up subsititions in script - Needs resurrecting by making sure the fix is good and still applies - (or adjusted to today's codebase). + "git submodule update" and "git submodule add" supported the + "--reference" option to borrow objects from a neighbouring local + repository like "git clone" does, but lacked the more recent + invention "--dissociate". Also "git submodule add" has been taught + to take the "--progress" option. --------------------------------------------------- -[Cooking] + Will merge to 'next'.. + "subsititions" needs to be typofixed ;-) + -* cc/perf-aggregate-unknown-option (2018-04-26) 1 commit - - perf/aggregate: use Getopt::Long for option parsing - Perf-test helper updates. +* dd/send-email-reedit (2018-05-06) 1 commit + - git-send-email: allow re-editing of message + + "git send-email" can sometimes offer confirmation dialog "Send this + email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action + 'Edit' has been added to this dialog's choice. Will merge to 'next'. -* ab/perl-python-attrs (2018-04-27) 3 commits - - .gitattributes: add a diff driver for Python - - .gitattributes: use the "perl" differ for Perl - - .gitattributes: add *.pl extension for Perl +* em/status-rename-config (2018-05-06) 1 commit + (merged to 'next' on 2018-05-16 at 33c1cc093c) + + wt-status: use settings from git_diff_ui_config + (this branch is used by bp/status-rename-config.) - We learned that our source files with ".pl" and ".py" extensions - are Perl and Python files respectively and changes to them are - better viewed as such with appropriate diff drivers. + "git status" learned to pay attention to UI related diff + configuration variables such as diff.renames. - Will merge to 'next'. + Will merge to 'master'. -* js/test-unset-prereq (2018-04-30) 1 commit - - tests: introduce test_unset_prereq, for debugging +* js/branch-diff (2018-05-16) 19 commits + - fixup! Add a function to solve least-cost assignment problems + - completion: support branch-diff + - branch-diff: add a man page + - branch-diff --dual-color: work around bogus white-space warning + - branch-diff: offer to dual-color the diffs + - diff: add an internal option to dual-color diffs of diffs + - color: provide inverted colors, too + - branch-diff: use color for the commit pairs + - branch-diff: add tests + - branch-diff: do not show "function names" in hunk headers + - branch-diff: adjust the output of the commit pairs + - branch-diff: suppress the diff headers + - branch-diff: indent the diffs just like tbdiff + - branch-diff: right-trim commit messages + - branch-diff: also show the diff between patches + - branch-diff: improve the order of the shown commits + - branch-diff: first rudimentary implementation + - Add a new builtin: branch-diff + - Add a function to solve least-cost assignment problems - Test debugging aid. + "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 'next'. - cf. <20180507115950.3887-1-szeder.dev@gmail.com> + Expecting a reroll. + cf. -* fg/completion-external (2018-04-30) 1 commit - - completion: load completion file for external subcommand +* js/sequencer-and-root-commits (2018-05-06) 6 commits + - rebase --rebase-merges: root commits can be cousins, too + - rebase --rebase-merges: a "merge" into a new root is a fast-forward + - sequencer: allow introducing new root commits + - rebase -i --root: let the sequencer handle even the initial part + - sequencer: learn about the special "fake root commit" handling + - sequencer: extract helper to update active_cache_tree + (this branch uses js/rebase-recreate-merge.) - The command line completion mechanism (in contrib/) learned to load - custom completion file for "git $command" where $command is a - custom "git-$command" that the end user has on the $PATH when using - newer version of bash. + The implementation of "git rebase -i --root" has been updated to use + the sequencer machinery more. Will merge to 'next'. - cf. -* ma/double-dashes-in-docs (2018-04-18) 4 commits - (merged to 'next' on 2018-04-25 at aaac2dc63c) - + git-submodule.txt: quote usage in monospace, drop backslash - + git-[short]log.txt: unify quoted standalone -- - + doc: convert [\--] to [--] - + doc: convert \--option to --option +* js/use-bug-macro (2018-05-10) 5 commits + - BUG_exit_code: fix sparse "symbol not declared" warning + - Convert remaining die*(BUG) messages + - Replace all die("BUG: ...") calls by BUG() ones + - run-command: use BUG() to report bugs, not die() + - test-tool: help verifying BUG() code paths - Doc formatting updates. + Developer support update, by using BUG() macro instead of die() to + mark codepaths that should not happen more clearly. - Will merge to 'master'. + Will merge to 'next'. + Further updates can come on top later. + cf. <20180507090109.GA367@sigill.intra.peff.net> -* sb/worktree-remove-opt-force (2018-04-18) 1 commit - (merged to 'next' on 2018-04-25 at 0367d52a4b) - + worktree: accept -f as short for --force for removal +* jt/partial-clone-proto-v2 (2018-05-06) 4 commits + - {fetch,upload}-pack: support filter in protocol v2 + - upload-pack: read config when serving protocol v2 + - upload-pack: fix error message typo + - Merge branch 'bw/protocol-v2' into jt/partial-clone-proto-v2 - "git worktree remove" learned that "-f" is a shorthand for - "--force" option, just like for "git worktree add". + Transfer protocol v2 learned to support the partial clone. - Will merge to 'master'. + Will merge to 'next'. -* sg/completion-clear-cached (2018-04-18) 1 commit - (merged to 'next' on 2018-04-25 at 9178da6c3d) - + completion: reduce overhead of clearing cached --options +* ma/doc-expand-tabs (2018-05-02) 1 commit + - revisions.txt: expand tabs to spaces in diagram - The completion script (in contrib/) learned to clear cached list of - command line options upon dot-sourcing it again in a more efficient - way. + Fix one instance of asciidoctor's misformatting by expanding a tab + into spaces in a literal block. - Will merge to 'master'. + Will discard. This approach is less maintainable than the approach + taken by bc/asciidoctor-tab-width topic. -* sg/doc-gc-quote-mismatch-fix (2018-04-18) 1 commit - (merged to 'next' on 2018-04-25 at bc3d1abf45) - + docs/git-gc: fix minor rendering issue +* nd/completion-aliasfiletype-typofix (2018-05-06) 1 commit + (merged to 'next' on 2018-05-16 at 045e4ac190) + + completion: fix misspelled config key aliasesfiletype - Doc formatting fix. + Typofix. Will merge to 'master'. -* js/ident-date-fix (2018-04-19) 1 commit - (merged to 'next' on 2018-04-30 at d50ec2f4c1) - + sequencer: reset the committer date before commits +* nd/doc-header (2018-05-02) 1 commit + (merged to 'next' on 2018-05-16 at 0599eb3ec9) + + doc: keep first level section header in upper case - During a "rebase -i" session, the code could give older timestamp - to commits created by later "pick" than an earlier "reword", which - has been corrected. + Doc formatting fix. Will merge to 'master'. -* nd/submodule-status-fix (2018-04-19) 1 commit - (merged to 'next' on 2018-04-30 at 34d1f9ca83) - + submodule--helper: don't print null in 'submodule status' +* nd/pack-unreachable-objects-doc (2018-05-06) 1 commit + (merged to 'next' on 2018-05-16 at c4bf977564) + + pack-objects: validation and documentation about unreachable options - "git submodule status" did not check the symbolic revision name it - computed for the submodule HEAD is not the NULL, and threw it at - printf routines, which has been corrected. + Doc update. Will merge to 'master'. -* sa/send-email-dedup-some-headers (2018-04-19) 1 commit - (merged to 'next' on 2018-04-30 at 2a1fd8217e) - + send-email: avoid duplicate In-Reply-To/References - - When fed input that already has In-Reply-To: and/or References: - headers and told to add the same information, "git send-email" - added these headers separately, instead of appending to an existing - one, which is a violation of the RFC. This has been corrected. - - Will merge to 'master'. +* sb/object-store-alloc (2018-05-16) 13 commits + - alloc: allow arbitrary repositories for alloc functions + - object: allow create_object to handle arbitrary repositories + - object: allow grow_object_hash to handle arbitrary repositories + - alloc: add repository argument to alloc_commit_index + - alloc: add repository argument to alloc_report + - alloc: add repository argument to alloc_object_node + - alloc: add repository argument to alloc_tag_node + - alloc: add repository argument to alloc_commit_node + - alloc: add repository argument to alloc_tree_node + - alloc: add repository argument to alloc_blob_node + - object: add repository argument to grow_object_hash + - object: add repository argument to create_object + - repository: introduce parsed objects field + (this branch is used by sb/object-store-grafts; uses sb/oid-object-info.) + The conversion to pass "the_repository" and then "a_repository" + throughout the object access API continues. -* tg/demote-stash-save-in-completion (2018-04-20) 2 commits - (merged to 'next' on 2018-04-30 at 93d0af5375) - + completion: make stash -p and alias for stash push -p - + completion: stop showing 'save' for stash by default - The command line completion (in contrib/) has been taught that "git - stash save" has been deprecated ("git stash push" is the preferred - spelling in the new world) and does not offer it as a possible - completion candidate when "git stash push" can be. +* tb/grep-column (2018-05-14) 7 commits + - contrib/git-jump/git-jump: jump to match column in addition to line + - grep.c: add configuration variables to show matched option + - builtin/grep.c: add '--column' option to 'git-grep(1)' + - grep.c: display column number of first match + - grep.[ch]: extend grep_opt to allow showing matched column + - grep.c: expose matched column in match_line() + - Documentation/config.txt: camel-case lineNumber for consistency + (this branch is used by tb/grep-only-matching.) - Will merge to 'master'. + "git grep" learned the "--column" option that gives not just the + line number but the column number of the hit. -* tz/doc-git-urls-reference (2018-04-20) 1 commit - (merged to 'next' on 2018-04-30 at 39926c99fd) - + doc/clone: update caption for GIT URLS cross-reference +* bc/asciidoctor-tab-width (2018-05-07) 2 commits + (merged to 'next' on 2018-05-16 at be2a42c473) + + Documentation: render revisions correctly under Asciidoctor + + Documentation: use 8-space tabs with Asciidoctor - Doc fix. + Asciidoctor gives a reasonable imitation for AsciiDoc, but does not + render illustration in a literal block correctly when indented with + HT by default. The problem is fixed by forcing 8-space tabs. Will merge to 'master'. -* js/deprecate-grafts (2018-04-30) 12 commits - - Remove obsolete script to convert grafts to replace refs - - technical/shallow: describe why shallow cannot use replace refs - - technical/shallow: stop referring to grafts - - filter-branch: stop suggesting to use grafts - - Deprecate support for .git/info/grafts - - Add a test for `git replace --convert-graft-file` - - replace: introduce --convert-graft-file - - replace: prepare create_graft() for converting graft files wholesale - - replace: "libify" create_graft() and callees - - replace: avoid using die() to indicate a bug - - commit: Let the callback of for_each_mergetag return on error - - argv_array: offer to split a string by whitespace - - The functionality of "$GIT_DIR/info/grafts" has been superseded by - the "refs/replace/" mechanism for some time now, but the internal - code had support for it in many places, which has been cleaned up - in order to drop support of the "grafts" mechanism. +* bc/mailmap-self (2018-05-08) 1 commit + (merged to 'next' on 2018-05-16 at a009c64bd2) + + mailmap: update brian m. carlson's email address - Will merge to 'next'. + Will merge to 'master'. -* js/rebase-i-clean-msg-after-fixup-continue (2018-05-02) 4 commits - - rebase --skip: clean up commit message after a failed fixup/squash - - sequencer: always commit without editing when asked for - - rebase -i: Handle "combination of commits" with GETTEXT_POISON - - rebase -i: demonstrate bugs with fixup!/squash! commit messages +* cc/perf-aggregate-unknown-option (2018-04-26) 1 commit + (merged to 'next' on 2018-05-08 at db7d2870f8) + + perf/aggregate: use Getopt::Long for option parsing - "git rebase -i" sometimes left intermediate "# This is a - combination of N commits" message meant for the human consumption - inside an editor in the final result in certain corner cases, which - has been fixed. + Perf-test helper updates. - Will merge to 'next'. + Will merge to 'master'. -* ma/fast-export-skip-merge-fix (2018-04-21) 1 commit - (merged to 'next' on 2018-04-30 at f7fca02ab1) - + fast-export: fix regression skipping some merge-commits +* ab/perl-python-attrs (2018-04-27) 3 commits + (merged to 'next' on 2018-05-08 at b440e9bbb9) + + .gitattributes: add a diff driver for Python + + .gitattributes: use the "perl" differ for Perl + + .gitattributes: add *.pl extension for Perl - "git fast-export" had a regression in v2.15.0 era where it skipped - some merge commits in certain cases, which has been corrected. + We learned that our source files with ".pl" and ".py" extensions + are Perl and Python files respectively and changes to them are + better viewed as such with appropriate diff drivers. Will merge to 'master'. -* bw/server-options (2018-04-24) 4 commits - - fetch: send server options when using protocol v2 - - ls-remote: send server options when using protocol v2 - - serve: introduce the server-option capability - - Merge branch 'bw/protocol-v2' into HEAD - (this branch uses bw/protocol-v2; is tangled with jt/partial-clone-proto-v2.) +* js/test-unset-prereq (2018-04-30) 1 commit + (merged to 'next' on 2018-05-08 at 3aecbf25a3) + + tests: introduce test_unset_prereq, for debugging - The transport protocol v2 is getting updated further. + Test debugging aid. - Will merge to 'next'. + Will merge to 'master'. + cf. <20180507115950.3887-1-szeder.dev@gmail.com> -* jc/parseopt-expiry-errors (2018-04-23) 2 commits - (merged to 'next' on 2018-04-30 at 637085f3d8) - + parseopt: handle malformed --expire arguments more nicely - + gc: do not upcase error message shown with die() +* fg/completion-external (2018-05-07) 1 commit + (merged to 'next' on 2018-05-16 at 5d83f92caf) + + completion: load completion file for external subcommand - "git gc --prune=nonsense" spent long time repacking and then - silently failed when underlying "git prune --expire=nonsense" - failed to parse its command line. This has been corrected. + The command line completion mechanism (in contrib/) learned to load + custom completion file for "git $command" where $command is a + custom "git-$command" that the end user has on the $PATH when using + newer version of bash. Will merge to 'master'. + cf. -* js/colored-push-errors (2018-04-24) 4 commits - (merged to 'next' on 2018-04-30 at 31076c52a2) - + config: document the settings to colorize push errors/hints - + push: test to verify that push errors are colored - + push: colorize errors - + color: introduce support for colorizing stderr +* js/deprecate-grafts (2018-04-30) 12 commits + (merged to 'next' on 2018-05-08 at 1d7b31d179) + + Remove obsolete script to convert grafts to replace refs + + technical/shallow: describe why shallow cannot use replace refs + + technical/shallow: stop referring to grafts + + filter-branch: stop suggesting to use grafts + + Deprecate support for .git/info/grafts + + Add a test for `git replace --convert-graft-file` + + replace: introduce --convert-graft-file + + replace: prepare create_graft() for converting graft files wholesale + + replace: "libify" create_graft() and callees + + replace: avoid using die() to indicate a bug + + commit: Let the callback of for_each_mergetag return on error + + argv_array: offer to split a string by whitespace - Error messages from "git push" can be painted for more visibility. + The functionality of "$GIT_DIR/info/grafts" has been superseded by + the "refs/replace/" mechanism for some time now, but the internal + code had support for it in many places, which has been cleaned up + in order to drop support of the "grafts" mechanism. Will merge to 'master'. -* js/runtime-prefix (2018-04-24) 8 commits - (merged to 'next' on 2018-04-30 at c6cfccf40e) - + Avoid multiple PREFIX definitions - + git_setup_gettext: plug memory leak - + gettext: avoid initialization if the locale dir is not present - (merged to 'next' on 2018-04-17 at a69aaa7a22) - + mingw/msvc: use the new-style RUNTIME_PREFIX helper - + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows - + exec_cmd: RUNTIME_PREFIX on some POSIX systems - + Makefile: add Perl runtime prefix support - + Makefile: generate Perl header from template file - (this branch is tangled with dj/runtime-prefix.) +* js/rebase-i-clean-msg-after-fixup-continue (2018-05-02) 4 commits + (merged to 'next' on 2018-05-08 at 7e684c153d) + + rebase --skip: clean up commit message after a failed fixup/squash + + sequencer: always commit without editing when asked for + + rebase -i: Handle "combination of commits" with GETTEXT_POISON + + rebase -i: demonstrate bugs with fixup!/squash! commit messages + + "git rebase -i" sometimes left intermediate "# This is a + combination of N commits" message meant for the human consumption + inside an editor in the final result in certain corner cases, which + has been fixed. Will merge to 'master'. -* ma/http-walker-no-partial (2018-04-24) 2 commits - (merged to 'next' on 2018-04-30 at 4582c99ba8) - + walker: drop fields of `struct walker` which are always 1 - + http-fetch: make `-a` standard behaviour +* bw/server-options (2018-04-24) 4 commits + (merged to 'next' on 2018-05-08 at a18ce56f3c) + + fetch: send server options when using protocol v2 + + ls-remote: send server options when using protocol v2 + + serve: introduce the server-option capability + + Merge branch 'bw/protocol-v2' into HEAD - "git http-fetch" (deprecated) had an optional and experimental - "feature" to fetch only commits and/or trees, which nobody used. - This has been removed. + The transport protocol v2 is getting updated further. Will merge to 'master'. @@ -719,409 +1399,231 @@ of the repositories listed at Conversion from uchar[20] to struct object_id continues. + Will merge to 'next'. + * sb/oid-object-info (2018-04-26) 9 commits - - cache.h: allow oid_object_info to handle arbitrary repositories - - packfile: add repository argument to cache_or_unpack_entry - - packfile: add repository argument to unpack_entry - - packfile: add repository argument to read_object - - packfile: add repository argument to packed_object_info - - packfile: add repository argument to packed_to_object_type - - packfile: add repository argument to retry_bad_packed_offset - - cache.h: add repository argument to oid_object_info - - cache.h: add repository argument to oid_object_info_extended - (this branch is used by sb/object-store-alloc; uses sb/object-store-replace.) + (merged to 'next' on 2018-05-08 at f3c08f298e) + + cache.h: allow oid_object_info to handle arbitrary repositories + + packfile: add repository argument to cache_or_unpack_entry + + packfile: add repository argument to unpack_entry + + packfile: add repository argument to read_object + + packfile: add repository argument to packed_object_info + + packfile: add repository argument to packed_to_object_type + + packfile: add repository argument to retry_bad_packed_offset + + cache.h: add repository argument to oid_object_info + + cache.h: add repository argument to oid_object_info_extended + (this branch is used by sb/object-store-alloc and sb/object-store-grafts.) The codepath around object-info API has been taught to take the repository object (which in turn tells the API which object store the objects are to be located). - Will merge to 'next'. + Will merge to 'master'. * en/unpack-trees-split-index-fix (2018-05-02) 1 commit - - unpack_trees: fix breakage when o->src_index != o->dst_index + (merged to 'next' on 2018-05-16 at 1adff065b2) + + unpack_trees: fix breakage when o->src_index != o->dst_index The split-index feature had a long-standing and dormant bug in certain use of the in-core merge machinery, which has been fixed. - Will merge to 'next'. + Will merge to 'master'. cf. -* bp/merge-rename-config (2018-05-04) 3 commits +* bp/merge-rename-config (2018-05-08) 3 commits - merge: pass aggressive when rename detection is turned off - merge: add merge.renames config setting - merge: update documentation for {merge,diff}.renameLimit (this branch uses en/rename-directory-detection-reboot.) + With merge.renames configuration set to false, the recursive merge + strategy can be told not to spend cycles trying to find renamed + paths and merge them accordingly. + + Will merge to 'next'. + * en/git-debugger (2018-04-25) 1 commit - - Make running git under other debugger-like programs easy + (merged to 'next' on 2018-05-08 at 73369cd1e5) + + Make running git under other debugger-like programs easy Dev support. - Will merge to 'next'. + Will merge to 'master'. * js/no-pager-shorthand (2018-05-04) 1 commit - - git: add -P as a short option for --no-pager + (merged to 'next' on 2018-05-08 at 10e6031dd1) + + git: add -P as a short option for --no-pager "git --no-pager cmd" did not have short-and-sweet single letter option. Now it does. - Will merge to 'next'. + Will merge to 'master'. * sb/diff-color-move-more (2018-04-25) 7 commits - diff.c: add --color-moved-ignore-space-delta option - diff.c: decouple white space treatment from move detection algorithm - - diff.c: add a blocks mode for moved code detection - - diff.c: adjust hash function signature to match hashmap expectation - - diff.c: do not pass diff options as keydata to hashmap - - xdiff/xdiffi.c: remove unneeded function declarations - - xdiff/xdiff.h: remove unused flags - - "git diff --color-moved" feature has further been tweaked. - - -* so/glossary-ancestor (2018-04-17) 1 commit - (merged to 'next' on 2018-04-25 at 0a849fee00) - + glossary: substitute "ancestor" for "direct ancestor" in 'push' description. - - Docfix. - - Will merge to 'master'. - - -* bt/gpg-interface (2018-04-16) 7 commits - (merged to 'next' on 2018-04-30 at 50c507b7d8) - + gpg-interface: find the last gpg signature line - + gpg-interface: extract gpg line matching helper - + gpg-interface: fix const-correctness of "eol" pointer - + gpg-interface: use size_t for signature buffer size - + gpg-interface: modernize function declarations - + gpg-interface: handle bool user.signingkey - + t7004: fix mistaken tag name - - What is queued here is only the obviously correct and - uncontroversial code clean-up part, which is an earlier 7 patches, - of a larger series. - - The remainder that is not queued introduces a few configuration - variables to deal with e-signature backends with different - signature format. - - Will merge to 'master'. - - -* ds/generation-numbers (2018-05-02) 11 commits - - commit-graph.txt: update design document - - merge: check config before loading commits - - commit: use generation number in remove_redundant() - - commit: add short-circuit to paint_down_to_common() - - commit: use generation numbers for in_merge_bases() - - ref-filter: use generation number for --contains - - commit-graph: always load commit-graph information - - commit: use generations in paint_down_to_common() - - commit-graph: compute generation numbers - - commit: add generation number to struct commmit - - ref-filter: fix outdated comment on in_commit_list - (this branch uses ds/commit-graph and ds/lazy-load-trees.) - - A recently added "commit-graph" datafile has learned to store - pre-computed generation numbers to speed up the decisions to stop - history traversal. - - Is this ready for 'next'? - - -* en/rename-directory-detection-reboot (2018-04-25) 36 commits - - merge-recursive: fix check for skipability of working tree updates - - merge-recursive: make "Auto-merging" comment show for other merges - - merge-recursive: fix remainder of was_dirty() to use original index - - merge-recursive: fix was_tracked() to quit lying with some renamed paths - - t6046: testcases checking whether updates can be skipped in a merge - - merge-recursive: avoid triggering add_cacheinfo error with dirty mod - - merge-recursive: move more is_dirty handling to merge_content - - merge-recursive: improve add_cacheinfo error handling - - merge-recursive: avoid spurious rename/rename conflict from dir renames - - directory rename detection: new testcases showcasing a pair of bugs - - merge-recursive: fix remaining directory rename + dirty overwrite cases - - merge-recursive: fix overwriting dirty files involved in renames - - merge-recursive: avoid clobbering untracked files with directory renames - - merge-recursive: apply necessary modifications for directory renames - - merge-recursive: when comparing files, don't include trees - - merge-recursive: check for file level conflicts then get new name - - merge-recursive: add computation of collisions due to dir rename & merging - - merge-recursive: check for directory level conflicts - - merge-recursive: add get_directory_renames() - - merge-recursive: make a helper function for cleanup for handle_renames - - merge-recursive: split out code for determining diff_filepairs - - merge-recursive: make !o->detect_rename codepath more obvious - - merge-recursive: fix leaks of allocated renames and diff_filepairs - - merge-recursive: introduce new functions to handle rename logic - - merge-recursive: move the get_renames() function - - directory rename detection: tests for handling overwriting dirty files - - directory rename detection: tests for handling overwriting untracked files - - directory rename detection: miscellaneous testcases to complete coverage - - directory rename detection: testcases exploring possibly suboptimal merges - - directory rename detection: more involved edge/corner testcases - - directory rename detection: testcases checking which side did the rename - - directory rename detection: files/directories in the way of some renames - - directory rename detection: partially renamed directory testcase/discussion - - directory rename detection: testcases to avoid taking detection too far - - directory rename detection: directory splitting testcases - - directory rename detection: basic testcases - (this branch is used by bp/merge-rename-config.) - - Rename detection logic in "diff" family that is used in "merge" has - learned to guess when all of x/a, x/b and x/c have moved to z/a, - 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'. Incidentally, this avoids updating a file in the - working tree after a (non-trivial) merge whose result matches what - our side originally had. - - Will merge to 'next'. - - -* nd/command-list (2018-04-30) 10 commits - - completion: let git provide the completable command list - - help: use command-list.txt for the source of guides - - help: add "-a --verbose" to list all commands with synopsis - - git: support --list-cmds=list- - - completion: implement and use --list-cmds=main,others - - git.c: convert --list-*builtins to --list-cmds=* - - Remove common-cmds.h - - help: use command-list.h for common command list - - generate-cmds.sh: export all commands to command-list.h - - generate-cmds.sh: factor out synopsis extract code - - The list of commands with their various attributes were spread - across a few places in the build procedure, but it now is getting a - bit more consolidated to allow more automation. - - Is this ready for 'next'. - - -* sb/object-store-replace (2018-04-12) 15 commits - (merged to 'next' on 2018-04-25 at 9a213fb505) - + replace-object: allow lookup_replace_object to handle arbitrary repositories - + replace-object: allow do_lookup_replace_object to handle arbitrary repositories - + replace-object: allow prepare_replace_object to handle arbitrary repositories - + refs: allow for_each_replace_ref to handle arbitrary repositories - + refs: store the main ref store inside the repository struct - + replace-object: add repository argument to lookup_replace_object - + replace-object: add repository argument to do_lookup_replace_object - + replace-object: add repository argument to prepare_replace_object - + refs: add repository argument to for_each_replace_ref - + refs: add repository argument to get_main_ref_store - + replace-object: check_replace_refs is safe in multi repo environment - + replace-object: eliminate replace objects prepared flag - + object-store: move lookup_replace_object to replace-object.h - + replace-object: move replace_map to object store - + replace_object: use oidmap - (this branch is used by sb/object-store-alloc and sb/oid-object-info.) - - The effort to pass the repository in-core structure throughout the - API continues. This round deals with the code that implements the - refs/replace/ mechanism. - - Will merge to 'master'. - - -* sg/complete-paths (2018-04-17) 11 commits - - completion: fill COMPREPLY directly when completing paths - - completion: improve handling quoted paths in 'git ls-files's output - - completion: remove repeated dirnames with 'awk' during path completion - - t9902-completion: ignore COMPREPLY element order in some tests - - completion: use 'awk' to strip trailing path components - - completion: let 'ls-files' and 'diff-index' filter matching paths - - completion: improve handling quoted paths on the command line - - completion: support completing non-ASCII pathnames - - completion: simplify prefix path component handling during path completion - - completion: move __git_complete_index_file() next to its helpers - - t9902-completion: add tests demonstrating issues with quoted pathnames - - Command line completion (in contrib/) learned to complete pathnames - for various commands better. - - Will merge to 'next'. - - -* tq/t1510 (2018-04-17) 1 commit - (merged to 'next' on 2018-04-25 at 5710c81979) - + t1510-repo-setup.sh: remove useless mkdir - - Test cleanup. - - Will merge to 'master'. - - -* sb/blame-color (2018-04-24) 3 commits - - builtin/blame: add new coloring scheme config - - builtin/blame: highlight recently changed lines - - builtin/blame: dim uninteresting metadata lines - - "git blame" learns to unhighlight uninteresting metadata from the - originating commit on lines that are the same as the previous one, - and also paint lines in different colors depending on the age of - the commit. - - Is this ready for 'next'? - - -* ab/simplify-perl-makefile (2018-04-19) 2 commits - (merged to 'next' on 2018-04-25 at 906cf21682) - + Makefile: mark perllibdir as a .PHONY target - (merged to 'next' on 2018-04-17 at 4448756934) - + perl: fix installing modules from contrib - - Recent simplification of build procedure forgot a bit of tweak to - the build procedure of contrib/mw-to-git/ - - Will merge to 'master'. - - -* ds/lazy-load-trees (2018-05-02) 6 commits - (merged to 'next' on 2018-05-02 at d54016d9e3) - + coccinelle: avoid wrong transformation suggestions from commit.cocci - (merged to 'next' on 2018-04-25 at b90813f421) - + commit-graph: lazy-load trees for commits - + treewide: replace maybe_tree with accessor methods - + commit: create get_commit_tree() method - + treewide: rename tree to maybe_tree - + Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees - (this branch is used by ds/generation-numbers; uses ds/commit-graph.) - - The code has been taught to use the duplicated information stored - in the commit-graph file to learn the tree object name for a commit - to avoid opening and parsing the commit object when it makes sense - to do so. - - Will merge to 'master'. - - -* ab/git-svn-get-record-typofix (2018-04-09) 1 commit - (merged to 'next' on 2018-04-30 at 23f875f6b9) - + git-svn: avoid warning on undef readline() - - "git svn" had a minor thinko/typo which has been fixed. - - Will merge to 'master'. - - -* hn/sort-ls-remote (2018-04-09) 1 commit - (merged to 'next' on 2018-04-30 at 244ca5d30a) - + ls-remote: create '--sort' option - - "git ls-remote" learned an option to allow sorting its output based - on the refnames being shown. - - Will merge to 'master'. - - -* js/empty-config-section-fix (2018-04-09) 15 commits - (merged to 'next' on 2018-04-25 at 1690df3e5f) - + git_config_set: reuse empty sections - + git config --unset: remove empty sections (in the common case) - + git_config_set: make use of the config parser's event stream - + git_config_set: do not use a state machine - + config_set_store: rename some fields for consistency - + config: avoid using the global variable `store` - + config: introduce an optional event stream while parsing - + t1300: `--unset-all` can leave an empty section behind (bug) - + t1300: add a few more hairy examples of sections becoming empty - + t1300: remove unreasonable expectation from TODO - + t1300: avoid relying on a bug - + config --replace-all: avoid extra line breaks - + t1300: demonstrate that --replace-all can "invent" newlines - + t1300: rename it to reflect that `repo-config` was deprecated - + git_config_set: fix off-by-two + - diff.c: add a blocks mode for moved code detection + - diff.c: adjust hash function signature to match hashmap expectation + - diff.c: do not pass diff options as keydata to hashmap + - xdiff/xdiffi.c: remove unneeded function declarations + - xdiff/xdiff.h: remove unused flags - "git config --unset a.b", when "a.b" is the last variable in an - otherwise empty section "a", left an empty section "a" behind, and - worse yet, a subsequent "git config a.c value" did not reuse that - empty shell and instead created a new one. These have been - (partially) corrected. + "git diff --color-moved" feature has further been tweaked. - Will merge to 'master'. + Will merge to 'next'. -* nd/warn-more-for-devs (2018-04-16) 4 commits - (merged to 'next' on 2018-04-25 at 2978e61414) - + Makefile: add a DEVOPTS to get all of -Wextra - + Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER - + Makefile: detect compiler and enable more warnings in DEVELOPER=1 - + connect.c: mark die_initial_contact() NORETURN +* ds/generation-numbers (2018-05-02) 11 commits + - commit-graph.txt: update design document + - merge: check config before loading commits + - commit: use generation number in remove_redundant() + - commit: add short-circuit to paint_down_to_common() + - commit: use generation numbers for in_merge_bases() + - ref-filter: use generation number for --contains + - commit-graph: always load commit-graph information + - commit: use generations in paint_down_to_common() + - commit-graph: compute generation numbers + - commit: add generation number to struct commmit + - ref-filter: fix outdated comment on in_commit_list + (this branch is used by ds/commit-graph-lockfile-fix; uses ds/lazy-load-trees.) - The build procedure "make DEVELOPER=YesPlease" learned to enable a - bit more warning options depending on the compiler used to help - developers more. There also is "make DEVOPTS=tokens" knob - available now, for those who want to help fixing warnings we - usually ignore, for example. + A recently added "commit-graph" datafile has learned to store + pre-computed generation numbers to speed up the decisions to stop + history traversal. + + Is this ready for 'next' with ds/commit-graph-lockfile-fix? + A commit with triple 'm' needs its title amended, though. + + +* en/rename-directory-detection-reboot (2018-05-08) 36 commits + (merged to 'next' on 2018-05-08 at be350ebc17) + + merge-recursive: fix check for skipability of working tree updates + + merge-recursive: make "Auto-merging" comment show for other merges + + merge-recursive: fix remainder of was_dirty() to use original index + + merge-recursive: fix was_tracked() to quit lying with some renamed paths + + t6046: testcases checking whether updates can be skipped in a merge + + merge-recursive: avoid triggering add_cacheinfo error with dirty mod + + merge-recursive: move more is_dirty handling to merge_content + + merge-recursive: improve add_cacheinfo error handling + + merge-recursive: avoid spurious rename/rename conflict from dir renames + + directory rename detection: new testcases showcasing a pair of bugs + + merge-recursive: fix remaining directory rename + dirty overwrite cases + + merge-recursive: fix overwriting dirty files involved in renames + + merge-recursive: avoid clobbering untracked files with directory renames + + merge-recursive: apply necessary modifications for directory renames + + merge-recursive: when comparing files, don't include trees + + merge-recursive: check for file level conflicts then get new name + + merge-recursive: add computation of collisions due to dir rename & merging + + merge-recursive: check for directory level conflicts + + merge-recursive: add get_directory_renames() + + merge-recursive: make a helper function for cleanup for handle_renames + + merge-recursive: split out code for determining diff_filepairs + + merge-recursive: make !o->detect_rename codepath more obvious + + merge-recursive: fix leaks of allocated renames and diff_filepairs + + merge-recursive: introduce new functions to handle rename logic + + merge-recursive: move the get_renames() function + + directory rename detection: tests for handling overwriting dirty files + + directory rename detection: tests for handling overwriting untracked files + + directory rename detection: miscellaneous testcases to complete coverage + + directory rename detection: testcases exploring possibly suboptimal merges + + directory rename detection: more involved edge/corner testcases + + directory rename detection: testcases checking which side did the rename + + directory rename detection: files/directories in the way of some renames + + directory rename detection: partially renamed directory testcase/discussion + + directory rename detection: testcases to avoid taking detection too far + + directory rename detection: directory splitting testcases + + directory rename detection: basic testcases + (this branch is used by bp/merge-rename-config.) + + Rename detection logic in "diff" family that is used in "merge" has + learned to guess when all of x/a, x/b and x/c have moved to z/a, + 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'. A bug causing dirty files involved in a rename + to be overwritten during merge has also been fixed as part of this + work. Incidentally, this also avoids updating a file in the + working tree after a (non-trivial) merge whose result matches what + our side originally had. Will merge to 'master'. -* sb/submodule-move-nested (2018-03-29) 6 commits - (merged to 'next' on 2018-04-25 at 86b177433a) - + submodule: fixup nested submodules after moving the submodule - + submodule-config: remove submodule_from_cache - + submodule-config: add repository argument to submodule_from_{name, path} - + submodule-config: allow submodule_free to handle arbitrary repositories - + grep: remove "repo" arg from non-supporting funcs - + submodule.h: drop declaration of connect_work_tree_and_git_dir +* nd/command-list (2018-05-10) 13 commits + - completion: allow to customize the completable command list + - completion: let git provide the completable command list + - command-list.txt: documentation and guide line + - help: use command-list.txt for the source of guides + - help: add "-a --verbose" to list all commands with synopsis + - git: support --list-cmds=list- + - completion: implement and use --list-cmds=main,others + - git --list-cmds: collect command list in a string_list + - git.c: convert --list-* to --list-cmds=* + - Remove common-cmds.h + - help: use command-list.h for common command list + - generate-cmds.sh: export all commands to command-list.h + - generate-cmds.sh: factor out synopsis extract code - Moving a submodule that itself has submodule in it with "git mv" - forgot to make necessary adjustment to the nested sub-submodules; - now the codepath learned to recurse into the submodules. + The list of commands with their various attributes were spread + across a few places in the build procedure, but it now is getting a + bit more consolidated to allow more automation. - Will merge to 'master'. + Will merge to 'next'. -* tb/config-type (2018-04-19) 2 commits - (merged to 'next' on 2018-04-25 at fe69e93c82) - + builtin/config.c: support `--type=` as preferred alias for `--` - + builtin/config.c: treat type specifiers singularly - (this branch is used by tb/config-default.) +* sg/complete-paths (2018-04-17) 11 commits + (merged to 'next' on 2018-05-08 at 2a11444f90) + + completion: fill COMPREPLY directly when completing paths + + completion: improve handling quoted paths in 'git ls-files's output + + completion: remove repeated dirnames with 'awk' during path completion + + t9902-completion: ignore COMPREPLY element order in some tests + + completion: use 'awk' to strip trailing path components + + completion: let 'ls-files' and 'diff-index' filter matching paths + + completion: improve handling quoted paths on the command line + + completion: support completing non-ASCII pathnames + + completion: simplify prefix path component handling during path completion + + completion: move __git_complete_index_file() next to its helpers + + t9902-completion: add tests demonstrating issues with quoted pathnames - The "git config" command uses separate options e.g. "--int", - "--bool", etc. to specify what type the caller wants the value to - be interpreted as. A new "--type=" option has been - introduced, which would make it cleaner to define new types. + Command line completion (in contrib/) learned to complete pathnames + for various commands better. Will merge to 'master'. -* tb/config-default (2018-04-23) 3 commits - (merged to 'next' on 2018-04-25 at 59bb6beb2a) - + builtin/config: introduce `color` type specifier - + config.c: introduce 'git_config_color' to parse ANSI colors - + builtin/config: introduce `--default` - (this branch uses tb/config-type.) +* sb/blame-color (2018-04-24) 3 commits + - builtin/blame: add new coloring scheme config + - builtin/blame: highlight recently changed lines + - builtin/blame: dim uninteresting metadata lines - "git config --get" learned the "--default" option, to help the - calling script. Building on top of the tb/config-type topic, the - "git config" learns "--type=color" type. Taken together, you can - do things like "git config --get foo.color --default blue" and get - the ANSI color sequence for the color given to foo.color variable, - or "blue" if the variable does not exist. + "git blame" learns to unhighlight uninteresting metadata from the + originating commit on lines that are the same as the previous one, + and also paint lines in different colors depending on the age of + the commit. - Will merge to 'master'. + Will merge to 'next'. -* ot/libify-get-ref-atom-value (2018-03-29) 6 commits - (merged to 'next' on 2018-04-25 at 056bcaa69c) - + ref-filter: libify get_ref_atom_value() - + ref-filter: add return value to parsers - + ref-filter: change parsing function error handling - + ref-filter: add return value && strbuf to handlers - + ref-filter: start adding strbufs with errors - + ref-filter: add shortcut to work with strbufs +* ds/lazy-load-trees (2018-05-02) 6 commits + (merged to 'next' on 2018-05-02 at d54016d9e3) + + coccinelle: avoid wrong transformation suggestions from commit.cocci + (merged to 'next' on 2018-04-25 at b90813f421) + + commit-graph: lazy-load trees for commits + + treewide: replace maybe_tree with accessor methods + + commit: create get_commit_tree() method + + treewide: rename tree to maybe_tree + + Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees + (this branch is used by ds/commit-graph-lockfile-fix and ds/generation-numbers.) - Code restructuring, in preparation for further work. + The code has been taught to use the duplicated information stored + in the commit-graph file to learn the tree object name for a commit + to avoid opening and parsing the commit object when it makes sense + to do so. Will merge to 'master'. @@ -1140,6 +1642,7 @@ of the repositories listed at is used. Will cook in 'next'. + Perhaps merge to 'master' immediately after 2.18 release? * jk/branch-l-1-removal (2018-03-26) 1 commit @@ -1161,70 +1664,41 @@ of the repositories listed at Will keep in 'pu'. -* dj/runtime-prefix (2018-04-24) 7 commits - (merged to 'next' on 2018-04-25 at e7e635a70e) - + Makefile: quote $INSTLIBDIR when passing it to sed - + Makefile: remove unused @@PERLLIBDIR@@ substitution variable - (merged to 'next' on 2018-04-17 at a69aaa7a22) - + mingw/msvc: use the new-style RUNTIME_PREFIX helper - + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows - + exec_cmd: RUNTIME_PREFIX on some POSIX systems - + Makefile: add Perl runtime prefix support - + Makefile: generate Perl header from template file - (this branch is tangled with js/runtime-prefix.) - - A build-time option has been added to allow Git to be told to refer - to its associated files relative to the main binary, in the same - way that has been possible on Windows for quite some time, for - Linux, BSDs and Darwin. - - Will merge to 'master'. - - -* ab/nuke-emacs-contrib (2018-04-16) 1 commit - (merged to 'next' on 2018-04-25 at 9b133d8a65) - + git{,-blame}.el: remove old bitrotting Emacs code - - The scripts in contrib/emacs/ have outlived their usefulness and - have been replaced with a stub that errors out and tells the user - there are replacements. - - Will merge to 'master'. - - * nd/pack-objects-pack-struct (2018-04-16) 15 commits - - ci: exercise the whole test suite with uncommon code in pack-objects - - pack-objects: reorder members to shrink struct object_entry - - pack-objects: shrink delta_size field in struct object_entry - - pack-objects: shrink size field in struct object_entry - - pack-objects: clarify the use of object_entry::size - - pack-objects: don't check size when the object is bad - - pack-objects: shrink z_delta_size field in struct object_entry - - pack-objects: refer to delta objects by index instead of pointer - - pack-objects: move in_pack out of struct object_entry - - pack-objects: move in_pack_pos out of struct object_entry - - pack-objects: use bitfield for object_entry::depth - - pack-objects: use bitfield for object_entry::dfs_state - - pack-objects: turn type and in_pack_type to bitfields - - pack-objects: a bit of document about struct object_entry - - read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean + (merged to 'next' on 2018-05-16 at 171459475d) + + ci: exercise the whole test suite with uncommon code in pack-objects + + pack-objects: reorder members to shrink struct object_entry + + pack-objects: shrink delta_size field in struct object_entry + + pack-objects: shrink size field in struct object_entry + + pack-objects: clarify the use of object_entry::size + + pack-objects: don't check size when the object is bad + + pack-objects: shrink z_delta_size field in struct object_entry + + pack-objects: refer to delta objects by index instead of pointer + + pack-objects: move in_pack out of struct object_entry + + pack-objects: move in_pack_pos out of struct object_entry + + pack-objects: use bitfield for object_entry::depth + + pack-objects: use bitfield for object_entry::dfs_state + + pack-objects: turn type and in_pack_type to bitfields + + pack-objects: a bit of document about struct object_entry + + read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean "git pack-objects" needs to allocate tons of "struct object_entry" while doing its work, and shrinking its size helps the performance quite a bit. - Will merge to 'next'. + Will merge to 'master'. cf. * nd/repack-keep-pack (2018-04-16) 7 commits - - pack-objects: show some progress when counting kept objects - - gc --auto: exclude base pack if not enough mem to "repack -ad" - - gc: handle a corner case in gc.bigPackThreshold - - gc: add gc.bigPackThreshold config - - gc: add --keep-largest-pack option - - repack: add --keep-pack option - - t7700: have closing quote of a test at the beginning of line + (merged to 'next' on 2018-05-08 at ab906be358) + + pack-objects: show some progress when counting kept objects + + gc --auto: exclude base pack if not enough mem to "repack -ad" + + gc: handle a corner case in gc.bigPackThreshold + + gc: add gc.bigPackThreshold config + + gc: add --keep-largest-pack option + + repack: add --keep-pack option + + t7700: have closing quote of a test at the beginning of line "git gc" in a large repository takes a lot of time as it considers to repack all objects into one pack by default. The command has @@ -1232,134 +1706,46 @@ of the repositories listed at marked with ".keep" so that it is left untouched while objects in other packs and loose ones are repacked. - Will merge to 'next'. - cf. - - -* ds/commit-graph (2018-04-11) 16 commits - (merged to 'next' on 2018-04-25 at 18af3d28d9) - + commit-graph: implement "--append" option - + commit-graph: build graph from starting commits - + commit-graph: read only from specific pack-indexes - + commit: integrate commit graph with commit parsing - + commit-graph: close under reachability - + commit-graph: add core.commitGraph setting - + commit-graph: implement git commit-graph read - + commit-graph: implement git-commit-graph write - + commit-graph: implement write_commit_graph() - + commit-graph: create git-commit-graph builtin - + graph: add commit graph design document - + commit-graph: add format document - + csum-file: refactor finalize_hashfile() method - + csum-file: rename hashclose() to finalize_hashfile() - + Merge branch 'jk/cached-commit-buffer' into HEAD - + Merge branch 'jt/binsearch-with-fanout' into HEAD - (this branch is used by ds/generation-numbers and ds/lazy-load-trees.) - - Precompute and store information necessary for ancestry traversal - in a separate file to optimize graph walking. - Will merge to 'master'. + cf. * tg/worktree-add-existing-branch (2018-04-30) 4 commits - - worktree: teach "add" to check out existing branches - - worktree: factor out dwim_branch function - - worktree: improve message when creating a new worktree - - worktree: remove extra members from struct add_opts + (merged to 'next' on 2018-05-08 at 8b76505192) + + worktree: teach "add" to check out existing branches + + worktree: factor out dwim_branch function + + worktree: improve message when creating a new worktree + + worktree: remove extra members from struct add_opts "git worktree add" learned to check out an existing branch. - Will merge to 'next'. + Will merge to 'master'. * js/rebase-recreate-merge (2018-04-26) 17 commits - - rebase -i --rebase-merges: add a section to the man page - - rebase -i: introduce --rebase-merges=[no-]rebase-cousins - - pull: accept --rebase=merges to recreate the branch topology - - rebase --rebase-merges: avoid "empty merges" - - sequencer: handle post-rewrite for merge commands - - sequencer: make refs generated by the `label` command worktree-local - - rebase --rebase-merges: add test for --keep-empty - - rebase: introduce the --rebase-merges option - - rebase-helper --make-script: introduce a flag to rebase merges - - sequencer: fast-forward `merge` commands, if possible - - sequencer: introduce the `merge` command - - sequencer: introduce new commands to reset the revision - - git-rebase--interactive: clarify arguments - - sequencer: offer helpful advice when a command was rescheduled - - sequencer: refactor how original todo list lines are accessed - - sequencer: make rearrange_squash() a bit more obvious - - sequencer: avoid using errno clobbered by rollback_lock_file() + (merged to 'next' on 2018-05-16 at f1aeea2879) + + rebase -i --rebase-merges: add a section to the man page + + rebase -i: introduce --rebase-merges=[no-]rebase-cousins + + pull: accept --rebase=merges to recreate the branch topology + + rebase --rebase-merges: avoid "empty merges" + + sequencer: handle post-rewrite for merge commands + + sequencer: make refs generated by the `label` command worktree-local + + rebase --rebase-merges: add test for --keep-empty + + rebase: introduce the --rebase-merges option + + rebase-helper --make-script: introduce a flag to rebase merges + + sequencer: fast-forward `merge` commands, if possible + + sequencer: introduce the `merge` command + + sequencer: introduce new commands to reset the revision + + git-rebase--interactive: clarify arguments + + sequencer: offer helpful advice when a command was rescheduled + + sequencer: refactor how original todo list lines are accessed + + sequencer: make rearrange_squash() a bit more obvious + + sequencer: avoid using errno clobbered by rollback_lock_file() (this branch is used by js/sequencer-and-root-commits.) "git rebase" learned "--rebase-merges" to transplant the whole topology of commit graph elsewhere. - Will merge to 'next'. - - -* bw/protocol-v2 (2018-03-15) 35 commits - (merged to 'next' on 2018-04-11 at 23ee234a2c) - + remote-curl: don't request v2 when pushing - + remote-curl: implement stateless-connect command - + http: eliminate "# service" line when using protocol v2 - + http: don't always add Git-Protocol header - + http: allow providing extra headers for http requests - + remote-curl: store the protocol version the server responded with - + remote-curl: create copy of the service name - + pkt-line: add packet_buf_write_len function - + transport-helper: introduce stateless-connect - + transport-helper: refactor process_connect_service - + transport-helper: remove name parameter - + connect: don't request v2 when pushing - + connect: refactor git_connect to only get the protocol version once - + fetch-pack: support shallow requests - + fetch-pack: perform a fetch using v2 - + upload-pack: introduce fetch server command - + push: pass ref prefixes when pushing - + fetch: pass ref prefixes when fetching - + ls-remote: pass ref prefixes when requesting a remote's refs - + transport: convert transport_get_remote_refs to take a list of ref prefixes - + transport: convert get_refs_list to take a list of ref prefixes - + connect: request remote refs using v2 - + ls-refs: introduce ls-refs server command - + serve: introduce git-serve - + test-pkt-line: introduce a packet-line test helper - + protocol: introduce enum protocol_version value protocol_v2 - + transport: store protocol version - + connect: discover protocol version outside of get_remote_heads - + connect: convert get_remote_heads to use struct packet_reader - + transport: use get_refs_via_connect to get refs - + upload-pack: factor out processing lines - + upload-pack: convert to a builtin - + pkt-line: add delim packet support - + pkt-line: allow peeking a packet line without consuming it - + pkt-line: introduce packet_read_with_status - (this branch is used by bw/server-options and jt/partial-clone-proto-v2.) - - The beginning of the next-gen transfer protocol. - - Will merge to 'master'. - - -* ls/checkout-encoding (2018-04-16) 10 commits - (merged to 'next' on 2018-04-25 at e0f8554b2a) - + convert: add round trip check based on 'core.checkRoundtripEncoding' - + convert: add tracing for 'working-tree-encoding' attribute - + convert: check for detectable errors in UTF encodings - + 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 - + utf8: teach same_encoding() alternative UTF encoding names - + strbuf: add a case insensitive starts_with() - + strbuf: add xstrdup_toupper() - + strbuf: remove unnecessary NUL assignment in xstrdup_tolower() - - 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). - Will merge to 'master'. --------------------------------------------------