From: Junio C Hamano Date: Wed, 8 May 2019 17:15:04 +0000 (+0900) Subject: What's cooking (2019/05 #01) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c6157f78bbe55b951823aafd59f2879cbaaad36;p=thirdparty%2Fgit.git What's cooking (2019/05 #01) --- diff --git a/whats-cooking.txt b/whats-cooking.txt index 4550123ebe..6f32c83a42 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 (Apr 2019, #05; Thu, 25) -X-master-at: 83232e38648b51abbcbdb56c94632b6906cc85a6 -X-next-at: f2820cf01acf778d953a46357a6160ba42711eb1 +Subject: What's cooking in git.git (May 2019, #01; Thu, 9) +X-master-at: 6a6c0f10a70a6eb101c213b09ae82a9cad252743 +X-next-at: 81c186ecd2768836c2dc37eefd32d2e2a5e6dfb5 -What's cooking in git.git (Apr 2019, #05; Thu, 25) +What's cooking in git.git (May 2019, #01; Thu, 9) -------------------------------------------------- Here are the topics that have been cooking. Commits prefixed with @@ -12,6 +12,13 @@ Here are the topics that have been cooking. Commits prefixed with '+' are in 'next'. The ones marked with '.' do not appear in any of the integration branches, but I am still holding onto them. +The 8th batch of topics, which Hopefully is the final one before +-rc0, have been pushed out to 'master'. The "no-extern" topic is +now in 'next', with its merge conflict with many other topics, is +still slowing me down when it is moved earlier in the merge order. +I expect it to need only one more topic shuffling before merged to +'master', so I hope I'd survive. + You can find the changes described here in the integration branches of the repositories listed at @@ -20,583 +27,516 @@ of the repositories listed at -------------------------------------------------- [Graduated to "master"] -* ab/commit-graph-fixes (2019-04-01) 8 commits - (merged to 'next' on 2019-04-16 at 97f4ba02f0) - + commit-graph: improve & i18n error messages - + commit-graph write: don't die if the existing graph is corrupt - + commit-graph verify: detect inability to read the graph - + commit-graph: don't pass filename to load_commit_graph_one_fd_st() - + commit-graph: don't early exit(1) on e.g. "git status" - + commit-graph: fix segfault on e.g. "git status" - + commit-graph tests: test a graph that's too small - + commit-graph tests: split up corrupt_graph_and_verify() - (this branch is used by ds/commit-graph-format-v2.) - - Code cleanup with more careful error checking before using data - read from the commit-graph file. - - -* ab/gc-docs (2019-04-08) 11 commits - (merged to 'next' on 2019-04-22 at 02785d40f5) - + gc docs: remove incorrect reference to gc.auto=0 - + gc docs: clarify that "gc" doesn't throw away referenced objects - + gc docs: note "gc --aggressive" in "fast-import" - + gc docs: downplay the usefulness of --aggressive - + gc docs: note how --aggressive impacts --window & --depth - + gc docs: fix formatting for "gc.writeCommitGraph" - + gc docs: re-flow the "gc.*" section in "config" - + gc docs: include the "gc.*" section from "config" in "gc" - + gc docs: clean grammar for "gc.bigPackThreshold" - + gc docs: stop noting "repack" flags - + gc docs: modernize the advice for manually running "gc" - - Update docs around "gc". - - -* ab/gc-reflog (2019-04-01) 7 commits - (merged to 'next' on 2019-04-16 at aa27f951a8) - + gc: handle & check gc.reflogExpire config - + reflog tests: assert lack of early exit with expiry="never" - + reflog tests: test for the "points nowhere" warning - + reflog tests: make use of "test_config" idiom - + gc: refactor a "call me once" pattern - + gc: convert to using the_hash_algo - + gc: remove redundant check for gc_auto_threshold - - Fix various glitches in "git gc" around reflog handling. - - -* ab/test-lib-pass-trace2-env (2019-04-01) 1 commit - (merged to 'next' on 2019-04-16 at 4dad6d6d7a) - + test-lib: whitelist GIT_TR2_* in the environment - - Allow tracing of Git executable while running the testsuite. - - -* ag/sequencer-reduce-rewriting-todo (2019-03-07) 18 commits - (merged to 'next' on 2019-04-10 at 7eab7c7800) - + rebase--interactive: move transform_todo_file() - + sequencer: use edit_todo_list() in complete_action() - + rebase-interactive: rewrite edit_todo_list() to handle the initial edit - + rebase-interactive: append_todo_help() changes - + rebase-interactive: use todo_list_write_to_file() in edit_todo_list() - + sequencer: refactor skip_unnecessary_picks() to work on a todo_list - + rebase--interactive: move rearrange_squash_in_todo_file() - + rebase--interactive: move sequencer_add_exec_commands() - + sequencer: change complete_action() to use the refactored functions - + sequencer: make sequencer_make_script() write its script to a strbuf - + sequencer: refactor rearrange_squash() to work on a todo_list - + sequencer: refactor sequencer_add_exec_commands() to work on a todo_list - + sequencer: refactor check_todo_list() to work on a todo_list - + sequencer: introduce todo_list_write_to_file() - + sequencer: refactor transform_todos() to work on a todo_list - + sequencer: remove the 'arg' field from todo_item - + sequencer: make the todo_list structure public - + sequencer: changes in parse_insn_buffer() - (this branch is used by pw/rebase-i-internal.) - - The scripted version of "git rebase -i" wrote and rewrote the todo - list many times during a single step of its operation, and the - recent C-rewrite made a faithful conversion of the logic to C. The - implementation has been updated to carry necessary information - around in-core to avoid rewriting the same file over and over - unnecessarily. - cf. <20190305191805.13561-1-alban.gruin@gmail.com> (v8) - - -* bc/hash-transition-16 (2019-04-01) 35 commits - (merged to 'next' on 2019-04-16 at 8227fea6fa) - + gitweb: make hash size independent - + Git.pm: make hash size independent - + read-cache: read data in a hash-independent way - + dir: make untracked cache extension hash size independent - + builtin/difftool: use parse_oid_hex - + refspec: make hash size independent - + archive: convert struct archiver_args to object_id - + builtin/get-tar-commit-id: make hash size independent - + get-tar-commit-id: parse comment record - + hash: add a function to lookup hash algorithm by length - + remote-curl: make hash size independent - + http: replace sha1_to_hex - + http: compute hash of downloaded objects using the_hash_algo - + http: replace hard-coded constant with the_hash_algo - + http-walker: replace sha1_to_hex - + http-push: remove remaining uses of sha1_to_hex - + http-backend: allow 64-character hex names - + http-push: convert to use the_hash_algo - + builtin/pull: make hash-size independent - + builtin/am: make hash size independent - + fast-import: replace sha1_to_hex - + fast-import: make hash-size independent - + builtin/name-rev: make hash-size independent - + object-store: rename and expand packed_git's sha1 member - + notes: replace sha1_to_hex - + notes: make hash size independent - + notes-merge: switch to use the_hash_algo - + submodule: avoid hard-coded constants - + pack-bitmap: switch hash tables to use struct object_id - + pack-bitmap: switch hard-coded constants to the_hash_algo - + pack-bitmap: replace sha1_to_hex - + pack-bitmap: convert struct stored_bitmap to object_id - + pack-bitmap: make bitmap header handling hash agnostic - + khash: move oid hash table definition - + t/lib-submodule-update: use appropriate length constant - - Conversion from unsigned char[20] to struct object_id continues. - - -* bc/send-email-qp-cr (2019-04-14) 1 commit - (merged to 'next' on 2019-04-22 at 69398b0ea8) - + send-email: default to quoted-printable when CR is present - - "git send-email" has been taught to use quoted-printable when the - payload contains carriage-return. The use of the mechanism is in - line with the design originally added the codepath that chooses QP - when the payload has overly long lines. - - -* bp/post-index-change-hook (2019-02-15) 1 commit - (merged to 'next' on 2019-03-11 at cb96d1d7c4) - + read-cache: add post-index-change hook - - Originally merged to 'next' on 2019-02-23 - - A new hook "post-index-change" is called when the on-disk index - file changes, which can help e.g. a virtualized working tree - implementation. - - -* bs/sendemail-tighten-anything-by (2019-04-04) 1 commit - (merged to 'next' on 2019-04-22 at 0a0680f234) - + send-email: don't cc *-by lines with '-' prefix - - The recently added feature to add addresses that are on - anything-by: trailers in 'git send-email' was found to be way too - eager and considered nonsense strings as if they can be legitimate - beginning of *-by: trailer. This has been tightened. - - -* dk/blame-keep-origin-blob (2019-04-03) 1 commit - (merged to 'next' on 2019-04-16 at 39679dde8b) - + blame.c: don't drop origin blobs as eagerly - - Performance fix around "git blame", especially in a linear history - (which is the norm we should optimize for). - - -* dl/submodule-set-branch (2019-04-10) 3 commits - (merged to 'next' on 2019-04-22 at 3b640715ae) - + submodule: teach set-branch subcommand - + submodule--helper: teach config subcommand --unset - + git-submodule.txt: "--branch " option defaults to 'master' - - "git submodule" learns "set-branch" subcommand that allows the - submodule.*.branch settings to be modified. - - -* en/fast-import-parsing-fix (2019-04-01) 5 commits - (merged to 'next' on 2019-04-16 at b318831bde) - + fast-import: fix erroneous handling of get-mark with empty orphan commits - + fast-import: only allow cat-blob requests where it makes sense - + fast-import: check most prominent commands first - + git-fast-import.txt: fix wording about where ls command can appear - + t9300: demonstrate bug with get-mark and empty orphan commits - - "git fast-import" update. - - -* jc/gettext-test-fix (2019-04-15) 1 commit - (merged to 'next' on 2019-04-22 at 7c57deeb04) - + gettext tests: export the restored GIT_TEST_GETTEXT_POISON - - The GETTEXT_POISON test option has been quite broken ever since it - was made runtime-tunable, which has been fixed. - - -* jk/fetch-reachability-error-fix (2019-04-15) 7 commits - (merged to 'next' on 2019-04-22 at b4ce8375c0) - + fetch: do not consider peeled tags as advertised tips - + remote.c: make singular free_ref() public - + fetch: use free_refs() - + pkt-line: prepare buffer before handling ERR packets - + upload-pack: send ERR packet for non-tip objects - + t5530: check protocol response for "not our ref" - + t5516: drop ok=sigpipe from unreachable-want tests - - Code clean-up and a fix for "git fetch" by an explicit object name - (as opposed to fetching refs by name). - - -* jk/revision-rewritten-parents-in-prio-queue (2019-04-04) 1 commit - (merged to 'next' on 2019-04-16 at bdc1465128) - + revision: use a prio_queue to hold rewritten parents +* cc/aix-has-fileno-as-a-macro (2019-04-25) 1 commit + (merged to 'next' on 2019-04-25 at f1d6464f98) + + Makefile: use fileno macro work around on AIX + (this branch is used by cc/access-on-aix-workaround.) - Performance fix for "rev-list --parents -- pathspec". + AIX shared the same build issues with other BSDs around fileno(fp), + which has been corrected. -* jk/server-info-rabbit-hole (2019-04-16) 13 commits - (merged to 'next' on 2019-04-16 at 3dded8be9a) - + update_info_refs(): drop unused force parameter - + server-info: drop objdirlen pointer arithmetic - + server-info: drop nr_alloc struct member - + server-info: use strbuf to read old info/packs file - + server-info: simplify cleanup in parse_pack_def() - + server-info: fix blind pointer arithmetic - + http: simplify parsing of remote objects/info/packs - + packfile: fix pack basename computation - + midx: check both pack and index names for containment - + t5319: drop useless --buffer from cat-file - + t5319: fix bogus cat-file argument - + pack-revindex: open index if necessary - + packfile.h: drop extern from function declarations +* cc/replace-graft-peel-tags (2019-04-15) 4 commits + (merged to 'next' on 2019-04-25 at f8d0db27ba) + + replace: peel tag when passing a tag first to --graft + + replace: peel tag when passing a tag as parent to --graft + + t6050: redirect expected error output to a file + + t6050: use test_line_count instead of wc -l - Code clean-up around a much-less-important-than-it-used-to-be - update_server_info() funtion. + When given a tag that points at a commit-ish, "git replace --graft" + failed to peel the tag before writing a replace ref, which did not + make sense because the old graft mechanism the feature wants to + mimick only allowed to replace one commit object with another. + This has been fixed. -* jk/unused-params-even-more (2019-03-21) 13 commits - (merged to 'next' on 2019-04-10 at 12edf8872f) - + parse_opt_ref_sorting: always use with NONEG flag - + pretty: drop unused strbuf from parse_padding_placeholder() - + pretty: drop unused "type" parameter in needs_rfc2047_encoding() - + parse-options: drop unused ctx parameter from show_gitcomp() - + fetch_pack(): drop unused parameters - + report_path_error(): drop unused prefix parameter - + unpack-trees: drop unused error_type parameters - + unpack-trees: drop name_entry from traverse_by_cache_tree() - + test-date: drop unused "now" parameter from parse_dates() - + update-index: drop unused prefix_length parameter from do_reupdate() - + log: drop unused "len" from show_tagger() - + log: drop unused rev_info from early output - + revision: drop some unused "revs" parameters +* dl/merge-cleanup-scissors-fix (2019-04-19) 10 commits + (merged to 'next' on 2019-04-25 at 2014eef6b1) + + cherry-pick/revert: add scissors line on merge conflict + + sequencer.c: save and restore cleanup mode + + merge: add scissors line on merge conflict + + merge: cleanup messages like commit + + parse-options.h: extract common --cleanup option + + commit: extract cleanup_mode functions to sequencer + + t7502: clean up style + + t7604: clean up style + + t3507: clean up style + + t7600: clean up style + (this branch uses pw/sequencer-cleanup-with-signoff-x-fix.) - Code cleanup. + The list of conflicted paths shown in the editor while concluding a + conflicted merge was shown above the scissors line when the + clean-up mode is set to "scissors", even though it was commented + out just like the list of updated paths and other information to + help the user explain the merge better. + + +* dl/warn-tagging-a-tag (2019-04-12) 2 commits + (merged to 'next' on 2019-04-25 at 8b966d7fe8) + + tag: advise on nested tags + + tag: fix formatting + "git tag" learned to give an advice suggesting it might be a + mistake when creating an annotated or signed tag that points at + another tag. -* jk/xmalloc (2019-04-12) 4 commits - (merged to 'next' on 2019-04-22 at 1a907289fa) - + progress: use xmalloc/xcalloc - + xdiff: use xmalloc/xrealloc - + xdiff: use git-compat-util - + test-prio-queue: use xmalloc - The code is updated to check the result of memory allocation before - it is used in more places, by using xmalloc and/or xcalloc calls. +* dr/ref-filter-push-track-fix (2019-04-18) 1 commit + (merged to 'next' on 2019-04-25 at 07db067adc) + + ref-filter: use correct branch for %(push:track) + %(push:track) token used in the --format option to "git + for-each-ref" and friends was not showing the right branch, which + has been fixed. -* js/difftool-no-index (2019-03-18) 3 commits - (merged to 'next' on 2019-04-16 at 7313f9ff18) - + difftool: allow running outside Git worktrees with --no-index - + parse-options: make OPT_ARGUMENT() more useful - + difftool: remove obsolete (and misleading) comment - "git difftool" can now run outside a repository. +* en/merge-directory-renames (2019-04-08) 15 commits + (merged to 'next' on 2019-04-25 at fd5b4f57b4) + + merge-recursive: switch directory rename detection default + + merge-recursive: give callers of handle_content_merge() access to contents + + merge-recursive: track information associated with directory renames + + t6043: fix copied test description to match its purpose + + merge-recursive: switch from (oid,mode) pairs to a diff_filespec + + merge-recursive: cleanup handle_rename_* function signatures + + merge-recursive: track branch where rename occurred in rename struct + + merge-recursive: remove ren[12]_other fields from rename_conflict_info + + merge-recursive: shrink rename_conflict_info + + merge-recursive: move some struct declarations together + + merge-recursive: use 'ci' for rename_conflict_info variable name + + merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf' + + merge-recursive: rename diff_filespec 'one' to 'o' + + merge-recursive: rename merge_options argument from 'o' to 'opt' + + Use 'unsigned short' for mode, like diff_filespec does + "git merge-recursive" backend recently learned a new heuristics to + infer file movement based on how other files in the same directory + moved. As this is inherently less robust heuristics than the one + based on the content similarity of the file itself (rather than + based on what its neighbours are doing), it sometimes gives an + outcome unexpected by the end users. This has been toned down to + leave the renamed paths in higher/conflicted stages in the index so + that the user can examine and confirm the result. -* js/iso8895-test-on-apfs (2019-04-15) 1 commit - (merged to 'next' on 2019-04-22 at c2fadead33) - + t9822: skip tests if file names cannot be ISO-8859-1 encoded - Test fix on APFS that is incapable of store paths in Latin-1. +* jk/pack-objects-reports-num-objects-to-trace2 (2019-04-12) 1 commit + (merged to 'next' on 2019-04-25 at e79464c054) + + pack-objects: write objects packed to trace2 + The "git pack-objects" command learned to report the number of + objects it packed via the trace2 mechanism. -* js/macos-gettext-build (2019-04-15) 1 commit - (merged to 'next' on 2019-04-22 at de4cbb1431) - + macOS: make sure that gettext is found - Build with gettext breaks on recent macOS w/ Homebrew when - /usr/local/bin is not on PATH, which has been corrected. +* jk/prune-optim (2019-04-19) 1 commit + (merged to 'next' on 2019-04-25 at c50353b27f) + + t5304: add a test for pruning with bitmaps + A follow-up test for an earlier "git prune" improvements. -* js/t3301-unbreak-notes-test (2019-04-09) 1 commit - (merged to 'next' on 2019-04-22 at a015b00bd9) - + t3301: fix false negative - Test fix. +* jk/untracked-cache-more-fixes (2019-04-19) 3 commits + (merged to 'next' on 2019-04-25 at a6037ddd54) + + untracked-cache: simplify parsing by dropping "len" + + untracked-cache: simplify parsing by dropping "next" + + untracked-cache: be defensive about missing NULs in index + Code clean-up. -* js/untracked-cache-allocfix (2019-04-12) 1 commit - (merged to 'next' on 2019-04-22 at 004a544075) - + untracked cache: fix off-by-one - (this branch is used by jk/untracked-cache-more-fixes.) - An underallocation in the code to read the untracked cache - extension has been corrected. +* js/misc-doc-fixes (2019-04-19) 8 commits + (merged to 'next' on 2019-04-25 at 6898f709d0) + + Turn `git serve` into a test helper + + test-tool: handle the `-C ` option just like `git` + + check-docs: do not bother checking for legacy scripts' documentation + + docs: exclude documentation for commands that have been excluded + + check-docs: allow command-list.txt to contain excluded commands + + help -a: do not list commands that are excluded from the build + + Makefile: drop the NO_INSTALL variable + + remote-testgit: move it into the support directory for t5801 + "make check-docs", "git help -a", etc. did not account for cases + where a particular build may deliberately omit some subcommands, + which has been corrected. -* jt/batch-fetch-blobs-in-diff (2019-04-08) 2 commits - (merged to 'next' on 2019-04-22 at 0598bae567) - + diff: batch fetching of missing blobs - + sha1-file: support OBJECT_INFO_FOR_PREFETCH - (this branch is used by cc/multi-promisor.) - While running "git diff" in a lazy clone, we can upfront know which - missing blobs we will need, instead of waiting for the on-demand - machinery to discover them one by one. Aim to achieve better - performance by batching the request for these promised blobs. +* js/trace2-to-directory (2019-03-22) 1 commit + (merged to 'next' on 2019-04-25 at 53adf71c41) + + trace2: write to directory targets + The trace2 tracing facility learned to auto-generate a filename + when told to log to a directory. -* jt/fetch-no-update-shallow-in-proto-v2 (2019-04-01) 3 commits - (merged to 'next' on 2019-04-16 at 05c5ebe471) - + fetch-pack: respect --no-update-shallow in v2 - + fetch-pack: call prepare_shallow_info only if v0 - + Merge branch 'jt/test-protocol-version' into jt/fetch-no-update-shallow-in-proto-v2 - Fix for protocol v2 support in "git fetch-pack" of shallow clones. +* jt/clone-server-option (2019-04-18) 2 commits + (merged to 'next' on 2019-04-25 at 21f07cc85d) + + clone: send server options when using protocol v2 + + transport: die if server options are unsupported + "git clone" learned a new --server-option option when talking over + the protocol version 2. -* jt/fetch-pack-wanted-refs-optim (2019-04-01) 1 commit - (merged to 'next' on 2019-04-16 at 051f6bd38a) - + fetch-pack: binary search when storing wanted-refs - Performance fix around "git fetch" that grabs many refs. +* jt/submodule-repo-is-with-worktree (2019-04-21) 1 commit + (merged to 'next' on 2019-04-25 at da2c6d684d) + + worktree: update is_bare heuristics + The logic to tell if a Git repository has a working tree protects + "git branch -D" from removing the branch that is currently checked + out by mistake. The implementation of this logic was broken for + repositories with unusual name, which unfortunately is the norm for + submodules these days. This has been fixed. -* km/t3000-retitle (2019-04-12) 1 commit - (merged to 'next' on 2019-04-22 at 2d5aa01ca6) - + t3000 (ls-files -o): widen description to reflect current tests - A test update. +* km/empty-repo-is-still-a-repo (2019-04-10) 3 commits + (merged to 'next' on 2019-04-25 at bb3d4406a5) + + add: error appropriately on repository with no commits + + dir: do not traverse repositories with no commits + + submodule: refuse to add repository with no commits + Running "git add" on a repository created inside the current + repository is an explicit indication that the user wants to add it + as a submodule, but when the HEAD of the inner repository is on an + unborn branch, it cannot be added as a submodule. Worse, the files + in its working tree can be added as if they are a part of the outer + repository, which is not what the user wants. These problems are + being addressed. -* nd/checkout-m (2019-03-24) 4 commits - (merged to 'next' on 2019-04-16 at 4d7c322bed) - + checkout: prevent losing staged changes with --merge - + read-tree: add --quiet - + unpack-trees: rename "gently" flag to "quiet" - + unpack-trees: keep gently check inside add_rejected_path - "git checkout -m " was about carrying the differences - between HEAD and the working-tree files forward while checking out - another branch, and ignored the differences between HEAD and the - index. The command has been taught to abort when the index and the - HEAD are different. +* nd/sha1-name-c-wo-the-repository (2019-04-16) 34 commits + (merged to 'next' on 2019-04-25 at d826918329) + + sha1-name.c: remove the_repo from get_oid_mb() + + sha1-name.c: remove the_repo from other get_oid_* + + sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name + + submodule-config.c: use repo_get_oid for reading .gitmodules + + sha1-name.c: add repo_get_oid() + + sha1-name.c: remove the_repo from get_oid_with_context_1() + + sha1-name.c: remove the_repo from resolve_relative_path() + + sha1-name.c: remove the_repo from diagnose_invalid_index_path() + + sha1-name.c: remove the_repo from handle_one_ref() + + sha1-name.c: remove the_repo from get_oid_1() + + sha1-name.c: remove the_repo from get_oid_basic() + + sha1-name.c: remove the_repo from get_describe_name() + + sha1-name.c: remove the_repo from get_oid_oneline() + + sha1-name.c: add repo_interpret_branch_name() + + sha1-name.c: remove the_repo from interpret_branch_mark() + + sha1-name.c: remove the_repo from interpret_nth_prior_checkout() + + sha1-name.c: remove the_repo from get_short_oid() + + sha1-name.c: add repo_for_each_abbrev() + + sha1-name.c: store and use repo in struct disambiguate_state + + sha1-name.c: add repo_find_unique_abbrev_r() + + sha1-name.c: remove the_repo from find_abbrev_len_packed() + + sha1-name.c: remove the_repo from sort_ambiguous() + + commit.c: add repo_get_commit_tree() + + commit.cocci: refactor code, avoid double rewrite + + refs.c: remove the_repo from read_ref_at() + + refs.c: add repo_dwim_log() + + refs.c: add repo_dwim_ref() + + refs.c: remove the_repo from expand_ref() + + refs.c: remove the_repo from substitute_branch_name() + + refs.c: add refs_shorten_unambiguous_ref() + + refs.c: add refs_ref_exists() + + packfile.c: add repo_approximate_object_count() + + builtin rebase: use oideq() + + builtin rebase: use FREE_AND_NULL + Further code clean-up to allow the lowest level of name-to-object + mapping layer to work with a passed-in repository other than the + default one. -* nd/commit-a-with-paths-msg-update (2019-03-22) 1 commit - (merged to 'next' on 2019-04-16 at a36c712b39) - + commit: improve error message in "-a " case - The message given when "git commit -a " errors out has been - updated. +* pw/sequencer-cleanup-with-signoff-x-fix (2019-04-18) 1 commit + (merged to 'next' on 2019-04-25 at cc587fb2b9) + + sequencer: fix cleanup with --signoff and -x + (this branch is used by dl/merge-cleanup-scissors-fix.) + "git cherry-pick" run with the "-x" or the "--signoff" option used + to (and more importantly, ought to) clean up the commit log message + with the --cleanup=space option by default, but this has been + broken since late 2017. This has been fixed. -* nd/diff-parseopt-4 (2019-03-24) 20 commits - (merged to 'next' on 2019-04-10 at 893b135f10) - + am: avoid diff_opt_parse() - + diff --no-index: use parse_options() instead of diff_opt_parse() - + range-diff: use parse_options() instead of diff_opt_parse() - + diff.c: allow --no-color-moved-ws - + diff-parseopt: convert --color-moved-ws - + diff-parseopt: convert --[no-]color-moved - + diff-parseopt: convert --inter-hunk-context - + diff-parseopt: convert --no-prefix - + diff-parseopt: convert --line-prefix - + diff-parseopt: convert --[src|dst]-prefix - + diff-parseopt: convert --[no-]abbrev - + diff-parseopt: convert --diff-filter - + diff-parseopt: convert --find-object - + diff-parseopt: convert -O - + diff-parseopt: convert --pickaxe-all|--pickaxe-regex - + diff-parseopt: convert -S|-G - + diff-parseopt: convert -l - + diff-parseopt: convert -z - + diff-parseopt: convert --ita-[in]visible-in-index - + diff-parseopt: convert --ws-error-highlight - Fourth batch to teach the diff machinery to use the parse-options - API. +* ss/msvc-path-utils-fix (2019-04-09) 1 commit + (merged to 'next' on 2019-04-25 at ee2850da18) + + MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path() + An earlier update for MinGW and Cygwin accidentally broke MSVC build, + which has been fixed. -* nd/submodule-foreach-quiet (2019-04-15) 1 commit - (merged to 'next' on 2019-04-22 at bf982bca7b) - + submodule foreach: fix " --quiet" not being respected - "git submodule foreach --quiet" did not pass the option - down correctly, which has been corrected. +* tb/unexpected (2019-04-10) 7 commits + (merged to 'next' on 2019-04-25 at c49927fca0) + + rev-list: detect broken root trees + + rev-list: let traversal die when --missing is not in use + + get_commit_tree(): return NULL for broken tree + + list-objects.c: handle unexpected non-tree entries + + list-objects.c: handle unexpected non-blob entries + + t: introduce tests for unexpected object types + + t: move 'hex2oct' into test-lib-functions.sh + Code tightening against a "wrong" object appearing where an object + of a different type is expected, instead of blindly assuming that + the connection between objects are correctly made. -* po/describe-not-necessarily-7 (2019-04-08) 1 commit - (merged to 'next' on 2019-04-22 at 65b47ca73f) - + describe doc: remove '7-char' abbreviation reference - Docfix. +* tz/git-svn-doc-markup-fix (2019-04-10) 1 commit + (merged to 'next' on 2019-04-25 at 3efaa6285c) + + Documentation/git-svn: improve asciidoctor compatibility + Doc formatting fix. -* po/rerere-doc-fmt (2019-04-08) 1 commit - (merged to 'next' on 2019-04-22 at 780c0d2450) - + rerere doc: quote `rerere.enabled` - Docfix. +* vk/autoconf-gettext (2019-04-19) 1 commit + (merged to 'next' on 2019-04-25 at 918870cbc2) + + autoconf: #include when checking for gettext() + The autoconf generated configure script failed to use the right + gettext() implementations from -libintl by ignoring useless stub + implementations shipped in some C library, which has been + corrected. -* pw/cherry-pick-continue (2019-03-18) 3 commits - (merged to 'next' on 2019-04-16 at 1bfd7a7179) - + cherry-pick --continue: remember options - + cherry-pick: demonstrate option amnesia - + sequencer: break some long lines +-------------------------------------------------- +[New Topics] - "git cherry-pick --options A..B", after giving control back to the - user to ask help resolving a conflicted step, did not honor the - options it originally received, which has been corrected. +* ab/perf-installed-fix (2019-05-08) 6 commits + - perf-lib.sh: forbid the use of GIT_TEST_INSTALLED + - perf tests: add "bindir" prefix to git tree test results + - perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh + - perf-lib.sh: make "./run " use the correct gits + - perf aggregate: remove GIT_TEST_INSTALLED from --codespeed + - perf README: correct docs for 3c8f12c96c regression + Performance test framework has been broken and measured the version + of Git that happens to be on $PATH, not the specified one to + measure, for a while, which has been corrected. -* sg/blame-in-bare-start-at-head (2019-04-08) 1 commit - (merged to 'next' on 2019-04-22 at 159777c280) - + blame: default to HEAD in a bare repo when no start commit is given + Will merge to 'next'. + cf. <20190507105434.9600-1-avarab@gmail.com> - "git blame -- path" in a non-bare repository starts blaming from - the working tree, and the same command in a bare repository errors - out because there is no working tree by definition. The command - has been taught to instead start blaming from the commit at HEAD, - which is more useful. +* an/ignore-doc-update (2019-05-08) 1 commit + - gitignore.txt: make slash-rules more readable -* sg/index-pack-progress (2019-04-01) 1 commit - (merged to 'next' on 2019-04-16 at a10bfdd950) - + index-pack: show progress while checking objects + The description about slashes in gitignore patterns (used to + indicate things like "anchored to this level only" and "only + matches directories") has been revamped. - A progress indicator has been added to the "index-pack" step, which - often makes users wait for completion during "git clone". + Almost there. + cf. <20190507104507.18735-1-admin@in-ici.net> -* sg/overlong-progress-fix (2019-04-15) 4 commits - (merged to 'next' on 2019-04-22 at 69921cdf09) - + progress: break too long progress bar lines - + progress: clear previous progress update dynamically - + progress: assemble percentage and counters in a strbuf before printing - + progress: make display_progress() return void +* bl/t4253-exit-code-from-format-patch (2019-05-07) 1 commit + - t4253-am-keep-cr-dos: avoid using pipes - Updating the display with progress message has been cleaned up to - deal better with overlong messages. + Avoid patterns to pipe output from a git command to feed another + command in tests. + Will merge to 'next'. -* sg/test-atexit (2019-03-14) 11 commits - (merged to 'next' on 2019-04-10 at 7839135291) - + t9811-git-p4-label-import: fix pipeline negation - + git p4 test: disable '-x' tracing in the p4d watchdog loop - + git p4 test: simplify timeout handling - + git p4 test: clean up the p4d cleanup functions - + git p4 test: use 'test_atexit' to kill p4d and the watchdog process - + t0301-credential-cache: use 'test_atexit' to stop the credentials helper - + tests: use 'test_atexit' to stop httpd - + git-daemon: use 'test_atexit` to stop 'git-daemon' - + test-lib: introduce 'test_atexit' - + t/lib-git-daemon: make sure to kill the 'git-daemon' process - + test-lib: fix interrupt handling with 'dash' and '--verbose-log -x' - Test framework update to more robustly clean up leftover files and - processes after tests are done. +* cm/notes-comment-fix (2019-05-07) 1 commit + - notes: correct documentation of format_display_notes() + A stale in-code comment has been updated. -* tg/ls-files-debug-format-fix (2019-04-08) 1 commit - (merged to 'next' on 2019-04-22 at a5ac1ca49f) - + ls-files: use correct format string + Will merge to 'next'. - Debugging code fix. +* dl/branch-from-3dot-merge-base (2019-05-07) 2 commits + - branch: make create_branch accept a merge base rev + - t2018: cleanup in current test -* tz/doc-apostrophe-no-longer-needed (2019-04-10) 1 commit - (merged to 'next' on 2019-04-22 at 8ff03863ce) - + Documentation/git-show-branch: avoid literal {apostrophe} + "git branch new A...B" and "git checkout -b new A...B" have been + taught that in their contexts, the notation A...B means "the merge + base between these two commits", just like "git checkout A...B" + detaches HEAD at that commit. - Doc formatting fix. + Will merge to 'next'. + cf. --------------------------------------------------- -[New Topics] -* jc/make-dedup-ls-files-output (2019-04-22) 1 commit - - Makefile: dedup list of files obtained from ls-files +* ds/cvsexportcommit-force-text (2019-05-07) 1 commit + - cvsexportcommit: force crlf translation - A "ls-files" that emulates "find" to enumerate files in the working - tree resulted in duplicated Makefile rules that caused the build to - issue an unnecessary warning during a trial build after merge - conflicts are resolved in working tree *.h files but before the - resolved results are added to the index. This has been corrected. + "git cvsexportcommit" running on msys did not expect cvsnt showed + "cvs status" output with CRLF line endings. Will merge to 'next'. - A not-so-low hanging fruit to teach ls-files to dedup either optionally - or always has also been discussed, which probably is a good idea, - to prevent mistakes similar to the bug this topic fixes in the future. -* jk/ls-files-doc-markup-fix (2019-04-23) 1 commit - - doc/ls-files: put nested list for "-t" option into block +* en/fast-export-encoding (2019-05-07) 5 commits + - fast-export: do automatic reencoding of commit messages only if requested + - fast-export: differentiate between explicitly utf-8 and implicitly utf-8 + - fast-export: avoid stripping encoding header if we cannot reencode + - fast-import: support 'encoding' commit header + - t9350: fix encoding test to actually test reencoding - Docfix. + The "git fast-export/import" pair has been taught to handle commits + with log messages in encoding other than UTF-8 better. Will merge to 'next'. -* jk/p5302-avoid-collision-check-cost (2019-04-23) 1 commit - - p5302: create the repo in each index-pack test +* jh/trace2 (2019-04-26) 1 commit + (merged to 'next' on 2019-05-09 at e1bba8aeac) + + trace2: fix incorrect function pointer check + + An embarrassing bugfix. + + Will merge to 'master'. - Fix index-pack perf test so that the repeated invocations always - run in an empty repository, which emulates the initial clone - situation better. + +* jk/apache-lsan (2019-05-08) 1 commit + - t/lib-httpd: pass LSAN_OPTIONS through apache + + Allow tests that involve httpd to be run under leak sanitizer, just + like we can already do so under address sanitizer. Will merge to 'next'. -* dl/rev-tilde-doc-clarify (2019-04-24) 1 commit - - revisions.txt: mention ~ form +* jk/cocci-batch (2019-05-08) 2 commits + - coccicheck: make batch size of 0 mean "unlimited" + - coccicheck: optionally batch spatch invocations - Docfix. + Optionally "make coccicheck" can feed multiple source files to + spatch, gaining performance while spending more memory. Will merge to 'next'. -* en/unicode-in-refnames (2019-04-24) 1 commit - - Honor core.precomposeUnicode in more places +* js/commit-graph-parse-leakfix (2019-05-07) 1 commit + - commit-graph: fix memory leak - The names of the refs stored as filesystem entities may become - different from what the end-user expects, just like files in the - working tree gets "renamed", on a filesystem like HFS+. Work it - around by paying attemption to the core.precomposeUnicode - configuration. + Leakfix. - Looked sensible. Ready for next? + Will merge to 'next'. -* jk/perf-aggregate-wo-libjson (2019-04-24) 1 commit - - t/perf: depend on perl JSON only when using --codespeed +* js/fsmonitor-refresh-after-discarding-index (2019-05-08) 2 commits + - fsmonitor: force a refresh after the index was discarded + - fsmonitor: demonstrate that it is not refreshed after discard_index() - The script to aggregate perf result unconditionally depended on - libjson-perl even though it did not have to, which has been - corrected. + The fsmonitor interface got out of sync after the in-core index + file gets discarded, which has been corrected. Will merge to 'next'. -* cc/access-on-aix-workaround (2019-04-25) 1 commit - - git-compat-util: work around for access(X_OK) under root - (this branch uses cc/aix-has-fileno-as-a-macro.) +* js/t5580-unc-alternate-test (2019-05-07) 1 commit + - t5580: verify that alternates can be UNC paths + An additional test for MinGW -* dl/difftool-mergetool (2019-04-25) 6 commits - - difftool: fallback on merge.guitool - - difftool: make --gui, --tool and --extcmd mutually exclusive - - mergetool: fallback to tool when guitool unavailable - - mergetool: use get_merge_tool function - - t7610: add mergetool --gui tests - - t7610: unsuppress output + Will merge to 'next'. + + +* js/t6500-use-windows-pid-on-mingw (2019-05-08) 1 commit + - t6500(mingw): use the Windows PID of the shell + + Future-proof a test against an update to MSYS2 runtime v3.x series. + + Will merge to 'next'. + cf. + It might be helpful in the longer term to encapsulate the code that + uses /proc/$$/winpid into a helper function and use it anywhere $$ + is referenced, but let's defer it until we see such a callsite that + would be helped by such a move. + + +* mh/http-fread-api-fix (2019-05-08) 1 commit + - Make fread/fwrite-like functions in http.c more like fread/fwrite. + + A pair of private functions in http.c that had names similar to + fread/fwrite did not return the number of elements, which was found + to be confusing. + + Will merge to 'next'. + + +* nd/merge-quit (2019-05-07) 2 commits + - merge: add --quit + - merge: remove drop_save() in favor of remove_merge_branch_state() + + "git merge" learned "--quit" option that cleans up the in-progress + merge while leaving the working tree and the index still in a mess. + + Hmph, why is this a good idea? + + +* nd/parse-options-aliases (2019-05-07) 1 commit + - parse-options: don't emit "ambiguous option" for aliases + + Attempt to use an abbreviated option in "git clone --recurs" is + responded by a request to disambiguate between --recursive and + --recurse-submodules, which is bad because these two are synonyms. + The parse-options API has been extended to define such synonyms + more easily and not produce an unnecessary failure. + + Will merge to 'next'. + + +* pw/rebase-abort-clean-rewritten (2019-05-08) 1 commit + - rebase --abort: cleanup refs/rewritten + (this branch uses pw/rebase-i-internal.) + + "git rebase --abort" used to leave refs/rewritten/ when concluding + "git rebase -r", which has been corrected. + + Will merge to 'next'. + + +* sg/ci-libsvn-perl (2019-05-07) 1 commit + - ci: install 'libsvn-perl' instead of 'git-svn' + + To run tests for Git SVN, our scripts for CI used to install the + git-svn package (in the hope that it would bring in the right + dependencies). This has been updated to install the more direct + dependency, namely, libsvn-perl. + + Will merge to 'next'. + + +* tt/no-ipv6-fallback-for-winxp (2019-05-07) 1 commit + - mingw: remove obsolete IPv6-related code + + Code cleanup. + + Will merge to 'next'. + + +* jc/send-email-transferencoding-fix (2019-05-08) 2 commits + - send-email: honor transferencoding config option again + - send-email: update the mechanism to set default configuration values + + Since "git send-email" learned to take 'auto' as the value for the + transfer-encoding, it by mistake stopped honoring the values given + to the configuration variables sendemail.transferencoding and/or + sendemail..transferencoding. Attempt to correct this. + + cf. <20190508105607.178244-1-gitster@pobox.com> (v2) -------------------------------------------------- [Stalled] -* nb/branch-show-other-worktrees-head (2019-03-18) 3 commits - - branch: add worktree info on verbose output - - branch: update output to include worktree info - - ref-filter: add worktreepath atom +* jn/unknown-index-extensions (2018-11-21) 2 commits + - index: offer advice for unknown index extensions + - index: do not warn about unrecognized extensions - "git branch --list" learned to show branches that are checked out - in other worktrees connected to the same repository prefixed with - '+', similar to the way the currently checked out branch is shown - with '*' in front. + A bit too alarming warning given when unknown index extensions + exist is getting revamped. - Getting there... - cf. <20190316013807.38756-1-nbelakovski@gmail.com> (v9) - cf. <20190318121054.GC24175@szeder.dev> + Expecting a reroll. + + +* jc/format-patch-delay-message-id (2019-04-05) 1 commit + - format-patch: move message-id and related headers to the end + + The location "git format-patch --thread" adds the Message-Id: + header in the series of header fields has been moved down, which + may help working around a suspected bug in GMail MSA, reported at + + + Waiting for feedback to see if it truly helps. + Needs tests. * jt/fetch-cdn-offload (2019-03-12) 9 commits @@ -659,302 +599,185 @@ of the repositories listed at -------------------------------------------------- [Cooking] -* ds/midx-expire-repack (2019-04-25) 11 commits - - t5319-multi-pack-index.sh: test batch size zero - - midx: add test that 'expire' respects .keep files - - multi-pack-index: test expire while adding packs - - midx: implement midx_repack() - - multi-pack-index: prepare 'repack' subcommand - - multi-pack-index: implement 'expire' subcommand - - midx: refactor permutation logic and pack sorting - - midx: simplify computation of pack name lengths - - multi-pack-index: prepare for 'expire' subcommand - - Docs: rearrange subcommands for multi-pack-index - - repack: refactor pack deletion for future use - - "git multi-pack-index expire/repack" are new subcommands that - consult midx file and are used to drop unused pack files and - coalesce small pack files that are still in use. - - cf. <20190424151428.170316-1-dstolee@microsoft.com> (v5) - - -* es/first-contrib-tutorial (2019-04-25) 1 commit - - documentation: add tutorial for first contribution - - A new tutorial targetting specifically aspiring git-core - developers. - - cf. <20190423193410.101803-1-emilyshaffer@google.com> (v4) - - -* pw/clean-sequencer-state-upon-final-commit (2019-04-17) 2 commits - - fix cherry-pick/revert status after commit - - commit/reset: try to clean up sequencer state - - "git chery-pick" (and "revert" that shares the same runtime engine) - that deals with multiple commits got confused when the final step - gets stopped with a conflict and the user concluded the sequence - with "git commit". Attempt to fix it by cleaning up the state - files used by these commands in such a situation. - - Will merge to 'next'. - - -* pw/sequencer-cleanup-with-signoff-x-fix (2019-04-18) 1 commit - (merged to 'next' on 2019-04-25 at cc587fb2b9) - + sequencer: fix cleanup with --signoff and -x - (this branch is used by dl/merge-cleanup-scissors-fix.) - - "git cherry-pick" run with the "-x" or the "--signoff" option used - to (and more importantly, ought to) clean up the commit log message - with the --cleanup=space option by default, but this has been - broken since late 2017. This has been fixed. +* nb/branch-show-other-worktrees-head (2019-05-07) 3 commits + - branch: add worktree info on verbose output + - branch: update output to include worktree info + - ref-filter: add worktreepath atom - Will merge to 'master'. + "git branch --list" learned to show branches that are checked out + in other worktrees connected to the same repository prefixed with + '+', similar to the way the currently checked out branch is shown + with '*' in front. -* dr/ref-filter-push-track-fix (2019-04-18) 1 commit - (merged to 'next' on 2019-04-25 at 07db067adc) - + ref-filter: use correct branch for %(push:track) +* jc/make-dedup-ls-files-output (2019-04-22) 1 commit + (merged to 'next' on 2019-05-09 at e3d5825003) + + Makefile: dedup list of files obtained from ls-files - %(push:track) token used in the --format option to "git - for-each-ref" and friends was not showing the right branch, which - has been fixed. + A "ls-files" that emulates "find" to enumerate files in the working + tree resulted in duplicated Makefile rules that caused the build to + issue an unnecessary warning during a trial build after merge + conflicts are resolved in working tree *.h files but before the + resolved results are added to the index. This has been corrected. Will merge to 'master'. + A not-so-low hanging fruit to teach ls-files to dedup either optionally + or always has also been discussed, which probably is a good idea, + to prevent mistakes similar to the bug this topic fixes in the future. -* cc/aix-has-fileno-as-a-macro (2019-04-25) 1 commit - (merged to 'next' on 2019-04-25 at f1d6464f98) - + Makefile: use fileno macro work around on AIX - (this branch is used by cc/access-on-aix-workaround.) +* jk/ls-files-doc-markup-fix (2019-04-23) 1 commit + (merged to 'next' on 2019-05-09 at a68fe0ae72) + + doc/ls-files: put nested list for "-t" option into block - AIX shared the same build issues with other BSDs around fileno(fp), - which has been corrected. + Docfix. Will merge to 'master'. -* jk/prune-optim (2019-04-19) 1 commit - (merged to 'next' on 2019-04-25 at c50353b27f) - + t5304: add a test for pruning with bitmaps +* jk/p5302-avoid-collision-check-cost (2019-04-23) 1 commit + (merged to 'next' on 2019-05-09 at 8dc92cad96) + + p5302: create the repo in each index-pack test - A follow-up test for an earlier "git prune" improvements. + Fix index-pack perf test so that the repeated invocations always + run in an empty repository, which emulates the initial clone + situation better. Will merge to 'master'. -* jk/untracked-cache-more-fixes (2019-04-19) 3 commits - (merged to 'next' on 2019-04-25 at a6037ddd54) - + untracked-cache: simplify parsing by dropping "len" - + untracked-cache: simplify parsing by dropping "next" - + untracked-cache: be defensive about missing NULs in index +* dl/rev-tilde-doc-clarify (2019-05-08) 4 commits + (merged to 'next' on 2019-05-09 at 6efd564b11) + + revisions.txt: remove ambibuity between : and : + + revisions.txt: mention ~ form + + revisions.txt: mark optional rev arguments with [] + + revisions.txt: change "rev" to "" - Code clean-up. + Docfix. Will merge to 'master'. -* jt/submodule-repo-is-with-worktree (2019-04-21) 1 commit - (merged to 'next' on 2019-04-25 at da2c6d684d) - + worktree: update is_bare heuristics +* en/unicode-in-refnames (2019-04-26) 1 commit + - Honor core.precomposeUnicode in more places - The logic to tell if a Git repository has a working tree protects - "git branch -D" from removing the branch that is currently checked - out by mistake. The implementation of this logic was broken for - repositories with unusual name, which unfortunately is the norm for - submodules these days. This has been fixed. + The names of the refs stored as filesystem entities may become + different from what the end-user expects, just like files in the + working tree gets "renamed", on a filesystem like HFS+. Work it + around by paying attemption to the core.precomposeUnicode + configuration. - Will merge to 'master'. + Looked sensible. Ready for next? -* vk/autoconf-gettext (2019-04-19) 1 commit - (merged to 'next' on 2019-04-25 at 918870cbc2) - + autoconf: #include when checking for gettext() +* jk/perf-aggregate-wo-libjson (2019-04-24) 1 commit + (merged to 'next' on 2019-05-09 at e697c1993b) + + t/perf: depend on perl JSON only when using --codespeed - The autoconf generated configure script failed to use the right - gettext() implementations from -libintl by ignoring useless stub - implementations shipped in some C library, which has been + The script to aggregate perf result unconditionally depended on + libjson-perl even though it did not have to, which has been corrected. Will merge to 'master'. -* dl/no-extern-in-func-decl (2019-04-24) 4 commits - - cocci: prevent extern function declarations - - *.[ch]: manually align parameter lists - - *.[ch]: remove extern from function declarations using sed - - *.[ch]: remove extern from function declarations using spatch - - Mechanically and systematically drop "extern" from function - declarlation. - - Will merge to 'next'. - - This is the kind of code churn patch that causes heavy conflicts - with multiple topics in flight, which causes conflicts in slightly - different shape when it gets merged with them in different order. - I've queued it moderately early in 'pu' for the night, and I am - reasonably sure the merge of the topic itself is OK, but I do not - have much confidence in the resolutions of conflicts with other - topics later merged to 'pu'. - - -* js/partial-clone-connectivity-check (2019-04-21) 1 commit - (merged to 'next' on 2019-04-25 at ebd8b4bffd) - + clone: do faster object check for partial clones - - During an initial "git clone --depth=..." partial clone, it is - pointless to spend cycles for a large portion of the connectivity - check that enumerates and skips promisor objects (which by - definition is all objects fetched from the other side). This has - been optimized out. - - Will merge to 'master'. - - -* hs/send-email-transferencoding-fix (2019-04-10) 1 commit - - send-email: honor transferencoding config option again - - Since "git send-email" learned to take 'auto' as the value for the - transfer-encoding, it by mistake stopped honoring the values given - to the configuration variables sendemail.transferencoding and/or - sendemail..transferencoding. Attempt to correct this. - - Not quite. - cf. - - -* jk/pack-objects-reports-num-objects-to-trace2 (2019-04-12) 1 commit - (merged to 'next' on 2019-04-25 at e79464c054) - + pack-objects: write objects packed to trace2 - - The "git pack-objects" command learned to report the number of - objects it packed via the trace2 mechanism. - - Will merge to 'master'. - - -* js/misc-doc-fixes (2019-04-19) 8 commits - (merged to 'next' on 2019-04-25 at 6898f709d0) - + Turn `git serve` into a test helper - + test-tool: handle the `-C ` option just like `git` - + check-docs: do not bother checking for legacy scripts' documentation - + docs: exclude documentation for commands that have been excluded - + check-docs: allow command-list.txt to contain excluded commands - + help -a: do not list commands that are excluded from the build - + Makefile: drop the NO_INSTALL variable - + remote-testgit: move it into the support directory for t5801 - - "make check-docs", "git help -a", etc. did not account for cases - where a particular build may deliberately omit some subcommands, - which has been corrected. - - Will merge to 'master'. - - -* dl/warn-tagging-a-tag (2019-04-12) 2 commits - (merged to 'next' on 2019-04-25 at 8b966d7fe8) - + tag: advise on nested tags - + tag: fix formatting +* cc/access-on-aix-workaround (2019-04-25) 1 commit + (merged to 'next' on 2019-05-09 at 79b25b1954) + + git-compat-util: work around for access(X_OK) under root - "git tag" learned to give an advice suggesting it might be a - mistake when creating an annotated or signed tag that points at - another tag. + Workaround for standard-compliant but less-than-useful behaviour of + access(2) for the root user. Will merge to 'master'. -* jc/format-patch-delay-message-id (2019-04-05) 1 commit - - format-patch: move message-id and related headers to the end - - The location "git format-patch --thread" adds the Message-Id: - header in the series of header fields has been moved down, which - may help working around a suspected bug in GMail MSA, reported at - - - Waiting for feedback to see if it truly helps. - Needs tests. - - -* tb/unexpected (2019-04-10) 7 commits - (merged to 'next' on 2019-04-25 at c49927fca0) - + rev-list: detect broken root trees - + rev-list: let traversal die when --missing is not in use - + get_commit_tree(): return NULL for broken tree - + list-objects.c: handle unexpected non-tree entries - + list-objects.c: handle unexpected non-blob entries - + t: introduce tests for unexpected object types - + t: move 'hex2oct' into test-lib-functions.sh +* dl/difftool-mergetool (2019-04-25) 6 commits + - difftool: fallback on merge.guitool + - difftool: make --gui, --tool and --extcmd mutually exclusive + - mergetool: fallback to tool when guitool unavailable + - mergetool: use get_merge_tool function + - t7610: add mergetool --gui tests + - t7610: unsuppress output - Code tightening against a "wrong" object appearing where an object - of a different type is expected, instead of blindly assuming that - the connection between objects are correctly made. + Update "git difftool" and "git mergetool" so that the combinations + of {diff,merge}.{tool,guitool} configuration variables serve as + fallback settings of each other in a sensible order. - Will merge to 'master'. + Will merge to 'next'. -* en/merge-directory-renames (2019-04-08) 15 commits - (merged to 'next' on 2019-04-25 at fd5b4f57b4) - + merge-recursive: switch directory rename detection default - + merge-recursive: give callers of handle_content_merge() access to contents - + merge-recursive: track information associated with directory renames - + t6043: fix copied test description to match its purpose - + merge-recursive: switch from (oid,mode) pairs to a diff_filespec - + merge-recursive: cleanup handle_rename_* function signatures - + merge-recursive: track branch where rename occurred in rename struct - + merge-recursive: remove ren[12]_other fields from rename_conflict_info - + merge-recursive: shrink rename_conflict_info - + merge-recursive: move some struct declarations together - + merge-recursive: use 'ci' for rename_conflict_info variable name - + merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf' - + merge-recursive: rename diff_filespec 'one' to 'o' - + merge-recursive: rename merge_options argument from 'o' to 'opt' - + Use 'unsigned short' for mode, like diff_filespec does +* ds/midx-expire-repack (2019-04-25) 11 commits + - t5319-multi-pack-index.sh: test batch size zero + - midx: add test that 'expire' respects .keep files + - multi-pack-index: test expire while adding packs + - midx: implement midx_repack() + - multi-pack-index: prepare 'repack' subcommand + - multi-pack-index: implement 'expire' subcommand + - midx: refactor permutation logic and pack sorting + - midx: simplify computation of pack name lengths + - multi-pack-index: prepare for 'expire' subcommand + - Docs: rearrange subcommands for multi-pack-index + - repack: refactor pack deletion for future use - "git merge-recursive" backend recently learned a new heuristics to - infer file movement based on how other files in the same directory - moved. As this is inherently less robust heuristics than the one - based on the content similarity of the file itself (rather than - based on what its neighbours are doing), it sometimes gives an - outcome unexpected by the end users. This has been toned down to - leave the renamed paths in higher/conflicted stages in the index so - that the user can examine and confirm the result. + "git multi-pack-index expire/repack" are new subcommands that + consult midx file and are used to drop unused pack files and + coalesce small pack files that are still in use. - Will merge to 'master'. + Ready for next? + cf. <20190424151428.170316-1-dstolee@microsoft.com> (v5) -* jt/clone-server-option (2019-04-18) 2 commits - (merged to 'next' on 2019-04-25 at 21f07cc85d) - + clone: send server options when using protocol v2 - + transport: die if server options are unsupported +* es/first-contrib-tutorial (2019-05-08) 2 commits + - documentation: add anchors to MyFirstContribution + - documentation: add tutorial for first contribution - "git clone" learned a new --server-option option when talking over - the protocol version 2. + A new tutorial targetting specifically aspiring git-core + developers. - Will merge to 'master'. + I think we are almost there. + cf. <20190507213040.151799-1-emilyshaffer@google.com> (v5) -* tz/git-svn-doc-markup-fix (2019-04-10) 1 commit - (merged to 'next' on 2019-04-25 at 3efaa6285c) - + Documentation/git-svn: improve asciidoctor compatibility +* pw/clean-sequencer-state-upon-final-commit (2019-04-17) 2 commits + (merged to 'next' on 2019-05-09 at cf6cce8ca7) + + fix cherry-pick/revert status after commit + + commit/reset: try to clean up sequencer state - Doc formatting fix. + "git chery-pick" (and "revert" that shares the same runtime engine) + that deals with multiple commits got confused when the final step + gets stopped with a conflict and the user concluded the sequence + with "git commit". Attempt to fix it by cleaning up the state + files used by these commands in such a situation. Will merge to 'master'. -* ss/msvc-path-utils-fix (2019-04-09) 1 commit - (merged to 'next' on 2019-04-25 at ee2850da18) - + MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path() +* dl/no-extern-in-func-decl (2019-05-05) 3 commits + (merged to 'next' on 2019-05-09 at d165ac4cee) + + *.[ch]: manually align parameter lists + + *.[ch]: remove extern from function declarations using sed + + *.[ch]: remove extern from function declarations using spatch - An earlier update for MinGW and Cygwin accidentally broke MSVC build, - which has been fixed. + Mechanically and systematically drop "extern" from function + declarlation. Will merge to 'master'. +* js/partial-clone-connectivity-check (2019-05-05) 2 commits + - t/perf: add perf script for partial clones + (merged to 'next' on 2019-04-25 at ebd8b4bffd) + + clone: do faster object check for partial clones + + During an initial "git clone --depth=..." partial clone, it is + pointless to spend cycles for a large portion of the connectivity + check that enumerates and skips promisor objects (which by + definition is all objects fetched from the other side). This has + been optimized out. + + Will merge to 'next' and then to 'master'. + + * cc/multi-promisor (2019-04-15) 17 commits - Move core_partial_clone_filter_default to promisor-remote.c - Move repository_format_partial_clone to promisor-remote.c @@ -981,9 +804,9 @@ of the repositories listed at Needs review. -* nd/switch-and-restore (2019-04-12) 43 commits +* nd/switch-and-restore (2019-05-07) 43 commits + - Declare both git-switch and git-restore experimental - help: move git-diff and git-reset to different groups - - rm: add --staged as alias for --cached - doc: promote "git restore" - user-manual.txt: prefer 'merge --abort' over 'reset --hard' - completion: support restore @@ -1035,19 +858,21 @@ of the repositories listed at The "switch" part seems more or less ready for testing. Perhaps we should split this back into two topics and merge it to 'next'. cf. <20190329103919.15642-1-pclouds@gmail.com> (switch v6) - cf. <20190411131218.19195-1-pclouds@gmail.com> (restore v2) + cf. <20190425094600.15673-1-pclouds@gmail.com> (restore v3) * ew/repack-with-bitmaps-by-default (2019-03-18) 3 commits - - pack-objects: default to writing bitmap hash-cache - - t5310: correctly remove bitmaps for jgit test - - repack: enable bitmaps by default on bare repos + (merged to 'next' on 2019-05-09 at 4f8e8b01c8) + + pack-objects: default to writing bitmap hash-cache + + t5310: correctly remove bitmaps for jgit test + + repack: enable bitmaps by default on bare repos The connectivity bitmaps are created by default in bare repositories now; also the pathname hash-cache is created by default to avoid making crappy deltas when repacking. - Will merge to 'next'. + Will merge to 'master'. + cf. <87a7g2iuem.fsf@evledraar.gmail.com> * jc/format-patch-noclobber (2019-02-22) 1 commit @@ -1074,22 +899,6 @@ of the repositories listed at Is this ready for 'next'? -* cc/replace-graft-peel-tags (2019-04-15) 4 commits - (merged to 'next' on 2019-04-25 at f8d0db27ba) - + replace: peel tag when passing a tag first to --graft - + replace: peel tag when passing a tag as parent to --graft - + t6050: redirect expected error output to a file - + t6050: use test_line_count instead of wc -l - - When given a tag that points at a commit-ish, "git replace --graft" - failed to peel the tag before writing a replace ref, which did not - make sense because the old graft mechanism the feature wants to - mimick only allowed to replace one commit object with another. - This has been fixed. - - Will merge to 'master'. - - * dl/rebase-i-keep-base (2019-04-25) 6 commits - rebase: teach rebase --keep-base - rebase: fast-forward --fork-point in more cases @@ -1106,10 +915,13 @@ of the repositories listed at The command also has learned to fast-forward in more cases where it can instead of replaying to recreate identical commits. - Will merge to 'next'. + On hold. + cf. <20190508001252.15752-1-avarab@gmail.com> + cf. -* jh/trace2-sid-fix (2019-04-16) 10 commits +* jh/trace2-sid-fix (2019-05-07) 11 commits + - trace2: fixup access problem on /etc/gitconfig in read_very_early_config (merged to 'next' on 2019-04-25 at a5c08f1226) + trace2: update docs to describe system/global config settings + trace2: make SIDs more unique @@ -1126,116 +938,31 @@ of the repositories listed at configuration can specify site-wide trace2 settings, which can be overridden with per-user configuration and environment variables. - Will merge to 'master'. + Will merge to 'next' and then to 'master'. cf. (v4) -* js/trace2-to-directory (2019-03-22) 1 commit - (merged to 'next' on 2019-04-25 at 53adf71c41) - + trace2: write to directory targets - - The trace2 tracing facility learned to auto-generate a filename - when told to log to a directory. - - Will merge to 'master'. - - -* km/empty-repo-is-still-a-repo (2019-04-10) 3 commits - (merged to 'next' on 2019-04-25 at bb3d4406a5) - + add: error appropriately on repository with no commits - + dir: do not traverse repositories with no commits - + submodule: refuse to add repository with no commits - - Running "git add" on a repository created inside the current - repository is an explicit indication that the user wants to add it - as a submodule, but when the HEAD of the inner repository is on an - unborn branch, it cannot be added as a submodule. Worse, the files - in its working tree can be added as if they are a part of the outer - repository, which is not what the user wants. These problems are - being addressed. - - Will merge to 'master'. - - -* nd/precious (2019-04-09) 1 commit - - Introduce "precious" file concept - - "git clean" learned to pay attention to the 'precious' attributes - and keep untracked paths with the attribute instead of removing - when the "--keep-precious" is given. - - Retracted. - cf. - - I am not sure what aspect of this longer-term "precious" vision, - which gets taught to various commands and use cases individually - and incrementally, Ævar finds problematic, which I understand is - the reason of redtraction. - - -* nd/sha1-name-c-wo-the-repository (2019-04-16) 34 commits - (merged to 'next' on 2019-04-25 at d826918329) - + sha1-name.c: remove the_repo from get_oid_mb() - + sha1-name.c: remove the_repo from other get_oid_* - + sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name - + submodule-config.c: use repo_get_oid for reading .gitmodules - + sha1-name.c: add repo_get_oid() - + sha1-name.c: remove the_repo from get_oid_with_context_1() - + sha1-name.c: remove the_repo from resolve_relative_path() - + sha1-name.c: remove the_repo from diagnose_invalid_index_path() - + sha1-name.c: remove the_repo from handle_one_ref() - + sha1-name.c: remove the_repo from get_oid_1() - + sha1-name.c: remove the_repo from get_oid_basic() - + sha1-name.c: remove the_repo from get_describe_name() - + sha1-name.c: remove the_repo from get_oid_oneline() - + sha1-name.c: add repo_interpret_branch_name() - + sha1-name.c: remove the_repo from interpret_branch_mark() - + sha1-name.c: remove the_repo from interpret_nth_prior_checkout() - + sha1-name.c: remove the_repo from get_short_oid() - + sha1-name.c: add repo_for_each_abbrev() - + sha1-name.c: store and use repo in struct disambiguate_state - + sha1-name.c: add repo_find_unique_abbrev_r() - + sha1-name.c: remove the_repo from find_abbrev_len_packed() - + sha1-name.c: remove the_repo from sort_ambiguous() - + commit.c: add repo_get_commit_tree() - + commit.cocci: refactor code, avoid double rewrite - + refs.c: remove the_repo from read_ref_at() - + refs.c: add repo_dwim_log() - + refs.c: add repo_dwim_ref() - + refs.c: remove the_repo from expand_ref() - + refs.c: remove the_repo from substitute_branch_name() - + refs.c: add refs_shorten_unambiguous_ref() - + refs.c: add refs_ref_exists() - + packfile.c: add repo_approximate_object_count() - + builtin rebase: use oideq() - + builtin rebase: use FREE_AND_NULL - - Further code clean-up to allow the lowest level of name-to-object - mapping layer to work with a passed-in repository other than the - default one. - - Will merge to 'master'. - - * pw/rebase-i-internal (2019-04-19) 13 commits - - rebase -i: run without forking rebase--interactive - - rebase: use a common action enum - - rebase -i: use struct rebase_options in do_interactive_rebase() - - rebase -i: use struct rebase_options to parse args - - rebase -i: use struct object_id for squash_onto - - rebase -i: use struct commit when parsing options - - rebase -i: remove duplication - - rebase -i: combine rebase--interactive.c with rebase.c - - rebase: use OPT_RERERE_AUTOUPDATE() - - rebase: rename write_basic_state() - - rebase: don't translate trace strings - - sequencer: always discard index after checkout - - Merge branch 'ag/sequencer-reduce-rewriting-todo' into pw/rebase-i-internal + (merged to 'next' on 2019-05-09 at 1206aa6865) + + rebase -i: run without forking rebase--interactive + + rebase: use a common action enum + + rebase -i: use struct rebase_options in do_interactive_rebase() + + rebase -i: use struct rebase_options to parse args + + rebase -i: use struct object_id for squash_onto + + rebase -i: use struct commit when parsing options + + rebase -i: remove duplication + + rebase -i: combine rebase--interactive.c with rebase.c + + rebase: use OPT_RERERE_AUTOUPDATE() + + rebase: rename write_basic_state() + + rebase: don't translate trace strings + + sequencer: always discard index after checkout + + Merge branch 'ag/sequencer-reduce-rewriting-todo' into pw/rebase-i-internal + (this branch is used by pw/rebase-abort-clean-rewritten.) The internal implementation of "git rebase -i" has been updated to avoid forking a separate "rebase--interactive" process. - Will merge to 'next'. + Will merge to 'master'. * nd/worktree-name-sanitization (2019-03-20) 2 commits @@ -1251,27 +978,19 @@ of the repositories listed at to 'next'. Opinions? -* dm/some-stdio-functions-are-macro-on-freebsd (2019-02-01) 1 commit - - http: cast result to FILE * - - Variants of BSD define fileno(fh) as a macro, breaking a program - that passes a "void *" to it. - - Expecting a reroll. - cf. <49B9198C-53E5-42BD-8834-B1EDEB3332CB@usask.ca> - - -* ds/commit-graph-format-v2 (2019-04-25) 5 commits +* ds/commit-graph-format-v2 (2019-05-08) 6 commits + - commit-graph: remove Future Work section - commit-graph: implement file format version 2 - commit-graph: add --version= option - - commit-graph: create new version flags + - commit-graph: create new version parameter - commit-graph: collapse parameters into flags - commit-graph: return with errors during write Introduce version 2 of the commit-graph format to correct deficiency in the initial version. - cf. (v2) + Still actively discussed. + cf. (v3) * br/blame-ignore (2019-04-14) 6 commits @@ -1290,47 +1009,56 @@ of the repositories listed at cf. cf. <3db6bad3-e7a5-af1d-3fe2-321bd17db2c6@google.com> +-------------------------------------------------- +[Discarded] + +* nd/precious (2019-04-09) 1 commit + - Introduce "precious" file concept + + "git clean" learned to pay attention to the 'precious' attributes + and keep untracked paths with the attribute instead of removing + when the "--keep-precious" is given. + + Retracted. + cf. + + I am not sure what aspect of this longer-term "precious" vision, + which gets taught to various commands and use cases individually + and incrementally, Ævar finds problematic, which I understand is + the reason of redtraction. + * nd/config-move-to (2019-01-14) 7 commits - - config.h: fix hdr-check warnings - - config: add --move-to - - config: factor out set_config_source_file() - - config: use OPT_FILENAME() - - config.c: add repo_config_set_worktree_gently() - - worktree.c: add get_worktree_config() - - config.c: avoid git_path() in do_git_config_sequence() + . config.h: fix hdr-check warnings + . config: add --move-to + . config: factor out set_config_source_file() + . config: use OPT_FILENAME() + . config.c: add repo_config_set_worktree_gently() + . worktree.c: add get_worktree_config() + . config.c: avoid git_path() in do_git_config_sequence() - Needs review. + Dropped. + cf. -* dl/merge-cleanup-scissors-fix (2019-04-19) 10 commits - (merged to 'next' on 2019-04-25 at 2014eef6b1) - + cherry-pick/revert: add scissors line on merge conflict - + sequencer.c: save and restore cleanup mode - + merge: add scissors line on merge conflict - + merge: cleanup messages like commit - + parse-options.h: extract common --cleanup option - + commit: extract cleanup_mode functions to sequencer - + t7502: clean up style - + t7604: clean up style - + t3507: clean up style - + t7600: clean up style - (this branch uses pw/sequencer-cleanup-with-signoff-x-fix.) +* dm/some-stdio-functions-are-macro-on-freebsd (2019-02-01) 1 commit + . http: cast result to FILE * - The list of conflicted paths shown in the editor while concluding a - conflicted merge was shown above the scissors line when the - clean-up mode is set to "scissors", even though it was commented - out just like the list of updated paths and other information to - help the user explain the merge better. + Variants of BSD define fileno(fh) as a macro, breaking a program + that passes a "void *" to it. - Will merge to 'master'. + Can be safely discarded. + cf. -* jn/unknown-index-extensions (2018-11-21) 2 commits - - index: offer advice for unknown index extensions - - index: do not warn about unrecognized extensions +* hs/send-email-transferencoding-fix (2019-04-10) 1 commit + . send-email: honor transferencoding config option again - A bit too alarming warning given when unknown index extensions - exist is getting revamped. + Since "git send-email" learned to take 'auto' as the value for the + transfer-encoding, it by mistake stopped honoring the values given + to the configuration variables sendemail.transferencoding and/or + sendemail..transferencoding. Attempt to correct this. - Expecting a reroll. + Not quite. + cf. + Replaced by jc/send-email-transferencoding-fix