diff --git a/whats-cooking.txt b/whats-cooking.txt index cb93e40182..1905c23322 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 (Jul 2018, #01; Wed, 11) -X-master-at: e3331758f12da22f4103eec7efe1b5304a9be5e9 -X-next-at: 985f88cf7ec28de3542ce98ac5b660da6e59caf0 +Subject: What's cooking in git.git (Jul 2018, #02; Wed, 18) +X-master-at: b7bd9486b055c3f967a870311e704e3bb0654e4f +X-next-at: 5c9ce644c390ec4ef3ba4adc94e7f4af17ade36b -What's cooking in git.git (Jul 2018, #01; Wed, 11) +What's cooking in git.git (Jul 2018, #02; Wed, 18) -------------------------------------------------- Here are the topics that have been cooking. Commits prefixed with @@ -12,10 +12,15 @@ 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 tip of 'next' has been rewound and it currently has only 4 -topics. Quite a many topics are cooking in 'pu' and need to be -sifted into good bins (for 'next') and the remainder. Help is -appreciated in that area ;-) +Many topics have moved to 'master' and 'next' from 'next' to 'pu' +respectively. As I needed to re-resolve semantic merge conflicts +while reordering some topics (i.e. some that were merged earlier in +'pu' are left in 'pu' while another topic that had interactions with +them and required evil merge to resolve semantic conflicts +leapfrogged to 'next'---the semantic conflict resolution then need +to happen at a different merge than done earlier in 'pu' while +rebuilding today's integration), I didn't have enough time to spend +on new topics posted to the list in the past few days. You can find the changes described here in the integration branches of the repositories listed at @@ -23,41 +28,166 @@ of the repositories listed at http://git-blame.blogspot.com/p/git-public-repositories.html -------------------------------------------------- -[New Topics] +[Graduated to "master"] -* ag/rebase-i-in-c (2018-07-10) 13 commits - - rebase -i: rewrite the rest of init_revisions_and_shortrevisions in C - - rebase -i: implement the logic to initialize the variable $revision in C - - rebase--interactive: remove unused modes and functions - - rebase--interactive: rewrite complete_action() in C - - sequencer: change the way skip_unnecessary_picks() returns its result - - sequencer: refactor append_todo_help() to write its message to a buffer - - rebase -i: rewrite checkout_onto() in C - - rebase -i: rewrite setup_reflog_action() in C - - sequencer: add a new function to silence a command, except if it fails - - rebase-interactive: rewrite the edit-todo functionality in C - - editor: add a function to launch the sequence editor - - rebase--interactive: rewrite append_todo_help() in C - - sequencer: make two functions and an enum from sequencer.c public +* ao/config-from-gitmodules (2018-06-26) 6 commits + (merged to 'next' on 2018-07-11 at 5d88dc6fb7) + + submodule-config: reuse config_from_gitmodules in repo_read_gitmodules + + submodule-config: pass repository as argument to config_from_gitmodules + + submodule-config: make 'config_from_gitmodules' private + + submodule-config: add helper to get 'update-clone' config from .gitmodules + + submodule-config: add helper function to get 'fetch' config from .gitmodules + + config: move config_from_gitmodules to submodule-config.c - Piecemeal rewrite of the remaining "rebase -i" machinery in C. - - Expecting a reroll. - - The early parts of the series seem solidifying; perhaps with a - reroll or two, they become 'next' material? + Tighten the API to make it harder to misuse in-tree .gitmodules + file, even though it shares the same syntax with configuration + files, to read random configuration items from it. -* en/apply-comment-fix (2018-06-28) 1 commit - - apply: fix grammar error in comment +* bw/config-refer-to-gitsubmodules-doc (2018-06-21) 1 commit + (merged to 'next' on 2018-06-29 at da6f49d292) + + docs: link to gitsubmodules - Will merge to 'next'. + Docfix. -* en/t5407-rebase-m-fix (2018-06-28) 1 commit - - t5407: fix test to cover intended arguments +* bw/protocol-v2 (2018-06-22) 1 commit + (merged to 'next' on 2018-06-29 at 78090cc343) + + protocol-v2 doc: put HTTP headers after request - Will merge to 'next'. + Doc fix. + + +* dj/runtime-prefix (2018-06-26) 1 commit + (merged to 'next' on 2018-07-11 at 27d99fef94) + + Makefile: tweak sed invocation + + POSIX portability fix in Makefile to fix a glitch introduced a few + releases ago. + + +* ds/commit-graph (2018-06-28) 1 commit + (merged to 'next' on 2018-07-11 at d579f733ed) + + commit-graph: fix documentation inconsistencies + + Docfix. + + +* ds/ewah-cleanup (2018-06-21) 10 commits + (merged to 'next' on 2018-06-28 at 9cd7c0d54a) + + ewah: delete unused 'rlwit_discharge_empty()' + + ewah: drop ewah_serialize_native function + + ewah: drop ewah_deserialize function + + ewah_io: delete unused 'ewah_serialize()' + + ewah_bitmap: delete unused 'ewah_or()' + + ewah_bitmap: delete unused 'ewah_not()' + + ewah_bitmap: delete unused 'ewah_and_not()' + + ewah_bitmap: delete unused 'ewah_and()' + + ewah/bitmap.c: delete unused 'bitmap_each_bit()' + + ewah/bitmap.c: delete unused 'bitmap_clear()' + + Originally merged to 'next' on 2018-06-22 + + Remove unused function definitions and declarations from ewah + bitmap subsystem. + + +* en/merge-recursive-cleanup (2018-06-12) 6 commits + (merged to 'next' on 2018-06-28 at 1a3646eb7d) + + merge-recursive: add pointer about unduly complex looking code + + merge-recursive: rename conflict_rename_*() family of functions + + merge-recursive: clarify the rename_dir/RENAME_DIR meaning + + merge-recursive: align labels with their respective code blocks + + merge-recursive: fix numerous argument alignment issues + + merge-recursive: fix miscellaneous grammar error in comment + + Originally merged to 'next' on 2018-06-19 + + Code cleanup. + + +* en/rebase-i-microfixes (2018-06-27) 3 commits + (merged to 'next' on 2018-07-11 at d913ca0f77) + + git-rebase--merge: modernize "git-$cmd" to "git $cmd" + + Fix use of strategy options with interactive rebases + + t3418: add testcase showing problems with rebase -i and strategy options + + Will merge to 'master'. + + +* jk/branch-l-0-deprecation (2018-06-22) 3 commits + (merged to 'next' on 2018-06-29 at fac676dfb9) + + branch: deprecate "-l" option + + t: switch "branch -l" to "branch --create-reflog" + + t3200: unset core.logallrefupdates when testing reflog creation + (this branch is used by jk/branch-l-1-repurpose.) + + The "-l" option in "git branch -l" is an unfortunate short-hand for + "--create-reflog", but many users, both old and new, somehow expect + it to be something else, perhaps "--list". This step warns when "-l" + is used as a short-hand for "--create-reflog" and warns about the + future repurposing of the it when it is used. + + +* js/enhanced-version-info (2018-06-29) 1 commit + (merged to 'next' on 2018-07-11 at 815b2ea2bc) + + Makefile: fix the "built from commit" code + + Build fix. + + +* js/rebase-recreate-merge (2018-06-27) 1 commit + (merged to 'next' on 2018-07-11 at eb8f33aaef) + + rebase: fix documentation formatting + + Docfix. + + +* jt/remove-pack-bitmap-global (2018-06-21) 2 commits + (merged to 'next' on 2018-06-29 at 852857b04e) + + pack-bitmap: add free function + + pack-bitmap: remove bitmap_git global variable + + The effort to move globals to per-repository in-core structure + continues. + + +* ld/p423 (2018-06-19) 6 commits + (merged to 'next' on 2018-06-29 at af76acb664) + + git-p4: python3: fix octal constants + + git-p4: python3: use print() function + + git-p4: python3: basestring workaround + + git-p4: python3: remove backticks + + git-p4: python3: replace dict.has_key(k) with "k in dict" + + git-p4: python3: replace <> with != + + Code preparation to make "git p4" closer to be usable with Python 3. + + +* mb/filter-branch-optim (2018-06-26) 1 commit + (merged to 'next' on 2018-07-11 at e43a0136c2) + + filter-branch: skip commits present on --state-branch + + "git filter-branch" when used with the "--state-branch" option + still attempted to rewrite the commits whose filtered result is + known from the previous attempt (which is recorded on the state + branch); the command has been corrected not to waste cycles doing + so. + + +* ms/core-icase-doc (2018-06-28) 1 commit + (merged to 'next' on 2018-07-11 at 8f0d71c32d) + + Documentation: declare "core.ignoreCase" as internal variable + + Clarify that setting core.ignoreCase to deviate from reality would + not turn a case-incapable filesystem into a case-capable one. + + +* pw/rebase-i-keep-reword-after-conflict (2018-06-19) 1 commit + (merged to 'next' on 2018-06-29 at 538337be74) + + sequencer: do not squash 'reword' commits when we hit conflicts + + Bugfix for "rebase -i" corner case regression. * sb/mailmap (2018-06-29) 1 commit @@ -67,408 +197,359 @@ of the repositories listed at Will merge to 'master'. -* sb/object-store-lookup (2018-06-29) 33 commits - - commit.c: allow lookup_commit_reference to handle arbitrary repositories - - commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories - - tag.c: allow deref_tag to handle arbitrary repositories - - object.c: allow parse_object to handle arbitrary repositories - - object.c: allow parse_object_buffer to handle arbitrary repositories - - commit.c: allow get_cached_commit_buffer to handle arbitrary repositories - - commit.c: allow set_commit_buffer to handle arbitrary repositories - - commit.c: migrate the commit buffer to the parsed object store - - commit-slabs: remove realloc counter outside of slab struct - - commit.c: allow parse_commit_buffer to handle arbitrary repositories - - tag: allow parse_tag_buffer to handle arbitrary repositories - - tag: allow lookup_tag to handle arbitrary repositories - - commit: allow lookup_commit to handle arbitrary repositories - - tree: allow lookup_tree to handle arbitrary repositories - - blob: allow lookup_blob to handle arbitrary repositories - - object: allow lookup_object to handle arbitrary repositories - - object: allow object_as_type to handle arbitrary repositories - - tag: add repository argument to deref_tag - - tag: add repository argument to parse_tag_buffer - - tag: add repository argument to lookup_tag - - commit: add repository argument to get_cached_commit_buffer - - commit: add repository argument to set_commit_buffer - - commit: add repository argument to parse_commit_buffer - - commit: add repository argument to lookup_commit - - commit: add repository argument to lookup_commit_reference - - commit: add repository argument to lookup_commit_reference_gently - - tree: add repository argument to lookup_tree - - blob: add repository argument to lookup_blob - - object: add repository argument to object_as_type - - object: add repository argument to parse_object_buffer - - object: add repository argument to lookup_object - - object: add repository argument to parse_object - - Merge branch 'sb/object-store-grafts' into sb/object-store-lookup - (this branch uses sb/object-store-grafts.) +* sb/object-store-grafts (2018-05-18) 19 commits + (merged to 'next' on 2018-06-28 at 02f70d6302) + + 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 global 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 is used by jt/commit-graph-per-object-store and sb/object-store-lookup.) - lookup_commit_reference() and friends have been updated to find - in-core object for a specific in-core repository instance. + Originally merged to 'next' on 2018-06-22 - Will merge to 'next'. + The conversion to pass "the_repository" and then "a_repository" + throughout the object access API continues. -* ag/rebase-p (2018-07-06) 1 commit - - git-rebase--preserve-merges: fix formatting of todo help message +* sb/submodule-core-worktree (2018-06-19) 3 commits + (merged to 'next' on 2018-06-28 at 96e1a8dbd1) + + submodule deinit: unset core.worktree + + submodule: ensure core.worktree is set after update + + submodule: unset core.worktree if no working tree is present - The help message shown in the editor to edit todo list in "rebase -p" - has regressed recently, which has been corrected. + Originally merged to 'next' on 2018-06-22 - Will merge to 'next'. - - -* bb/pedantic (2018-07-09) 8 commits - - utf8.c: avoid char overflow - - string-list.c: avoid conversion from void * to function pointer - - sequencer.c: avoid empty statements at top level - - convert.c: replace "\e" escapes with "\033". - - fixup! refs/refs-internal.h: avoid forward declaration of an enum - - refs/refs-internal.h: avoid forward declaration of an enum - - fixup! connect.h: avoid forward declaration of an enum - - connect.h: avoid forward declaration of an enum - - The codebase has been updated to compile cleanly with -pedantic - option. - - Will merge to 'next'. - - -* bb/unicode-11-width (2018-07-09) 1 commit - - unicode: update the width tables to Unicode 11 - - The character display width table has been updated to match the - latest Unicode standard. - - Will merge to 'next'. - - -* bc/object-id (2018-07-09) 17 commits - - pretty: switch hard-coded constants to the_hash_algo - - sha1-file: convert constants to uses of the_hash_algo - - log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz - - diff: switch GIT_SHA1_HEXSZ to use the_hash_algo - - builtin/merge-recursive: make hash independent - - builtin/merge: switch to use the_hash_algo - - builtin/fmt-merge-msg: make hash independent - - builtin/update-index: simplify parsing of cacheinfo - - builtin/update-index: convert to using the_hash_algo - - refs/files-backend: use the_hash_algo for writing refs - - commit: increase commit message buffer size - - sha1-name: use the_hash_algo when parsing object names - - strbuf: allocate space with GIT_MAX_HEXSZ - - commit: express tree entry constants in terms of the_hash_algo - - hex: switch to using the_hash_algo - - tree-walk: replace hard-coded constants with the_hash_algo - - cache: update object ID functions for the_hash_algo - - Conversion from uchar[40] to struct object_id continues. - - Expecting a reroll. - cf. <20180709232656.GA535220@genre.crustytoothpaste.net> - - -* bc/send-email-auto-cte (2018-07-09) 4 commits - - docs: correct RFC specifying email line length - - send-email: automatically determine transfer-encoding - - send-email: accept long lines with suitable transfer encoding - - send-email: add an auto option for transfer encoding - - The content-transfer-encoding of the message "git send-email" sends - out by default was 8bit, which can cause trouble when there is an - overlong line to bust RFC 5322/2822 limit. A new option 'auto' to - automatically switch to quoted-printable when there is such a line - in the payload has been introduced and is made the default. - - Will merge to 'next'. - - -* en/dirty-merge-fixes (2018-07-11) 9 commits - - merge: fix misleading pre-merge check documentation - - merge-recursive: enforce rule that index matches head before merging - - t6044: add more testcases with staged changes before a merge is invoked - - merge-recursive: fix assumption that head tree being merged is HEAD - - merge-recursive: make sure when we say we abort that we actually abort - - t6044: add a testcase for index matching head, when head doesn't match HEAD - - t6044: verify that merges expected to abort actually abort - - index_has_changes(): avoid assuming operating on the_index - - read-cache.c: move index_has_changes() from merge.c - - The recursive merge strategy did not properly ensure there was no - change between HEAD and the index before performing its operation, - which has been corrected. - - Will merge to 'next'. - - -* en/t6036-merge-recursive-tests (2018-07-11) 6 commits - - t6036: add a failed conflict detection case: regular files, different modes - - t6036: add a failed conflict detection case with conflicting types - - t6036: add a failed conflict detection case with submodule add/add - - t6036: add a failed conflict detection case with submodule modify/modify - - t6036: add a failed conflict detection case with symlink add/add - - t6036: add a failed conflict detection case with symlink modify/modify - - Tests to cover various conflicting cases have been added for - merge-recursive. - - Will merge to 'next'. - - -* en/t6036-recursive-corner-cases (2018-07-06) 1 commit - - t6036: add lots of detail for directory/file conflicts in recursive case - - Tests to cover more D/F conflict cases have been added for - merge-recursive. - - Will merge to 'next'. - - -* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits - - t6042: add testcase covering long chains of rename conflicts - - t6042: add testcase covering rename/rename(2to1)/delete/delete conflict - - t6042: add testcase covering rename/add/delete conflict type - - Various glitches in the heuristics of merge-recursive strategy have - been documented in new tests. - - Will merge to 'next'. - - I am not sure if there is a single "correct" answer everybody can - agree on for each of these "insane" cases, though. - - -* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits - - t7405: verify 'merge --abort' works after submodule/path conflicts - - t7405: add a directory/submodule conflict - - t7405: add a file/submodule conflict - - Tests to cover conflict cases that involve submodules have been - added for merge-recursive. - - Will merge to 'next'. - - -* es/test-fixes (2018-07-03) 25 commits - - t9119: fix broken &&-chains - - t9000-t9999: fix broken &&-chains - - t7000-t7999: fix broken &&-chains - - t6000-t6999: fix broken &&-chains - - t5000-t5999: fix broken &&-chains - - t4000-t4999: fix broken &&-chains - - t3030: fix broken &&-chains - - t3000-t3999: fix broken &&-chains - - t2000-t2999: fix broken &&-chains - - t1000-t1999: fix broken &&-chains - - t0000-t0999: fix broken &&-chains - - t9814: simplify convoluted check that command correctly errors out - - t9001: fix broken "invoke hook" test - - t7810: use test_expect_code() instead of hand-rolled comparison - - t7400: fix broken "submodule add/reconfigure --force" test - - t7201: drop pointless "exit 0" at end of subshell - - t6036: fix broken "merge fails but has appropriate contents" tests - - t5505: modernize and simplify hard-to-digest test - - t5406: use write_script() instead of birthing shell script manually - - t5405: use test_must_fail() instead of checking exit code manually - - t/lib-submodule-update: fix "absorbing" test - - t: drop unnecessary terminating semicolon in subshell - - t: use sane_unset() rather than 'unset' with broken &&-chain - - t: use test_write_lines() instead of series of 'echo' commands - - t: use test_might_fail() instead of manipulating exit code manually - - Test clean-up and corrections. - - Will merge to 'next'. - - -* jk/empty-pick-fix (2018-07-11) 2 commits - - sequencer: don't say BUG on bogus input - - sequencer: handle empty-set cases consistently - - Handling of an empty range by "git cherry-pick" was inconsistent - depending on how the range ended up to be empty, which has been + "git submodule" did not correctly adjust core.worktree setting that + indicates whether/where a submodule repository has its associated + working tree across various state transitions, which has been corrected. - Will merge to 'next'. + +* tb/grep-column (2018-06-22) 7 commits + (merged to 'next' on 2018-06-29 at 25dc70426e) + + contrib/git-jump/git-jump: jump to exact location + + 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 {,inverted} match column in match_line() + + Documentation/config.txt: camel-case lineNumber for consistency + (this branch is used by tb/grep-only-matching.) + + "git grep" learned the "--column" option that gives not just the + line number but the column number of the hit. -* jk/fetch-all-peeled-fix (2018-07-06) 1 commit - - t5500: prettify non-commit tag tests +* tz/exclude-doc-smallfixes (2018-06-27) 2 commits + (merged to 'next' on 2018-07-11 at 5134f1ca72) + + dir.c: fix typos in core.excludesfile comment + + gitignore.txt: clarify default core.excludesfile path - Test modernization. + Doc updates. + + +* vs/typofixes (2018-06-22) 1 commit + (merged to 'next' on 2018-06-29 at 665c8db2f7) + + Documentation: spelling and grammar fixes + + Doc fix. + + +* xy/format-patch-prereq-patch-id-fix (2018-06-19) 1 commit + (merged to 'next' on 2018-06-29 at 0dffc46ce2) + + format-patch: clear UNINTERESTING flag before prepare_bases + + Recently added "--base" option to "git format-patch" command did + not correctly generate prereq patch ids. + +-------------------------------------------------- +[New Topics] + +* am/sequencer-author-script-fix (2018-07-18) 1 commit + - sequencer.c: terminate the last line of author-script properly + + The author-script that records the author information created by + the sequencer machinery lacked the closing single quote on the last + entry. + + Fixing this alone may or may not break the reader that may have + been compensating for this bogus writer. I think I saw another fix + to the same source file posted today---if we are fixing, we should + fix them all at the same time to keep the reader and the writer in + sync. + + +* bc/sequencer-export-work-tree-as-well (2018-07-16) 1 commit + - sequencer: pass absolute GIT_WORK_TREE to exec commands + + "git rebase" started exporting GIT_DIR environment variable and + exposing it to hook scripts when part of it got rewritten in C. + Instead of matching the old scripted Porcelains' behaviour, + compensate by also exporting GIT_WORK_TREE environment as well to + lessen the damage. This can harm existing hooks that want to + operate on different repository, but the current behaviour is + already broken for them anyway. Will merge to 'next'. -* jk/for-each-ref-icase (2018-07-03) 3 commits - - ref-filter: avoid backend filtering with --ignore-case - - for-each-ref: consistently pass WM_IGNORECASE flag - - t6300: add a test for --ignore-case +* bp/test-drop-caches-for-windows (2018-07-12) 1 commit + - handle lower case drive letters on Windows - The "--ignore-case" option of "git for-each-ref" (and its friends) - did not work correctly, which has been fixed. + A test helper update for Windows. Will merge to 'next'. -* jk/fsck-gitmodules-gently (2018-07-03) 5 commits - - fsck: silence stderr when parsing .gitmodules - - fsck: silence stderr when parsing .gitmodules - - config: add options parameter to git_config_from_mem - - config: add CONFIG_ERROR_SILENT handler - - config: turn die_on_error into caller-facing enum +* en/abort-df-conflict-fixes (2018-07-16) 2 commits + - read-cache: fix directory/file conflict handling in read_index_unmerged() + - t1015: demonstrate directory/file conflict recovery failures - What's the status of this one? + "git merge --abort" etc. did not clean things up properly when + there were conflicted entries in certain order that are involved + in D/F conflicts. This has been corrected. + + This may have to be rebased on an older maintenance track before + moving forward. -* js/range-diff (2018-07-09) 20 commits - - range-diff: make --dual-color the default mode - - range-diff: left-pad patch numbers - - completion: support `git range-diff` - - range-diff: add a man page - - range-diff --dual-color: work around bogus white-space warning - - range-diff: offer to dual-color the diffs - - diff: add an internal option to dual-color diffs of diffs - - color: add the meta color GIT_COLOR_REVERSE - - range-diff: use color for the commit pairs - - range-diff: add tests - - range-diff: do not show "function names" in hunk headers - - range-diff: adjust the output of the commit pairs - - range-diff: suppress the diff headers - - range-diff: indent the diffs just like tbdiff - - range-diff: right-trim commit messages - - range-diff: also show the diff between patches - - range-diff: improve the order of the shown commits - - range-diff: first rudimentary implementation - - Introduce `range-diff` to compare iterations of a topic branch - - linear-assignment: a function to solve least-cost assignment problems +* es/chain-lint-in-subshell (2018-07-17) 10 commits + - t/chainlint: add chainlint "specialized" test cases + - t/chainlint: add chainlint "complex" test cases + - t/chainlint: add chainlint "cuddled" test cases + - t/chainlint: add chainlint "loop" and "conditional" test cases + - t/chainlint: add chainlint "nested subshell" test cases + - t/chainlint: add chainlint "one-liner" test cases + - t/chainlint: add chainlint "whitespace" test cases + - t/chainlint: add chainlint "basic" test cases + - t/Makefile: add machinery to check correctness of chainlint.sed + - t/test-lib: teach --chain-lint to detect broken &&-chains in subshells + (this branch uses es/test-fixes.) - "git tbdiff" that lets us compare individual patches in two - iterations of a topic has been rewritten and made into a built-in - command. - - Supersedes js/branch-diff topic that added a similar command under - a different name. - - -* jt/commit-graph-per-object-store (2018-07-09) 6 commits - . commit-graph: add repo arg to graph readers - . commit-graph: store graph in struct object_store - . commit-graph: add free_commit_graph - . commit-graph: add missing forward declaration - . object-store: add missing include - . commit-graph: refactor preparing commit graph - (this branch uses ds/commit-graph-fsck.) - - The singleton commit-graph in-core instance is made per in-core - repository instance. - - Expecting a reroll, as it breaks 32-bit build. - cf. https://travis-ci.org/git/git/jobs/402422108 - - -* jt/partial-clone-fsck-connectivity (2018-07-09) 2 commits - - clone: check connectivity even if clone is partial - - upload-pack: send refs' objects despite "filter" - (this branch uses bw/ref-in-want and jt/connectivity-check-after-unshallow.) - - Partial clone support of "git clone" has been updated to correctly - validate the objects it receives from the other side. The server - side has been corrected to send objects that are directly - requested, even if they may match the filtering criteria (e.g. when - doing a "lazy blob" partial clone). + Look for broken "&&" chains that are hidden in subshell, many of + which have been found and corrected. Will merge to 'next'. -* kg/gc-auto-windows-workaround (2018-07-09) 1 commit - - gc --auto: release pack files before auto packing +* es/test-lint-one-shot-export (2018-07-16) 5 commits + (merged to 'next' on 2018-07-18 at 26a6124963) + + t/check-non-portable-shell: detect "FOO=bar shell_func" + + t/check-non-portable-shell: make error messages more compact + + t/check-non-portable-shell: stop being so polite + + t6046/t9833: fix use of "VAR=VAL cmd" with a shell function + + Merge branch 'jc/t3404-one-shot-export-fix' into es/test-lint-one-shot-export + (this branch uses jc/t3404-one-shot-export-fix.) - "git gc --auto" opens file descriptors for the packfiles before - spawning "git repack/prune", which would upset Windows that does - not want a process to work on a file that is open by another - process. The issue has been worked around. + Look for broken use of "vAR=VAL shell_func" in test scripts as part + of test-lint. + + Will merge to 'master'. + + +* hs/gpgsm (2018-07-18) 7 commits + - gpg-interface t: extend the existing GPG tests with GPGSM + - gpg-interface: introduce new signature format "x509" using gpgsm + - gpg-interface: introduce new config to select per gpg format program + - gpg-interface: do not hardcode the key string len anymore + - gpg-interface: introduce an abstraction for multiple gpg formats + - t/t7510: check the validation of the new config gpg.format + - gpg-interface: add new config to select how to sign a commit + (this branch uses hs/push-cert-check-cleanup.) + + Teach "git tag -s" etc. a few configuration varaibles (gpg.format + that can be set to "openpgp" or "x509", and gpg..program + that is used to specify what program to use to deal with the format) + to allow x.509 certs with CMS via "gpgsm" to be used instead of + openpgp via "gnupg". + + I think this round is mostly ready, except for a minor nit in the + last step. I do not mind merging this to 'next' and leave fixing + of the test to a later clean-up. + + +* jc/t3404-one-shot-export-fix (2018-07-12) 1 commit + (merged to 'next' on 2018-07-18 at e15a79dca7) + + t3404: fix use of "VAR=VAL cmd" with a shell function + (this branch is used by es/test-lint-one-shot-export.) + + Correct a broken use of "VAR=VAL shell_func" in a test. + + Will merge to 'master'. + + +* jk/has-uncommitted-changes-fix (2018-07-11) 1 commit + - has_uncommitted_changes(): fall back to empty tree + + "git pull --rebase" on a corrupt HEAD caused a segfault. In + general we substitute an empty tree object when running the in-core + equivalent of the diff-index command, and the codepath has been + corrected to do so as well to fix this issue. Will merge to 'next'. -* kn/userdiff-php (2018-07-06) 2 commits - - userdiff: support new keywords in PHP hunk header - - t4018: add missing test cases for PHP +* jm/send-email-tls-auth-on-batch (2018-07-16) 1 commit + - send-email: fix tls AUTH when sending batch - The userdiff pattern for .php has been updated. + "git send-email" when using in a batched mode that limits the + number of messages sent in a single SMTP session lost the contents + of the variable used to choose between tls/ssl, unable to send the + second and later batches, which has been fixed. + + Will merge to 'next'. + + This is marked to be merged to 'next' already, but I do not mind + getting an updated version with an improved log message before that + happens. + + +* jn/gc-auto (2018-07-17) 3 commits + - gc: do not return error for prior errors in daemonized mode + - gc: exit with status 128 on failure + - gc: improve handling of errors reading gc.log + + "gc --auto" ended up calling exit(-1) upon error, which has been + corrected to use exit(1). Also the error reporting behaviour when + daemonized has been updated to exit with zero status when stopping + due to a previously discovered error (which implies there is no + point running gc to improve the situation); we used to exit with + failure in such a case. + + Under discussion. + cf. <20180717201348.GD26218@sigill.intra.peff.net> + + +* js/rebase-merge-octopus (2018-07-11) 3 commits + - rebase --rebase-merges: adjust man page for octopus support + - rebase --rebase-merges: add support for octopus merges + - merge: allow reading the merge commit message from a file + + "git rebase --rebase-merges" mode now handles octopus merges as + well. Will merge to 'next'. -* lt/date-human (2018-07-09) 1 commit - - Add 'human' date format +* jt/fetch-negotiator-skipping (2018-07-16) 1 commit + - negotiator/skipping: skip commits during fetch + (this branch uses jt/fetch-pack-negotiator; is tangled with jt/fetch-nego-tip.) - -* mh/fast-import-no-diff-delta-empty (2018-07-06) 1 commit - - fast-import: do not call diff_delta() with empty buffer - - "git fast-import" has been updated to avoid attempting to create - delta against a zero-byte-long string, which is pointless. + Add a server-side knob to skip commits in exponential/fibbonacci + stride in an attempt to cover wider swath of history with a smaller + number of iterations, potentially accepting a larger packfile + transfer, instead of going back one commit a time during common + ancestor discovery during the "git fetch" transaction. Will merge to 'next'. -* ot/ref-filter-object-info (2018-07-09) 4 commits - . ref-filter: use oid_object_info() to get object - . ref-filter: merge get_obj and get_object - . ref-filter: add empty values to technical fields - . ref-filter: add info_source to valid_atom +* jt/tags-to-promised-blobs-fix (2018-07-16) 2 commits + - tag: don't warn if target is missing but promised + - revision: tolerate promised targets of tags + (this branch uses bw/ref-in-want, jt/connectivity-check-after-unshallow and jt/partial-clone-fsck-connectivity.) - Expecting a reroll, as it breaks compilation with uninitialized var. - cf. https://travis-ci.org/git/git/jobs/402422102 - - -* pk/rebase-in-c (2018-07-09) 4 commits - - builtin/rebase: support running "git rebase " - - sequencer: refactor the code to detach HEAD to checkout.c - - rebase: refactor common shell functions into their own file - - rebase: start implementing it as a builtin - - Piecemeal rewrite of the "rebase" machinery in C. - - Expecting a reroll, but it seems that this is getting quite close. - cf. - - -* tb/config-default (2018-07-06) 1 commit - - builtin/config: work around an unsized array forward declaration - - Compilation fix. + The lazy clone support had a few places where missing but promised + objects were not correctly tolerated, which have been fixed. Will merge to 'next'. -* bp/log-ref-write-fd-with-strbuf (2018-07-10) 1 commit - - convert log_ref_write_fd() to use strbuf +* nd/command-list (2018-07-16) 1 commit + (merged to 'next' on 2018-07-18 at 77ed2a3914) + + vcbuild/README: update to accommodate for missing common-cmds.h + + Build doc update for Windows. + + Will merge to 'master'. + + +* sb/blame-color (2018-07-16) 1 commit + (merged to 'next' on 2018-07-18 at c319268502) + + blame: prefer xsnprintf to strcpy for colors Code clean-up. - Will merge to 'next'. + Will merge to 'master'. -* hs/push-cert-check-cleanup (2018-07-11) 2 commits - - gpg-interface: make parse_gpg_output static and remove from interface header - - builtin/receive-pack: use check_signature from gpg-interface +* sb/submodule-update-in-c (2018-07-17) 6 commits + - submodule--helper: introduce new update-module-mode helper + - builtin/submodule--helper: factor out method to update a single submodule + - builtin/submodule--helper: store update_clone information in a struct + - builtin/submodule--helper: factor out submodule updating + - git-submodule.sh: rename unused variables + - git-submodule.sh: align error reporting for update mode to use path - Code clean-up. + "git submodule update" is getting rewritten piece-by-piece into C. + + It seems to pass its own self-tests standalone, but seems to break + horribly when merged to 'pu'. + + +* sg/httpd-test-unflake (2018-07-12) 3 commits + - t/lib-httpd: avoid occasional failures when checking access.log + - t/lib-httpd: add the strip_access_log() helper function + - t5541: clean up truncating access log + + httpd tests saw occasional breakage due to the way its access log + gets inspected by the tests, which has been updated to make them + less flaky. Will merge to 'next'. -* mk/merge-in-sparse-checkout (2018-07-11) 1 commit - - unpack-trees: do not fail reset because of unmerged skipped entry +* sl/commit-dry-run-with-short-output-fix (2018-07-17) 3 commits + - commit: fix exit code for --short/--porcelain + - wt-status: teach wt_status_collect about merges in progress + - t7501: add merge conflict tests for dry run - "git reset --merge" (hence "git merge ---abort") and "git reset --hard" - had trouble working correctly in a sparsely checked out working - tree after a conflict, which has been corrected. + Under discussion. + cf. - Will merge to 'next'. + +* tg/rerere (2018-07-16) 11 commits + - rerere: recalculate conflict ID when unresolved conflict is committed + - rerere: teach rerere to handle nested conflicts + - rerere: return strbuf from handle path + - rerere: factor out handle_conflict function + - rerere: only return whether a path has conflicts or not + - rerere: fix crash when conflict goes unresolved + - rerere: add documentation for conflict normalization + - rerere: mark strings for translation + - rerere: wrap paths in output in sq + - rerere: lowercase error messages + - rerere: unify error messages when read_cache fails + + +* wc/find-commit-with-pattern-on-detached-head (2018-07-12) 1 commit + (merged to 'next' on 2018-07-18 at 334d2420c0) + + sha1-name.c: for ":/", find detached HEAD commits + + "git rev-parse ':/substring'" did not consider the history leading + only to HEAD when looking for a commit with the given substring, + when the HEAD is detached. This has been fixed. + + Will merge to 'master'. + + +* jk/ui-color-always-to-auto (2018-07-18) 1 commit + - Documentation: fix --color option formatting -------------------------------------------------- [Stalled] @@ -486,17 +567,6 @@ of the repositories listed at cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net> -* jh/json-writer (2018-06-13) 1 commit - - json_writer: new routines to create JSON data - - Preparatory code to later add json output for unspecified telemetry - data. - - We do not add random code that does not have real users to our - codebase, so let's have it wait until such a real code materializes - before too long. - - * hn/bisect-first-parent (2018-04-21) 1 commit - bisect: create 'bisect_flags' parameter in find_bisection() @@ -578,92 +648,508 @@ of the repositories listed at -------------------------------------------------- [Cooking] -* ao/config-from-gitmodules (2018-06-26) 6 commits - (merged to 'next' on 2018-07-11 at 5d88dc6fb7) - + submodule-config: reuse config_from_gitmodules in repo_read_gitmodules - + submodule-config: pass repository as argument to config_from_gitmodules - + submodule-config: make 'config_from_gitmodules' private - + submodule-config: add helper to get 'update-clone' config from .gitmodules - + submodule-config: add helper function to get 'fetch' config from .gitmodules - + config: move config_from_gitmodules to submodule-config.c +* jh/json-writer (2018-07-16) 1 commit + - json_writer: new routines to create JSON data - Tighten the API to make it harder to misuse in-tree .gitmodules - file, even though it shares the same syntax with configuration - files, to read random configuration items from it. + Preparatory code to later add json output for telemetry data. + + A series on top that adds telemetry data exists but hasn't been + picked up yet. + + +* ag/rebase-i-in-c (2018-07-10) 13 commits + - rebase -i: rewrite the rest of init_revisions_and_shortrevisions in C + - rebase -i: implement the logic to initialize the variable $revision in C + - rebase--interactive: remove unused modes and functions + - rebase--interactive: rewrite complete_action() in C + - sequencer: change the way skip_unnecessary_picks() returns its result + - sequencer: refactor append_todo_help() to write its message to a buffer + - rebase -i: rewrite checkout_onto() in C + - rebase -i: rewrite setup_reflog_action() in C + - sequencer: add a new function to silence a command, except if it fails + - rebase-interactive: rewrite the edit-todo functionality in C + - editor: add a function to launch the sequence editor + - rebase--interactive: rewrite append_todo_help() in C + - sequencer: make two functions and an enum from sequencer.c public + + Piecemeal rewrite of the remaining "rebase -i" machinery in C. + + Expecting a reroll. + + The early parts of the series seem solidifying; perhaps with a + reroll or two, they become 'next' material? + + +* en/apply-comment-fix (2018-06-28) 1 commit + (merged to 'next' on 2018-07-18 at 31d818f17d) + + apply: fix grammar error in comment Will merge to 'master'. -* as/sequencer-customizable-comment-char (2018-06-28) 1 commit - - sequencer: use configured comment character +* en/t5407-rebase-m-fix (2018-06-28) 1 commit + (merged to 'next' on 2018-07-18 at 459875daeb) + + t5407: fix test to cover intended arguments + + Will merge to 'master'. + + +* sb/object-store-lookup (2018-06-29) 33 commits + - commit.c: allow lookup_commit_reference to handle arbitrary repositories + - commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories + - tag.c: allow deref_tag to handle arbitrary repositories + - object.c: allow parse_object to handle arbitrary repositories + - object.c: allow parse_object_buffer to handle arbitrary repositories + - commit.c: allow get_cached_commit_buffer to handle arbitrary repositories + - commit.c: allow set_commit_buffer to handle arbitrary repositories + - commit.c: migrate the commit buffer to the parsed object store + - commit-slabs: remove realloc counter outside of slab struct + - commit.c: allow parse_commit_buffer to handle arbitrary repositories + - tag: allow parse_tag_buffer to handle arbitrary repositories + - tag: allow lookup_tag to handle arbitrary repositories + - commit: allow lookup_commit to handle arbitrary repositories + - tree: allow lookup_tree to handle arbitrary repositories + - blob: allow lookup_blob to handle arbitrary repositories + - object: allow lookup_object to handle arbitrary repositories + - object: allow object_as_type to handle arbitrary repositories + - tag: add repository argument to deref_tag + - tag: add repository argument to parse_tag_buffer + - tag: add repository argument to lookup_tag + - commit: add repository argument to get_cached_commit_buffer + - commit: add repository argument to set_commit_buffer + - commit: add repository argument to parse_commit_buffer + - commit: add repository argument to lookup_commit + - commit: add repository argument to lookup_commit_reference + - commit: add repository argument to lookup_commit_reference_gently + - tree: add repository argument to lookup_tree + - blob: add repository argument to lookup_blob + - object: add repository argument to object_as_type + - object: add repository argument to parse_object_buffer + - object: add repository argument to lookup_object + - object: add repository argument to parse_object + - Merge branch 'sb/object-store-grafts' into sb/object-store-lookup + (this branch is used by jt/commit-graph-per-object-store.) + + lookup_commit_reference() and friends have been updated to find + in-core object for a specific in-core repository instance. + + Will merge to 'next'. + + +* ag/rebase-p (2018-07-06) 1 commit + (merged to 'next' on 2018-07-18 at c36ebba99b) + + git-rebase--preserve-merges: fix formatting of todo help message + + The help message shown in the editor to edit todo list in "rebase -p" + has regressed recently, which has been corrected. + + Will merge to 'master'. + + +* bb/pedantic (2018-07-09) 8 commits + (merged to 'next' on 2018-07-18 at e9d075e8ed) + + utf8.c: avoid char overflow + + string-list.c: avoid conversion from void * to function pointer + + sequencer.c: avoid empty statements at top level + + convert.c: replace "\e" escapes with "\033". + + fixup! refs/refs-internal.h: avoid forward declaration of an enum + + refs/refs-internal.h: avoid forward declaration of an enum + + fixup! connect.h: avoid forward declaration of an enum + + connect.h: avoid forward declaration of an enum + + The codebase has been updated to compile cleanly with -pedantic + option. + + Will merge to 'master'. + + +* bb/unicode-11-width (2018-07-09) 1 commit + (merged to 'next' on 2018-07-18 at 075648ed37) + + unicode: update the width tables to Unicode 11 + + The character display width table has been updated to match the + latest Unicode standard. + + Will merge to 'master'. + + +* bc/object-id (2018-07-16) 16 commits + - pretty: switch hard-coded constants to the_hash_algo + - sha1-file: convert constants to uses of the_hash_algo + - log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz + - diff: switch GIT_SHA1_HEXSZ to use the_hash_algo + - builtin/merge-recursive: make hash independent + - builtin/merge: switch to use the_hash_algo + - builtin/fmt-merge-msg: make hash independent + - builtin/update-index: simplify parsing of cacheinfo + - builtin/update-index: convert to using the_hash_algo + - refs/files-backend: use the_hash_algo for writing refs + - sha1-name: use the_hash_algo when parsing object names + - strbuf: allocate space with GIT_MAX_HEXSZ + - commit: express tree entry constants in terms of the_hash_algo + - hex: switch to using the_hash_algo + - tree-walk: replace hard-coded constants with the_hash_algo + - cache: update object ID functions for the_hash_algo + + Conversion from uchar[40] to struct object_id continues. + + Will merge to 'next'. + + +* bc/send-email-auto-cte (2018-07-09) 4 commits + (merged to 'next' on 2018-07-18 at d16c2a301a) + + docs: correct RFC specifying email line length + + send-email: automatically determine transfer-encoding + + send-email: accept long lines with suitable transfer encoding + + send-email: add an auto option for transfer encoding + + The content-transfer-encoding of the message "git send-email" sends + out by default was 8bit, which can cause trouble when there is an + overlong line to bust RFC 5322/2822 limit. A new option 'auto' to + automatically switch to quoted-printable when there is such a line + in the payload has been introduced and is made the default. + + Will merge to 'master'. + + +* en/dirty-merge-fixes (2018-07-11) 9 commits + - merge: fix misleading pre-merge check documentation + - merge-recursive: enforce rule that index matches head before merging + - t6044: add more testcases with staged changes before a merge is invoked + - merge-recursive: fix assumption that head tree being merged is HEAD + - merge-recursive: make sure when we say we abort that we actually abort + - t6044: add a testcase for index matching head, when head doesn't match HEAD + - t6044: verify that merges expected to abort actually abort + - index_has_changes(): avoid assuming operating on the_index + - read-cache.c: move index_has_changes() from merge.c + + The recursive merge strategy did not properly ensure there was no + change between HEAD and the index before performing its operation, + which has been corrected. + + Will merge to 'next'. + + +* en/t6036-merge-recursive-tests (2018-07-11) 6 commits + - t6036: add a failed conflict detection case: regular files, different modes + - t6036: add a failed conflict detection case with conflicting types + - t6036: add a failed conflict detection case with submodule add/add + - t6036: add a failed conflict detection case with submodule modify/modify + - t6036: add a failed conflict detection case with symlink add/add + - t6036: add a failed conflict detection case with symlink modify/modify + + Tests to cover various conflicting cases have been added for + merge-recursive. + + Will merge to 'next'. + + +* en/t6036-recursive-corner-cases (2018-07-12) 2 commits + - t6036: fix broken && chain in sub-shell + - t6036: add lots of detail for directory/file conflicts in recursive case + + Tests to cover more D/F conflict cases have been added for + merge-recursive. + + Will merge to 'next'. + + +* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits + - t6042: add testcase covering long chains of rename conflicts + - t6042: add testcase covering rename/rename(2to1)/delete/delete conflict + - t6042: add testcase covering rename/add/delete conflict type + + Various glitches in the heuristics of merge-recursive strategy have + been documented in new tests. + + Will merge to 'next'. + + I am not sure if there is a single "correct" answer everybody can + agree on for each of these "insane" cases, though. + + +* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits + - t7405: verify 'merge --abort' works after submodule/path conflicts + - t7405: add a directory/submodule conflict + - t7405: add a file/submodule conflict + + Tests to cover conflict cases that involve submodules have been + added for merge-recursive. + + Will merge to 'next'. + + +* es/test-fixes (2018-07-17) 26 commits + - t5608: fix broken &&-chain + - t9119: fix broken &&-chains + - t9000-t9999: fix broken &&-chains + - t7000-t7999: fix broken &&-chains + - t6000-t6999: fix broken &&-chains + - t5000-t5999: fix broken &&-chains + - t4000-t4999: fix broken &&-chains + - t3030: fix broken &&-chains + - t3000-t3999: fix broken &&-chains + - t2000-t2999: fix broken &&-chains + - t1000-t1999: fix broken &&-chains + - t0000-t0999: fix broken &&-chains + - t9814: simplify convoluted check that command correctly errors out + - t9001: fix broken "invoke hook" test + - t7810: use test_expect_code() instead of hand-rolled comparison + - t7400: fix broken "submodule add/reconfigure --force" test + - t7201: drop pointless "exit 0" at end of subshell + - t6036: fix broken "merge fails but has appropriate contents" tests + - t5505: modernize and simplify hard-to-digest test + - t5406: use write_script() instead of birthing shell script manually + - t5405: use test_must_fail() instead of checking exit code manually + - t/lib-submodule-update: fix "absorbing" test + - t: drop unnecessary terminating semicolon in subshell + - t: use sane_unset() rather than 'unset' with broken &&-chain + - t: use test_write_lines() instead of series of 'echo' commands + - t: use test_might_fail() instead of manipulating exit code manually + (this branch is used by es/chain-lint-in-subshell.) + + Test clean-up and corrections. + + Will merge to 'next'. + + +* jk/empty-pick-fix (2018-07-11) 2 commits + (merged to 'next' on 2018-07-18 at 43bfa862f2) + + sequencer: don't say BUG on bogus input + + sequencer: handle empty-set cases consistently + + Handling of an empty range by "git cherry-pick" was inconsistent + depending on how the range ended up to be empty, which has been + corrected. + + Will merge to 'master'. + + +* jk/fetch-all-peeled-fix (2018-07-06) 1 commit + (merged to 'next' on 2018-07-18 at d06c6f1665) + + t5500: prettify non-commit tag tests + + Test modernization. + + Will merge to 'master'. + + +* jk/for-each-ref-icase (2018-07-03) 3 commits + (merged to 'next' on 2018-07-18 at 4c86d62adb) + + ref-filter: avoid backend filtering with --ignore-case + + for-each-ref: consistently pass WM_IGNORECASE flag + + t6300: add a test for --ignore-case + + The "--ignore-case" option of "git for-each-ref" (and its friends) + did not work correctly, which has been fixed. + + Will merge to 'master'. + + +* jk/fsck-gitmodules-gently (2018-07-16) 6 commits + - fsck: downgrade gitmodulesParse default to "info" + - fsck: split ".gitmodules too large" error from parse failure + - fsck: silence stderr when parsing .gitmodules + - config: add options parameter to git_config_from_mem + - config: add CONFIG_ERROR_SILENT handler + - config: turn die_on_error into caller-facing enum + + Recent "security fix" to pay attention to contents of ".gitmodules" + while accepting "git push" was a bit overly strict than necessary, + which has been adjusted. + + Will merge to 'next'. + + +* js/range-diff (2018-07-09) 20 commits + - range-diff: make --dual-color the default mode + - range-diff: left-pad patch numbers + - completion: support `git range-diff` + - range-diff: add a man page + - range-diff --dual-color: work around bogus white-space warning + - range-diff: offer to dual-color the diffs + - diff: add an internal option to dual-color diffs of diffs + - color: add the meta color GIT_COLOR_REVERSE + - range-diff: use color for the commit pairs + - range-diff: add tests + - range-diff: do not show "function names" in hunk headers + - range-diff: adjust the output of the commit pairs + - range-diff: suppress the diff headers + - range-diff: indent the diffs just like tbdiff + - range-diff: right-trim commit messages + - range-diff: also show the diff between patches + - range-diff: improve the order of the shown commits + - range-diff: first rudimentary implementation + - Introduce `range-diff` to compare iterations of a topic branch + - linear-assignment: a function to solve least-cost assignment problems + + "git tbdiff" that lets us compare individual patches in two + iterations of a topic has been rewritten and made into a built-in + command. + + Supersedes js/branch-diff topic that added a similar command under + a different name. + + +* jt/commit-graph-per-object-store (2018-07-17) 7 commits + - commit-graph: add repo arg to graph readers + - commit-graph: store graph in struct object_store + - commit-graph: add free_commit_graph + - commit-graph: add missing forward declaration + - object-store: add missing include + - commit-graph: refactor preparing commit graph + - Merge branch 'ds/commit-graph-fsck' into jt/commit-graph-per-object-store + (this branch uses ds/commit-graph-fsck and sb/object-store-lookup.) + + The singleton commit-graph in-core instance is made per in-core + repository instance. + + Will merge to 'next'. + + +* jt/partial-clone-fsck-connectivity (2018-07-09) 2 commits + (merged to 'next' on 2018-07-18 at 968fd9c9f0) + + clone: check connectivity even if clone is partial + + upload-pack: send refs' objects despite "filter" + (this branch is used by jt/tags-to-promised-blobs-fix; uses bw/ref-in-want and jt/connectivity-check-after-unshallow.) + + Partial clone support of "git clone" has been updated to correctly + validate the objects it receives from the other side. The server + side has been corrected to send objects that are directly + requested, even if they may match the filtering criteria (e.g. when + doing a "lazy blob" partial clone). + + Will merge to 'master'. + + +* kg/gc-auto-windows-workaround (2018-07-09) 1 commit + - gc --auto: release pack files before auto packing + + "git gc --auto" opens file descriptors for the packfiles before + spawning "git repack/prune", which would upset Windows that does + not want a process to work on a file that is open by another + process. The issue has been worked around. + + Will merge to 'next'. + + +* kn/userdiff-php (2018-07-06) 2 commits + (merged to 'next' on 2018-07-18 at 9a533dc33a) + + userdiff: support new keywords in PHP hunk header + + t4018: add missing test cases for PHP + + The userdiff pattern for .php has been updated. + + Will merge to 'master'. + + +* lt/date-human (2018-07-09) 1 commit + - Add 'human' date format + + +* mh/fast-import-no-diff-delta-empty (2018-07-06) 1 commit + (merged to 'next' on 2018-07-18 at eb393871f4) + + fast-import: do not call diff_delta() with empty buffer + + "git fast-import" has been updated to avoid attempting to create + delta against a zero-byte-long string, which is pointless. + + Will merge to 'master'. + + +* ot/ref-filter-object-info (2018-07-17) 5 commits + - ref-filter: use oid_object_info() to get object + - ref-filter: merge get_obj and get_object + - ref-filter: initialize eaten variable + - ref-filter: fill empty fields with empty values + - ref-filter: add info_source to valid_atom + + A few atoms like %(objecttype) and %(objectsize) in the format + specifier of "for-each-ref --format=" can be filled without + getting the full contents of the object, but just with the object + header. These cases have been optimzied by calling + oid_object_info() API. + + What's the doneness of this one? + + +* pk/rebase-in-c (2018-07-09) 4 commits + - builtin/rebase: support running "git rebase " + - sequencer: refactor the code to detach HEAD to checkout.c + - rebase: refactor common shell functions into their own file + - rebase: start implementing it as a builtin + + Piecemeal rewrite of the "rebase" machinery in C. + + Expecting a reroll, but it seems that this is getting quite close. + cf. + + +* tb/config-default (2018-07-06) 1 commit + (merged to 'next' on 2018-07-18 at 7994476f6f) + + builtin/config: work around an unsized array forward declaration + + Compilation fix. + + Will merge to 'master'. + + +* bp/log-ref-write-fd-with-strbuf (2018-07-10) 1 commit + (merged to 'next' on 2018-07-18 at 25a3a99528) + + convert log_ref_write_fd() to use strbuf + + Code clean-up. + + Will merge to 'master'. + + +* hs/push-cert-check-cleanup (2018-07-11) 2 commits + (merged to 'next' on 2018-07-18 at 1ed25fbd77) + + gpg-interface: make parse_gpg_output static and remove from interface header + + builtin/receive-pack: use check_signature from gpg-interface + (this branch is used by hs/gpgsm.) + + Code clean-up. + + Will merge to 'master'. + + +* mk/merge-in-sparse-checkout (2018-07-11) 1 commit + (merged to 'next' on 2018-07-18 at d2a6d2684d) + + unpack-trees: do not fail reset because of unmerged skipped entry + + "git reset --merge" (hence "git merge ---abort") and "git reset --hard" + had trouble working correctly in a sparsely checked out working + tree after a conflict, which has been corrected. + + Will merge to 'master'. + + +* as/sequencer-customizable-comment-char (2018-07-16) 1 commit + (merged to 'next' on 2018-07-18 at 4163e23f29) + + sequencer: use configured comment character Honor core.commentchar when preparing the list of commits to replay in "rebase -i". - Needs inter-contributor coordination. - cf. - - -* dj/runtime-prefix (2018-06-26) 1 commit - (merged to 'next' on 2018-07-11 at 27d99fef94) - + Makefile: tweak sed invocation - - POSIX portability fix in Makefile to fix a glitch introduced a few - releases ago. - - Will merge to 'master'. - - -* ds/commit-graph (2018-06-28) 1 commit - (merged to 'next' on 2018-07-11 at d579f733ed) - + commit-graph: fix documentation inconsistencies - - Docfix. - - Will merge to 'master'. - - -* en/rebase-i-microfixes (2018-06-27) 3 commits - (merged to 'next' on 2018-07-11 at d913ca0f77) - + git-rebase--merge: modernize "git-$cmd" to "git $cmd" - + Fix use of strategy options with interactive rebases - + t3418: add testcase showing problems with rebase -i and strategy options - - Will merge to 'master'. - - -* js/enhanced-version-info (2018-06-29) 1 commit - (merged to 'next' on 2018-07-11 at 815b2ea2bc) - + Makefile: fix the "built from commit" code - - Build fix. - - Will merge to 'master'. - - -* js/rebase-recreate-merge (2018-06-27) 1 commit - (merged to 'next' on 2018-07-11 at eb8f33aaef) - + rebase: fix documentation formatting - - Docfix. - Will merge to 'master'. * jt/connectivity-check-after-unshallow (2018-07-03) 1 commit - - fetch-pack: write shallow, then check connectivity - (this branch is used by jt/partial-clone-fsck-connectivity; uses bw/ref-in-want.) + (merged to 'next' on 2018-07-18 at 8e7ee889c3) + + fetch-pack: write shallow, then check connectivity + (this branch is used by jt/partial-clone-fsck-connectivity and jt/tags-to-promised-blobs-fix; uses bw/ref-in-want.) "git fetch" failed to correctly validate the set of objects it received when making a shallow history deeper, which has been corrected. - Will merge to 'next'. + Will merge to 'master'. * jt/fetch-nego-tip (2018-07-03) 1 commit - fetch-pack: support negotiation tip whitelist - (this branch uses jt/fetch-pack-negotiator.) + (this branch uses jt/fetch-pack-negotiator; is tangled with jt/fetch-negotiator-skipping.) "git fetch" learned a new option "--negotiation-tip" to limit the set of commits it tells the other end as "have", to reduce wasted @@ -674,29 +1160,6 @@ of the repositories listed at Will merge to 'next'. -* mb/filter-branch-optim (2018-06-26) 1 commit - (merged to 'next' on 2018-07-11 at e43a0136c2) - + filter-branch: skip commits present on --state-branch - - "git filter-branch" when used with the "--state-branch" option - still attempted to rewrite the commits whose filtered result is - known from the previous attempt (which is recorded on the state - branch); the command has been corrected not to waste cycles doing - so. - - Will merge to 'master'. - - -* ms/core-icase-doc (2018-06-28) 1 commit - (merged to 'next' on 2018-07-11 at 8f0d71c32d) - + Documentation: declare "core.ignoreCase" as internal variable - - Clarify that setting core.ignoreCase to deviate from reality would - not turn a case-incapable filesystem into a case-capable one. - - Will merge to 'master'. - - * rj/submodule-fsck-skip (2018-07-03) 1 commit (merged to 'next' on 2018-07-11 at 985f88cf7e) + fsck: check skiplist for object in fsck_blob() @@ -712,147 +1175,66 @@ of the repositories listed at * tb/grep-only-matching (2018-07-09) 2 commits - grep.c: teach 'git grep --only-matching' - grep.c: extract show_line_header() - (this branch uses tb/grep-column.) "git grep" learned the "--only-matching" option. Will merge to 'next'. -* tz/exclude-doc-smallfixes (2018-06-27) 2 commits - (merged to 'next' on 2018-07-11 at 5134f1ca72) - + dir.c: fix typos in core.excludesfile comment - + gitignore.txt: clarify default core.excludesfile path - - Doc updates. - - Will merge to 'master'. - - -* ld/p423 (2018-06-19) 6 commits - (merged to 'next' on 2018-06-29 at af76acb664) - + git-p4: python3: fix octal constants - + git-p4: python3: use print() function - + git-p4: python3: basestring workaround - + git-p4: python3: remove backticks - + git-p4: python3: replace dict.has_key(k) with "k in dict" - + git-p4: python3: replace <> with != - - Code preparation to make "git p4" closer to be usable with Python 3. - - Will merge to 'master'. - - -* pw/rebase-i-keep-reword-after-conflict (2018-06-19) 1 commit - (merged to 'next' on 2018-06-29 at 538337be74) - + sequencer: do not squash 'reword' commits when we hit conflicts - - Bugfix for "rebase -i" corner case regression. - - Will merge to 'master'. - - -* xy/format-patch-prereq-patch-id-fix (2018-06-19) 1 commit - (merged to 'next' on 2018-06-29 at 0dffc46ce2) - + format-patch: clear UNINTERESTING flag before prepare_bases - - Recently added "--base" option to "git format-patch" command did - not correctly generate prereq patch ids. - - Will merge to 'master'. - - -* bw/config-refer-to-gitsubmodules-doc (2018-06-21) 1 commit - (merged to 'next' on 2018-06-29 at da6f49d292) - + docs: link to gitsubmodules - - Docfix. - - Will merge to 'master'. - - * bw/ref-in-want (2018-06-28) 8 commits - - fetch-pack: implement ref-in-want - - fetch-pack: put shallow info in output parameter - - fetch: refactor to make function args narrower - - fetch: refactor fetch_refs into two functions - - fetch: refactor the population of peer ref OIDs - - upload-pack: test negotiation with changing repository - - upload-pack: implement ref-in-want - - test-pkt-line: add unpack-sideband subcommand - (this branch is used by jt/connectivity-check-after-unshallow and jt/partial-clone-fsck-connectivity.) + (merged to 'next' on 2018-07-18 at 7e9f8db37c) + + fetch-pack: implement ref-in-want + + fetch-pack: put shallow info in output parameter + + fetch: refactor to make function args narrower + + fetch: refactor fetch_refs into two functions + + fetch: refactor the population of peer ref OIDs + + upload-pack: test negotiation with changing repository + + upload-pack: implement ref-in-want + + test-pkt-line: add unpack-sideband subcommand + (this branch is used by jt/connectivity-check-after-unshallow, jt/partial-clone-fsck-connectivity and jt/tags-to-promised-blobs-fix.) Protocol v2 has been updated to allow slightly out-of-sync set of servers to work together to serve a single client, which would be useful with load-balanced servers that talk smart HTTP transport. - Will merge to 'next'. + Will merge to 'master'. * en/rebase-consistency (2018-06-27) 9 commits - - git-rebase: make --allow-empty-message the default - - t3401: add directory rename testcases for rebase and am - - git-rebase.txt: document behavioral differences between modes - - directory-rename-detection.txt: technical docs on abilities and limitations - - git-rebase.txt: address confusion between --no-ff vs --force-rebase - - git-rebase: error out when incompatible options passed - - t3422: new testcases for checking when incompatible options passed - - git-rebase.sh: update help messages a bit - - git-rebase.txt: document incompatible options + (merged to 'next' on 2018-07-18 at d597206c79) + + git-rebase: make --allow-empty-message the default + + t3401: add directory rename testcases for rebase and am + + git-rebase.txt: document behavioral differences between modes + + directory-rename-detection.txt: technical docs on abilities and limitations + + git-rebase.txt: address confusion between --no-ff vs --force-rebase + + git-rebase: error out when incompatible options passed + + t3422: new testcases for checking when incompatible options passed + + git-rebase.sh: update help messages a bit + + git-rebase.txt: document incompatible options "git rebase" behaved slightly differently depending on which one of the three backends gets used; this has been documented and an effort to make them more uniform has begun. - Will merge to 'next'. - - -* jt/remove-pack-bitmap-global (2018-06-21) 2 commits - (merged to 'next' on 2018-06-29 at 852857b04e) - + pack-bitmap: add free function - + pack-bitmap: remove bitmap_git global variable - - The effort to move globals to per-repository in-core structure - continues. - Will merge to 'master'. * sb/submodule-move-head-error-msg (2018-06-25) 1 commit - - submodule.c: report the submodule that an error occurs in - - Will merge to 'next'. - - -* bw/protocol-v2 (2018-06-22) 1 commit - (merged to 'next' on 2018-06-29 at 78090cc343) - + protocol-v2 doc: put HTTP headers after request - - Doc fix. + (merged to 'next' on 2018-07-18 at 9e213ad1aa) + + submodule.c: report the submodule that an error occurs in Will merge to 'master'. * jk/branch-l-1-repurpose (2018-06-22) 1 commit - branch: make "-l" a synonym for "--list" - (this branch uses jk/branch-l-0-deprecation.) Updated plan to repurpose the "-l" option to "git branch". Will hold in 'pu' until jk/branch-l-0-deprecation progresses sufficiently. -* vs/typofixes (2018-06-22) 1 commit - (merged to 'next' on 2018-06-29 at 665c8db2f7) - + Documentation: spelling and grammar fixes - - Doc fix. - - Will merge to 'master'. - - -* cc/remote-odb (2018-07-06) 10 commits - - SQUASH??? error: unused variable 'o' [-Werror=unused-variable] +* cc/remote-odb (2018-07-16) 9 commits - Documentation/config: add odb..promisorRemote - t0410: test fetching from many promisor remotes - Use odb.origin.partialclonefilter instead of core.partialclonefilter @@ -863,59 +1245,42 @@ of the repositories listed at - Add initial remote odb support - fetch-object: make functions return an error code - Needs a reroll. - -* ds/multi-pack-index (2018-07-09) 24 commits - . midx: clear midx on repack - . packfile: skip loading index if in multi-pack-index - . midx: prevent duplicate packfile loads - . midx: use midx in approximate_object_count - . midx: use existing midx when writing new one - . midx: use midx in abbreviation calculations - . midx: read objects from multi-pack-index - . midx: prepare midxed_git struct - . config: create core.multiPackIndex setting - . midx: write object offsets - . midx: write object id fanout chunk - . midx: write object ids in a chunk - . midx: sort and deduplicate objects from packfiles - . midx: read pack names into array - . multi-pack-index: write pack names in chunk - . multi-pack-index: read packfile list - . packfile: generalize pack directory list - . multi-pack-index: expand test data - . multi-pack-index: load into memory - . midx: write header information to lockfile - . multi-pack-index: add 'write' verb - . multi-pack-index: add builtin - . multi-pack-index: add format details - . multi-pack-index: add design document +* ds/multi-pack-index (2018-07-12) 23 commits + - midx: clear midx on repack + - packfile: skip loading index if in multi-pack-index + - midx: prevent duplicate packfile loads + - midx: use midx in approximate_object_count + - midx: use existing midx when writing new one + - midx: use midx in abbreviation calculations + - midx: read objects from multi-pack-index + - config: create core.multiPackIndex setting + - midx: write object offsets + - midx: write object id fanout chunk + - midx: write object ids in a chunk + - midx: sort and deduplicate objects from packfiles + - midx: read pack names into array + - multi-pack-index: write pack names in chunk + - multi-pack-index: read packfile list + - packfile: generalize pack directory list + - t5319: expand test data + - multi-pack-index: load into memory + - midx: write header information to lockfile + - multi-pack-index: add 'write' verb + - multi-pack-index: add builtin + - multi-pack-index: add format details + - multi-pack-index: add design document When there are too many packfiles in a repository (which is not recommended), looking up an object in these would require consulting many pack .idx files; a new mechanism to have a single file that consolidates all of these .idx files is introduced. - Expecting a reroll to fix documentation build. - cf. https://travis-ci.org/git/git/jobs/402422110 - - -* tb/grep-column (2018-06-22) 7 commits - (merged to 'next' on 2018-06-29 at 25dc70426e) - + contrib/git-jump/git-jump: jump to exact location - + 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 {,inverted} match column in match_line() - + Documentation/config.txt: camel-case lineNumber for consistency - (this branch is used by tb/grep-only-matching.) - - "git grep" learned the "--column" option that gives not just the - line number but the column number of the hit. - - Will merge to 'master'. + What's the doneness of this one? I vaguely recall that there was + an objection against the concept as a whole (i.e. there is a way + with less damage to gain the same object-abbrev performance); has + it (and if anything else, they) been resolved in satisfactory + fashion? * jt/fetch-pack-negotiator (2018-06-15) 7 commits @@ -926,7 +1291,7 @@ of the repositories listed at - fetch-pack: directly end negotiation if ACK ready - fetch-pack: clear marks before re-marking - fetch-pack: split up everything_local() - (this branch is used by jt/fetch-nego-tip.) + (this branch is used by jt/fetch-nego-tip and jt/fetch-negotiator-skipping.) Code restructuring and a small fix to transport protocol v2 during fetching. @@ -934,43 +1299,6 @@ of the repositories listed at Will merge to 'next'. -* sb/submodule-core-worktree (2018-06-19) 3 commits - (merged to 'next' on 2018-06-28 at 96e1a8dbd1) - + submodule deinit: unset core.worktree - + submodule: ensure core.worktree is set after update - + submodule: unset core.worktree if no working tree is present - - Originally merged to 'next' on 2018-06-22 - - "git submodule" did not correctly adjust core.worktree setting that - indicates whether/where a submodule repository has its associated - working tree across various state transitions, which has been - corrected. - - Will merge to 'master'. - - -* ds/ewah-cleanup (2018-06-21) 10 commits - (merged to 'next' on 2018-06-28 at 9cd7c0d54a) - + ewah: delete unused 'rlwit_discharge_empty()' - + ewah: drop ewah_serialize_native function - + ewah: drop ewah_deserialize function - + ewah_io: delete unused 'ewah_serialize()' - + ewah_bitmap: delete unused 'ewah_or()' - + ewah_bitmap: delete unused 'ewah_not()' - + ewah_bitmap: delete unused 'ewah_and_not()' - + ewah_bitmap: delete unused 'ewah_and()' - + ewah/bitmap.c: delete unused 'bitmap_each_bit()' - + ewah/bitmap.c: delete unused 'bitmap_clear()' - - Originally merged to 'next' on 2018-06-22 - - Remove unused function definitions and declarations from ewah - bitmap subsystem. - - Will merge to 'master'. - - * is/parsing-line-range (2018-06-15) 2 commits - log: prevent error if line range ends past end of file - blame: prevent error if range ends past end of file @@ -981,22 +1309,6 @@ of the repositories listed at Will merge to 'next'. -* en/merge-recursive-cleanup (2018-06-12) 6 commits - (merged to 'next' on 2018-06-28 at 1a3646eb7d) - + merge-recursive: add pointer about unduly complex looking code - + merge-recursive: rename conflict_rename_*() family of functions - + merge-recursive: clarify the rename_dir/RENAME_DIR meaning - + merge-recursive: align labels with their respective code blocks - + merge-recursive: fix numerous argument alignment issues - + merge-recursive: fix miscellaneous grammar error in comment - - Originally merged to 'next' on 2018-06-19 - - Code cleanup. - - Will merge to 'master'. - - * ab/checkout-default-remote (2018-06-11) 8 commits - checkout & worktree: introduce checkout.defaultRemote - checkout: add advice for ambiguous "checkout " @@ -1015,7 +1327,8 @@ of the repositories listed at Will merge to 'next'. -* ds/commit-graph-fsck (2018-06-27) 22 commits +* ds/commit-graph-fsck (2018-07-16) 23 commits + - coccinelle: update commit.cocci - commit-graph: update design document - gc: automatically write commit-graph files - commit-graph: add '--reachable' option @@ -1077,38 +1390,7 @@ of the repositories listed at a bit sad, though. -* sb/object-store-grafts (2018-05-18) 19 commits - (merged to 'next' on 2018-06-28 at 02f70d6302) - + 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 global 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 is used by sb/object-store-lookup.) - - Originally merged to 'next' on 2018-06-22 - - The conversion to pass "the_repository" and then "a_repository" - throughout the object access API continues. - - Will merge to 'master'. - - -* sb/diff-color-move-more (2018-06-29) 9 commits +* sb/diff-color-move-more (2018-07-17) 9 commits - diff.c: add white space mode to move detection that allows indent changes - diff.c: factor advance_or_nullify out of mark_color_as_moved - diff.c: decouple white space treatment from move detection algorithm @@ -1123,22 +1405,6 @@ of the repositories listed at Will merge to 'next'. - -* jk/branch-l-0-deprecation (2018-06-22) 3 commits - (merged to 'next' on 2018-06-29 at fac676dfb9) - + branch: deprecate "-l" option - + t: switch "branch -l" to "branch --create-reflog" - + t3200: unset core.logallrefupdates when testing reflog creation - (this branch is used by jk/branch-l-1-repurpose.) - - The "-l" option in "git branch -l" is an unfortunate short-hand for - "--create-reflog", but many users, both old and new, somehow expect - it to be something else, perhaps "--list". This step warns when "-l" - is used as a short-hand for "--create-reflog" and warns about the - future repurposing of the it when it is used. - - Will merge to 'master'. - -------------------------------------------------- [Discarded]