From f7a802b2fd6fe0751fef9e1e3a334eb7a6803e17 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 1 Jun 2017 16:42:26 +0900 Subject: [PATCH] What's cooking (2017/06 #01) --- whats-cooking.txt | 1033 +++++++++++++++++---------------------------- 1 file changed, 379 insertions(+), 654 deletions(-) diff --git a/whats-cooking.txt b/whats-cooking.txt index 4e3e9cfc85..2f43a78509 100644 --- a/whats-cooking.txt +++ b/whats-cooking.txt @@ -1,10 +1,10 @@ To: git@vger.kernel.org Bcc: lwn@lwn.net -Subject: What's cooking in git.git (May 2017, #08; Mon, 29) -X-master-at: e83352ef23cca2701953ed3c915f1db49b255a7d -X-next-at: 88ad292c901b5a8436ade109286d30c4942be41f +Subject: What's cooking in git.git (Jun 2017, #01; Thu, 1) +X-master-at: 0339965c70d68fd3831c9a5306443c869de3f6a8 +X-next-at: b5e676d57ee80a379101c2e968b23f2342b77f7a -What's cooking in git.git (May 2017, #08; Mon, 29) +What's cooking in git.git (Jun 2017, #01; Thu, 1) -------------------------------------------------- Here are the topics that have been cooking. Commits prefixed with @@ -27,408 +27,296 @@ of the repositories listed at -------------------------------------------------- [Graduated to "master"] -* bc/object-id (2017-05-08) 53 commits - (merged to 'next' on 2017-05-20 at e7372733fb) - + object: convert parse_object* to take struct object_id - + tree: convert parse_tree_indirect to struct object_id - + sequencer: convert do_recursive_merge to struct object_id - + diff-lib: convert do_diff_cache to struct object_id - + builtin/ls-tree: convert to struct object_id - + merge: convert checkout_fast_forward to struct object_id - + sequencer: convert fast_forward_to to struct object_id - + builtin/ls-files: convert overlay_tree_on_cache to object_id - + builtin/read-tree: convert to struct object_id - + sha1_name: convert internals of peel_onion to object_id - + upload-pack: convert remaining parse_object callers to object_id - + revision: convert remaining parse_object callers to object_id - + revision: rename add_pending_sha1 to add_pending_oid - + http-push: convert process_ls_object and descendants to object_id - + refs/files-backend: convert many internals to struct object_id - + refs: convert struct ref_update to use struct object_id - + ref-filter: convert some static functions to struct object_id - + Convert struct ref_array_item to struct object_id - + Convert the verify_pack callback to struct object_id - + Convert lookup_tag to struct object_id - + log-tree: convert to struct object_id - + Convert lookup_tree to struct object_id - + builtin/reflog: convert tree_is_complete to take struct object_id - + tree: convert read_tree_1 to use struct object_id internally - + Convert lookup_blob to struct object_id - + Convert remaining callers of lookup_blob to object_id - + builtin/unpack-objects: convert to struct object_id - + pack: convert struct pack_idx_entry to struct object_id - + Convert lookup_commit* to struct object_id - + Convert remaining callers of lookup_commit_reference* to object_id - + builtin/tag: convert to struct object_id - + sequencer: convert some functions to struct object_id - + shallow: convert shallow registration functions to object_id - + revision: convert prepare_show_merge to struct object_id - + notes-utils: convert internals to struct object_id - + http-push: convert some static functions to struct object_id - + tag: convert parse_tag_buffer to struct object_id - + builtin/verify-commit: convert to struct object_id - + reflog_expire: convert to struct object_id - + parse-options-cb: convert to struct object_id - + notes-cache: convert to struct object_id - + submodule: convert merge_submodule to use struct object_id - + fast-import: convert to struct object_id - + fast-import: convert internal structs to struct object_id - + builtin/rev-parse: convert to struct object_id - + builtin/blame: convert static function to struct object_id - + branch: convert to struct object_id - + bundle: convert to struct object_id - + builtin/prune: convert to struct object_id - + builtin/name-rev: convert to struct object_id - + Convert struct cache_tree to use struct object_id - + Clean up outstanding object_id transforms. - + fetch-pack: convert to struct object_id - (this branch is used by mh/packed-ref-store-prep.) - - Conversion from uchar[20] to struct object_id continues. - - -* bm/interpret-trailers-cut-line-is-eom (2017-05-18) 1 commit - (merged to 'next' on 2017-05-23 at 3e5ff08517) - + interpret-trailers: honor the cut line - - "git interpret-trailers", when used as GIT_EDITOR for "git commit - -v", looked for and appended to a trailer block at the very end, - i.e. at the end of the "diff" output. The command has been - corrected to pay attention to the cut-mark line "commit -v" adds to - the buffer---the real trailer block should appear just before it. - - -* bw/dir-c-stops-relying-on-the-index (2017-05-06) 14 commits - (merged to 'next' on 2017-05-20 at 1f1b764ec8) - + dir: convert fill_directory to take an index - + dir: convert read_directory to take an index - + dir: convert read_directory_recursive to take an index - + dir: convert open_cached_dir to take an index - + dir: convert is_excluded to take an index - + dir: convert prep_exclude to take an index - + dir: convert add_excludes to take an index - + dir: convert is_excluded_from_list to take an index - + dir: convert last_exclude_matching_from_list to take an index - + dir: convert dir_add* to take an index - + dir: convert get_dtype to take index - + dir: convert directory_exists_in_index to take index - + dir: convert read_skip_worktree_file_from_index to take an index - + dir: stop using the index compatibility macros - - API update. - - -* ja/do-not-ask-needless-questions (2017-05-12) 3 commits - (merged to 'next' on 2017-05-23 at 6b373cd892) - + git-filter-branch: be more direct in an error message - + read-tree -m: make error message for merging 0 trees less smart aleck - + usability: don't ask questions if no reply is required - - Git sometimes gives an advice in a rhetorical question that does - not require an answer, which can confuse new users and non native - speakers. Attempt to rephrase them. - - -* jc/read-tree-empty-with-m (2017-05-10) 1 commit - (merged to 'next' on 2017-05-20 at 7e86815364) - + read-tree: "read-tree -m --empty" does not make sense - - "git read-tree -m" (no tree-ish) gave a nonsense suggestion "use - --empty if you want to clear the index". With "-m", such a request - will still fail anyway, as you'd need to name at least one tree-ish - to be merged. - - -* jc/repack-threads (2017-04-27) 1 commit - (merged to 'next' on 2017-05-20 at c1fd54a2a4) - + repack: accept --threads= and pass it down to pack-objects - - "git repack" learned to accept the --threads= option and pass it - to pack-objects. - - -* jk/alternate-ref-optim (2017-05-18) 1 commit - (merged to 'next' on 2017-05-23 at 4b4b3ac463) - + t5400: avoid concurrent writes into a trace file - - A test allowed both "git push" and "git receive-pack" on the other - end write their traces into the same file. This is OK on platforms - that allows atomically appending to a file opened with O_APPEND, - but on other platforms led to a mangled output, causing - intermittent test failures. This has been fixed by disabling - traces from "receive-pack" in the test. - - -* jk/bug-to-abort (2017-05-22) 4 commits - (merged to 'next' on 2017-05-22 at 20371eebb6) - + usage: add NORETURN to BUG() function definitions - (merged to 'next' on 2017-05-20 at db65acc882) - + config: complain about --local outside of a git repo - + setup_git_env: convert die("BUG") to BUG() - + usage.c: add BUG() function - - Introduce the BUG() macro to improve die("BUG: ..."). - - -* jk/diff-submodule-diff-inline (2017-05-08) 1 commit - (merged to 'next' on 2017-05-20 at da7eb2626a) - + diff: recurse into nested submodules for inline diff - - "git diff --submodule=diff" now recurses into nested submodules. - - -* jk/disable-pack-reuse-when-broken (2017-05-09) 2 commits - (merged to 'next' on 2017-05-20 at 684e921273) - + t5310: fix "; do" style - + pack-objects: disable pack reuse for object-selection options - - "pack-objects" can stream a slice of an existing packfile out when - the pack bitmap can tell that the reachable objects are all needed - in the output, without inspecting individual objects. This - strategy however would not work well when "--local" and other - options are in use, and need to be disabled. - - -* jk/doc-config-include (2017-05-12) 4 commits - (merged to 'next' on 2017-05-23 at 4f60843265) - + docs/config: consistify include.path examples - + docs/config: avoid the term "expand" for includes - + docs/config: give a relative includeIf example - + docs/config: clarify include/includeIf relationship - - Clarify documentation for include.path and includeIf..path - configuration variables. - - -* jk/ignore-broken-tags-when-ignoring-missing-links (2017-05-20) 1 commit - (merged to 'next' on 2017-05-23 at 977491e52a) - + revision.c: ignore broken tags with ignore_missing_links - - Tag objects, which are not reachable from any ref, that point at - missing objects were mishandled by "git gc" and friends (they - should silently be ignored instead) +* dk/send-email-avoid-net-smtp-ssl-when-able (2017-05-20) 1 commit + (merged to 'next' on 2017-05-23 at fc59b8a1d4) + + send-email: Net::SMTP::SSL is obsolete, use only when necessary + "git send-email" now uses Net::SMTP::SSL, which is obsolete, only + when needed. Recent versions of Net::SMTP can do TLS natively. -* jk/update-links-in-docs (2017-05-15) 1 commit - (merged to 'next' on 2017-05-23 at 5b2df9fdbe) - + doc: use https links to Wikipedia to avoid http redirects + This is somewhat broken; a fix will be merged to 'master' shortly. - A few http:// links that are redirected to https:// in the - documentation have been updated to https:// links. +* ab/conditional-config-with-symlinks (2017-05-17) 1 commit + (merged to 'next' on 2017-05-23 at 6162222c2e) + + config: match both symlink & realpath versions in IncludeIf.gitdir:* -* js/eol-on-ourselves (2017-05-10) 6 commits - (merged to 'next' on 2017-05-20 at 8023c277d2) - + t4051: mark supporting files as requiring LF-only line endings - + Fix the remaining tests that failed with core.autocrlf=true - + t3901: move supporting files into t/t3901/ - + completion: mark bash script as LF-only - + git-new-workdir: mark script as LF-only - + Fix build with core.autocrlf=true + The recently introduced "[includeIf "gitdir:$dir"] path=..." + mechansim has further been taught to take symlinks into account. + The directory "$dir" specified in "gitdir:$dir" may be a symlink to + a real location, not something that $(getcwd) may return. In such + a case, a realpath of "$dir" is compared with the real path of the + current repository to determine if the contents from the named path + should be included. - Make sure our tests would pass when the sources are checked out - with "platform native" line ending convention by default on - Windows. Some "text" files out tests use and the test scripts - themselves that are meant to be run with /bin/sh, ought to be - checked out with eol=LF even on Windows. +* ab/perf-wildmatch (2017-05-12) 2 commits + (merged to 'next' on 2017-05-23 at 0adb7dac31) + + perf: add test showing exponential growth in path globbing + + perf: add function to setup a fresh test repo -* js/plug-leaks (2017-05-09) 26 commits - (merged to 'next' on 2017-05-20 at fb136ea2dc) - + checkout: fix memory leak - + submodule_uses_worktrees(): plug memory leak - + show_worktree(): plug memory leak - + name-rev: avoid leaking memory in the `deref` case - + remote: plug memory leak in match_explicit() - + add_reflog_for_walk: avoid memory leak - + shallow: avoid memory leak - + line-log: avoid memory leak - + receive-pack: plug memory leak in update() - + fast-export: avoid leaking memory in handle_tag() - + mktree: plug memory leaks reported by Coverity - + pack-redundant: plug memory leak - + setup_discovered_git_dir(): plug memory leak - + setup_bare_git_dir(): help static analysis - + split_commit_in_progress(): simplify & fix memory leak - + checkout: fix memory leak - + cat-file: fix memory leak - + mailinfo & mailsplit: check for EOF while parsing - + status: close file descriptor after reading git-rebase-todo - + difftool: address a couple of resource/memory leaks - + get_mail_commit_oid(): avoid resource leak - + git_config_rename_section_in_file(): avoid resource leak - + add_commit_patch_id(): avoid allocating memory unnecessarily - + winansi: avoid buffer overrun - + winansi: avoid use of uninitialized value - + mingw: avoid memory leak when splitting PATH - - Fix memory leaks pointed out by Coverity (and people). - - -* km/log-showsignature-doc (2017-05-20) 1 commit - (merged to 'next' on 2017-05-23 at f43ea11956) - + config.txt: add an entry for log.showSignature + Add perf-test for wildmatch. - Doc update. +* bp/sub-process-convert-filter (2017-05-15) 11 commits + (merged to 'next' on 2017-05-23 at 89f5420a82) + + convert: update subprocess_read_status() to not die on EOF + + sub-process: move sub-process functions into separate files + + convert: rename reusable sub-process functions + + convert: update generic functions to only use generic data structures + + convert: separate generic structures and variables from the filter specific ones + + convert: split start_multi_file_filter() into two separate functions + + pkt-line: annotate packet_writel with LAST_ARG_MUST_BE_NULL + + convert: move packet_write_line() into pkt-line as packet_writel() + + pkt-line: add packet_read_line_gently() + + pkt-line: fix packet_read_line() to handle len < 0 errors + + convert: remove erroneous tests for errno == EPIPE -* kn/ref-filter-branch-list (2017-05-20) 1 commit - (merged to 'next' on 2017-05-23 at e0cc721af0) - + ref-filter: resolve HEAD when parsing %(HEAD) atom + Code from "conversion using external process" codepath has been + extracted to a separate sub-process.[ch] module. - "git for-each-ref --format=..." with %(HEAD) in the format used to - resolve the HEAD symref as many times as it had processed refs, - which was wasteful, and "git branch" shared the same problem. +* bw/forking-and-threading (2017-05-15) 14 commits + (merged to 'next' on 2017-05-23 at 79a6a59851) + + usage.c: drop set_error_handle() + + run-command: restrict PATH search to executable files + + run-command: expose is_executable function + + run-command: block signals between fork and execve + + run-command: add note about forking and threading + + run-command: handle dup2 and close errors in child + + run-command: eliminate calls to error handling functions in child + + run-command: don't die in child when duping /dev/null + + run-command: prepare child environment before forking + + string-list: add string_list_remove function + + run-command: use the async-signal-safe execv instead of execvp + + run-command: prepare command before forking + + t0061: run_command executes scripts without a #! line + + t5550: use write_script to generate post-update hook -* nd/split-index-unshare (2017-05-08) 2 commits - (merged to 'next' on 2017-05-20 at 9048cdc2ce) - + p3400: add perf tests for rebasing many changes - + split-index: add and use unshare_split_index() + The "run-command" API implementation has been made more robust + against dead-locking in a threaded environment. - Plug some leaks and updates internal API used to implement the - split index feature to make it easier to avoid such a leak in the - future. +* bw/pathspec-sans-the-index (2017-05-12) 6 commits + (merged to 'next' on 2017-05-23 at 45c8ef3115) + + pathspec: convert find_pathspecs_matching_against_index to take an index + + pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP + + ls-files: prevent prune_cache from overeagerly pruning submodules + + pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_EXPENSIVE flag + + submodule: add die_in_unpopulated_submodule function + + pathspec: provide a more descriptive die message -* pw/rebase-i-regression-fix (2017-05-20) 3 commits - (merged to 'next' on 2017-05-23 at 14676d0013) - + rebase -i: add missing newline to end of message - + rebase -i: silence stash apply - + rebase -i: fix reflog message + Simplify parse_pathspec() codepath and stop it from looking at the + default in-core index. + + +* dt/unpack-save-untracked-cache-extension (2017-05-20) 1 commit + (merged to 'next' on 2017-05-23 at 3196d093d6) + + unpack-trees: preserve index extensions + + When "git checkout", "git merge", etc. manipulates the in-core + index, various pieces of information in the index extensions are + discarded from the original state, as it is usually not the case + that they are kept up-to-date and in-sync with the operation on the + main index. The untracked cache extension is copied across these + operations now, which would speed up "git status" (as long as the + cache is properly invalidated). + + +* jc/name-rev-lw-tag (2017-03-29) 2 commits + (merged to 'next' on 2017-05-23 at 3f88b6d73c) + + name-rev: favor describing with tags and use committer date to tiebreak + + name-rev: refactor logic to see if a new candidate is a better name + (this branch is used by mg/name-rev-debug.) + + "git describe --contains" penalized light-weight tags so much that + they were almost never considered. Instead, give them about the + same chance to be considered as an annotated tag that is the same + age as the underlying commit would. + + +* jc/skip-test-in-the-middle (2017-05-18) 2 commits + (merged to 'next' on 2017-05-23 at 6c962b353b) + + t5545: enhance test coverage when no http server is installed + + test: allow skipping the remainder - Regression fix to topic recently merged to 'master'. + A recent update to t5545-push-options.sh started skipping all the + tests in the script when a web server testing is disabled or + unavailable, not just the ones that require a web server. Non HTTP + tests have been salvaged to always run in this script. -* sb/checkout-recurse-submodules (2017-05-04) 3 commits - (merged to 'next' on 2017-05-20 at f972b2069f) - + submodule: properly recurse for read-tree and checkout - + submodule: avoid auto-discovery in new working tree manipulator code - + submodule_move_head: reuse child_process structure for futher commands +* jh/memihash-opt (2017-05-16) 5 commits + (merged to 'next' on 2017-05-23 at 2f0293e8b8) + + p0004: don't error out if test repo is too small + + p0004: don't abort if multi-threaded is too slow + + p0004: use test_perf + + p0004: avoid using pipes + + p0004: simplify calls of test-lazy-init-name-hash - "git checkout --recurse-submodules" did not quite work with a - submodule that itself has submodules. + perf-test update. -* sb/reset-recurse-submodules (2017-04-23) 4 commits - (merged to 'next' on 2017-05-20 at 8adafdf1be) - + builtin/reset: add --recurse-submodules switch - + submodule.c: submodule_move_head works with broken submodules - + submodule.c: uninitialized submodules are ignored in recursive commands - + entry.c: submodule recursing: respect force flag correctly - (this branch is used by sb/submodule-blanket-recursive.) +* js/larger-timestamps (2017-05-20) 1 commit + (merged to 'next' on 2017-05-23 at 16f7c9e677) + + name-rev: change a "long" variable to timestamp_t + + A follow-up hotfix for a topic already in 'master'. - "git reset" learned "--recurse-submodules" option. +* jt/fetch-allow-tip-sha1-implicitly (2017-05-16) 1 commit + (merged to 'next' on 2017-05-23 at 690ed987df) + + fetch-pack: always allow fetching of literal SHA1s -* tg/stash-push-fixup (2017-05-17) 1 commit - (merged to 'next' on 2017-05-23 at 338eb650f2) - + completion: add git stash push + There is no good reason why "git fetch $there $sha1" should fail + when the $sha1 names an object at the tip of an advertised ref, + even when the other side hasn't enabled allowTipSHA1InWant. - The shell completion script (in contrib/) learned "git stash" has - a new "push" subcommand. + +* jt/send-email-validate-hook (2017-05-16) 1 commit + (merged to 'next' on 2017-05-23 at 89848cb9ac) + + send-email: support validate hook + + "git send-email" learned to run sendemail-validate hook to inspect + and reject a message before sending it out. -------------------------------------------------- [New Topics] -* ab/pcre-v2 (2017-05-26) 7 commits - - grep: add support for PCRE v2 - - grep: un-break building with PCRE < 8.20 - - grep: un-break building with PCRE < 8.32 - - grep: add support for the PCRE v1 JIT API - - log: add -P as a synonym for --perl-regexp - - grep: skip pthreads overhead when using one thread - - grep: don't redundantly compile throwaway patterns under threading - (this branch uses ab/grep-preparatory-cleanup.) +* dk/send-email-avoid-net-smtp-ssl-when-able (2017-06-01) 1 commit + (merged to 'next' on 2017-06-01 at 3ff3ddfac7) + + send-email: Net::SMTP::starttls was introduced in v2.34 - Update "perl-compatible regular expression" support to enable JIT - and also allow linking with the newer PCRE v2 library. + A hotfix to a topic in 'master'. - Will merge to 'next'. + Will merge to 'master'. -* ab/ref-filter-no-contains (2017-05-23) 1 commit - (merged to 'next' on 2017-05-29 at 5d39fd2961) - + tag: duplicate mention of --contains should mention --no-contains +* ah/doc-rev-parse-short-default (2017-06-01) 1 commit + (merged to 'next' on 2017-06-01 at f64fcc2a26) + + doc: rewrite description for rev-parse --short - Doc update to a recent topic. + Doc update. Will merge to 'master'. -* rs/mingw-path-lookup-simplify (2017-05-23) 1 commit - (merged to 'next' on 2017-05-29 at 4365139a7f) - + mingw: simplify PATH handling +* rf/completion-config-commit (2017-05-30) 1 commit + (merged to 'next' on 2017-06-01 at cea32e0486) + + completion: add completions for git config commit - Code simplification. + Completion update. Will merge to 'master'. -* ab/sha1dc-maint (2017-05-22) 1 commit - - sha1dc: update from upstream - (this branch is used by ab/sha1dc.) +* ab/c-translators-comment-style (2017-05-31) 1 commit + (merged to 'next' on 2017-06-01 at df7fb9199a) + + C style: use standard style for "TRANSLATORS" comments - The "collision detecting" SHA-1 implementation shipped with 2.13 - was quite broken on some big-endian platforms and/or platforms that - do not like unaligned fetches. Update to the upstream code which - has already fixed these issues. + Update the C style recommendation for notes for translators, as + recent versions of gettext tools can work with our style of + multi-line comments. - Will merge to 'next'. + Will merge to 'master'. -* ab/t3070-test-dedup (2017-05-29) 1 commit - - wildmatch test: remove redundant duplicate test +* jc/diff-log-help (2017-06-01) 1 commit + - diff- and log- family: handle "git cmd -h" early + (this branch is used by jc/wip-check-help-option.) - Test cleanup. + The continuation of jk/consistent-h topic; the plumbing commands in + the diff- and log- family were calling into the revision machinery + without repository set-up upon "git $cmd -h", which is fixed. - Will merge to 'next'. + Will squeeze into jk/consistent-h topic. -* ah/doc-filter-branch-export-env (2017-05-29) 1 commit - - doc: filter-branch does not require re-export of vars +* jk/consistent-h (2017-05-30) 7 commits + - t0012: test "-h" with builtins + - git: add hidden --list-builtins option + - version: convert to parse-options + - submodule--helper: show usage for "-h" + - remote-{ext,fd}: print usage message on invalid arguments + - upload-archive: handle "-h" option early + - credential: handle invalid arguments earlier + (this branch uses jk/unbreak-am-h.) - Docfix. + "git $cmd -h" for builtin commands calls the implementation of the + command (i.e. cmd_$cmd() function) without doing any repository + set-up, and the commands that expect RUN_SETUP is done by the Git + potty needs to be prepared to show the help text without barfing. - Will merge to 'next'. +* jk/drop-free-refspecs (2017-06-01) 1 commit + (merged to 'next' on 2017-06-01 at 8f455319fc) + + remote: drop free_refspecs() function -* jk/connect-symref-info-leak-fix (2017-05-26) 1 commit - - connect.c: fix leak in parse_one_symref_info() + Code clean-up. - Leakfix. + Will merge to 'master'. - Will merge to 'next'. +* jk/unbreak-am-h (2017-05-30) 1 commit + (merged to 'next' on 2017-06-01 at ee2233d409) + + am: handle "-h" argument earlier + (this branch is used by jk/consistent-h.) -* jk/pathspec-magic-disambiguation (2017-05-29) 6 commits - - verify_filename(): flip order of checks - - verify_filename(): treat ":(magic)" as a pathspec - - check_filename(): handle ":^" path magic - - check_filename(): use skip_prefix - - check_filename(): refactor ":/" handling - - t4208: add check for ":/" without matching file + "git am -h" triggered a BUG(). - The convention for a command line is to follow "git cmdname - --options" with revisions followed by an optional "--" - disambiguator and then finally pathspecs. When "--" is not there, - we make sure early ones are all interpretable as revs (and do not - look like paths) and later ones are the other way around. A - pathspec with "magic" (e.g. ":/p/a/t/h" that matches p/a/t/h from - the top-level of the working tree, no matter what subdirectory you - are working from) are conservatively judged as "not a path", which - required disambiguation more often. The command line parser - learned to say "it's a pathspec" a bit more often when the syntax - looks like so. + Will merge to 'master'. -* sd/t3200-typofix (2017-05-29) 1 commit - - branch test: fix invalid config key access +* jk/url-insteadof-config (2017-06-01) 1 commit + (merged to 'next' on 2017-06-01 at e7ea6032c2) + + docs/config: mention protocol implications of url.insteadOf - Test fix. + The interaction of "url.*.insteadOf" and custom URL scheme's + whitelisting is now documented better. + + Will merge to 'master'. + + +* pw/rebase-i-regression-fix (2017-06-01) 1 commit + - rebase -i: add test for reflog message + + Just the first one of three? new tests that follows up a regression + fix. + + Expecting a portable update. + + +* sb/submodule-blanket-recursive (2017-06-01) 9 commits + - builtin/fetch.c: respect 'submodule.recurse' option + - builtin/push.c: respect 'submodule.recurse' option + - builtin/grep.c: respect 'submodule.recurse' option + - Introduce 'submodule.recurse' option for worktree manipulators + - submodule loading: separate code path for .gitmodules and config overlay + - reset/checkout/read-tree: unify config callback for submodule recursion + - submodule test invocation: only pass additional arguments + - submodule recursing: do not write a config variable twice + - Merge branch 'ab/grep-preparatory-cleanup' into sb/submodule-blanket-recursive + (this branch uses ab/grep-preparatory-cleanup; is tangled with ab/pcre-v2.) + + Many commands learned to pay attention to submodule.recurse + configuration. Will merge to 'next'. + It is not known if a simple "yes/no" is sufficient in the longer + term, and what should happen when --recurse-submodules option starts + taking "recurse into them how?" parameter, though. + + +* tb/pull-ff-rebase-autostash (2017-06-01) 1 commit + (merged to 'next' on 2017-06-01 at b5e676d57e) + + pull: ff --rebase --autostash works in dirty repo + + "git pull --rebase --autostash" didn't auto-stash when the local history + fast-forwards to the upstream. + + Will merge to 'master'. + -------------------------------------------------- [Stalled] @@ -445,7 +333,6 @@ of the repositories listed at * mg/name-rev-debug (2017-03-31) 2 commits - describe: pass --debug down to name-rev - name-rev: provide debug output - (this branch uses jc/name-rev-lw-tag.) "git describe --debug --contains" did not add any meaningful information, even though without "--contains" it did. @@ -478,21 +365,126 @@ of the repositories listed at * sk/dash-is-previous (2017-03-01) 5 commits - - revert.c: delegate handling of "-" shorthand to setup_revisions - - sha1_name.c: teach get_sha1_1 "-" shorthand for "@{-1}" - - revision.c: args starting with "-" might be a revision - - revision.c: swap if/else blocks - - revision.c: do not update argv with unknown option + . revert.c: delegate handling of "-" shorthand to setup_revisions + . sha1_name.c: teach get_sha1_1 "-" shorthand for "@{-1}" + . revision.c: args starting with "-" might be a revision + . revision.c: swap if/else blocks + . revision.c: do not update argv with unknown option A dash "-" can be written to mean "the branch that was previously checked out" in more places. - Needs review. - cf. <1488007487-12965-1-git-send-email-kannan.siddharth12@gmail.com> + Ejected, as it seems that making -.. to mean @{-1}..HEAD etc. are + going too far. -------------------------------------------------- [Cooking] +* ab/pcre-v2 (2017-05-26) 7 commits + - grep: add support for PCRE v2 + - grep: un-break building with PCRE < 8.20 + - grep: un-break building with PCRE < 8.32 + - grep: add support for the PCRE v1 JIT API + - log: add -P as a synonym for --perl-regexp + - grep: skip pthreads overhead when using one thread + - grep: don't redundantly compile throwaway patterns under threading + (this branch uses ab/grep-preparatory-cleanup; is tangled with sb/submodule-blanket-recursive.) + + Update "perl-compatible regular expression" support to enable JIT + and also allow linking with the newer PCRE v2 library. + + Waiting for a fix-up. + cf. + + +* ab/ref-filter-no-contains (2017-05-23) 1 commit + (merged to 'next' on 2017-05-29 at 5d39fd2961) + + tag: duplicate mention of --contains should mention --no-contains + + Doc update to a recent topic. + + Will merge to 'master'. + + +* rs/mingw-path-lookup-simplify (2017-05-23) 1 commit + (merged to 'next' on 2017-05-29 at 4365139a7f) + + mingw: simplify PATH handling + + Code simplification. + + Will merge to 'master'. + + +* ab/sha1dc-maint (2017-05-22) 1 commit + (merged to 'next' on 2017-05-30 at 9eb40bf912) + + sha1dc: update from upstream + (this branch is used by ab/sha1dc.) + + The "collision detecting" SHA-1 implementation shipped with 2.13 + was quite broken on some big-endian platforms and/or platforms that + do not like unaligned fetches. Update to the upstream code which + has already fixed these issues. + + Will merge to 'master'. + + +* ab/t3070-test-dedup (2017-05-29) 1 commit + (merged to 'next' on 2017-05-30 at 71eadec33b) + + wildmatch test: remove redundant duplicate test + + Test cleanup. + + Will merge to 'master'. + + +* ah/doc-filter-branch-export-env (2017-05-29) 1 commit + (merged to 'next' on 2017-05-30 at a62168bf77) + + doc: filter-branch does not require re-export of vars + + Docfix. + + Will merge to 'master'. + + +* jk/connect-symref-info-leak-fix (2017-05-26) 1 commit + (merged to 'next' on 2017-05-30 at d8b75d2dd9) + + connect.c: fix leak in parse_one_symref_info() + + Leakfix. + + Will merge to 'master'. + + +* jk/pathspec-magic-disambiguation (2017-05-29) 6 commits + - verify_filename(): flip order of checks + - verify_filename(): treat ":(magic)" as a pathspec + - check_filename(): handle ":^" path magic + - check_filename(): use skip_prefix + - check_filename(): refactor ":/" handling + - t4208: add check for ":/" without matching file + + The convention for a command line is to follow "git cmdname + --options" with revisions followed by an optional "--" + disambiguator and then finally pathspecs. When "--" is not there, + we make sure early ones are all interpretable as revs (and do not + look like paths) and later ones are the other way around. A + pathspec with "magic" (e.g. ":/p/a/t/h" that matches p/a/t/h from + the top-level of the working tree, no matter what subdirectory you + are working from) are conservatively judged as "not a path", which + required disambiguation more often. The command line parser + learned to say "it's a pathspec" a bit more often when the syntax + looks like so. + + +* sd/t3200-typofix (2017-05-29) 1 commit + (merged to 'next' on 2017-05-30 at 784e5e73f8) + + branch test: fix invalid config key access + + Test fix. + + Will merge to 'master'. + + * ah/doc-interpret-trailers-ifexists (2017-05-23) 1 commit (merged to 'next' on 2017-05-29 at cb353c1d21) + Documentation: fix reference to ifExists for interpret-trailers @@ -520,34 +512,6 @@ of the repositories listed at Will merge to 'master'. -* ab/conditional-config-with-symlinks (2017-05-17) 1 commit - (merged to 'next' on 2017-05-23 at 6162222c2e) - + config: match both symlink & realpath versions in IncludeIf.gitdir:* - - The recently introduced "[includeIf "gitdir:$dir"] path=..." - mechansim has further been taught to take symlinks into account. - The directory "$dir" specified in "gitdir:$dir" may be a symlink to - a real location, not something that $(getcwd) may return. In such - a case, a realpath of "$dir" is compared with the real path of the - current repository to determine if the contents from the named path - should be included. - - Will merge to 'master'. - - -* jc/skip-test-in-the-middle (2017-05-18) 2 commits - (merged to 'next' on 2017-05-23 at 6c962b353b) - + t5545: enhance test coverage when no http server is installed - + test: allow skipping the remainder - - A recent update to t5545-push-options.sh started skipping all the - tests in the script when a web server testing is disabled or - unavailable, not just the ones that require a web server. Non HTTP - tests have been salvaged to always run in this script. - - Will merge to 'master'. - - * mh/packed-ref-store-prep (2017-05-24) 26 commits (merged to 'next' on 2017-05-29 at e4f5e06b4c) + cache_ref_iterator_begin(): avoid priming unneeded directories @@ -594,7 +558,8 @@ of the repositories listed at "git clean -d" used to clean directories that has ignored files, even though the command should not lose ignored ones without "-x". - This has been corrected. + "git status --ignored" did not list ignored and untracked files + without "-uall". These have been corrected. Will merge to 'master'. @@ -622,30 +587,6 @@ of the repositories listed at - bswap: add 64 bit endianness helper get_be64 -* dk/send-email-avoid-net-smtp-ssl-when-able (2017-05-20) 1 commit - (merged to 'next' on 2017-05-23 at fc59b8a1d4) - + send-email: Net::SMTP::SSL is obsolete, use only when necessary - - "git send-email" now uses Net::SMTP::SSL, which is obsolete, only - when needed. Recent versions of Net::SMTP can do TLS natively. - - Will merge to 'master'. - - -* jc/name-rev-lw-tag (2017-03-29) 2 commits - (merged to 'next' on 2017-05-23 at 3f88b6d73c) - + name-rev: favor describing with tags and use committer date to tiebreak - + name-rev: refactor logic to see if a new candidate is a better name - (this branch is used by mg/name-rev-debug.) - - "git describe --contains" penalized light-weight tags so much that - they were almost never considered. Instead, give them about the - same chance to be considered as an annotated tag that is the same - age as the underlying commit would. - - Will merge to 'master'. - - * jk/diff-blob (2017-05-24) 15 commits (merged to 'next' on 2017-05-29 at 5ecc979cc7) + diff: use blob path for blob/file diffs @@ -684,16 +625,7 @@ of the repositories listed at Will merge to 'master'. -* js/larger-timestamps (2017-05-20) 1 commit - (merged to 'next' on 2017-05-23 at 16f7c9e677) - + name-rev: change a "long" variable to timestamp_t - - A follow-up hotfix for a topic already in 'master'. - - Will merge to 'master'. - - -* sb/diff-color-move (2017-05-25) 17 commits +* sb/diff-color-move (2017-06-01) 17 commits - diff.c: color moved lines differently - diff: buffer all output if asked to - diff.c: emit_line includes whitespace highlighting @@ -728,99 +660,41 @@ of the repositories listed at cf. -* jh/memihash-opt (2017-05-16) 5 commits - (merged to 'next' on 2017-05-23 at 2f0293e8b8) - + p0004: don't error out if test repo is too small - + p0004: don't abort if multi-threaded is too slow - + p0004: use test_perf - + p0004: avoid using pipes - + p0004: simplify calls of test-lazy-init-name-hash - - perf-test update. - - Will merge to 'master'. - - * js/blame-lib (2017-05-25) 29 commits - - blame: move entry prepend to libgit - - blame: move scoreboard setup to libgit - - blame: move scoreboard-related methods to libgit - - blame: move fake-commit-related methods to libgit - - blame: move origin-related methods to libgit - - blame: move core structures to header - - blame: create entry prepend function - - blame: create scoreboard setup function - - blame: create scoreboard init function - - blame: rework methods that determine 'final' commit - - blame: wrap blame_sort and compare_blame_final - - blame: move progress updates to a scoreboard callback - - blame: make sanity_check use a callback in scoreboard - - blame: move no_whole_file_rename flag to scoreboard - - blame: move xdl_opts flags to scoreboard - - blame: move show_root flag to scoreboard - - blame: move reverse flag to scoreboard - - blame: move contents_from to scoreboard - - blame: move copy/move thresholds to scoreboard - - blame: move stat counters to scoreboard - - blame: rename nth_line function - - blame: rename ent_score function - - blame: rename coalesce function - - blame: rename origin-related functions - - blame: rename scoreboard structure to blame_scoreboard - - blame: rename origin structure to blame_origin - - blame: remove unused parameters - - blame: move textconv_object with related functions - - blame: remove unneeded dependency on blob.h + (merged to 'next' on 2017-05-30 at b4678b36a7) + + blame: move entry prepend to libgit + + blame: move scoreboard setup to libgit + + blame: move scoreboard-related methods to libgit + + blame: move fake-commit-related methods to libgit + + blame: move origin-related methods to libgit + + blame: move core structures to header + + blame: create entry prepend function + + blame: create scoreboard setup function + + blame: create scoreboard init function + + blame: rework methods that determine 'final' commit + + blame: wrap blame_sort and compare_blame_final + + blame: move progress updates to a scoreboard callback + + blame: make sanity_check use a callback in scoreboard + + blame: move no_whole_file_rename flag to scoreboard + + blame: move xdl_opts flags to scoreboard + + blame: move show_root flag to scoreboard + + blame: move reverse flag to scoreboard + + blame: move contents_from to scoreboard + + blame: move copy/move thresholds to scoreboard + + blame: move stat counters to scoreboard + + blame: rename nth_line function + + blame: rename ent_score function + + blame: rename coalesce function + + blame: rename origin-related functions + + blame: rename scoreboard structure to blame_scoreboard + + blame: rename origin structure to blame_origin + + blame: remove unused parameters + + blame: move textconv_object with related functions + + blame: remove unneeded dependency on blob.h The internal logic used in "git blame" has been libified to make it easier to use by cgit. - Will merge to 'next'. - - -* jt/send-email-validate-hook (2017-05-16) 1 commit - (merged to 'next' on 2017-05-23 at 89848cb9ac) - + send-email: support validate hook - - "git send-email" learned to run sendemail-validate hook to inspect - and reject a message before sending it out. - - Will merge to 'master'. - - -* bw/pathspec-sans-the-index (2017-05-12) 6 commits - (merged to 'next' on 2017-05-23 at 45c8ef3115) - + pathspec: convert find_pathspecs_matching_against_index to take an index - + pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP - + ls-files: prevent prune_cache from overeagerly pruning submodules - + pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_EXPENSIVE flag - + submodule: add die_in_unpopulated_submodule function - + pathspec: provide a more descriptive die message - - Simplify parse_pathspec() codepath and stop it from looking at the - default in-core index. - - Will merge to 'master'. - - -* jt/fetch-allow-tip-sha1-implicitly (2017-05-16) 1 commit - (merged to 'next' on 2017-05-23 at 690ed987df) - + fetch-pack: always allow fetching of literal SHA1s - - There is no good reason why "git fetch $there $sha1" should fail - when the $sha1 names an object at the tip of an advertised ref, - even when the other side hasn't enabled allowTipSHA1InWant. - - Will merge to 'master'. - - -* ab/perf-wildmatch (2017-05-12) 2 commits - (merged to 'next' on 2017-05-23 at 0adb7dac31) - + perf: add test showing exponential growth in path globbing - + perf: add function to setup a fresh test repo - - Add perf-test for wildmatch. - Will merge to 'master'. @@ -857,31 +731,14 @@ of the repositories listed at + test-lib: rename the LIBPCRE prerequisite to PCRE + grep & rev-list doc: stop promising libpcre for --perl-regexp + Makefile & configure: reword inaccurate comment about PCRE - (this branch is used by ab/pcre-v2.) + (this branch is used by ab/pcre-v2 and sb/submodule-blanket-recursive.) The internal implementation of "git grep" has seen some clean-up. Will merge to 'master'. -* dt/unpack-save-untracked-cache-extension (2017-05-20) 1 commit - (merged to 'next' on 2017-05-23 at 3196d093d6) - + unpack-trees: preserve index extensions - - When "git checkout", "git merge", etc. manipulates the in-core - index, various pieces of information in the index extensions are - discarded from the original state, as it is usually not the case - that they are kept up-to-date and in-sync with the operation on the - main index. The untracked cache extension is copied across these - operations now, which would speed up "git status" (as long as the - cache is properly invalidated). - - Will merge to 'master'. - - -* sg/clone-refspec-from-command-line-config (2017-05-16) 4 commits - - clone: use free_refspec() to free refspec list - - remote: drop free_refspecs() function +* sg/clone-refspec-from-command-line-config (2017-06-01) 2 commits - Documentation/clone: document ignored configuration variables - clone: respect additional configured fetch refspecs during initial fetch @@ -890,8 +747,7 @@ of the repositories listed at variables take effect while the initial clone is happening, e.g. these configuration variables could be fetch refspecs. - Waiting for response. - cf. + Are we happy with these two? * jh/close-index-before-stat (2017-04-28) 1 commit @@ -924,9 +780,10 @@ of the repositories listed at cf. <20170509033258.q7auj5p5lxs4tggd@sigill.intra.peff.net> -* nd/fopen-errors (2017-05-26) 13 commits - - is_missing_file_error(): work around EINVAL on Windows - - wrapper: factor out is_missing_file_error() +* nd/fopen-errors (2017-05-30) 14 commits + - mingw_fopen: report ENOENT for invalid file names + - SQUASH??? use test_i18ngrep and add it at the end + - mingw: verify that paths are not mistaken for remote nicknames - log: fix memory leak in open_next_file() - rerere.c: move error_errno() closer to the source system call - print errno when reporting a system call error @@ -943,7 +800,7 @@ of the repositories listed at optional, and silently ignore errors from open/fopen; report such errors if they are not due to missing files. - Waiting for comments on the two changes at the tip from Windows folks. + Waiting for an Ack to the SQUASH fix or a reroll of the tip commits. * js/rebase-i-final (2017-05-02) 10 commits @@ -966,49 +823,6 @@ of the repositories listed at cf. -* bw/forking-and-threading (2017-05-15) 14 commits - (merged to 'next' on 2017-05-23 at 79a6a59851) - + usage.c: drop set_error_handle() - + run-command: restrict PATH search to executable files - + run-command: expose is_executable function - + run-command: block signals between fork and execve - + run-command: add note about forking and threading - + run-command: handle dup2 and close errors in child - + run-command: eliminate calls to error handling functions in child - + run-command: don't die in child when duping /dev/null - + run-command: prepare child environment before forking - + string-list: add string_list_remove function - + run-command: use the async-signal-safe execv instead of execvp - + run-command: prepare command before forking - + t0061: run_command executes scripts without a #! line - + t5550: use write_script to generate post-update hook - - The "run-command" API implementation has been made more robust - against dead-locking in a threaded environment. - - Will merge to 'master'. - - -* bp/sub-process-convert-filter (2017-05-15) 11 commits - (merged to 'next' on 2017-05-23 at 89f5420a82) - + convert: update subprocess_read_status() to not die on EOF - + sub-process: move sub-process functions into separate files - + convert: rename reusable sub-process functions - + convert: update generic functions to only use generic data structures - + convert: separate generic structures and variables from the filter specific ones - + convert: split start_multi_file_filter() into two separate functions - + pkt-line: annotate packet_writel with LAST_ARG_MUST_BE_NULL - + convert: move packet_write_line() into pkt-line as packet_writel() - + pkt-line: add packet_read_line_gently() - + pkt-line: fix packet_read_line() to handle len < 0 errors - + convert: remove erroneous tests for errno == EPIPE - - Code from "conversion using external process" codepath has been - extracted to a separate sub-process.[ch] module. - - Will merge to 'master'. - - * nd/prune-in-worktree (2017-04-24) 12 commits - rev-list: expose and document --single-worktree - revision.c: --reflog add HEAD reflog from all worktrees @@ -1032,92 +846,3 @@ of the repositories listed at Expecting a reroll. Has been waiting for nd/worktree-kill-parse-ref to settle. cf. - --------------------------------------------------- -[Discard] - -* ab/compat-regex-update (2017-05-12) 3 commits - . DONTMERGE compat/regex: make it compile with -Werror=int-to-pointer-cast - . compat/regex: update the gawk regex engine from upstream - . compat/regex: add a README with a maintenance guide - - Update compat/regex we borrowed from gawk. It seems that some - customizations we made to the older one were dropped by mistake. - - Will discard. - cf. - - -* jk/no-looking-at-dotgit-outside-repo (2017-05-15) 1 commit - . config: complain about --local outside of a git repo - - Will discard. - Superseded by jk/bug-to-abort. - - -* js/retire-old-remote-spec (2017-05-12) 11 commits - . PREVIEW: remove support for .git/remotes/ and .git/branches/ - . PREVIEW: t0060: stop testing support for .git/remotes/ and .git/branches/ - . PREVIEW: t5515: remove .git/remotes/ and .git/branches/ tests - . PREVIEW: remote: remove support for migrating ancient remotes - . PREVIEW: t5516: stop testing .git/branches/ functionality - . PREVIEW: t5510: convert .git/remotes/ test to use a regular remote - . Revert "Revert "Don't create the $GIT_DIR/branches directory on init"" - . remote: warn loud and clear when .git/remotes/ is *still* used - . remote: warn loud and clear when .git/branches/ is *still* used - . Documentation: really deprecate .git/remotes/ and .git/branches/ - . git-parse-remote: fix highly misleading man page - - Stop reading from .git/remotes/ and .git/branches/, two old ways - that we have been supporting to configure short-hands for fetching - from remote repositories. - - Will discard. - The procedure of removing an old and unused feature is correctly - followed by this series, but it is far from clear that the feature - this attempts to remove is unused or useless. - - -* jc/checkout-working-tree-only (2017-04-27) 1 commit - . checkout: add --working-tree-only option - - "git checkout " learned a variant that does - not update the index when doing its thing. - - Will discard. - This was more of "the world could have been like this" illustration - rather than a "let's make this change" proposal. - - -* sb/submodule-blanket-recursive (2017-05-23) 6 commits - . builtin/push.c: respect 'submodule.recurse' option - . builtin/grep.c: respect 'submodule.recurse' option - . builtin/fetch.c: respect 'submodule.recurse' option - . Introduce submodule.recurse option for worktree manipulators - . submodule test invocation: only pass additional arguments - . submodule.c: add has_submodules to check if we have any submodules - - A new configuration variable "submodule.recurse" can be set to true - to force various commands run at the top-level superproject to - behave as if they were invoked with the "--recurse-submodules" - option. - - Retracted for now. - cf. - - -* df/dir-iter-remove-subtree (2017-05-29) 5 commits - . remove_subtree(): reimplement using iterators - . dir_iterator: rewrite state machine model - . dir_iterator: refactor dir_iterator_advance - . remove_subtree(): test removing nested directories - . dir_iterator: add tests for dir_iterator API - - Update the dir-iterator API and use it to reimplement - remove_subtree(). - - GSoC microproject. - Ejected as it conflicts with other topics in flight in a - non-trivial way. - - -- 2.47.3