diff --git a/whats-cooking.txt b/whats-cooking.txt index 145a58b629..a73ef1ab8a 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 (Aug 2018, #03; Wed, 15) -X-master-at: 63749b2dea5d1501ff85bab7b8a7f64911d21dea -X-next-at: a543ac7ca4538799a4ba8d9b2640e17e2fdf406f +Subject: What's cooking in git.git (Aug 2018, #04; Fri, 17) +X-master-at: fa03cdc39b951d1cfbfd690fe6f3ac6c57ab6a44 +X-next-at: e017bf2cd19392a79e02d0636972bd4c284f89be -What's cooking in git.git (Aug 2018, #03; Wed, 15) +What's cooking in git.git (Aug 2018, #04; Fri, 17) -------------------------------------------------- Here are the topics that have been cooking. Commits prefixed with @@ -12,6 +12,23 @@ Here are the topics that have been cooking. Commits prefixed with '+' are in 'next'. The ones marked with '.' do not appear in any of the integration branches, but I am still holding onto them. +Quite a many topics have graduated to 'master', and also a handful +of topics have entered 'next'. I am planning to tag -rc0 over the +weekend, and some topics that are in 'next' and marked for 'master' +in this issue of "What's cooking" report may be reclassified to cook +in 'next' during the pre-release period when that happens. + +Usually, I refrain from merging larger topics in 'next' down to +'master' when we get close to -rc0, but I am wondering if it is +better to merge all of them to 'master', even the ones on the larger +and possibly undercooked side, expecting that we collectively spend +effort on hunting and fixing bugs in them during the pre-release +freeze period. If we were to go that route, I'd want everybody's +buy-in and I'll promise to ignore any shiny new toys that appear on +list that are not regression fixes to topics merged to 'master' +since the end of the previous cycle to make sure people are not +distracted. + You can find the changes described here in the integration branches of the repositories listed at @@ -20,743 +37,294 @@ of the repositories listed at -------------------------------------------------- [Graduated to "master"] -* 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 +* ab/fetch-nego (2018-08-01) 3 commits + (merged to 'next' on 2018-08-08 at 87662bb344) + + 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 - "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile - with -pedantic option, which may catch more problematic program - constructs and potential bugs. + Update to a few other topics around 'git fetch'. -* bb/redecl-enum-fix (2018-07-26) 1 commit - (merged to 'next' on 2018-08-06 at 828dc4b156) - + packfile: ensure that enum object_type is defined +* ab/fsck-transfer-updates (2018-07-27) 10 commits + (merged to 'next' on 2018-08-08 at d92085269f) + + 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 - Compilation fix. + 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. -* 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 +* ab/sha1dc (2018-08-02) 1 commit + (merged to 'next' on 2018-08-08 at 920c190941) + + sha1dc: update from upstream - 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. + AIX portability update for the SHA1DC hash, imported from upstream. -* 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 +* ab/test-must-be-empty (2018-07-30) 1 commit + (merged to 'next' on 2018-08-08 at 06599ebd1f) + + tests: make use of the test_must_be_empty function - i18n updates. + Test updates. -* 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 - - Doc update. - - -* cb/p4-pre-submit-hook (2018-08-01) 1 commit - (merged to 'next' on 2018-08-06 at e40ae4af80) - + git-p4: add the `p4-pre-submit` hook - - "git p4 submit" learns to ask its own pre-submit hook if it should - continue with submitting. - - -* en/merge-recursive-skip-fix (2018-07-27) 2 commits - (merged to 'next' on 2018-08-06 at 9ab321a15c) - + merge-recursive: preserve skip_worktree bit when necessary - + t3507: add a testcase showing failure with sparse checkout - - 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). - - -* 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" - - One of the "diff --color-moved" mode "dimmed_zebra" that was named - in an unusual way has been deprecated and replaced by - "dimmed-zebra". - - -* es/mw-to-git-chain-fix (2018-07-31) 1 commit - (merged to 'next' on 2018-08-06 at c10246e1c8) - + mw-to-git/t9360: fix broken &&-chain +* ar/t4150-am-scissors-test-fix (2018-08-06) 1 commit + (merged to 'next' on 2018-08-08 at e639183205) + + t4150: fix broken test for am --scissors Test fix. -* 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 +* en/abort-df-conflict-fixes (2018-07-31) 2 commits + (merged to 'next' on 2018-08-08 at a19cad0bb7) + + read-cache: fix directory/file conflict handling in read_index_unmerged() + + t1015: demonstrate directory/file conflict recovery failures - Teach "git tag -s" etc. a few configuration variables (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". + "git merge --abort" etc. did not clean things up properly when + there were conflicted entries in the index in certain order that + are involved in D/F conflicts. This has been corrected. -* 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.) - - Preparatory code to later add json output for telemetry data. - - -* jk/banned-function (2018-07-26) 5 commits - (merged to 'next' on 2018-08-06 at 3dcd1999df) - + 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. - - -* 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 - - A new configuration variable core.usereplacerefs has been added, - primarily to help server installations that want to ignore the - replace mechanism altogether. - - -* 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 - (merged to 'next' on 2018-08-02 at 1a054baf0e) - + Documentation: fix --color option formatting - - Doc formatting fix. - - -* jn/subtree-test-fixes (2018-07-30) 2 commits - (merged to 'next' on 2018-08-06 at 62f21c328f) - + subtree test: simplify preparation of expected results - + subtree test: add missing && to &&-chain +* en/t3031-title-fix (2018-08-06) 1 commit + (merged to 'next' on 2018-08-08 at 3913b03884) + + t3031: update test description to mention desired behavior Test fix. -* 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 +* es/rebase-i-author-script-fix (2018-07-31) 4 commits + (merged to 'next' on 2018-08-08 at 6b34261b72) + + 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.) - Test fix. + 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. -* js/vscode (2018-07-30) 9 commits - (merged to 'next' on 2018-08-06 at 5c578b63a8) - + 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 +* es/want-color-fd-defensive (2018-08-03) 1 commit + (merged to 'next' on 2018-08-08 at a11d90d26f) + + color: protect against out-of-bounds reads and writes - Add a script (in contrib/) to help users of VSCode work better with - our codebase. + Futureproofing a helper function that can easily be misused. -* jt/connectivity-check-after-unshallow (2018-08-01) 1 commit - (merged to 'next' on 2018-08-06 at 1932418f46) - + fetch-pack: unify ref in and out param +* hn/config-in-code-comment (2018-08-06) 1 commit + (merged to 'next' on 2018-08-08 at 1fae946a0f) + + config: document git config getter return value - "git fetch" sometimes failed to update the remote-tracking refs, - which has been corrected. + Header update. -* 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 +* jk/diff-rendered-docs (2018-08-06) 1 commit + (merged to 'next' on 2018-08-08 at fe6e1b4dbe) + + add a script to diff rendered documentation - 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. + The end result of documentation update has been made to be + inspected more easily to help developers. -* ms/http-proto-doc (2018-07-30) 1 commit - (merged to 'next' on 2018-08-06 at df1cac9945) - + doc: fix want-capability separator +* jk/merge-subtree-heuristics (2018-08-02) 1 commit + (merged to 'next' on 2018-08-08 at 5126c2d717) + + score_trees(): fix iteration over trees with missing entries + + The automatic tree-matching in "git merge -s subtree" was broken 5 + years ago and nobody has noticed since then, which is now fixed. + + +* js/pull-rebase-type-shorthand (2018-08-06) 1 commit + (merged to 'next' on 2018-08-08 at 9213756b36) + + pull --rebase=: allow single-letter abbreviations for the type + + "git pull --rebase=interactive" learned "i" as a short-hand for + "interactive". + + +* jt/refspec-dwim-precedence-fix (2018-08-02) 1 commit + (merged to 'next' on 2018-08-08 at 34d0484d3a) + + remote: make refspec follow the same disambiguation rule as local refs + + "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. + + +* mk/http-backend-content-length (2018-07-30) 4 commits + (merged to 'next' on 2018-08-08 at 0091062ec4) + + 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 + + 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. + + +* nd/complete-config-vars (2018-08-06) 1 commit + (merged to 'next' on 2018-08-08 at ffc8e1a3cd) + + Makefile: add missing dependency for command-list.h + + Build fix. + + +* nd/config-blame-sort (2018-08-06) 1 commit + (merged to 'next' on 2018-08-08 at 34ebb9888f) + + config.txt: reorder blame stuff to keep config keys sorted Doc fix. -* 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 +* nd/no-extern (2018-08-03) 12 commits + (merged to 'next' on 2018-08-08 at bcce75766b) + + submodule.h: drop extern from function declaration + + revision.h: drop extern from function declaration + + repository.h: drop extern from function declaration + + rerere.h: drop extern from function declaration + + line-range.h: drop extern from function declaration + + diff.h: remove extern from function declaration + + diffcore.h: drop extern from function declaration + + convert.h: drop 'extern' from function declaration + + cache-tree.h: drop extern from function declaration + + blame.h: drop extern on func declaration + + attr.h: drop extern from function declaration + + apply.h: drop extern on func declaration + (this branch is used by nd/no-the-index.) - Many more strings are prepared for l10n. + Noiseword "extern" has been removed from function decls in the + header files. -* nd/pack-objects-threading-doc (2018-07-30) 1 commit - (merged to 'next' on 2018-08-06 at cc8c305191) - + pack-objects: document about thread synchronization +* ot/ref-filter-object-info (2018-07-17) 5 commits + (merged to 'next' on 2018-08-08 at 9ed619941b) + + ref-filter: use oid_object_info() to get object + + ref-filter: merge get_obj and get_object + + ref-filter: initialize eaten variable + + ref-filter: fill empty fields with empty values + + ref-filter: add info_source to valid_atom - Doc fix. + A few atoms like %(objecttype) and %(objectsize) in the format + specifier of "for-each-ref --format=" can be filled without + getting the full contents of the object, but just with the object + header. These cases have been optimized by calling + oid_object_info() API (instead of reading and inspecting the data). -* rs/remote-mv-leakfix (2018-08-01) 1 commit - (merged to 'next' on 2018-08-06 at 999fe6d3e5) - + remote: clear string_list after use in mv() +* rs/parse-opt-lithelp (2018-08-03) 7 commits + (merged to 'next' on 2018-08-08 at 3a4e0142fe) + + 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 + + push: use PARSE_OPT_LITERAL_ARGHELP instead of unbalanced brackets - Leakfix. + 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. -* 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 +* sb/indent-heuristic-optim (2018-08-01) 1 commit + (merged to 'next' on 2018-08-08 at 539dcc967a) + + xdiff: reduce indent heuristic overhead - "git diff --histogram" had a bad memory usage pattern, which has - been rearranged to reduce the peak usage. - - -* 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. - - -* 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 - - Update the way we use Coccinelle to find out-of-style code that - need to be modernised. - - -* 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 - - Test update. - - -* 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 - - Update the way we run static analysis tool at TravisCI to make it - easier to use its findings. - - -* sg/travis-retrieve-trash-upon-failure (2018-08-01) 1 commit - (merged to 'next' on 2018-08-06 at d67def2a92) - + 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. + "git diff --indent-heuristic" had a bad corner case performance. -------------------------------------------------- [New Topics] -* en/t7406-fixes (2018-08-08) 5 commits - (merged to 'next' on 2018-08-15 at c6a740d828) - + t7406: avoid using test_must_fail for commands other than git - + t7406: prefer test_* helper functions to test -[feds] - + t7406: avoid having git commands upstream of a pipe - + t7406: simplify by using diff --name-only instead of diff --raw - + t7406: fix call that was failing for the wrong reason +* ep/worktree-quiet-option (2018-08-17) 1 commit + - worktree: add --quiet option - Test fixes. - - Will merge to 'master'. - - -* en/update-index-doc (2018-08-08) 1 commit - (merged to 'next' on 2018-08-15 at 3ee0ae14dc) - + git-update-index.txt: reword possibly confusing example - - Doc update. - - Will merge to 'master'. - - -* jc/update-index-doc (2018-08-08) 1 commit - (merged to 'next' on 2018-08-15 at 055994ccca) - + update-index: there no longer is `apply --index-info` - - Doc update. - - Will merge to 'master'. - - -* js/typofixes (2018-08-08) 2 commits - (merged to 'next' on 2018-08-15 at ce3932254a) - + remote-curl: remove spurious period - + git-compat-util.h: fix typo - - Comment update. - - Will merge to 'master'. - - -* jt/repack-promisor-packs (2018-08-09) 2 commits - - repack: repack promisor objects if -a or -A is set - - repack: refactor setup of pack-objects cmd - - After a partial clone, repeated fetches from promisor remote would - have accumulated many packfiles marked with .promisor bit without - getting them coalesced into fewer packfiles, hurting performance. - "git repack" now learned to repack them. + "git worktree" command learned "--quiet" option to make it less + verbose. Will merge to 'next'. -* sk/instaweb-rh-update (2018-08-08) 2 commits - (merged to 'next' on 2018-08-15 at ce5f1115e9) - + git-instaweb: fix apache2 config with apache >= 2.4 - + git-instaweb: support Fedora/Red Hat apache module path +* nd/cherry-pick-quit-fix (2018-08-16) 1 commit + (merged to 'next' on 2018-08-17 at b270179855) + + cherry-pick: fix --quit not deleting CHERRY_PICK_HEAD - "git instaweb" has been adjusted to run better with newer Apache on - RedHat based distros. + "git cherry-pick --quit" failed to remove CHERRY_PICK_HEAD even + though we won't be in a cherry-pick session after it returns, which + has been corrected. Will merge to 'master'. -* ab/submodule-relative-url-tests (2018-08-14) 1 commit - - submodule: add more exhaustive up-path testing +* nd/config-core-checkstat-doc (2018-08-17) 1 commit + - config.txt: clarify core.checkStat - Test updates. + The meaning of the possible values the "core.checkStat" + configuration variable can take were not adequately documented, + which has been fixed. Will merge to 'next'. -* ao/submodule-wo-gitmodules-checked-out (2018-08-14) 7 commits - - submodule: support reading .gitmodules even when it's not checked out - - t7506: clean up .gitmodules properly before setting up new scenario - - submodule: use the 'submodule--helper config' command - - submodule--helper: add a new 'config' subcommand - - t7411: be nicer to future tests and really clean things up - - submodule: factor out a config_set_in_gitmodules_file_gently function - - submodule: add a print_config_from_gitmodules() helper +* pw/rebase-i-merge-segv-fix (2018-08-16) 2 commits + (merged to 'next' on 2018-08-17 at c8823e4511) + + rebase -i: fix SIGSEGV when 'merge ' fails + + t3430: add conflicting commit - The submodule support has been updated to read from the blob at - HEAD:.gitmodules when the .gitmodules file is missing from the - working tree. + "git rebase -i", when a 'merge ' insn in its todo list + fails, segfaulted, which has been (minimally) corrected. - I find the design a bit iffy in that our usual "missing in the - working tree? let's use the latest blob" fallback is to take it - from the index, not from the HEAD. + Will merge to 'master'. -* bw/submodule-name-to-dir (2018-08-10) 2 commits - - submodule: munge paths to submodule git directories - - submodule: create helper to build paths to submodule gitdirs +* sb/submodule-cleanup (2018-08-16) 2 commits + (merged to 'next' on 2018-08-17 at ca9d8aaef4) + + builtin/submodule--helper: remove stray new line + + t7410: update to new style - In modern repository layout, the real body of a cloned submodule - repository is held in .git/modules/ of the superproject, indexed by - the submodule name. URLencode the submodule name before computing - the name of the directory to make sure they form a flat namespace. + A few preliminary minor clean-ups in the area around submodules. + + Will merge to 'master'. + + +* sm/branch-sort-config (2018-08-16) 1 commit + - branch: support configuring --sort via .gitconfig + + "git branch --list" learned to take the default sort order from the + 'branch.sort' configuration variable, just like "git tag --list" + pays attention to 'tag.sort'. Will merge to 'next'. -* cc/delta-islands (2018-08-10) 8 commits - - pack-objects: move 'layer' into 'struct packing_data' - - pack-objects: move tree_depth into 'struct packing_data' - - t5320: delta islands tests - - repack: add delta-islands support - - pack-objects: add delta-islands support - - pack-objects: refactor code into compute_layer_order() - - Add delta-islands.{c,h} - - packfile: make get_delta_base() non static +* ab/unconditional-free-and-null (2018-08-17) 1 commit + - refactor various if (x) FREE_AND_NULL(x) to just FREE_AND_NULL(x) - Lift code from GitHub to restrict delta computation so that an - object that exists in one fork is not made into a delta against - another object that does not appear in the same forked repository. - - What's the doneness of this topic? - - -* ds/commit-graph-fsck (2018-08-13) 1 commit - (merged to 'next' on 2018-08-15 at a2f82d3cbd) - + t5318: use 'test_cmp_bin' to compare commit-graph files - - Test fix. - - Will merge to 'master'. - - -* en/incl-forward-decl (2018-08-15) 6 commits - - Remove forward declaration of an enum - - compat/precompose_utf8.h: use more common include guard style - - urlmatch.h: fix include guard - - Move definition of enum branch_track from cache.h to branch.h - - alloc: make allocate_alloc_state and clear_alloc_state more consistent - - Add missing includes and forward declarations - - Code hygiene improvement for the header files. + Code clean-up. Will merge to 'next'. - -* es/chain-lint-more (2018-08-13) 6 commits - (merged to 'next' on 2018-08-15 at bb5150ee96) - + chainlint: add test of pathological case which triggered false positive - + chainlint: recognize multi-line quoted strings more robustly - + chainlint: let here-doc and multi-line string commence on same line - + chainlint: recognize multi-line $(...) when command cuddled with "$(" - + chainlint: match 'quoted' here-doc tags - + chainlint: match arbitrary here-docs tags rather than hard-coded names - - Improve built-in facility to catch broken &&-chain in the tests. - - Will merge to 'master'. - - -* jc/gpg-status (2018-08-09) 1 commit - (merged to 'next' on 2018-08-15 at 824781761a) - + gpg-interface: propagate exit status from gpg back to the callers - - Will merge to 'master'. - - -* jh/partial-clone-doc (2018-08-15) 1 commit - (merged to 'next' on 2018-08-15 at cf09e8be6a) - + partial-clone: render design doc using asciidoc - - Doc updates. - - Will merge to 'master'. - - -* jk/for-each-object-iteration (2018-08-14) 11 commits - (merged to 'next' on 2018-08-15 at e2558810ff) - + for_each_*_object: move declarations to object-store.h - + cat-file: use a single strbuf for all output - + cat-file: split batch "buf" into two variables - + cat-file: use oidset check-and-insert - + cat-file: support "unordered" output for --batch-all-objects - + cat-file: rename batch_{loose,packed}_object callbacks - + t1006: test cat-file --batch-all-objects with duplicates - + for_each_packed_object: support iterating in pack-order - + for_each_*_object: give more comprehensive docstrings - + for_each_*_object: take flag arguments as enum - + for_each_*_object: store flag definitions in a single location - - The API to iterate over all objects learned to optionally list - objects in the order they appear in packfiles, which helps locality - of access if the caller accesses these objects while as objects are - enumerated. - - Will merge to 'master'. - - -* js/chain-lint-attrfix (2018-08-15) 1 commit - (merged to 'next' on 2018-08-15 at e9ad19a848) - + chainlint: fix for core.autocrlf=true - - Test fix. - - Will merge to 'master'. - - -* js/mingw-o-append (2018-08-13) 1 commit - (merged to 'next' on 2018-08-15 at 284527a0fb) - + mingw: enable atomic O_APPEND - - Among the three codepaths we use O_APPEND to open a file for - appending, one used for writing GIT_TRACE output requires O_APPEND - implementation that behaves sensibly when multiple processes are - writing to the same file. POSIX emulation used in the Windows port - has been updated to improve in this area. - - Will merge to 'master'. - - -* jt/commit-graph-per-object-store (2018-08-13) 1 commit - (merged to 'next' on 2018-08-15 at 5d6db738d8) - + t5318: avoid unnecessary command substitutions - - Test update. - - Will merge to 'master'. - - -* jt/fetch-negotiator-skipping (2018-08-10) 1 commit - (merged to 'next' on 2018-08-15 at 3cf8fa32f5) - + t5552: suppress upload-pack trace output - - Test fix. - - Will merge to 'master'. - - -* md/filter-trees (2018-08-15) 6 commits - - list-objects-filter: implement filter tree:0 - - revision: mark non-user-given objects instead - - rev-list: handle missing tree objects properly - - list-objects: always parse trees gently - - list-objects: refactor to process_tree_contents - - list-objects: store common func args in struct - - The "rev-list --filter" feature learned to exclude all trees via - "tree:0" filter. - - Expecting a reroll. - - -* nd/no-the-index (2018-08-13) 24 commits - (merged to 'next' on 2018-08-15 at 41e53dc53b) - + blame.c: remove implicit dependency on the_index - + apply.c: remove implicit dependency on the_index - + apply.c: make init_apply_state() take a struct repository - + apply.c: pass struct apply_state to more functions - + resolve-undo.c: use the right index instead of the_index - + archive-*.c: use the right repository - + archive.c: avoid access to the_index - + grep: use the right index instead of the_index - + attr: remove index from git_attr_set_direction() - + entry.c: use the right index instead of the_index - + submodule.c: use the right index instead of the_index - + pathspec.c: use the right index instead of the_index - + unpack-trees: avoid the_index in verify_absent() - + unpack-trees: convert clear_ce_flags* to avoid the_index - + unpack-trees: don't shadow global var the_index - + unpack-trees: add a note about path invalidation - + unpack-trees: remove 'extern' on function declaration - + ls-files: correct index argument to get_convert_attr_ascii() - + preload-index.c: use the right index instead of the_index - + dir.c: remove an implicit dependency on the_index in pathspec code - + convert.c: remove an implicit dependency on the_index - + attr: remove an implicit dependency on the_index - + cache-tree: wrap the_index based wrappers with #ifdef - + diff.c: move read_index() code back to the caller - (this branch uses nd/no-extern.) - - The more library-ish parts of the codebase learned to work on the - in-core index-state instance that is passed in by their callers, - instead of always working on the singleton "the_index" instance. - - Will merge to 'master'. - - -* ng/mergetool-lose-final-prompt (2018-08-13) 1 commit - (merged to 'next' on 2018-08-15 at f8f7ac365b) - + mergetool: don't suggest to continue after last file - - "git mergetool" stopped and gave an extra prompt to continue after - the last path has been handled, which did not make much sense. - - Will merge to 'master'. - - -* ng/status-i-short-for-ignored (2018-08-09) 1 commit - - status: -i shorthand for --ignored command line option - - -* pk/rebase-in-c-2-basic (2018-08-10) 11 commits - - builtin rebase: support `git rebase ` - - builtin rebase: only store fully-qualified refs in `options.head_name` - - builtin rebase: start a new rebase only if none is in progress - - builtin rebase: support --force-rebase - - builtin rebase: try to fast forward when possible - - builtin rebase: require a clean worktree - - builtin rebase: support the `verbose` and `diffstat` options - - builtin rebase: support --quiet - - builtin rebase: handle the pre-rebase hook (and add --no-verify) - - builtin rebase: support `git rebase --onto A...B` - - builtin rebase: support --onto - (this branch is used by pk/rebase-in-c-3-acts, pk/rebase-in-c-4-opts, pk/rebase-in-c-5-test and pk/rebase-in-c-6-final; uses pk/rebase-in-c.) - - -* pk/rebase-in-c-3-acts (2018-08-10) 7 commits - - builtin rebase: stop if `git am` is in progress - - builtin rebase: actions require a rebase in progress - - builtin rebase: support --edit-todo and --show-current-patch - - builtin rebase: support --quit - - builtin rebase: support --abort - - builtin rebase: support --skip - - builtin rebase: support --continue - (this branch is used by pk/rebase-in-c-4-opts, pk/rebase-in-c-5-test and pk/rebase-in-c-6-final; uses pk/rebase-in-c and pk/rebase-in-c-2-basic.) - - -* pk/rebase-in-c-4-opts (2018-08-10) 18 commits - - builtin rebase: support --root - - builtin rebase: add support for custom merge strategies - - builtin rebase: support `fork-point` option - - merge-base --fork-point: extract libified function - - builtin rebase: support --rebase-merges[=[no-]rebase-cousins] - - builtin rebase: support `--allow-empty-message` option - - builtin rebase: support `--exec` - - builtin rebase: support `--autostash` option - - builtin rebase: support `-C` and `--whitespace=` - - builtin rebase: support `--gpg-sign` option - - builtin rebase: support `--autosquash` - - builtin rebase: support `keep-empty` option - - builtin rebase: support `ignore-date` option - - builtin rebase: support `ignore-whitespace` option - - builtin rebase: support --committer-date-is-author-date - - builtin rebase: support --rerere-autoupdate - - builtin rebase: support --signoff - - builtin rebase: allow selecting the rebase "backend" - (this branch is used by pk/rebase-in-c-5-test and pk/rebase-in-c-6-final; uses pk/rebase-in-c, pk/rebase-in-c-2-basic and pk/rebase-in-c-3-acts.) - - -* pk/rebase-in-c-5-test (2018-08-10) 6 commits - - builtin rebase: error out on incompatible option/mode combinations - - builtin rebase: use no-op editor when interactive is "implied" - - builtin rebase: show progress when connected to a terminal - - builtin rebase: fast-forward to onto if it is a proper descendant - - builtin rebase: optionally pass custom reflogs to reset_head() - - builtin rebase: optionally auto-detect the upstream - (this branch is used by pk/rebase-in-c-6-final; uses pk/rebase-in-c, pk/rebase-in-c-2-basic, pk/rebase-in-c-3-acts and pk/rebase-in-c-4-opts.) - - -* pk/rebase-in-c-6-final (2018-08-10) 1 commit - - rebase: default to using the builtin rebase - (this branch uses pk/rebase-in-c, pk/rebase-in-c-2-basic, pk/rebase-in-c-3-acts, pk/rebase-in-c-4-opts and pk/rebase-in-c-5-test.) - - -* ps/stash-in-c (2018-08-08) 26 commits - - stash: replace all "git apply" child processes with API calls - - stash: replace all `write-tree` child processes with API calls - - stash: optimize `get_untracked_files()` and `check_changes()` - - stash: convert `stash--helper.c` into `stash.c` - - stash: convert save to builtin - - stash: replace spawning `git ls-files` child process - - stash: add tests for `git stash push -q` - - stash: make push to be quiet - - stash: convert push to builtin - - stash: avoid spawning a "diff-index" process - - stash: replace spawning a "read-tree" process - - stash: convert create to builtin - - stash: convert store to builtin - - stash: update `git stash show` documentation - - stash: refactor `show_stash()` to use the diff API - - stash: change `git stash show` usage text and documentation - - stash: convert show to builtin - - stash: implement the "list" command in the builtin - - stash: convert pop to builtin - - stash: convert branch to builtin - - stash: convert drop and clear to builtin - - stash: convert apply to builtin - - stash: renamed test cases to be more descriptive - - stash: update test cases conform to coding guidelines - - stash: improve option parsing test coverage - - sha1-name.c: added 'get_oidf', which acts like 'get_oid' - - -* pw/rebase-i-squash-number-fix (2018-08-15) 2 commits - - squash??? if this is easier to read - - rebase -i: fix numbering in squash message - - When "git rebase -i" is told to squash two or more commits into - one, it labeled the log message for each commit with its number. - It correctly called the first one "1st commit", but the next one - was "commit #1", which was off-by-one. This has been corrected. - - Will merge to 'next' after dropping the clean-up at the tip. - - -* sb/pull-rebase-submodule (2018-08-14) 1 commit - (merged to 'next' on 2018-08-15 at 07c7b55cc9) - + git-submodule.sh: accept verbose flag in cmd_update to be non-quiet - - "git pull --rebase -v" in a repository with a submodule barfed as - an intermediate process did not understand what "-v(erbose)" flag - meant, which has been fixed. - - Will merge to 'master'. - - -* sg/t5310-empty-input-fix (2018-08-14) 1 commit - (merged to 'next' on 2018-08-15 at c3c03973a0) - + t5310-pack-bitmaps: fix bogus 'pack-objects to file can use bitmap' test - - Test fix. - - Will merge to 'master'. - -------------------------------------------------- [Stalled] -* bp/checkout-new-branch-optim (2018-07-31) 1 commit - - checkout: optimize "git checkout -b " - - "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. - - So... what is the status of this thing? Is the other "optimize - unpack-trees" effort turning out to be a safer and less hacky way - to achieve similar gain and this no longer is needed? - - * 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 @@ -851,6 +419,441 @@ of the repositories listed at -------------------------------------------------- [Cooking] +* bp/checkout-new-branch-optim (2018-08-16) 1 commit + - checkout: optimize "git checkout -b " + + "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. + + So... what is the status of this thing? Is the other "optimize + unpack-trees" effort turning out to be a safer and less hacky way + to achieve similar gain and this no longer is needed? + + +* en/t7406-fixes (2018-08-08) 5 commits + (merged to 'next' on 2018-08-15 at c6a740d828) + + t7406: avoid using test_must_fail for commands other than git + + t7406: prefer test_* helper functions to test -[feds] + + t7406: avoid having git commands upstream of a pipe + + t7406: simplify by using diff --name-only instead of diff --raw + + t7406: fix call that was failing for the wrong reason + + Test fixes. + + Will merge to 'master'. + + +* en/update-index-doc (2018-08-08) 1 commit + (merged to 'next' on 2018-08-15 at 3ee0ae14dc) + + git-update-index.txt: reword possibly confusing example + + Doc update. + + Will merge to 'master'. + + +* jc/update-index-doc (2018-08-08) 1 commit + (merged to 'next' on 2018-08-15 at 055994ccca) + + update-index: there no longer is `apply --index-info` + + Doc update. + + Will merge to 'master'. + + +* js/typofixes (2018-08-08) 2 commits + (merged to 'next' on 2018-08-15 at ce3932254a) + + remote-curl: remove spurious period + + git-compat-util.h: fix typo + + Comment update. + + Will merge to 'master'. + + +* jt/repack-promisor-packs (2018-08-09) 2 commits + (merged to 'next' on 2018-08-17 at 6869b53a69) + + repack: repack promisor objects if -a or -A is set + + repack: refactor setup of pack-objects cmd + + After a partial clone, repeated fetches from promisor remote would + have accumulated many packfiles marked with .promisor bit without + getting them coalesced into fewer packfiles, hurting performance. + "git repack" now learned to repack them. + + Will merge to 'master'. + + +* sk/instaweb-rh-update (2018-08-08) 2 commits + (merged to 'next' on 2018-08-15 at ce5f1115e9) + + git-instaweb: fix apache2 config with apache >= 2.4 + + git-instaweb: support Fedora/Red Hat apache module path + + "git instaweb" has been adjusted to run better with newer Apache on + RedHat based distros. + + Will merge to 'master'. + + +* ab/submodule-relative-url-tests (2018-08-14) 1 commit + (merged to 'next' on 2018-08-17 at 17b28d8262) + + submodule: add more exhaustive up-path testing + + Test updates. + + Will merge to 'master'. + + +* ao/submodule-wo-gitmodules-checked-out (2018-08-14) 7 commits + - submodule: support reading .gitmodules even when it's not checked out + - t7506: clean up .gitmodules properly before setting up new scenario + - submodule: use the 'submodule--helper config' command + - submodule--helper: add a new 'config' subcommand + - t7411: be nicer to future tests and really clean things up + - submodule: factor out a config_set_in_gitmodules_file_gently function + - submodule: add a print_config_from_gitmodules() helper + + The submodule support has been updated to read from the blob at + HEAD:.gitmodules when the .gitmodules file is missing from the + working tree. + + I find the design a bit iffy in that our usual "missing in the + working tree? let's use the latest blob" fallback is to take it + from the index, not from the HEAD. + + +* bw/submodule-name-to-dir (2018-08-10) 2 commits + - submodule: munge paths to submodule git directories + - submodule: create helper to build paths to submodule gitdirs + + In modern repository layout, the real body of a cloned submodule + repository is held in .git/modules/ of the superproject, indexed by + the submodule name. URLencode the submodule name before computing + the name of the directory to make sure they form a flat namespace. + + Will merge to 'next'. + + +* cc/delta-islands (2018-08-16) 7 commits + - pack-objects: move 'layer' into 'struct packing_data' + - pack-objects: move tree_depth into 'struct packing_data' + - t5320: tests for delta islands + - repack: add delta-islands support + - pack-objects: add delta-islands support + - pack-objects: refactor code into compute_layer_order() + - Add delta-islands.{c,h} + + Lift code from GitHub to restrict delta computation so that an + object that exists in one fork is not made into a delta against + another object that does not appear in the same forked repository. + + What's the doneness of this topic? + + +* ds/commit-graph-fsck (2018-08-13) 1 commit + (merged to 'next' on 2018-08-15 at a2f82d3cbd) + + t5318: use 'test_cmp_bin' to compare commit-graph files + + Test fix. + + Will merge to 'master'. + + +* en/incl-forward-decl (2018-08-15) 6 commits + (merged to 'next' on 2018-08-17 at 04fc9c11bb) + + Remove forward declaration of an enum + + compat/precompose_utf8.h: use more common include guard style + + urlmatch.h: fix include guard + + Move definition of enum branch_track from cache.h to branch.h + + alloc: make allocate_alloc_state and clear_alloc_state more consistent + + Add missing includes and forward declarations + + Code hygiene improvement for the header files. + + Will merge to 'master'. + + +* es/chain-lint-more (2018-08-13) 6 commits + (merged to 'next' on 2018-08-15 at bb5150ee96) + + chainlint: add test of pathological case which triggered false positive + + chainlint: recognize multi-line quoted strings more robustly + + chainlint: let here-doc and multi-line string commence on same line + + chainlint: recognize multi-line $(...) when command cuddled with "$(" + + chainlint: match 'quoted' here-doc tags + + chainlint: match arbitrary here-docs tags rather than hard-coded names + + Improve built-in facility to catch broken &&-chain in the tests. + + Will merge to 'master'. + + +* jc/gpg-status (2018-08-09) 1 commit + (merged to 'next' on 2018-08-15 at 824781761a) + + gpg-interface: propagate exit status from gpg back to the callers + + Will merge to 'master'. + + +* jh/partial-clone-doc (2018-08-15) 1 commit + (merged to 'next' on 2018-08-15 at cf09e8be6a) + + partial-clone: render design doc using asciidoc + + Doc updates. + + Will merge to 'master'. + + +* jk/for-each-object-iteration (2018-08-14) 11 commits + (merged to 'next' on 2018-08-15 at e2558810ff) + + for_each_*_object: move declarations to object-store.h + + cat-file: use a single strbuf for all output + + cat-file: split batch "buf" into two variables + + cat-file: use oidset check-and-insert + + cat-file: support "unordered" output for --batch-all-objects + + cat-file: rename batch_{loose,packed}_object callbacks + + t1006: test cat-file --batch-all-objects with duplicates + + for_each_packed_object: support iterating in pack-order + + for_each_*_object: give more comprehensive docstrings + + for_each_*_object: take flag arguments as enum + + for_each_*_object: store flag definitions in a single location + + The API to iterate over all objects learned to optionally list + objects in the order they appear in packfiles, which helps locality + of access if the caller accesses these objects while as objects are + enumerated. + + Will merge to 'master'. + + +* js/chain-lint-attrfix (2018-08-15) 1 commit + (merged to 'next' on 2018-08-15 at e9ad19a848) + + chainlint: fix for core.autocrlf=true + + Test fix. + + Will merge to 'master'. + + +* js/mingw-o-append (2018-08-13) 1 commit + (merged to 'next' on 2018-08-15 at 284527a0fb) + + mingw: enable atomic O_APPEND + + Among the three codepaths we use O_APPEND to open a file for + appending, one used for writing GIT_TRACE output requires O_APPEND + implementation that behaves sensibly when multiple processes are + writing to the same file. POSIX emulation used in the Windows port + has been updated to improve in this area. + + Will merge to 'master'. + + +* jt/commit-graph-per-object-store (2018-08-13) 1 commit + (merged to 'next' on 2018-08-15 at 5d6db738d8) + + t5318: avoid unnecessary command substitutions + + Test update. + + Will merge to 'master'. + + +* jt/fetch-negotiator-skipping (2018-08-10) 1 commit + (merged to 'next' on 2018-08-15 at 3cf8fa32f5) + + t5552: suppress upload-pack trace output + + Test fix. + + Will merge to 'master'. + + +* md/filter-trees (2018-08-16) 6 commits + - list-objects-filter: implement filter tree:0 + - revision: mark non-user-given objects instead + - rev-list: handle missing tree objects properly + - list-objects: always parse trees gently + - list-objects: refactor to process_tree_contents + - list-objects: store common func args in struct + + The "rev-list --filter" feature learned to exclude all trees via + "tree:0" filter. + + +* nd/no-the-index (2018-08-13) 24 commits + (merged to 'next' on 2018-08-15 at 41e53dc53b) + + blame.c: remove implicit dependency on the_index + + apply.c: remove implicit dependency on the_index + + apply.c: make init_apply_state() take a struct repository + + apply.c: pass struct apply_state to more functions + + resolve-undo.c: use the right index instead of the_index + + archive-*.c: use the right repository + + archive.c: avoid access to the_index + + grep: use the right index instead of the_index + + attr: remove index from git_attr_set_direction() + + entry.c: use the right index instead of the_index + + submodule.c: use the right index instead of the_index + + pathspec.c: use the right index instead of the_index + + unpack-trees: avoid the_index in verify_absent() + + unpack-trees: convert clear_ce_flags* to avoid the_index + + unpack-trees: don't shadow global var the_index + + unpack-trees: add a note about path invalidation + + unpack-trees: remove 'extern' on function declaration + + ls-files: correct index argument to get_convert_attr_ascii() + + preload-index.c: use the right index instead of the_index + + dir.c: remove an implicit dependency on the_index in pathspec code + + convert.c: remove an implicit dependency on the_index + + attr: remove an implicit dependency on the_index + + cache-tree: wrap the_index based wrappers with #ifdef + + diff.c: move read_index() code back to the caller + + The more library-ish parts of the codebase learned to work on the + in-core index-state instance that is passed in by their callers, + instead of always working on the singleton "the_index" instance. + + Will merge to 'master'. + + +* ng/mergetool-lose-final-prompt (2018-08-13) 1 commit + (merged to 'next' on 2018-08-15 at f8f7ac365b) + + mergetool: don't suggest to continue after last file + + "git mergetool" stopped and gave an extra prompt to continue after + the last path has been handled, which did not make much sense. + + Will merge to 'master'. + + +* ng/status-i-short-for-ignored (2018-08-09) 1 commit + - status: -i shorthand for --ignored command line option + + +* pk/rebase-in-c-2-basic (2018-08-10) 11 commits + - builtin rebase: support `git rebase ` + - builtin rebase: only store fully-qualified refs in `options.head_name` + - builtin rebase: start a new rebase only if none is in progress + - builtin rebase: support --force-rebase + - builtin rebase: try to fast forward when possible + - builtin rebase: require a clean worktree + - builtin rebase: support the `verbose` and `diffstat` options + - builtin rebase: support --quiet + - builtin rebase: handle the pre-rebase hook (and add --no-verify) + - builtin rebase: support `git rebase --onto A...B` + - builtin rebase: support --onto + (this branch is used by pk/rebase-in-c-3-acts, pk/rebase-in-c-4-opts, pk/rebase-in-c-5-test and pk/rebase-in-c-6-final; uses pk/rebase-in-c.) + + +* pk/rebase-in-c-3-acts (2018-08-10) 7 commits + - builtin rebase: stop if `git am` is in progress + - builtin rebase: actions require a rebase in progress + - builtin rebase: support --edit-todo and --show-current-patch + - builtin rebase: support --quit + - builtin rebase: support --abort + - builtin rebase: support --skip + - builtin rebase: support --continue + (this branch is used by pk/rebase-in-c-4-opts, pk/rebase-in-c-5-test and pk/rebase-in-c-6-final; uses pk/rebase-in-c and pk/rebase-in-c-2-basic.) + + +* pk/rebase-in-c-4-opts (2018-08-10) 18 commits + - builtin rebase: support --root + - builtin rebase: add support for custom merge strategies + - builtin rebase: support `fork-point` option + - merge-base --fork-point: extract libified function + - builtin rebase: support --rebase-merges[=[no-]rebase-cousins] + - builtin rebase: support `--allow-empty-message` option + - builtin rebase: support `--exec` + - builtin rebase: support `--autostash` option + - builtin rebase: support `-C` and `--whitespace=` + - builtin rebase: support `--gpg-sign` option + - builtin rebase: support `--autosquash` + - builtin rebase: support `keep-empty` option + - builtin rebase: support `ignore-date` option + - builtin rebase: support `ignore-whitespace` option + - builtin rebase: support --committer-date-is-author-date + - builtin rebase: support --rerere-autoupdate + - builtin rebase: support --signoff + - builtin rebase: allow selecting the rebase "backend" + (this branch is used by pk/rebase-in-c-5-test and pk/rebase-in-c-6-final; uses pk/rebase-in-c, pk/rebase-in-c-2-basic and pk/rebase-in-c-3-acts.) + + +* pk/rebase-in-c-5-test (2018-08-10) 6 commits + - builtin rebase: error out on incompatible option/mode combinations + - builtin rebase: use no-op editor when interactive is "implied" + - builtin rebase: show progress when connected to a terminal + - builtin rebase: fast-forward to onto if it is a proper descendant + - builtin rebase: optionally pass custom reflogs to reset_head() + - builtin rebase: optionally auto-detect the upstream + (this branch is used by pk/rebase-in-c-6-final; uses pk/rebase-in-c, pk/rebase-in-c-2-basic, pk/rebase-in-c-3-acts and pk/rebase-in-c-4-opts.) + + +* pk/rebase-in-c-6-final (2018-08-10) 1 commit + - rebase: default to using the builtin rebase + (this branch uses pk/rebase-in-c, pk/rebase-in-c-2-basic, pk/rebase-in-c-3-acts, pk/rebase-in-c-4-opts and pk/rebase-in-c-5-test.) + + With "rebase -i" machinery being rewritten to C, with a different + interface between "rebase" proper and its backends, this and the + other topics need a bit more work to play with each other better. + + +* ps/stash-in-c (2018-08-08) 26 commits + - stash: replace all "git apply" child processes with API calls + - stash: replace all `write-tree` child processes with API calls + - stash: optimize `get_untracked_files()` and `check_changes()` + - stash: convert `stash--helper.c` into `stash.c` + - stash: convert save to builtin + - stash: replace spawning `git ls-files` child process + - stash: add tests for `git stash push -q` + - stash: make push to be quiet + - stash: convert push to builtin + - stash: avoid spawning a "diff-index" process + - stash: replace spawning a "read-tree" process + - stash: convert create to builtin + - stash: convert store to builtin + - stash: update `git stash show` documentation + - stash: refactor `show_stash()` to use the diff API + - stash: change `git stash show` usage text and documentation + - stash: convert show to builtin + - stash: implement the "list" command in the builtin + - stash: convert pop to builtin + - stash: convert branch to builtin + - stash: convert drop and clear to builtin + - stash: convert apply to builtin + - stash: renamed test cases to be more descriptive + - stash: update test cases conform to coding guidelines + - stash: improve option parsing test coverage + - sha1-name.c: added 'get_oidf', which acts like 'get_oid' + + +* pw/rebase-i-squash-number-fix (2018-08-15) 1 commit + (merged to 'next' on 2018-08-17 at ac54dfa51a) + + rebase -i: fix numbering in squash message + + When "git rebase -i" is told to squash two or more commits into + one, it labeled the log message for each commit with its number. + It correctly called the first one "1st commit", but the next one + was "commit #1", which was off-by-one. This has been corrected. + + Will merge to 'master'. + + +* sb/pull-rebase-submodule (2018-08-14) 1 commit + (merged to 'next' on 2018-08-15 at 07c7b55cc9) + + git-submodule.sh: accept verbose flag in cmd_update to be non-quiet + + "git pull --rebase -v" in a repository with a submodule barfed as + an intermediate process did not understand what "-v(erbose)" flag + meant, which has been fixed. + + Will merge to 'master'. + + +* sg/t5310-empty-input-fix (2018-08-14) 1 commit + (merged to 'next' on 2018-08-15 at c3c03973a0) + + t5310-pack-bitmaps: fix bogus 'pack-objects to file can use bitmap' test + + Test fix. + + Will merge to 'master'. + + * js/rebase-merges-exec-fix (2018-08-09) 2 commits (merged to 'next' on 2018-08-15 at 9de975d92d) + rebase --exec: make it work with --rebase-merges @@ -862,131 +865,14 @@ of the repositories listed at Will merge to 'master'. -* nd/no-extern (2018-08-03) 12 commits - (merged to 'next' on 2018-08-08 at bcce75766b) - + submodule.h: drop extern from function declaration - + revision.h: drop extern from function declaration - + repository.h: drop extern from function declaration - + rerere.h: drop extern from function declaration - + line-range.h: drop extern from function declaration - + diff.h: remove extern from function declaration - + diffcore.h: drop extern from function declaration - + convert.h: drop 'extern' from function declaration - + cache-tree.h: drop extern from function declaration - + blame.h: drop extern on func declaration - + attr.h: drop extern from function declaration - + apply.h: drop extern on func declaration - (this branch is used by nd/no-the-index.) - - Noiseword "extern" has been removed from function decls in the - header files. - - Will merge to 'master'. - - -* ar/t4150-am-scissors-test-fix (2018-08-06) 1 commit - (merged to 'next' on 2018-08-08 at e639183205) - + t4150: fix broken test for am --scissors - - Test fix. - - Will merge to 'master'. - - -* en/t3031-title-fix (2018-08-06) 1 commit - (merged to 'next' on 2018-08-08 at 3913b03884) - + t3031: update test description to mention desired behavior - - Test fix. - - Will merge to 'master'. - - -* hn/config-in-code-comment (2018-08-06) 1 commit - (merged to 'next' on 2018-08-08 at 1fae946a0f) - + config: document git config getter return value - - Header update. - - Will merge to 'master'. - - -* jk/diff-rendered-docs (2018-08-06) 1 commit - (merged to 'next' on 2018-08-08 at fe6e1b4dbe) - + add a script to diff rendered documentation - - Developer support to allow the end result of documentation update - to be inspected more easily. - - Will merge to 'master'. - - -* js/pull-rebase-type-shorthand (2018-08-06) 1 commit - (merged to 'next' on 2018-08-08 at 9213756b36) - + pull --rebase=: allow single-letter abbreviations for the type - - "git pull --rebase=interactive" learned "i" as a short-hand for - "interactive". - - Will merge to 'master'. - - -* nd/complete-config-vars (2018-08-06) 1 commit - (merged to 'next' on 2018-08-08 at ffc8e1a3cd) - + Makefile: add missing dependency for command-list.h - - Build fix. - - Will merge to 'master'. - - -* nd/config-blame-sort (2018-08-06) 1 commit - (merged to 'next' on 2018-08-08 at 34ebb9888f) - + config.txt: reorder blame stuff to keep config keys sorted - - Doc fix. - - Will merge to 'master'. - - * wc/make-funnynames-shared-lazy-prereq (2018-08-06) 1 commit - - t: factor out FUNNYNAMES as shared lazy prereq + (merged to 'next' on 2018-08-17 at b932a0894b) + + t: factor out FUNNYNAMES as shared lazy prereq A test prerequisite defined by various test scripts with slightly - different sematics has been consolidated into a single copy and + different semantics has been consolidated into a single copy and made into a lazily defined one. - Will merge to 'next'. - - -* ab/fsck-transfer-updates (2018-07-27) 10 commits - (merged to 'next' on 2018-08-08 at d92085269f) - + 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 'master'. - - -* ab/test-must-be-empty (2018-07-30) 1 commit - (merged to 'next' on 2018-08-08 at 06599ebd1f) - + tests: make use of the test_must_be_empty function - - Test updates. - Will merge to 'master'. @@ -999,22 +885,8 @@ of the repositories listed at Will merge to 'master'. -* es/rebase-i-author-script-fix (2018-07-31) 4 commits - (merged to 'next' on 2018-08-08 at 6b34261b72) - + 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.) - - 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 'master'. - - -* hn/highlight-sideband-keywords (2018-08-08) 1 commit +* hn/highlight-sideband-keywords (2018-08-17) 2 commits + - sideband: do not read beyond the end of input (merged to 'next' on 2018-08-15 at f8945f3be5) + sideband: highlight keywords in remote sideband output @@ -1024,26 +896,6 @@ of the repositories listed at Will merge to 'master'. -* sb/indent-heuristic-optim (2018-08-01) 1 commit - (merged to 'next' on 2018-08-08 at 539dcc967a) - + xdiff: reduce indent heuristic overhead - - "git diff --indent-heuristic" had a bad corner case performance. - - Will merge to 'master'. - - -* ab/fetch-nego (2018-08-01) 3 commits - (merged to 'next' on 2018-08-08 at 87662bb344) - + 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 - - Update to a few other topics. - - Will merge to 'master'. - - * ab/fetch-tags-noclobber (2018-08-13) 7 commits (merged to 'next' on 2018-08-15 at eca0ac8afa) + pull doc: fix a long-standing grammar error @@ -1059,31 +911,7 @@ of the repositories listed at Will merge to 'master'. -* jk/merge-subtree-heuristics (2018-08-02) 1 commit - (merged to 'next' on 2018-08-08 at 5126c2d717) - + score_trees(): fix iteration over trees with missing entries - - The automatic tree-matching in "git merge -s subtree" was broken 5 - years ago and nobody has noticed since then, which is now fixed. - - Will merge to 'master'. - - -* jt/refspec-dwim-precedence-fix (2018-08-02) 1 commit - (merged to 'next' on 2018-08-08 at 34d0484d3a) - + remote: make refspec follow the same disambiguation rule as local refs - - "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 'master'. - - -* nd/clone-case-smashing-warning (2018-08-14) 2 commits - - mark_colliding_entries(): fix incorrect #if...#endif guard +* nd/clone-case-smashing-warning (2018-08-17) 1 commit - clone: report duplicate entries on case-insensitive filesystems Running "git clone" against a project that contain two files with @@ -1092,8 +920,7 @@ of the repositories listed at underlying filesystem is incapable of holding both at the same time. An attempt is made to detect such a case and warn. - Expecting a new round of discussion. - cf. <20180815190816.GA26521@tor.lan> + Will merge to 'next'. * nd/unpack-trees-with-cache-tree (2018-08-13) 5 commits @@ -1115,15 +942,15 @@ of the repositories listed at * sb/config-write-fix (2018-08-08) 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 + (merged to 'next' on 2018-08-17 at 7d9c7ce81f) + + 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 Recent update to "git config" broke updating variable in a subsection, which has been corrected. - Expecting a reroll. - cf. + Will merge to 'master'. * sb/range-diff-colors (2018-08-14) 8 commits @@ -1147,28 +974,9 @@ of the repositories listed at An attempt to unflake a test a bit. -* ab/sha1dc (2018-08-02) 1 commit - (merged to 'next' on 2018-08-08 at 920c190941) - + sha1dc: update from upstream - - AIX portability update for SHA1DC hash, imported from upstream. - - Will merge to 'master'. - - -* es/want-color-fd-defensive (2018-08-03) 1 commit - (merged to 'next' on 2018-08-08 at a11d90d26f) - + color: protect against out-of-bounds reads and writes - - Futureproofing a helper function that can easily misused. - - Will merge to 'master'. - - * pw/rebase-i-author-script-fix (2018-08-07) 2 commits - sequencer: fix quoting in write_author_script - sequencer: handle errors from 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 @@ -1179,25 +987,6 @@ of the repositories listed at script written by bad writer" approach? -* rs/parse-opt-lithelp (2018-08-03) 7 commits - (merged to 'next' on 2018-08-08 at 3a4e0142fe) - + 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 - + push: use PARSE_OPT_LITERAL_ARGHELP instead of unbalanced brackets - - 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 'master'. - - * 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 @@ -1214,21 +1003,6 @@ of the repositories listed at end-user complaints, but let's see. -* mk/http-backend-content-length (2018-07-30) 4 commits - (merged to 'next' on 2018-08-08 at 0091062ec4) - + 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 - - 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 'master'. - - * 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 @@ -1246,9 +1020,8 @@ of the repositories listed at based on its use (and updating existing commit-graph) when these incompatible features are in use in the repository. - Perhaps eject and replace with another reroll when it comes. - cf. - cf. <86bmap7l7a.fsf@gmail.com> + Eject and replace with another reroll when it comes. + cf. <85c6eb4c-a083-4fb7-4860-b01a8ce9fa4f@gmail.com> * ds/reachable (2018-07-20) 18 commits @@ -1366,18 +1139,6 @@ of the repositories listed at Will merge to 'next'. -* en/abort-df-conflict-fixes (2018-07-31) 2 commits - (merged to 'next' on 2018-08-08 at a19cad0bb7) - + 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 'master'. - - * 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 @@ -1395,36 +1156,38 @@ of the repositories listed at * sb/submodule-update-in-c (2018-08-14) 7 commits - - submodule--helper: introduce new update-module-mode helper - - submodule--helper: replace connect-gitdir-workingtree by ensure-core-worktree - - 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 + (merged to 'next' on 2018-08-17 at 23c81e5ff7) + + submodule--helper: introduce new update-module-mode helper + + submodule--helper: replace connect-gitdir-workingtree by ensure-core-worktree + + 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 and cook in 'next'. + Will cook in 'next'. * tg/rerere (2018-08-06) 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 with files rerere can't handle - - 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 + (merged to 'next' on 2018-08-17 at 919a958cdc) + + 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 with files rerere can't handle + + 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 Fixes to "git rerere" corner cases, especially when conflict markers cannot be parsed in the file. - Will merge to and cook in 'next'. + Will cook in 'next'. * ag/rebase-i-in-c (2018-08-10) 20 commits @@ -1451,7 +1214,9 @@ of the repositories listed at Rewrite of the remaining "rebase -i" machinery in C. - Will merge to 'next'. + With "rebase -i" machinery being rewritten to C, with a different + interface between "rebase" proper and its backends, this and the + other topics need a bit more work to play with each other better. * js/range-diff (2018-08-13) 21 commits @@ -1496,23 +1261,6 @@ of the repositories listed at format. -* ot/ref-filter-object-info (2018-07-17) 5 commits - (merged to 'next' on 2018-08-08 at 9ed619941b) - + ref-filter: use oid_object_info() to get object - + ref-filter: merge get_obj and get_object - + ref-filter: initialize eaten variable - + ref-filter: fill empty fields with empty values - + ref-filter: add info_source to valid_atom - - A few atoms like %(objecttype) and %(objectsize) in the format - specifier of "for-each-ref --format=" can be filled without - getting the full contents of the object, but just with the object - header. These cases have been optimzied by calling - oid_object_info() API. - - Will merge to 'master'. - - * pk/rebase-in-c (2018-08-06) 3 commits - builtin/rebase: support running "git rebase " - rebase: refactor common shell functions into their own file @@ -1528,7 +1276,7 @@ of the repositories listed at Updated plan to repurpose the "-l" option to "git branch". - Will merge to and cook in 'next'. + Will cook in 'next'. * ds/multi-pack-index (2018-07-20) 23 commits @@ -1562,7 +1310,7 @@ 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. - Will merge to and cook in 'next'. + Will cook in 'next'. -------------------------------------------------- [Discarded]