From c8dfb872eb8aaeb9cbffc71bf132ef880f919e97 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 2 Aug 2018 16:00:36 -0700 Subject: [PATCH] What's cooking (2018/08 #01) --- whats-cooking.txt | 2041 +++++++++++++++++++++++---------------------- 1 file changed, 1035 insertions(+), 1006 deletions(-) diff --git a/whats-cooking.txt b/whats-cooking.txt index 882da37bfb..82148c50c1 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, #03; Wed, 25) -X-master-at: ffc6fa0e396238de3a30623912980263b4f283ab -X-next-at: a71716f1adea8665ad1231d8d929021f562d287b +Subject: What's cooking in git.git (Aug 2018, #01; Thu, 2) +X-master-at: 1d89318c48d233d52f1db230cf622935ac3c69fa +X-next-at: f7a957e2e7d6c0922e75e5f5e5e1a0bb01cfe2bb -What's cooking in git.git (Jul 2018, #03; Wed, 25) +What's cooking in git.git (Aug 2018, #01; Thu, 2) -------------------------------------------------- Here are the topics that have been cooking. Commits prefixed with @@ -13,14 +13,7 @@ Here are the topics that have been cooking. Commits prefixed with the integration branches, but I am still holding onto them. 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. +respectively. You can find the changes described here in the integration branches of the repositories listed at @@ -30,648 +23,766 @@ of the repositories listed at -------------------------------------------------- [Graduated to "master"] -* 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. - - -* 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". - +* ab/checkout-default-remote (2018-06-11) 8 commits + (merged to 'next' on 2018-07-24 at 6ef645f485) + + checkout & worktree: introduce checkout.defaultRemote + + checkout: add advice for ambiguous "checkout " + + builtin/checkout.c: use "ret" variable for return + + checkout: pass the "num_matches" up to callers + + checkout.c: change "unique" member to "num_matches" + + checkout.c: introduce an *_INIT macro + + checkout.h: wrap the arguments to unique_tracking_name() + + checkout tests: index should be clean after dwim checkout + (this branch is used by ab/test-must-be-empty.) -* 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 - (this branch is used by bb/make-developer-pedantic.) + "git checkout" and "git worktree add" learned to honor + checkout.defaultRemote when auto-vivifying a local branch out of a + remote tracking branch in a repository with multiple remotes that + have tracking branches that share the same names. - The codebase has been updated to compile cleanly with -pedantic - option. +* bc/object-id (2018-07-16) 16 commits + (merged to 'next' on 2018-07-24 at 23680778a9) + + 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 -* 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 + Conversion from uchar[40] to struct object_id continues. - The character display width table has been updated to match the - latest Unicode standard. +* bc/sequencer-export-work-tree-as-well (2018-07-16) 1 commit + (merged to 'next' on 2018-07-24 at 0b83ade721) + + sequencer: pass absolute GIT_WORK_TREE to exec commands -* 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 + "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. - 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. +* bp/test-drop-caches-for-windows (2018-07-12) 1 commit + (merged to 'next' on 2018-07-24 at 257bb336c6) + + handle lower case drive letters on Windows -* 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 + A test helper update for Windows. - Code clean-up. +* ds/commit-graph-fsck (2018-07-16) 23 commits + (merged to 'next' on 2018-07-24 at 6a802adc7a) + + coccinelle: update commit.cocci + + commit-graph: update design document + + gc: automatically write commit-graph files + + commit-graph: add '--reachable' option + + commit-graph: use string-list API for input + + fsck: verify commit-graph + + commit-graph: verify contents match checksum + + commit-graph: test for corrupted octopus edge + + commit-graph: verify commit date + + commit-graph: verify generation number + + commit-graph: verify parent list + + commit-graph: verify root tree OIDs + + commit-graph: verify objects exist + + commit-graph: verify corrupt OID fanout and lookup + + commit-graph: verify required chunks are present + + commit-graph: verify catches corrupt signature + + commit-graph: add 'verify' subcommand + + commit-graph: load a root tree from specific graph + + commit: force commit to parse from object database + + commit-graph: parse commit from chosen graph + + commit-graph: fix GRAPH_MIN_SIZE + + commit-graph: UNLEAK before die() + + t5318-commit-graph.sh: use core.commitGraph + (this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.) -* bw/ref-in-want (2018-06-28) 8 commits - (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 bw/fetch-pack-i18n, jt/connectivity-check-after-unshallow, jt/partial-clone-fsck-connectivity and jt/tags-to-promised-blobs-fix.) + "git fsck" learns to make sure the optional commit-graph file is in + a sane state. - 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. +* en/dirty-merge-fixes (2018-07-11) 9 commits + (merged to 'next' on 2018-07-24 at 7b6ca3507c) + + 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 -* en/apply-comment-fix (2018-06-28) 1 commit - (merged to 'next' on 2018-07-18 at 31d818f17d) - + apply: fix grammar error in comment + 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. -* en/rebase-consistency (2018-06-27) 9 commits - (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 +* en/t6036-merge-recursive-tests (2018-07-11) 6 commits + (merged to 'next' on 2018-07-24 at 75055cb6e1) + + 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 - "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. + Tests to cover various conflicting cases have been added for + merge-recursive. -* 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 +* en/t6036-recursive-corner-cases (2018-07-12) 2 commits + (merged to 'next' on 2018-07-24 at b7b3514ef4) + + 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. -* 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.) - Look for broken use of "VAR=VAL shell_func" in test scripts as part - of test-lint. +* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits + (merged to 'next' on 2018-07-24 at 65c80f72da) + + 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. -* 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.) + I am not sure if there is a single "correct" answer everybody can + agree on for each of these "insane" cases, though. - Code clean-up. +* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits + (merged to 'next' on 2018-07-24 at 6cb7d02298) + + t7405: verify 'merge --abort' works after submodule/path conflicts + + t7405: add a directory/submodule conflict + + t7405: add a file/submodule conflict -* 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.) + Tests to cover conflict cases that involve submodules have been + added for merge-recursive. - Correct a broken use of "VAR=VAL shell_func" in a test. +* es/chain-lint-in-subshell (2018-07-31) 11 commits + (merged to 'next' on 2018-07-31 at 4ce2a8faa4) + + t/chainlint.sed: drop extra spaces from regex character class + (merged to 'next' on 2018-07-24 at 9370bbdfaf) + + 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.) -* 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 + Look for broken "&&" chains that are hidden in subshell, many of + which have been found and corrected. - 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. +* es/test-fixes (2018-07-17) 26 commits + (merged to 'next' on 2018-07-24 at fd6796a3ef) + + 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.) -* 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 clean-up and corrections. - Test modernization. +* is/parsing-line-range (2018-06-15) 2 commits + (merged to 'next' on 2018-07-24 at a06b453f32) + + log: prevent error if line range ends past end of file + + blame: prevent error if range ends past end of file -* 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 + Parsing of -L[][,[]] parameters "git blame" and "git log" + take has been tweaked. - The "--ignore-case" option of "git for-each-ref" (and its friends) - did not work correctly, which has been fixed. +* jk/fsck-gitmodules-gently (2018-07-16) 6 commits + (merged to 'next' on 2018-07-24 at 5b15c800db) + + 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 -* jt/connectivity-check-after-unshallow (2018-07-03) 1 commit - (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; is tangled with bw/fetch-pack-i18n.) + 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. - "git fetch" failed to correctly validate the set of objects it - received when making a shallow history deeper, which has been - corrected. +* jk/has-uncommitted-changes-fix (2018-07-11) 1 commit + (merged to 'next' on 2018-07-24 at 2ea14c0afb) + + has_uncommitted_changes(): fall back to empty tree -* 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; is tangled with bw/fetch-pack-i18n.) + "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. - 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). +* jm/cache-entry-from-mem-pool (2018-07-03) 8 commits + (merged to 'next' on 2018-07-24 at 9be51a88dc) + + block alloc: add validations around cache_entry lifecyle + + block alloc: allocate cache entries from mem_pool + + mem-pool: fill out functionality + + mem-pool: add life cycle management functions + + mem-pool: only search head block for available space + + block alloc: add lifecycle APIs for cache_entry structs + + read-cache: teach make_cache_entry to take object_id + + read-cache: teach refresh_cache_entry to take istate -* 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 + For a large tree, the index needs to hold many cache entries + allocated on heap. These cache entries are now allocated out of a + dedicated memory pool to amortize malloc(3) overhead. - The userdiff pattern for .php has been updated. + This makes each cache-entry larger by either 4 or 8 bytes, which is + a bit sad, though. -* 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 +* jm/send-email-tls-auth-on-batch (2018-07-16) 1 commit + (merged to 'next' on 2018-07-24 at fb3e653f44) + + send-email: fix tls AUTH when sending batch - "git fast-import" has been updated to avoid attempting to create - delta against a zero-byte-long string, which is pointless. + "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. + 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. -* 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. +* js/rebase-merge-octopus (2018-07-11) 3 commits + (merged to 'next' on 2018-07-24 at 14ad8699de) + + 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. -* 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. +* jt/commit-graph-per-object-store (2018-07-17) 7 commits + (merged to 'next' on 2018-07-24 at 090d1a4d59) + + 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 is used by ds/commit-graph-with-grafts and ds/reachable; uses ds/commit-graph-fsck and sb/object-store-lookup.) + The singleton commit-graph in-core instance is made per in-core + repository instance. -* 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() - "fsck.skipList" did not prevent a blob object listed there from - being inspected for is contents (e.g. we recently started to - inspect the contents of ".gitmodules" for certain malicious - patterns), which has been corrected. +* jt/fetch-nego-tip (2018-07-03) 1 commit + (merged to 'next' on 2018-07-24 at a9e299006d) + + fetch-pack: support negotiation tip whitelist + (this branch is used by ab/fetch-nego; 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 + bandwidth and cycles, which would be helpful when the receiving + repository has a lot of refs that have little to do with the + history at the remote it is fetching from. -* sb/blame-color (2018-07-16) 1 commit - (merged to 'next' on 2018-07-18 at c319268502) - + blame: prefer xsnprintf to strcpy for colors - (this branch is used by jk/banned-function.) - Code clean-up. +* jt/fetch-negotiator-skipping (2018-07-16) 1 commit + (merged to 'next' on 2018-07-24 at 8e25a49405) + + negotiator/skipping: skip commits during fetch + (this branch is used by ab/fetch-nego; uses jt/fetch-pack-negotiator; is tangled with jt/fetch-nego-tip.) + 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. -* sb/submodule-move-head-error-msg (2018-06-25) 1 commit - (merged to 'next' on 2018-07-18 at 9e213ad1aa) - + submodule.c: report the submodule that an error occurs in - "git checkout --recurse-submodules another-branch" did not report - in which submodule it failed to update the working tree, which - resulted in an unhelpful error message. +* jt/fetch-pack-negotiator (2018-06-15) 7 commits + (merged to 'next' on 2018-07-24 at 438efcd6b1) + + fetch-pack: introduce negotiator API + + fetch-pack: move common check and marking together + + fetch-pack: make negotiation-related vars local + + fetch-pack: use ref adv. to prune "have" sent + + 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 ab/fetch-nego, jt/fetch-nego-tip and jt/fetch-negotiator-skipping.) + Code restructuring and a small fix to transport protocol v2 during + fetching. -* 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. +* jt/tags-to-promised-blobs-fix (2018-07-16) 2 commits + (merged to 'next' on 2018-07-24 at 8d7e78a671) + + tag: don't warn if target is missing but promised + + revision: tolerate promised targets of tags + The lazy clone support had a few places where missing but promised + objects were not correctly tolerated, which have been fixed. -* 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. +* kg/gc-auto-windows-workaround (2018-07-09) 1 commit + (merged to 'next' on 2018-07-24 at 71c05d27b6) + + gc --auto: release pack files before auto packing --------------------------------------------------- -[New Topics] + "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. -* ds/commit-graph-with-grafts (2018-07-19) 8 commits - - commit-graph: close_commit_graph before shallow walk - - commit-graph: not compatible with uninitialized repo - - commit-graph: not compatible with grafts - - commit-graph: not compatible with replace objects - - test-repository: properly init repo - - commit-graph: update design document - - refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback - - refs.c: migrate internal ref iteration to pass thru repository argument - (this branch uses ds/commit-graph-fsck, jt/commit-graph-per-object-store and sb/object-store-lookup; is tangled with ds/reachable.) - The recently introduced commit-graph auxiliary data is incompatible - with mechanisms such as replace & grafts that "breaks" immutable - nature of the object reference relationship. Disable optimizations - based on its use (and updating existing commit-graph) when these - incompatible features are in use in the repository. +* sb/diff-color-move-more (2018-07-19) 10 commits + (merged to 'next' on 2018-07-24 at 89c893cab2) + + diff.c: offer config option to control ws handling in move detection + + 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 + + diff.c: add a blocks mode for moved code detection + + diff.c: adjust hash function signature to match hashmap expectation + + diff.c: do not pass diff options as keydata to hashmap + + t4015: avoid git as a pipe input + + xdiff/xdiffi.c: remove unneeded function declarations + + xdiff/xdiff.h: remove unused flags - Will merge to 'next'. + "git diff --color-moved" feature has further been tweaked. -* jk/core-use-replace-refs (2018-07-18) 3 commits - - add core.usereplacerefs config option - - check_replace_refs: rename to read_replace_refs - - check_replace_refs: fix outdated comment +* sb/object-store-lookup (2018-06-29) 33 commits + (merged to 'next' on 2018-07-24 at dd96e29376) + + 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 ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.) - A new configuration variable core.usereplacerefs has been added, - primarily to help server installations that want to ignore the - replace mechanism altogether. + lookup_commit_reference() and friends have been updated to find + in-core object for a specific in-core repository instance. - Will merge to 'next'. +* sg/httpd-test-unflake (2018-07-12) 3 commits + (merged to 'next' on 2018-07-24 at b7df820256) + + 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 -* nd/i18n (2018-07-23) 23 commits - - transport-helper.c: mark more strings for translation - - transport.c: mark more strings for translation - - sha1-file.c: mark more strings for translation - - sequencer.c: mark more strings for translation - - replace-object.c: mark more strings for translation - - refspec.c: mark more strings for translation - - refs.c: mark more strings for translation - - pkt-line.c: mark more strings for translation - - object.c: mark more strings for translation - - exec-cmd.c: mark more strings for translation - - environment.c: mark more strings for translation - - dir.c: mark more strings for translation - - convert.c: mark more strings for translation - - connect.c: mark more strings for translation - - config.c: mark more strings for translation - - commit-graph.c: mark more strings for translation - - builtin/replace.c: mark more strings for translation - - builtin/pack-objects.c: mark more strings for translation - - builtin/grep.c: mark strings for translation - - builtin/config.c: mark more strings for translation - - archive-zip.c: mark more strings for translation - - archive-tar.c: mark more strings for translation - - Update messages in preparation for i18n + 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. - Many more strings are prepared for l10n. + +* tb/grep-only-matching (2018-07-09) 2 commits + (merged to 'next' on 2018-07-24 at 7e878b9d95) + + grep.c: teach 'git grep --only-matching' + + grep.c: extract show_line_header() + + "git grep" learned the "--only-matching" option. + +-------------------------------------------------- +[New Topics] + +* ab/fsck-transfer-updates (2018-07-27) 10 commits + - fsck: test and document unknown fsck. values + - fsck: add stress tests for fsck.skipList + - fsck: test & document {fetch,receive}.fsck.* config fallback + - fetch: implement fetch.fsck.* + - transfer.fsckObjects tests: untangle confusing setup + - config doc: elaborate on fetch.fsckObjects security + - config doc: elaborate on what transfer.fsckObjects does + - config doc: unify the description of fsck.* and receive.fsck.* + - config doc: don't describe *.fetchObjects twice + - receive.fsck. tests: remove dead code + + The test performed at the receiving end of "git push" to prevent + bad objects from entering repository can be customized via + receive.fsck.* configuration variables; we now have gained a + counterpart to do the same on the "git fetch" side, with + fetch.fsck.* configuration variables. Will merge to 'next'. -* sb/histogram-less-memory (2018-07-23) 4 commits - - xdiff/histogram: remove tail recursion - - xdiff/xhistogram: move index allocation into find_lcs - - xdiff/xhistogram: factor out memory cleanup into free_index() - - xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff +* ab/test-must-be-empty (2018-07-30) 1 commit + - tests: make use of the test_must_be_empty function - "git diff --histogram" had a bad memory usage pattern, which has - been rearranged to reduce the peak usage. + Test updates. Will merge to 'next'. -* bb/make-developer-pedantic (2018-07-25) 1 commit - - Makefile: add a DEVOPTS flag to get pedantic compilation +* ab/test-must-be-empty-for-master (2018-07-30) 1 commit + - tests: make use of the test_must_be_empty function - "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile - with -pedantic option, which may catch more problematic program - constructs and potential bugs. + Test updates. - Will merge to 'next' and then to 'master'. + Did anybody spot incorrect conversion in this yet? -* bw/clone-ref-prefixes (2018-07-20) 1 commit - - clone: send ref-prefixes when using protocol v2 +* cb/p4-pre-submit-hook (2018-08-01) 1 commit + - git-p4: add the `p4-pre-submit` hook - The wire-protocol v2 relies on the client to send "ref prefixes" to - limit the bandwidth spent on the initial ref advertisement. "git - clone" when learned to speak v2 forgot to do so, which has been - corrected. + "git p4 submit" learns to ask its own pre-submit hook if it should + continue with submitting. Will merge to 'next'. -* bw/fetch-pack-i18n (2018-07-23) 1 commit - - fetch-pack: mark die strings for translation - - i18n updates. +* es/rebase-i-author-script-fix (2018-07-31) 4 commits + - sequencer: don't die() on bogus user-edited timestamp + - sequencer: fix "rebase -i --root" corrupting author header timestamp + - sequencer: fix "rebase -i --root" corrupting author header timezone + - sequencer: fix "rebase -i --root" corrupting author header + (this branch is used by pw/rebase-i-author-script-fix.) - Will merge to 'next' and then to 'master'. + The "author-script" file "git rebase -i" creates got broken when + we started to move the command away from shell script, which is + getting fixed now. + Will merge to 'next'. -* bw/protocol-v2 (2018-07-24) 1 commit - - pack-protocol: mention and point to docs for protocol v2 - Doc update. +* hn/highlight-sideband-keywords (2018-07-31) 1 commit + - sideband: highlight keywords in remote output - Will merge to 'next' and then to 'master'. + The sideband code learned to optionally paint selected keywords at + the beginning of incoming lines on the receiving end. -* ds/reachable (2018-07-20) 18 commits - - commit-reach: use can_all_from_reach - - commit-reach: make can_all_from_reach... linear - - commit-reach: replace ref_newer logic - - test-reach: test commit_contains - - test-reach: test can_all_from_reach_with_flags - - test-reach: test reduce_heads - - test-reach: test get_merge_bases_many - - test-reach: test is_descendant_of - - test-reach: test in_merge_bases - - test-reach: create new test tool for ref_newer - - commit-reach: move can_all_from_reach_with_flags - - upload-pack: generalize commit date cutoff - - upload-pack: refactor ok_to_give_up() - - upload-pack: make reachable() more generic - - commit-reach: move commit_contains from ref-filter - - commit-reach: move ref_newer from remote.c - - commit.h: remove method declarations - - commit-reach: move walk methods from commit.c - (this branch uses ds/commit-graph-fsck, jt/commit-graph-per-object-store and sb/object-store-lookup; is tangled with ds/commit-graph-with-grafts.) +* jn/subtree-test-fixes (2018-07-30) 2 commits + - subtree test: simplify preparation of expected results + - subtree test: add missing && to &&-chain - The code for computing history reachability has been shuffled, - obtained a bunch of new tests to cover them, and then being - improved. + Test fix. - Stuck in review? - cf. <20180723203500.231932-1-jonathantanmy@google.com> - cf. <20180723204112.233274-1-jonathantanmy@google.com> - cf. + Will merge to 'next'. -* en/merge-recursive-skip-fix (2018-07-23) 2 commits - - merge-recursive: preserve skip_worktree bit when necessary - - t3507: add a testcase showing failure with sparse checkout +* ms/http-proto-doc (2018-07-30) 1 commit + - doc: fix want-capability separator - When the sparse checkout feature is in use, "git cherry-pick" and - other mergy operations lost the skip_worktree bit when a path that - is excluded from checkout requires content level merge, which is - resolved as the same as the HEAD version, without materializing the - merge result in the working tree, which made the path appear as - deleted. This has been corrected by preserving the skip_worktree - bit (and not materializing the file in the working tree). + Doc fix. - Stuck in review? - cf. <75aa297e-4857-d92a-7041-618ff3b0b77a@gmail.com> + Will merge to 'next'. -* es/format-patch-interdiff (2018-07-23) 6 commits - - format-patch: allow --interdiff to apply to a lone-patch - - log-tree: show_log: make commentary block delimiting reusable - - interdiff: teach show_interdiff() to indent interdiff - - format-patch: teach --interdiff to respect -v/--reroll-count - - format-patch: add --interdiff option to embed diff in cover letter - - format-patch: allow additional generated content in make_cover_letter() - (this branch is used by es/format-patch-rangediff.) +* nd/pack-objects-threading-doc (2018-07-30) 1 commit + - pack-objects: document about thread synchronization - "git format-patch" learned a new "--interdiff" option to explain - the difference between this version and the previous atttempt in - the cover letter (or after the tree-dashes as a comment). + Doc fix. - Stuck in review? - cf. + Will merge to 'next'. -* es/format-patch-rangediff (2018-07-25) 10 commits - - format-patch: allow --range-diff to apply to a lone-patch - - format-patch: add --creation-factor tweak for --range-diff - - format-patch: teach --range-diff to respect -v/--reroll-count - - format-patch: extend --range-diff to accept revision range - - format-patch: add --range-diff option to embed diff in cover letter - - range-diff: relieve callers of low-level configuration burden - - range-diff: publish default creation factor - - range-diff: respect diff_option.file rather than assuming 'stdout' - - Merge branch 'es/format-patch-interdiff' into es/format-patch-rangediff - - Merge branch 'js/range-diff' into es/format-patch-rangediff - (this branch uses es/format-patch-interdiff and js/range-diff.) +* sb/indent-heuristic-optim (2018-08-01) 1 commit + - xdiff: reduce indent heuristic overhead - "git format-patch" learned a new "--range-diff" option to explain - the difference between this version and the previous atttempt in - the cover letter (or after the tree-dashes as a comment). + "git diff --indent-heuristic" had a bad corner case performance. - Need to wait for the prereq topics to solidify a bit more. + Will merge to 'next'. -* jk/banned-function (2018-07-24) 5 commits - - banned.h: mark strncpy() as banned - - banned.h: mark sprintf() as banned - - banned.h: mark strcat() as banned - - automatically ban strcpy() - - Merge branch 'sb/blame-color' into jk/banned-function +* ab/fetch-nego (2018-08-01) 3 commits + - fetch doc: cross-link two new negotiation options + - negotiator: unknown fetch.negotiationAlgorithm should error out + - Merge branch 'jt/fetch-nego-tip' into ab/fetch-nego - It is too easy to misuse system API functions such as strcat(); - these selected functions are now forbidden in this codebase and - will cause a compilation failure. + Update to a few other topics. Will merge to 'next'. -* jk/size-t (2018-07-24) 6 commits - - strbuf_humanise: use unsigned variables - - pass st.st_size as hint for strbuf_readlink() - - strbuf_readlink: use ssize_t - - strbuf: use size_t for length in intermediate variables - - reencode_string: use size_t for string lengths - - reencode_string: use st_add/st_mult helpers +* ab/fetch-tags-noclobber (2018-07-31) 10 commits + - fetch: stop clobbering existing tags without --force + - pull doc: fix a long-standing grammar error + - fetch tests: add a test clobbering tag behavior + - fetch tests: correct a comment "remove it" -> "remove them" + - push doc: correct lies about how push refspecs work + - push tests: assert re-pushing annotated tags + - push tests: add more testing for forced tag pushing + - push tests: fix logic error in "push" test assertion + - push tests: remove redundant 'git push' invocation + - fetch tests: change "Tag" test tag to "testTag" + + "git fetch" used to apply the same "fast-forward" rule and allow + tags to move without "--force" option, which made little sense, + which has been corrected. - Code clean-up to use size_t/ssize_t when they are the right type. + Expecting a reroll. + cf. + cf. - Will merge to 'next'. +* bp/checkout-new-branch-optim (2018-07-31) 1 commit + - checkout: optimize "git checkout -b " -* js/t7406-recursive-submodule-update-order-fix (2018-07-23) 1 commit - - t7406: avoid failures solely due to timing issues + "git checkout -b newbranch [HEAD]" should not have to do as much as + checking out a commit different from HEAD. An attempt is made to + optimize this special case. + + Waiting for review comments to be responded. + cf. + + +* es/mw-to-git-chain-fix (2018-07-31) 1 commit + - mw-to-git/t9360: fix broken &&-chain Test fix. - Will merge to 'next' and then to 'master'. + Will merge to 'next'. -* js/vscode (2018-07-23) 9 commits - - vscode: let cSpell work on commit messages, too - - vscode: add a dictionary for cSpell - - vscode: use 8-space tabs, no trailing ws, etc for Git's source code - - vscode: wrap commit messages at column 72 by default - - vscode: only overwrite C/C++ settings - - mingw: define WIN32 explicitly - - cache.h: extract enum declaration from inside a struct declaration - - vscode: hard-code a couple defines - - contrib: add a script to initialize VS Code configuration +* jk/merge-subtree-heuristics (2018-08-02) 1 commit + - score_trees(): fix iteration over trees with missing entries - Add a script (in contrib/) to help users of VSCode work better with - our codebase. + The automatic tree-matching in "git merge -s subtree" was broken 5 + years ago and nobody has noticed since then, which is now fixed. - Stuck in review? - cf. <20180723165719.GA16420@aiede.svl.corp.google.com> - cf. <20180723174108.GA9285@aiede.svl.corp.google.com> + Will merge to 'next'. -* jt/tag-following-with-proto-v2-fix (2018-07-24) 2 commits - - fetch: send "refs/tags/" prefix upon CLI refspecs - - t5702: test fetch with multiple refspecs at a time +* jt/connectivity-check-after-unshallow (2018-08-01) 1 commit + - fetch-pack: unify ref in and out param - The wire-protocol v2 relies on the client to send "ref prefixes" to - limit the bandwidth spent on the initial ref advertisement. "git - fetch $remote branch:branch" that asks tags that point into the - history leading to the "branch" automatically followed sent to - narrow prefix and broke the tag following, which has been fixed. + Recent update to the transport layer broke ref updates after "git + fetch", which is now fixed. Will merge to 'next'. -* nd/pack-deltify-regression-fix (2018-07-23) 1 commit - - pack-objects: fix performance issues on packing large deltas +* jt/refspec-dwim-precedence-fix (2018-08-02) 1 commit + - remote: make refspec follow the same disambiguation rule as local refs - In a recent update in 2.18 era, "git pack-objects" started - producing a larger than necessary packfiles by missing - opportunities to use large deltas. + "git fetch $there refs/heads/s" ought to fetch the tip of the + branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose + name is "refs/heads/s" exists at the same time, fetched that one + instead by mistake. This has been corrected to honor the usual + disambiguation rules for abbreviated refnames. - Will merge to and cook in 'next'. + Will merge to 'next'. -* sb/trailers-docfix (2018-07-20) 1 commit - - Documentation/git-interpret-trailers: explain possible values +* nd/clone-case-smashing-warning (2018-07-31) 1 commit + - clone: report duplicate entries on case-insensitive filesystems - Doc update. + Running "git clone" against a project that contain two files with + pathnames that differ only in cases on a case insensitive + filesystem would result in one of the files lost because the + underlying filesystem is incapable of holding both at the same + time. An attempt is made to detect such a case and warn. - Will merge to 'next' and then to 'master'. + Discussion getting petered out. + Doing this portably and extending it to UTF-8 normalization issue + HFS+ has would be costly. + cf. <20180728095659.GA21450@sigill.intra.peff.net> + cf. -* sg/coccicheck-updates (2018-07-23) 5 commits - - coccinelle: extract dedicated make target to clean Coccinelle's results - - coccinelle: put sane filenames into output patches - - coccinelle: exclude sha1dc source files from static analysis - - coccinelle: use $(addsuffix) in 'coccicheck' make target - - coccinelle: mark the 'coccicheck' make target as .PHONY - Update the way we use Coccinelle to find out-of-style code that - need to be modernised. +* nd/unpack-trees-with-cache-tree (2018-07-31) 4 commits + - unpack-trees: cheaper index update when walking by cache-tree + - unpack-trees: reduce malloc in cache-tree walk + - unpack-trees: optimize walking same trees with cache-tree + - unpack-trees.c: add performance tracing - Will merge to 'next'. + The unpack_trees() API used in checking out a branch and merging + walks one or more trees along with the index. When the cache-tree + in the index tells us that we are walking a tree whose flattened + contents is known (i.e. matches a span in the index), as linearly + scanning a span in the index is much more efficient than having to + open tree objects recursively and listing their entries, the walk + can be optimized, which is done in this topic. -* sg/fast-import-dump-refs-on-checkpoint-fix (2018-07-20) 1 commit - - t9300: wait for background fast-import process to die after killing it +* rs/remote-mv-leakfix (2018-08-01) 1 commit + - remote: clear string_list after use in mv() - Test update. + Leakfix. - Will merge to 'next' and then to 'master'. + Will merge to 'next'. -* sg/travis-cocci-diagnose-failure (2018-07-23) 2 commits - - travis-ci: fail if Coccinelle static analysis found something to transform - - travis-ci: run Coccinelle static analysis with two parallel jobs +* sb/config-write-fix (2018-08-01) 3 commits + - git-config: document accidental multi-line setting in deprecated syntax + - config: fix case sensitive subsection names on writing + - t1300: document current behavior of setting options - Update the way we run static analysis tool at TravisCI to make it - easier to use its findings. + Recent update to "git config" broke updating variable in a + subsection, which has been corrected. - Will merge to 'next' and then to 'master'. + Not quite? + cf. -* ab/newhash-is-sha256 (2018-07-25) 1 commit - - doc hash-function-transition: note the lack of a changelog +* sb/range-diff-colors (2018-08-01) 9 commits + - fixup! t3206: add color test for range-diff --dual-color + - diff.c: rewrite emit_line_0 more understandably + - diff.c: compute reverse locally in emit_line_0 + - diff: use emit_line_0 once per line + - diff.c: add set_sign to emit_line_0 + - diff.c: reorder arguments for emit_line_ws_markup + - diff.c: simplify caller of emit_line_0 + - t3206: add color test for range-diff --dual-color + - test_decode_color: understand FAINT and ITALIC + (this branch uses js/range-diff; is tangled with es/format-patch-rangediff.) - Documentation update. - Waiting for another attempt for the second part. +* sg/t1404-update-ref-test-timeout (2018-08-01) 1 commit + - t1404: increase core.packedRefsTimeout to avoid occasional test failure + An attempt to unflake a test a bit. -* bb/redecl-enum-fix (2018-07-25) 1 commit - - packfile: drop a repeated enum declaration - Compilation fix. +* sg/travis-retrieve-trash-upon-failure (2018-08-01) 1 commit + - travis-ci: include the trash directories of failed tests in the trace log + The Travis CI scripts were taught to ship back the test data from + failed tests. -* es/diff-color-move-fix (2018-07-25) 1 commit - - diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra" + Will merge to 'next'. - One of the "diff --color-moved" mode "dimmed_zebra" that was named - in an unusual way has been deprecated and replaced by - "dimmed-zebra". - Will merge to 'next' and then to 'master'. +* jt/fetch-follow-fix (2018-08-01) 1 commit + - fetch-pack: unify ref in and out param + "git fetch" sometimes failed to update the remote-tracking refs, + which has been corrected. -* jh/structured-logging (2018-07-25) 25 commits - - structured-logging: add config data facility - - structured-logging: t0420 tests for interacitve child_summary - - structured-logging: t0420 tests for child process detail events - - structured-logging: add child process classification - - structured-logging: add detail-events for child processes - - structured-logging: add structured logging to remote-curl - - structured-logging: t0420 tests for aux-data - - structured-logging: add aux-data for size of sparse-checkout file - - structured-logging: add aux-data for index size - - structured-logging: add aux-data facility - - structured-logging: t0420 tests for timers - - structured-logging: add timer around preload_index - - structured-logging: add timer around wt-status functions - - structured-logging: add timer around do_write_index - - structured-logging: add timer around do_read_index - - structured-logging: add timer facility - - structured-logging: add detail-event for lazy_init_name_hash - - structured-logging: add detail-event facility - - structured-logging: t0420 basic tests - - structured-logging: set sub_command field for checkout command - - structured-logging: set sub_command field for branch command - - structured-logging: add session-id to log events - - structured-logging: add structured logging framework - - structured-logging: add STRUCTURED_LOGGING=1 to Makefile - - structured-logging: design document - (this branch uses jh/json-writer.) + Will merge to 'next'. + + +* ab/sha1dc (2018-08-02) 1 commit + - sha1dc: update from upstream + + AIX portability update for SHADC hash, imported from upstream. - X-Gah. + Will merge to 'next'. + + +* es/want-color-fd-defensive (2018-08-02) 1 commit + - color: protect against out-of-bounds array access/assignment + + Futureproofing a helper function that can easily misused. + + Will merge to 'next'. + + +* pw/rebase-i-author-script-fix (2018-08-02) 2 commits + - sequencer: fix quoting in write_author_script + - sequencer: handle errors in read_author_ident() + (this branch uses es/rebase-i-author-script-fix.) + + Recent "git rebase -i" update started to write bogusly formatted + author-script, with a matching broken reading code. These are + being fixed. + + Undecided. + Is it the list consensus to favor this "with extra code, read the + script written by bad writer" approach? + + +* rs/parse-opt-lithelp (2018-08-02) 6 commits + - parse-options: automatically infer PARSE_OPT_LITERAL_ARGHELP + - shortlog: correct option help for -w + - send-pack: specify --force-with-lease argument help explicitly + - pack-objects: specify --index-version argument help explicitly + - difftool: remove angular brackets from argument help + - add, update-index: fix --chmod argument help + + The parse-options machinery learned to refrain from enclosing + placeholder string inside a "" pair automatically + without PARSE_OPT_LITERAL_ARGHELP. Existing help text for option + arguments that are not formatted correctly have been identified and + fixed. + + Will merge to 'next'. -------------------------------------------------- [Stalled] -* pw/add-p-select (2018-03-16) 3 commits - - add -p: optimize line selection for short hunks - - add -p: allow line selection to be inverted - - add -p: select individual hunk lines - - "git add -p" interactive interface learned to let users choose - individual added/removed lines to be used in the operation, instead - of accepting or rejecting a whole hunk. +* ma/wrapped-info (2018-05-28) 2 commits + - usage: prefix all lines in `vreportf()`, not just the first + - usage: extract `prefix_suffix_lines()` from `advise()` - Expecting a reroll to reignite the discussion. - cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net> + An attempt to help making multi-line messages fed to warning(), + error(), and friends more easily translatable. + Will discard and wait for a cleaned-up rewrite. + cf. <20180529213957.GF7964@sigill.intra.peff.net> * hn/bisect-first-parent (2018-04-21) 1 commit - bisect: create 'bisect_flags' parameter in find_bisection() @@ -718,17 +829,6 @@ of the repositories listed at in the thread above---we are still waiting for a reroll. -* mk/http-backend-content-length (2018-06-11) 3 commits - - http-backend: respect CONTENT_LENGTH for receive-pack - - http-backend: respect CONTENT_LENGTH as specified by rfc3875 - - http-backend: cleanup writing to child process - - The http-backend (used for smart-http transport) used to slurp the - whole input until EOF, without paying attention to CONTENT_LENGTH - that is supplied in the environment and instead expecting the Web - server to close the input stream. This has been fixed. - - * jk/drop-ancient-curl (2017-08-09) 5 commits - http: #error on too-old curl - curl: remove ifdef'd code never used with curl >=7.19.4 @@ -754,457 +854,552 @@ of the repositories listed at -------------------------------------------------- [Cooking] -* 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 - (merged to 'next' on 2018-07-24 at 0b83ade721) - + sequencer: pass absolute GIT_WORK_TREE to exec commands +* es/diff-color-moved-fix (2018-07-25) 1 commit + (merged to 'next' on 2018-08-02 at 233bccfbfb) + + diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra" - "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. + One of the "diff --color-moved" mode "dimmed_zebra" that was named + in an unusual way has been deprecated and replaced by + "dimmed-zebra". Will merge to 'master'. -* bp/test-drop-caches-for-windows (2018-07-12) 1 commit - (merged to 'next' on 2018-07-24 at 257bb336c6) - + handle lower case drive letters on Windows +* pw/add-p-select (2018-07-26) 4 commits + - add -p: optimize line selection for short hunks + - add -p: allow line selection to be inverted + - add -p: select modified lines correctly + - add -p: select individual hunk lines - A test helper update for Windows. + "git add -p" interactive interface learned to let users choose + individual added/removed lines to be used in the operation, instead + of accepting or rejecting a whole hunk. - Will merge to 'master'. + Will merge to and cook in 'next'. + I found the feature to be hard to explain, and may result in more + end-user complaints, but let's see. -* 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 - "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. +* mk/http-backend-content-length (2018-07-30) 4 commits + - t5562: avoid non-portable "export FOO=bar" construct + - http-backend: respect CONTENT_LENGTH for receive-pack + - http-backend: respect CONTENT_LENGTH as specified by rfc3875 + - http-backend: cleanup writing to child process - This may have to be rebased on an older maintenance track before - moving forward. + The http-backend (used for smart-http transport) used to slurp the + whole input until EOF, without paying attention to CONTENT_LENGTH + that is supplied in the environment and instead expecting the Web + server to close the input stream. This has been fixed. + Will merge to 'next'. -* es/chain-lint-in-subshell (2018-07-17) 10 commits - (merged to 'next' on 2018-07-24 at 9370bbdfaf) - + 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.) - Look for broken "&&" chains that are hidden in subshell, many of - which have been found and corrected. +* ds/commit-graph-with-grafts (2018-07-19) 8 commits + (merged to 'next' on 2018-08-02 at 0ee624e329) + + commit-graph: close_commit_graph before shallow walk + + commit-graph: not compatible with uninitialized repo + + commit-graph: not compatible with grafts + + commit-graph: not compatible with replace objects + + test-repository: properly init repo + + commit-graph: update design document + + refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback + + refs.c: migrate internal ref iteration to pass thru repository argument + + The recently introduced commit-graph auxiliary data is incompatible + with mechanisms such as replace & grafts that "breaks" immutable + nature of the object reference relationship. Disable optimizations + based on its use (and updating existing commit-graph) when these + incompatible features are in use in the repository. Will merge to 'master'. -* hs/gpgsm (2018-07-20) 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 +* jk/core-use-replace-refs (2018-07-18) 3 commits + (merged to 'next' on 2018-08-02 at 90fb6b1056) + + add core.usereplacerefs config option + + check_replace_refs: rename to read_replace_refs + + check_replace_refs: fix outdated comment - 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". + A new configuration variable core.usereplacerefs has been added, + primarily to help server installations that want to ignore the + replace mechanism altogether. - Will merge to 'next'. + Will merge to 'master'. -* jk/has-uncommitted-changes-fix (2018-07-11) 1 commit - (merged to 'next' on 2018-07-24 at 2ea14c0afb) - + has_uncommitted_changes(): fall back to empty tree +* nd/i18n (2018-07-23) 23 commits + (merged to 'next' on 2018-08-02 at 904a22a5d1) + + transport-helper.c: mark more strings for translation + + transport.c: mark more strings for translation + + sha1-file.c: mark more strings for translation + + sequencer.c: mark more strings for translation + + replace-object.c: mark more strings for translation + + refspec.c: mark more strings for translation + + refs.c: mark more strings for translation + + pkt-line.c: mark more strings for translation + + object.c: mark more strings for translation + + exec-cmd.c: mark more strings for translation + + environment.c: mark more strings for translation + + dir.c: mark more strings for translation + + convert.c: mark more strings for translation + + connect.c: mark more strings for translation + + config.c: mark more strings for translation + + commit-graph.c: mark more strings for translation + + builtin/replace.c: mark more strings for translation + + builtin/pack-objects.c: mark more strings for translation + + builtin/grep.c: mark strings for translation + + builtin/config.c: mark more strings for translation + + archive-zip.c: mark more strings for translation + + archive-tar.c: mark more strings for translation + + Update messages in preparation for i18n - "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. + Many more strings are prepared for l10n. Will merge to 'master'. -* jm/send-email-tls-auth-on-batch (2018-07-16) 1 commit - (merged to 'next' on 2018-07-24 at fb3e653f44) - + send-email: fix tls AUTH when sending batch +* sb/histogram-less-memory (2018-07-23) 4 commits + (merged to 'next' on 2018-08-02 at cfb02aa3b5) + + xdiff/histogram: remove tail recursion + + xdiff/xhistogram: move index allocation into find_lcs + + xdiff/xhistogram: factor out memory cleanup into free_index() + + xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff - "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. + "git diff --histogram" had a bad memory usage pattern, which has + been rearranged to reduce the peak usage. Will merge to 'master'. - 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 +* bb/make-developer-pedantic (2018-07-25) 1 commit + (merged to 'next' on 2018-08-02 at c738a84b7e) + + Makefile: add a DEVOPTS flag to get pedantic compilation - "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. + "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile + with -pedantic option, which may catch more problematic program + constructs and potential bugs. - Stuck in review? - cf. <20180717201348.GD26218@sigill.intra.peff.net> + Will merge to 'master'. -* js/rebase-merge-octopus (2018-07-11) 3 commits - (merged to 'next' on 2018-07-24 at 14ad8699de) - + 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 +* bw/clone-ref-prefixes (2018-07-20) 1 commit + (merged to 'next' on 2018-08-02 at c8ad140ab0) + + clone: send ref-prefixes when using protocol v2 - "git rebase --rebase-merges" mode now handles octopus merges as - well. + The wire-protocol v2 relies on the client to send "ref prefixes" to + limit the bandwidth spent on the initial ref advertisement. "git + clone" when learned to speak v2 forgot to do so, which has been + corrected. Will merge to 'master'. -* jt/fetch-negotiator-skipping (2018-07-16) 1 commit - (merged to 'next' on 2018-07-24 at 8e25a49405) - + negotiator/skipping: skip commits during fetch - (this branch uses jt/fetch-pack-negotiator; is tangled with jt/fetch-nego-tip.) +* bw/fetch-pack-i18n (2018-07-23) 1 commit + (merged to 'next' on 2018-08-02 at df72001755) + + fetch-pack: mark die strings for translation - 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. + i18n updates. Will merge to 'master'. -* jt/tags-to-promised-blobs-fix (2018-07-16) 2 commits - (merged to 'next' on 2018-07-24 at 8d7e78a671) - + tag: don't warn if target is missing but promised - + revision: tolerate promised targets of tags +* bw/protocol-v2 (2018-07-24) 1 commit + (merged to 'next' on 2018-08-02 at f4076b3e94) + + pack-protocol: mention and point to docs for protocol v2 - The lazy clone support had a few places where missing but promised - objects were not correctly tolerated, which have been fixed. + Doc update. Will merge to 'master'. -* sb/submodule-update-in-c (2018-07-18) 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 +* ds/reachable (2018-07-20) 18 commits + - commit-reach: use can_all_from_reach + - commit-reach: make can_all_from_reach... linear + - commit-reach: replace ref_newer logic + - test-reach: test commit_contains + - test-reach: test can_all_from_reach_with_flags + - test-reach: test reduce_heads + - test-reach: test get_merge_bases_many + - test-reach: test is_descendant_of + - test-reach: test in_merge_bases + - test-reach: create new test tool for ref_newer + - commit-reach: move can_all_from_reach_with_flags + - upload-pack: generalize commit date cutoff + - upload-pack: refactor ok_to_give_up() + - upload-pack: make reachable() more generic + - commit-reach: move commit_contains from ref-filter + - commit-reach: move ref_newer from remote.c + - commit.h: remove method declarations + - commit-reach: move walk methods from commit.c - "git submodule update" is getting rewritten piece-by-piece into C. + The code for computing history reachability has been shuffled, + obtained a bunch of new tests to cover them, and then being + improved. - It seems to pass its own self-tests standalone, but seems to break - horribly when merged to 'pu'. + Will merge to and cook in 'next'. -* sg/httpd-test-unflake (2018-07-12) 3 commits - (merged to 'next' on 2018-07-24 at b7df820256) - + 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 +* en/merge-recursive-skip-fix (2018-07-27) 2 commits + - merge-recursive: preserve skip_worktree bit when necessary + - t3507: add a testcase showing failure with sparse checkout - 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. + When the sparse checkout feature is in use, "git cherry-pick" and + other mergy operations lost the skip_worktree bit when a path that + is excluded from checkout requires content level merge, which is + resolved as the same as the HEAD version, without materializing the + merge result in the working tree, which made the path appear as + deleted. This has been corrected by preserving the skip_worktree + bit (and not materializing the file in the working tree). - Will merge to 'master'. + Will merge to 'next'. -* 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 +* es/format-patch-interdiff (2018-07-23) 6 commits + - format-patch: allow --interdiff to apply to a lone-patch + - log-tree: show_log: make commentary block delimiting reusable + - interdiff: teach show_interdiff() to indent interdiff + - format-patch: teach --interdiff to respect -v/--reroll-count + - format-patch: add --interdiff option to embed diff in cover letter + - format-patch: allow additional generated content in make_cover_letter() + (this branch is used by es/format-patch-rangediff.) + + "git format-patch" learned a new "--interdiff" option to explain + the difference between this version and the previous atttempt in + the cover letter (or after the tree-dashes as a comment). + + Stuck in review? + cf. - "git commit --dry-run" gave a correct exit status even during a - conflict resolution toward a merge, but it did not with the - "--short" option, which has been corrected. + +* es/format-patch-rangediff (2018-07-30) 10 commits + - format-patch: allow --range-diff to apply to a lone-patch + - format-patch: add --creation-factor tweak for --range-diff + - format-patch: teach --range-diff to respect -v/--reroll-count + - format-patch: extend --range-diff to accept revision range + - format-patch: add --range-diff option to embed diff in cover letter + - range-diff: relieve callers of low-level configuration burden + - range-diff: publish default creation factor + - range-diff: respect diff_option.file rather than assuming 'stdout' + - Merge branch 'es/format-patch-interdiff' into es/format-patch-rangediff + - Merge branch 'js/range-diff' into es/format-patch-rangediff + (this branch uses es/format-patch-interdiff and js/range-diff; is tangled with sb/range-diff-colors.) + + "git format-patch" learned a new "--range-diff" option to explain + the difference between this version and the previous atttempt in + the cover letter (or after the tree-dashes as a comment). + + Need to wait for the prereq topics to solidify a bit more. + + +* jk/banned-function (2018-07-26) 5 commits + - banned.h: mark strncpy() as banned + - banned.h: mark sprintf() as banned + - banned.h: mark strcat() as banned + - automatically ban strcpy() + - Merge branch 'sb/blame-color' into jk/banned-function + + It is too easy to misuse system API functions such as strcat(); + these selected functions are now forbidden in this codebase and + will cause a compilation failure. 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 +* jk/size-t (2018-07-24) 6 commits + (merged to 'next' on 2018-08-02 at 6f861e05f0) + + strbuf_humanise: use unsigned variables + + pass st.st_size as hint for strbuf_readlink() + + strbuf_readlink: use ssize_t + + strbuf: use size_t for length in intermediate variables + + reencode_string: use size_t for string lengths + + reencode_string: use st_add/st_mult helpers + Code clean-up to use size_t/ssize_t when they are the right type. -* jk/ui-color-always-to-auto (2018-07-18) 1 commit - - Documentation: fix --color option formatting + Will merge to 'master'. - Doc formatting fix. - Will merge to 'next' and then to 'master'. +* js/t7406-recursive-submodule-update-order-fix (2018-07-23) 1 commit + (merged to 'next' on 2018-08-02 at 217ea36a37) + + t7406: avoid failures solely due to timing issues + Test fix. -* jh/json-writer (2018-07-16) 1 commit - - json_writer: new routines to create JSON data - (this branch is used by jh/structured-logging.) + Will merge to 'master'. - Preparatory code to later add json output for telemetry data. + +* js/vscode (2018-07-30) 9 commits + - vscode: let cSpell work on commit messages, too + - vscode: add a dictionary for cSpell + - vscode: use 8-space tabs, no trailing ws, etc for Git's source code + - vscode: wrap commit messages at column 72 by default + - vscode: only overwrite C/C++ settings + - mingw: define WIN32 explicitly + - cache.h: extract enum declaration from inside a struct declaration + - vscode: hard-code a couple defines + - contrib: add a script to initialize VS Code configuration + + Add a script (in contrib/) to help users of VSCode work better with + our codebase. Will merge to 'next'. -* 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 +* jt/tag-following-with-proto-v2-fix (2018-07-24) 2 commits + (merged to 'next' on 2018-08-02 at d9eabdea95) + + fetch: send "refs/tags/" prefix upon CLI refspecs + + t5702: test fetch with multiple refspecs at a time - Piecemeal rewrite of the remaining "rebase -i" machinery in C. + The wire-protocol v2 relies on the client to send "ref prefixes" to + limit the bandwidth spent on the initial ref advertisement. "git + fetch $remote branch:branch" that asks tags that point into the + history leading to the "branch" automatically followed sent to + narrow prefix and broke the tag following, which has been fixed. - A reroll (which is rumored to be quite good) exists, but hasn't - been picked up yet. + Will merge to 'master'. -* sb/object-store-lookup (2018-06-29) 33 commits - (merged to 'next' on 2018-07-24 at dd96e29376) - + 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 ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.) +* nd/pack-deltify-regression-fix (2018-07-23) 1 commit + (merged to 'next' on 2018-08-02 at f3b2bf0fef) + + pack-objects: fix performance issues on packing large deltas - lookup_commit_reference() and friends have been updated to find - in-core object for a specific in-core repository instance. + In a recent update in 2.18 era, "git pack-objects" started + producing a larger than necessary packfiles by missing + opportunities to use large deltas. + + Will cook in 'next'. + + +* sb/trailers-docfix (2018-07-20) 1 commit + (merged to 'next' on 2018-08-02 at ba348fafcd) + + Documentation/git-interpret-trailers: explain possible values + + Doc update. Will merge to 'master'. -* bc/object-id (2018-07-16) 16 commits - (merged to 'next' on 2018-07-24 at 23680778a9) - + 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 +* sg/coccicheck-updates (2018-07-23) 5 commits + (merged to 'next' on 2018-08-02 at b5548ff3a9) + + coccinelle: extract dedicated make target to clean Coccinelle's results + + coccinelle: put sane filenames into output patches + + coccinelle: exclude sha1dc source files from static analysis + + coccinelle: use $(addsuffix) in 'coccicheck' make target + + coccinelle: mark the 'coccicheck' make target as .PHONY - Conversion from uchar[40] to struct object_id continues. + Update the way we use Coccinelle to find out-of-style code that + need to be modernised. Will merge to 'master'. -* en/dirty-merge-fixes (2018-07-11) 9 commits - (merged to 'next' on 2018-07-24 at 7b6ca3507c) - + 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 +* sg/fast-import-dump-refs-on-checkpoint-fix (2018-07-20) 1 commit + (merged to 'next' on 2018-08-02 at f5c05b5a2c) + + t9300: wait for background fast-import process to die after killing it - 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. + Test update. Will merge to 'master'. -* en/t6036-merge-recursive-tests (2018-07-11) 6 commits - (merged to 'next' on 2018-07-24 at 75055cb6e1) - + 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 +* sg/travis-cocci-diagnose-failure (2018-07-23) 2 commits + (merged to 'next' on 2018-08-02 at 54808a8778) + + travis-ci: fail if Coccinelle static analysis found something to transform + + travis-ci: run Coccinelle static analysis with two parallel jobs - Tests to cover various conflicting cases have been added for - merge-recursive. + Update the way we run static analysis tool at TravisCI to make it + easier to use its findings. Will merge to 'master'. -* en/t6036-recursive-corner-cases (2018-07-12) 2 commits - (merged to 'next' on 2018-07-24 at b7b3514ef4) - + t6036: fix broken && chain in sub-shell - + t6036: add lots of detail for directory/file conflicts in recursive case +* ab/newhash-is-sha256 (2018-07-26) 2 commits + - doc hash-function-transition: pick SHA-256 as NewHash + - doc hash-function-transition: note the lack of a changelog - Tests to cover more D/F conflict cases have been added for - merge-recursive. + Documentation update. + + Will merge to 'next'. + + +* bb/redecl-enum-fix (2018-07-26) 1 commit + - packfile: ensure that enum object_type is defined + + Compilation fix. + + Will merge to 'next'. + + +* jh/structured-logging (2018-07-25) 25 commits + - structured-logging: add config data facility + - structured-logging: t0420 tests for interacitve child_summary + - structured-logging: t0420 tests for child process detail events + - structured-logging: add child process classification + - structured-logging: add detail-events for child processes + - structured-logging: add structured logging to remote-curl + - structured-logging: t0420 tests for aux-data + - structured-logging: add aux-data for size of sparse-checkout file + - structured-logging: add aux-data for index size + - structured-logging: add aux-data facility + - structured-logging: t0420 tests for timers + - structured-logging: add timer around preload_index + - structured-logging: add timer around wt-status functions + - structured-logging: add timer around do_write_index + - structured-logging: add timer around do_read_index + - structured-logging: add timer facility + - structured-logging: add detail-event for lazy_init_name_hash + - structured-logging: add detail-event facility + - structured-logging: t0420 basic tests + - structured-logging: set sub_command field for checkout command + - structured-logging: set sub_command field for branch command + - structured-logging: add session-id to log events + - structured-logging: add structured logging framework + - structured-logging: add STRUCTURED_LOGGING=1 to Makefile + - structured-logging: design document + (this branch uses jh/json-writer.) + + Will merge to 'next'. + + +* en/abort-df-conflict-fixes (2018-07-31) 2 commits + - read-cache: fix directory/file conflict handling in read_index_unmerged() + - t1015: demonstrate directory/file conflict recovery failures + + "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. + + Will merge to 'next'. + + +* hs/gpgsm (2018-07-20) 7 commits + (merged to 'next' on 2018-08-02 at db28bffe4f) + + 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 + + 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". Will merge to 'master'. -* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits - (merged to 'next' on 2018-07-24 at 65c80f72da) - + 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 +* 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 - Various glitches in the heuristics of merge-recursive strategy have - been documented in new tests. + "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. + + Stuck in review? + cf. <20180717201348.GD26218@sigill.intra.peff.net> + + +* sb/submodule-update-in-c (2018-07-18) 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 + + "git submodule update" is getting rewritten piece-by-piece into C. + + Will merge to 'next'. + + +* sl/commit-dry-run-with-short-output-fix (2018-07-30) 4 commits + . commit: fix exit code when doing a dry run + . wt-status: teach wt_status_collect about merges in progress + . wt-status: rename commitable to committable + . t7501: add coverage for flags which imply dry runs + + "git commit --dry-run" gave a correct exit status even during a + conflict resolution toward a merge, but it did not with the + "--short" option, which has been corrected. + + Seems to break 7512, 3404 and 7060 in 'pu'. + + +* 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 - Will merge to 'master'. + Fixes to "git rerere" corner cases, especially when conflict + markers cannot be parsed in the file. - I am not sure if there is a single "correct" answer everybody can - agree on for each of these "insane" cases, though. + I am not sure about the "nested" stuff, though. -* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits - (merged to 'next' on 2018-07-24 at 6cb7d02298) - + t7405: verify 'merge --abort' works after submodule/path conflicts - + t7405: add a directory/submodule conflict - + t7405: add a file/submodule conflict +* jk/ui-color-always-to-auto (2018-07-18) 1 commit + (merged to 'next' on 2018-08-02 at 1a054baf0e) + + Documentation: fix --color option formatting - Tests to cover conflict cases that involve submodules have been - added for merge-recursive. + Doc formatting fix. Will merge to 'master'. -* es/test-fixes (2018-07-17) 26 commits - (merged to 'next' on 2018-07-24 at fd6796a3ef) - + 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.) +* jh/json-writer (2018-07-16) 1 commit + (merged to 'next' on 2018-08-02 at d841450c7d) + + json_writer: new routines to create JSON data + (this branch is used by jh/structured-logging.) - Test clean-up and corrections. + Preparatory code to later add json output for telemetry data. Will merge to 'master'. -* jk/fsck-gitmodules-gently (2018-07-16) 6 commits - (merged to 'next' on 2018-07-24 at 5b15c800db) - + 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 +* ag/rebase-i-in-c (2018-07-31) 20 commits + - rebase -i: move rebase--helper modes to rebase--interactive + - rebase -i: remove git-rebase--interactive.sh + - rebase--interactive2: rewrite the submodes of interactive rebase in C + - rebase -i: implement the main part of interactive rebase as a builtin + - rebase -i: rewrite init_basic_state() in C + - rebase -i: rewrite write_basic_state() in C + - rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C + - rebase -i: implement the logic to initialize $revisions in C + - rebase -i: remove unused modes and functions + - rebase -i: rewrite complete_action() in C + - t3404: todo list with commented-out commands only aborts + - 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 -i: rewrite the edit-todo functionality in C + - editor: add a function to launch the sequence editor + - rebase -i: rewrite append_todo_help() in C + - sequencer: make two functions and an enum from sequencer.c public - 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. + Rewrite of the remaining "rebase -i" machinery in C. - Will merge to 'master'. + Will merge to 'next'. -* js/range-diff (2018-07-25) 21 commits +* js/range-diff (2018-07-30) 21 commits - range-diff: use dim/bold cues to improve dual color mode - range-diff: make --dual-color the default mode - range-diff: left-pad patch numbers @@ -1226,55 +1421,14 @@ of the repositories listed at - 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 - (this branch is used by es/format-patch-rangediff.) + (this branch is used by es/format-patch-rangediff and sb/range-diff-colors.) "git tbdiff" that lets us compare individual patches in two iterations of a topic has been rewritten and made into a built-in command. - Undecided. - - Many "The feature is useful" comments without much real review; we - know the feature is great as this mimicks tbdiff already so that is - not news. - - I've squashed an obvious documentation fix in before rebasing the - other topic that depends on it. I _think_ we would probably be - better off to _disable_ whitespace-error coloring altogether when - showing diff-of-diff, and get rid of the workaround that only is - applicable to the context lines of the outer diff (unless we first - define how whitespace errors in diff-of-diff should be colored and - implement it correctly, that is, but after seeing these two - attempts, it seems that is harder than it is worth). - - -* jt/commit-graph-per-object-store (2018-07-17) 7 commits - (merged to 'next' on 2018-07-24 at 090d1a4d59) - + 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 is used by ds/commit-graph-with-grafts and ds/reachable; 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 'master'. - - -* kg/gc-auto-windows-workaround (2018-07-09) 1 commit - (merged to 'next' on 2018-07-24 at 71c05d27b6) - + 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 'master'. + It seems there will another hopefully the final reroll coming. + cf. * lt/date-human (2018-07-09) 1 commit @@ -1300,42 +1454,17 @@ of the repositories listed at header. These cases have been optimzied by calling oid_object_info() API. - What's the doneness of this one? + Will merge to 'next'. -* pk/rebase-in-c (2018-07-23) 4 commits +* pk/rebase-in-c (2018-07-30) 3 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. - - -* jt/fetch-nego-tip (2018-07-03) 1 commit - (merged to 'next' on 2018-07-24 at a9e299006d) - + fetch-pack: support negotiation tip whitelist - (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 - bandwidth and cycles, which would be helpful when the receiving - repository has a lot of refs that have little to do with the - history at the remote it is fetching from. - - Will merge to 'master'. - - -* tb/grep-only-matching (2018-07-09) 2 commits - (merged to 'next' on 2018-07-24 at 7e878b9d95) - + grep.c: teach 'git grep --only-matching' - + grep.c: extract show_line_header() - - "git grep" learned the "--only-matching" option. + Rewrite of the "rebase" machinery in C. - Will merge to 'master'. + Will merge to 'next'. * jk/branch-l-1-repurpose (2018-06-22) 1 commit @@ -1346,7 +1475,7 @@ of the repositories listed at Will hold in 'pu' until jk/branch-l-0-deprecation progresses sufficiently. -* cc/remote-odb (2018-07-16) 9 commits +* cc/remote-odb (2018-08-02) 9 commits - Documentation/config: add odb..promisorRemote - t0410: test fetching from many promisor remotes - Use odb.origin.partialclonefilter instead of core.partialclonefilter @@ -1357,6 +1486,17 @@ of the repositories listed at - Add initial remote odb support - fetch-object: make functions return an error code + Implement lazy fetches of missing objects to complement the + experimental partial clone feature. + + I haven't seen much interest in this topic on list. What's the + doneness of this thing? + + I do not particularly mind adding code to support a niche feature + as long as it is cleanly made and it is clear that the feature + won't negatively affect those who do not use it, so a review from + that point of view may also be appropriate. + * ds/multi-pack-index (2018-07-20) 23 commits - midx: clear midx on repack @@ -1388,136 +1528,25 @@ of the repositories listed at consulting many pack .idx files; a new mechanism to have a single file that consolidates all of these .idx files is introduced. - Ready to move to 'next', with some known issues to be followed up? - cf. - cf. - - -* jt/fetch-pack-negotiator (2018-06-15) 7 commits - (merged to 'next' on 2018-07-24 at 438efcd6b1) - + fetch-pack: introduce negotiator API - + fetch-pack: move common check and marking together - + fetch-pack: make negotiation-related vars local - + fetch-pack: use ref adv. to prune "have" sent - + 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 and jt/fetch-negotiator-skipping.) - - Code restructuring and a small fix to transport protocol v2 during - fetching. - - Will merge to 'master'. - - -* is/parsing-line-range (2018-06-15) 2 commits - (merged to 'next' on 2018-07-24 at a06b453f32) - + log: prevent error if line range ends past end of file - + blame: prevent error if range ends past end of file - - Parsing of -L[][,[]] parameters "git blame" and "git log" - take has been tweaked. - - Will merge to 'master'. - - -* ab/checkout-default-remote (2018-06-11) 8 commits - (merged to 'next' on 2018-07-24 at 6ef645f485) - + checkout & worktree: introduce checkout.defaultRemote - + checkout: add advice for ambiguous "checkout " - + builtin/checkout.c: use "ret" variable for return - + checkout: pass the "num_matches" up to callers - + checkout.c: change "unique" member to "num_matches" - + checkout.c: introduce an *_INIT macro - + checkout.h: wrap the arguments to unique_tracking_name() - + checkout tests: index should be clean after dwim checkout - - "git checkout" and "git worktree add" learned to honor - checkout.defaultRemote when auto-vivifying a local branch out of a - remote tracking branch in a repository with multiple remotes that - have tracking branches that share the same names. - - Will merge to 'master'. - - -* ds/commit-graph-fsck (2018-07-16) 23 commits - (merged to 'next' on 2018-07-24 at 6a802adc7a) - + coccinelle: update commit.cocci - + commit-graph: update design document - + gc: automatically write commit-graph files - + commit-graph: add '--reachable' option - + commit-graph: use string-list API for input - + fsck: verify commit-graph - + commit-graph: verify contents match checksum - + commit-graph: test for corrupted octopus edge - + commit-graph: verify commit date - + commit-graph: verify generation number - + commit-graph: verify parent list - + commit-graph: verify root tree OIDs - + commit-graph: verify objects exist - + commit-graph: verify corrupt OID fanout and lookup - + commit-graph: verify required chunks are present - + commit-graph: verify catches corrupt signature - + commit-graph: add 'verify' subcommand - + commit-graph: load a root tree from specific graph - + commit: force commit to parse from object database - + commit-graph: parse commit from chosen graph - + commit-graph: fix GRAPH_MIN_SIZE - + commit-graph: UNLEAK before die() - + t5318-commit-graph.sh: use core.commitGraph - (this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.) - - "git fsck" learns to make sure the optional commit-graph file is in - a sane state. - - Will merge to 'master'. - - -* ma/wrapped-info (2018-05-28) 2 commits - - usage: prefix all lines in `vreportf()`, not just the first - - usage: extract `prefix_suffix_lines()` from `advise()` - - An attempt to help making multi-line messages fed to warning(), - error(), and friends more easily translatable. - - Will discard and wait for a cleaned-up rewrite. - cf. <20180529213957.GF7964@sigill.intra.peff.net> + Will merge to and cook in 'next'. -* jm/cache-entry-from-mem-pool (2018-07-03) 8 commits - (merged to 'next' on 2018-07-24 at 9be51a88dc) - + block alloc: add validations around cache_entry lifecyle - + block alloc: allocate cache entries from mem_pool - + mem-pool: fill out functionality - + mem-pool: add life cycle management functions - + mem-pool: only search head block for available space - + block alloc: add lifecycle APIs for cache_entry structs - + read-cache: teach make_cache_entry to take object_id - + read-cache: teach refresh_cache_entry to take istate +-------------------------------------------------- +[Discarded] - For a large tree, the index needs to hold many cache entries - allocated on heap. These cache entries are now allocated out of a - dedicated memory pool to amortize malloc(3) overhead. +* am/sequencer-author-script-fix (2018-07-18) 1 commit + . sequencer.c: terminate the last line of author-script properly - Will merge to 'master'. + The author-script that records the author information created by + the sequencer machinery lacked the closing single quote on the last + entry. - This makes each cache-entry larger by either 4 or 8 bytes, which is - a bit sad, though. + Superseded by another topic. -* sb/diff-color-move-more (2018-07-19) 10 commits - (merged to 'next' on 2018-07-24 at 89c893cab2) - + diff.c: offer config option to control ws handling in move detection - + 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 - + diff.c: add a blocks mode for moved code detection - + diff.c: adjust hash function signature to match hashmap expectation - + diff.c: do not pass diff options as keydata to hashmap - + t4015: avoid git as a pipe input - + xdiff/xdiffi.c: remove unneeded function declarations - + xdiff/xdiff.h: remove unused flags +* jc/push-cas-opt-comment (2018-08-01) 1 commit + . push: comment on a funny unbalanced option help - "git diff --color-moved" feature has further been tweaked. + Code clarification. - Will merge to 'master'. + Superseded by another topic. -- 2.47.3