From d0d88d622f8fa0ff600a76954c628f0970ac509e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 20 Mar 2018 14:39:32 -0700 Subject: [PATCH] What's cooking (2018/03 #04) --- whats-cooking.txt | 905 +++++++++++++++++----------------------------- 1 file changed, 339 insertions(+), 566 deletions(-) diff --git a/whats-cooking.txt b/whats-cooking.txt index 6dcd294b18..15d4039b25 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 (Mar 2018, #03; Wed, 14) -X-master-at: 7fb6aefd2aaffe66e614f7f7b83e5b7ab16d4806 -X-next-at: 6dcf76e1189e32b367ea053200d21aa31432517e +Subject: What's cooking in git.git (Mar 2018, #04; Tue, 20) +X-master-at: 0afbf6caa5b16dcfa3074982e5b48e27d452dbbb +X-next-at: 9ac9d02b0bb5a12c247f9cbeaa8c30b8aed3f167 -What's cooking in git.git (Mar 2018, #03; Wed, 14) +What's cooking in git.git (Mar 2018, #04; Tue, 20) -------------------------------------------------- Here are the topics that have been cooking. Commits prefixed with @@ -20,430 +20,227 @@ of the repositories listed at -------------------------------------------------- [Graduated to "master"] -* ab/gc-auto-in-commit (2018-03-01) 1 commit - (merged to 'next' on 2018-03-02 at 96a5a4d629) - + commit: run git gc --auto just before the post-commit hook +* ab/man-sec-list (2018-03-08) 1 commit + (merged to 'next' on 2018-03-09 at 9626b691e2) + + git manpage: note git-security@googlegroups.com - "git commit" used to run "gc --auto" near the end, which was lost - when the command was reimplemented in C by mistake. + Doc update. -* ab/pre-auto-gc-battery (2018-02-28) 1 commit - (merged to 'next' on 2018-03-06 at ca9cb273cb) - + hooks/pre-auto-gc-battery: allow gc to run on non-laptops +* ab/perl-fixes (2018-03-05) 13 commits + (merged to 'next' on 2018-03-09 at 262d84c1ba) + + perl Git::LoadCPAN: emit better errors under NO_PERL_CPAN_FALLBACKS + + Makefile: add NO_PERL_CPAN_FALLBACKS knob + + perl: move the perl/Git/FromCPAN tree to perl/FromCPAN + + perl: generalize the Git::LoadCPAN facility + + perl: move CPAN loader wrappers to another namespace + + perl: update our copy of Mail::Address + + perl: update our ancient copy of Error.pm + + git-send-email: unconditionally use Net::{SMTP,Domain} + + Git.pm: hard-depend on the File::{Temp,Spec} modules + + gitweb: hard-depend on the Digest::MD5 5.8 module + + Git.pm: add the "use warnings" pragma + + Git.pm: remove redundant "use strict" from sub-package + + perl: *.pm files should not have the executable bit + + Clean-up to various pieces of Perl code we have. + + +* cl/send-email-reply-to (2018-03-06) 2 commits + (merged to 'next' on 2018-03-09 at 3d3c3ab441) + + send-email: support separate Reply-To address + + send-email: rename variable for clarity + (this branch uses np/send-email-header-parsing.) + + "git send-email" learned "--reply-to=
" option. - A sample auto-gc hook (in contrib/) to skip auto-gc while on - battery has been updated to almost always allow running auto-gc - unless on_ac_power command is absolutely sure that we are on - battery power (earlier, it skipped unless the command is sure that - we are on ac power). +* np/send-email-header-parsing (2017-12-15) 1 commit + (merged to 'next' on 2018-03-09 at 91ef7216f7) + + send-email: extract email-parsing code into a subroutine + (this branch is used by cl/send-email-reply-to.) -* ag/userdiff-go-funcname (2018-03-01) 1 commit - (merged to 'next' on 2018-03-02 at ea404d1be9) - + userdiff: add built-in pattern for golang + Code refactoring. - "git diff" and friends learned funcname patterns for Go language - source files. +* sg/cvs-tests-with-x (2018-03-08) 2 commits + (merged to 'next' on 2018-03-09 at 6ec749c7b7) + + t9402-git-cvsserver-refs: don't check the stderr of a subshell + + t9400-git-cvsserver-server: don't rely on the output of 'test_cmp' -* bp/untracked-cache-noflush (2018-02-28) 2 commits - (merged to 'next' on 2018-03-02 at 709887971b) - + untracked cache: use git_env_bool() not getenv() for customization - + dir.c: don't flag the index as dirty for changes to the untracked cache + Allow running a couple of tests with "sh -x". - Writing out the index file when the only thing that changed in it - is the untracked cache information is often wasteful, and this has - been optimized out. +* tl/userdiff-csharp-async (2018-03-08) 1 commit + (merged to 'next' on 2018-03-09 at 6dcf76e118) + + userdiff.c: add C# async keyword in diff pattern -* ds/find-unique-abbrev-optim (2018-02-27) 1 commit - (merged to 'next' on 2018-03-02 at 0b6d4f9335) - + sha1_name: fix uninitialized memory errors + Update funcname pattern used for C# to recognize "async" keyword. - While finding unique object name abbreviation, the code may - accidentally have read beyond the end of the array of object names - in a pack. +-------------------------------------------------- +[New Topics] +* bp/refresh-cache-ent-rehash-fix (2018-03-15) 1 commit + (merged to 'next' on 2018-03-15 at bac8745f08) + + Fix bugs preventing adding updated cache entries to the name hash -* ds/mark-parents-uninteresting-optim (2018-02-27) 1 commit - (merged to 'next' on 2018-03-02 at 5a42c79806) - + revision.c: reduce object database queries + The codepath to replace an existing entry in the index had a bug in + updating the name hash structure, which has been fixed. - Micro optimization in revision traversal code. + Will merge to 'master'. -* jc/test-must-be-empty (2018-02-27) 1 commit - (merged to 'next' on 2018-03-02 at ec129f1b97) - + test_must_be_empty: make sure the file exists, not just empty +* jt/transfer-fsck-with-promissor (2018-03-15) 2 commits + (merged to 'next' on 2018-03-15 at 6d1ccc965b) + + fetch-pack: do not check links for partial fetch + + index-pack: support checking objects but not links - Test framework tweak to catch developer thinko. + The transfer.fsckobjects configuration tells "git fetch" to + validate the data and connected-ness of objects in the received + pack; the code to perform this check has been taught about the + narrow clone's convention that missing objects that are reachable + from objects in a pack that came from a promissor remote is OK. + Will merge to 'master'. -* jh/status-no-ahead-behind (2018-01-24) 4 commits - (merged to 'next' on 2018-03-02 at 68bde8d571) - + status: support --no-ahead-behind in long format - + status: update short status to respect --no-ahead-behind - + status: add --[no-]ahead-behind to status and commit for V2 format. - + stat_tracking_info: return +1 when branches not equal - "git status" can spend a lot of cycles to compute the relation - between the current branch and its upstream, which can now be - disabled with "--no-ahead-behind" option. +* ml/filter-branch-no-op-error (2018-03-15) 1 commit + (merged to 'next' on 2018-03-15 at ba8ac48dec) + + filter-branch: return 2 when nothing to rewrite + "git filter-branch" learned to use a different exit code to allow + the callers to tell the case where there was no new commits to + rewrite from other error cases. -* jk/add-i-diff-filter (2018-03-05) 2 commits - (merged to 'next' on 2018-03-08 at 6ef737add3) - + add--interactive: detect bogus diffFilter output - + t3701: add a test for interactive.diffFilter - - The "interactive.diffFilter" used by "git add -i" must retain - one-to-one correspondence between its input and output, but it was - not enforced and caused end-user confusion. We now at least make - sure the filtered result has the same number of lines as its input - to detect a broken filter. - - -* jk/smart-http-protocol-doc-fix (2018-03-05) 1 commit - (merged to 'next' on 2018-03-08 at 599b1a7c42) - + smart-http: document flush after "# service" line - - A doc update. - - -* ma/roll-back-lockfiles (2018-02-28) 5 commits - (merged to 'next' on 2018-03-06 at be29bf891c) - + sequencer: do not roll back lockfile unnecessarily - + merge: always roll back lock in `checkout_fast_forward()` - + merge-recursive: always roll back lock in `merge_recursive_generic()` - + sequencer: always roll back lock in `do_recursive_merge()` - + sequencer: make lockfiles non-static - (this branch is used by ma/skip-writing-unchanged-index.) - - Some codepaths used to take a lockfile and did not roll it back; - they are automatically rolled back at program exit, so there is no - real "breakage", but it still is a good practice to roll back when - you are done with a lockfile. - - -* mk/doc-pretty-fill (2018-02-27) 1 commit - (merged to 'next' on 2018-03-02 at 623461b127) - + docs/pretty-formats: fix typo '% <()' -> '%<|()' - - Docfix. - - -* nd/diff-stat-with-summary (2018-02-27) 2 commits - (merged to 'next' on 2018-03-06 at d543f92f5e) - + diff: add --compact-summary - + diff.c: refactor pprint_rename() to use strbuf - - "git diff" and friends learned "--compact-summary" that shows the - information usually given with the "--summary" option on the same - line as the diffstat output of the "--stat" option (which saves - vertical space and keeps info on a single path at the same place). - - -* nd/object-allocation-comments (2018-03-06) 2 commits - (merged to 'next' on 2018-03-08 at 91d553a339) - + object.h: realign object flag allocation comment - + object.h: update flag allocation comment - - Code doc update. - - -* nd/parseopt-completion (2018-03-07) 45 commits - (merged to 'next' on 2018-03-08 at 2461b7035d) - + completion: more subcommands in _git_notes() - + completion: complete --{reuse,reedit}-message= for all notes subcmds - + completion: simplify _git_notes - + completion: don't set PARSE_OPT_NOCOMPLETE on --rerere-autoupdate - (merged to 'next' on 2018-03-02 at d72a6525fd) - + completion: use __gitcomp_builtin in _git_worktree - + completion: use __gitcomp_builtin in _git_tag - + completion: use __gitcomp_builtin in _git_status - + completion: use __gitcomp_builtin in _git_show_branch - + completion: use __gitcomp_builtin in _git_rm - + completion: use __gitcomp_builtin in _git_revert - + completion: use __gitcomp_builtin in _git_reset - + completion: use __gitcomp_builtin in _git_replace - + remote: force completing --mirror= instead of --mirror - + completion: use __gitcomp_builtin in _git_remote - + completion: use __gitcomp_builtin in _git_push - + completion: use __gitcomp_builtin in _git_pull - + completion: use __gitcomp_builtin in _git_notes - + completion: use __gitcomp_builtin in _git_name_rev - + completion: use __gitcomp_builtin in _git_mv - + completion: use __gitcomp_builtin in _git_merge_base - + completion: use __gitcomp_builtin in _git_merge - + completion: use __gitcomp_builtin in _git_ls_remote - + completion: use __gitcomp_builtin in _git_ls_files - + completion: use __gitcomp_builtin in _git_init - + completion: use __gitcomp_builtin in _git_help - + completion: use __gitcomp_builtin in _git_grep - + completion: use __gitcomp_builtin in _git_gc - + completion: use __gitcomp_builtin in _git_fsck - + completion: use __gitcomp_builtin in _git_fetch - + completion: use __gitcomp_builtin in _git_difftool - + completion: use __gitcomp_builtin in _git_describe - + completion: use __gitcomp_builtin in _git_config - + completion: use __gitcomp_builtin in _git_commit - + completion: use __gitcomp_builtin in _git_clone - + completion: use __gitcomp_builtin in _git_clean - + completion: use __gitcomp_builtin in _git_cherry_pick - + completion: use __gitcomp_builtin in _git_checkout - + completion: use __gitcomp_builtin in _git_branch - + completion: use __gitcomp_builtin in _git_apply - + completion: use __gitcomp_builtin in _git_am - + completion: use __gitcomp_builtin in _git_add - + git-completion.bash: introduce __gitcomp_builtin - + parse-options: let OPT__FORCE take optional flags argument - + parse-options: add OPT_xxx_F() variants - + parse-options: support --git-completion-helper - - The parse-options API has been taught an option to help the - completion script; the command line completion has been updated to - take advantage of this mechanism. - - -* nd/worktree-move (2018-03-06) 8 commits - (merged to 'next' on 2018-03-06 at a26271e7de) - + t2028: fix minor error and issues in newly-added "worktree move" tests - (merged to 'next' on 2018-03-02 at 5c514dfc92) - + worktree remove: allow it when $GIT_WORK_TREE is already gone - + worktree remove: new command - + worktree move: refuse to move worktrees with submodules - + worktree move: accept destination as directory - + worktree move: new command - + worktree.c: add update_worktree_location() - + worktree.c: add validate_worktree() - - "git worktree" learned move and remove subcommands. - - -* ot/ref-filter-cleanup (2018-02-21) 2 commits - (merged to 'next' on 2018-03-02 at 3b4c39a4b5) - + ref-filter: get rid of goto - + ref-filter: get rid of duplicate code - - Code cleanup. - - -* pw/add-p-recount (2018-03-05) 9 commits - (merged to 'next' on 2018-03-06 at 68952f9bb0) - + add -p: don't rely on apply's '--recount' option - + add -p: fix counting when splitting and coalescing - + add -p: calculate offset delta for edited patches - + add -p: adjust offsets of subsequent hunks when one is skipped - + t3701: add failing test for pathological context lines - + t3701: don't hard code sha1 hash values - + t3701: use test_write_lines and write_script - + t3701: indent here documents - + add -i: add function to format hunk header - (this branch is used by pw/add-p-select.) - - "git add -p" has been lazy in coalescing split patches before - passing the result to underlying "git apply", leading to corner - case bugs; the logic to prepare the patch to be applied after hunk - selections has been tightened. - - -* rj/test-i18ngrep (2018-02-28) 2 commits - (merged to 'next' on 2018-03-06 at 7ea1a2352c) - + t5536: simplify checking of messages output to stderr - + t4151: consolidate multiple calls to test_i18ngrep - - Test updates. - - -* rs/perf-repeat-thrice-by-default (2018-02-27) 1 commit - (merged to 'next' on 2018-03-02 at 4898b3c450) - + perf: use GIT_PERF_REPEAT_COUNT=3 by default even without config file - - Perf test regression fix. - - -* rv/grep-cleanup (2018-02-23) 2 commits - (merged to 'next' on 2018-03-02 at 4aafca15f9) - + grep: simplify grep_oid and grep_file - + grep: move grep_source_init outside critical section - - Threaded "git grep" has been optimized to avoid allocation in code - section that is covered under a mutex. - - -* sg/subtree-signed-commits (2018-02-23) 1 commit - (merged to 'next' on 2018-03-02 at c5f6fd33e6) - + subtree: fix add and pull for GPG-signed commits - - "git subtree" script (in contrib/) scripted around "git log", whose - output got affected by end-user configuration like log.showsignature - - -* sg/test-x (2018-02-28) 11 commits - (merged to 'next' on 2018-03-06 at ab0684b27c) - + travis-ci: run tests with '-x' tracing - + t/README: add a note about don't saving stderr of compound commands - + t1510-repo-setup: mark as untraceable with '-x' - + t9903-bash-prompt: don't check the stderr of __git_ps1() - + t5570-git-daemon: don't check the stderr of a subshell - + t5526: use $TRASH_DIRECTORY to specify the path of GIT_TRACE log file - + t5500-fetch-pack: don't check the stderr of a subshell - + t3030-merge-recursive: don't check the stderr of a subshell - + t1507-rev-parse-upstream: don't check the stderr of a shell function - + t: add means to disable '-x' tracing for individual test scripts - + t: prevent '-x' tracing from interfering with test helpers' stderr + Will cook in 'next'. - Running test scripts under -x option of the shell is often not a - useful way to debug them, because the error messages from the - commands tests try to capture and inspect are contaminated by the - tracing output by the shell. An earlier work done to make it more - pleasant to run tests under -x with recent versions of bash is - extended to cover posix shells that do not support BASH_XTRACEFD. +* ab/install-symlinks (2018-03-15) 3 commits + (merged to 'next' on 2018-03-15 at 99d6bd6cb3) + + Makefile: optionally symlink libexec/git-core binaries to bin/git + + Makefile: add a gitexecdir_relative variable + + Makefile: fix broken bindir_relative variable -* sg/travis-build-during-script-phase (2018-01-08) 1 commit - (merged to 'next' on 2018-03-02 at 29e1585ae7) - + travis-ci: build Git during the 'script' phase + The build procedure learned to optionally use symbolic links + (instead of hardlinks and copies) to install "git-foo" for built-in + commands, whose binaries are all identical. - Build the executable in 'script' phase in Travis CI integration, to - follow the established practice, rather than during 'before_script' - phase. This allows the CI categorize the failures better ('failed' - is project's fault, 'errored' is build environment's). + Will cook in 'next'. --------------------------------------------------- -[New Topics] -* ab/man-sec-list (2018-03-08) 1 commit - (merged to 'next' on 2018-03-09 at 9626b691e2) - + git manpage: note git-security@googlegroups.com +* ks/t3200-typofix (2018-03-15) 1 commit + (merged to 'next' on 2018-03-15 at 8b8d397787) + + t/t3200: fix a typo in a test description - Doc update. + Test typofix. Will merge to 'master'. -* sg/cvs-tests-with-x (2018-03-08) 2 commits - (merged to 'next' on 2018-03-09 at 6ec749c7b7) - + t9402-git-cvsserver-refs: don't check the stderr of a subshell - + t9400-git-cvsserver-server: don't rely on the output of 'test_cmp' +* rj/http-code-cleanup (2018-03-15) 1 commit + (merged to 'next' on 2018-03-15 at 0dfd462ff8) + + http: fix an unused variable warning for 'curl_no_proxy' - Allow running a couple of tests with "sh -x". + There was an unused file-scope static variable left in http.c when + building for versions of libCURL that is older than 7.19.4, which + has been fixed. Will merge to 'master'. + This will become unnecessary, when we follow-through the + jk/drop-ancient-curl topic. -* tl/userdiff-csharp-async (2018-03-08) 1 commit - (merged to 'next' on 2018-03-09 at 6dcf76e118) - + userdiff.c: add C# async keyword in diff pattern +* tg/stash-untracked-with-pathspec-fix (2018-03-20) 3 commits + - stash push -u: don't create empty stash + - stash push: avoid printing errors + - stash: fix nonsense pipeline + + "git stash push -u -- " gave an unnecessary and confusing + error message when there was no tracked files that match the + , which has been fixed. + + Will merge to 'next'. - Update funcname pattern used for C# to recognize "async" keyword. + +* dp/merge-strategy-doc-fix (2018-03-19) 1 commit + (merged to 'next' on 2018-03-20 at 317e077588) + + Documentation/merge-strategies: typofix + + Doc fix. Will merge to 'master'. -* ti/fetch-everything-local-optim (2018-03-14) 1 commit - - fetch-pack.c: use oidset to check existence of loose object +* js/ming-strftime (2018-03-19) 1 commit + (merged to 'next' on 2018-03-20 at a9ca8172c7) + + mingw: abort on invalid strftime formats - A "git fetch" from a repository with insane number of refs into a - repository that is already up-to-date still wasted too many cycles - making many lstat(2) calls to see if these objects at the tips - exist as loose objects locally. These lstat(2) calls are optimized - away by enumerating all loose objects beforehand. + Will merge to 'master'. - It is unknown if the new strategy negatively affects existing use - cases, fetching into a repository with many loose objects from a - repository with small number of refs. - Will merge to 'next'. +* ml/filter-branch-portability-fix (2018-03-19) 1 commit + (merged to 'next' on 2018-03-20 at c7c17cfc8b) + + filter-branch: use printf instead of echo -e + Shell script portability fix. -* ab/nuke-emacs-contrib (2018-03-13) 1 commit - - git{,-blame}.el: remove old bitrotting Emacs code + Will merge to 'master'. - The scripts in contrib/emacs/ have outlived their usefulness and - have been removed. - Will merge to 'next'. +* rj/warning-uninitialized-fix (2018-03-20) 2 commits + (merged to 'next' on 2018-03-20 at 9ac9d02b0b) + + read-cache: fix an -Wmaybe-uninitialized warning + + -Wuninitialized: remove some 'init-self' workarounds + Compilation fix. -* bc/object-id (2018-03-14) 36 commits - - convert: convert to struct object_id - - sha1_file: introduce a constant for max header length - - Convert lookup_replace_object to struct object_id - - sha1_file: convert read_sha1_file to struct object_id - - sha1_file: convert read_object_with_reference to object_id - - tree-walk: convert tree entry functions to object_id - - streaming: convert istream internals to struct object_id - - tree-walk: convert get_tree_entry_follow_symlinks internals to object_id - - builtin/notes: convert static functions to object_id - - builtin/fmt-merge-msg: convert remaining code to object_id - - sha1_file: convert sha1_object_info* to object_id - - Convert remaining callers of sha1_object_info_extended to object_id - - packfile: convert unpack_entry to struct object_id - - sha1_file: convert retry_bad_packed_offset to struct object_id - - sha1_file: convert assert_sha1_type to object_id - - builtin/mktree: convert to struct object_id - - streaming: convert open_istream to use struct object_id - - sha1_file: convert check_sha1_signature to struct object_id - - sha1_file: convert read_loose_object to use struct object_id - - builtin/index-pack: convert struct ref_delta_entry to object_id - - archive: convert sha1_file_to_archive to struct object_id - - archive: convert write_archive_entry_fn_t to object_id - - builtin/mktag: convert to struct object_id - - replace_object: convert struct replace_object to object_id - - send-pack: convert remaining functions to struct object_id - - http-walker: convert struct object_request to use struct object_id - - Convert find_unique_abbrev* to struct object_id - - wt-status: convert struct wt_status_state to object_id - - strbuf: convert strbuf_add_unique_abbrev to use struct object_id - - ref-filter: convert grab_objectname to struct object_id - - tree: convert read_tree_recursive to struct object_id - - resolve-undo: convert struct resolve_undo_info to object_id - - cache-tree: convert remnants to struct object_id - - cache-tree: convert write_*_as_tree to object_id - - builtin/write-tree: convert to struct object_id - - bulk-checkin: convert index_bulk_checkin to struct object_id + Will merge to 'master'. - Conversion from uchar[20] to struct object_id continues. - Will merge to 'next'. +* tz/complete-tag-delete-tagname (2018-03-19) 1 commit + (merged to 'next' on 2018-03-20 at d63d45ff16) + + completion: complete tags with git tag --delete/--verify + Will merge to 'master'. -* jh/fsck-promisors (2018-03-13) 1 commit - - sha1_file: restore OBJECT_INFO_QUICK functionality - A hotfix to a topic that graduated recently. +* tz/relnotes-1.7-on-perl (2018-03-16) 1 commit + (merged to 'next' on 2018-03-20 at ed4b26e581) + + RelNotes: add details on Perl module changes - Will merge to 'next'. + Will merge to 'master'. -* ma/shortlog-revparse (2018-03-13) 3 commits - - shortlog: do not accept revisions when run outside repo - - shortlog: add usage-string for stdin-reading - - git-shortlog.txt: reorder usages +* jk/attributes-path-doc (2018-03-20) 1 commit + (merged to 'next' on 2018-03-20 at e965f0c68c) + + doc/gitattributes: mention non-recursive behavior - "git shortlog cruft" aborted with a BUG message when run outside a - Git repository. The command has been taught to complain about - extra and unwanted arguments on its command line instead in such a - case. + Doc update. - Expecting a reroll. - cf. + Will merge to 'master'. -* ab/pcre-v2 (2018-03-14) 3 commits - - Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1 - - configure: detect redundant --with-libpcre & --with-libpcre1 - - configure: fix a regression in PCRE v1 detection +* pw/rebase-keep-empty-fixes (2018-03-20) 4 commits + - SQUASH??? + - rebase: respect --no-keep-empty + - rebase -i --keep-empty: don't prune empty commits + - rebase --root: stop assuming squash_onto is unset + (this branch is used by pw/rebase-signoff.) - Git can be built to use either v1 or v2 of the PCRE library, and so - far, the build-time configuration USE_LIBPCRE=YesPlease instructed - the build procedure to use v1, but now it means v2. USE_LIBPCRE1 - and USE_LIBPCRE2 can be used to explicitly choose which version to - use, as before. + "git rebase --keep-empty" still removed an empty commit if the + other side contained an empty commit (due to the "does an + equivalent patch exist already?" check), which has been corrected. - Will merge to 'next'. + +* pw/rebase-signoff (2018-03-20) 4 commits + - rebase --keep-empty: always use interactive rebase + - rebase -p: error out if --signoff is given + - rebase: extend --signoff support + - Merge branch 'pw/rebase-keep-empty-fixes' into pw/rebase-signoff + (this branch uses pw/rebase-keep-empty-fixes.) + + "git rebase" has learned to honor "--signoff" option when using + backends other than "am" (but not "--preserve-merges"). -------------------------------------------------- [Stalled] @@ -487,20 +284,6 @@ of the repositories listed at cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com> -* dj/runtime-prefix (2017-12-05) 4 commits - . exec_cmd: RUNTIME_PREFIX on some POSIX systems - . Makefile: add Perl runtime prefix support - . Makefile: add support for "perllibdir" - . Makefile: generate Perl header from template file - - A build-time option has been added to allow Git to be told to refer - to its associated files relative to the main binary, in the same - way that has been possible on Windows for quite some time, for - Linux, BSDs and Darwin. - - Perhaps it is about time to reboot the effort? - - * mk/http-backend-content-length (2017-11-27) 4 commits - SQUASH??? - t5560-http-backend-noserver.sh: add CONTENT_LENGTH cases @@ -545,6 +328,126 @@ of the repositories listed at -------------------------------------------------- [Cooking] +* dj/runtime-prefix (2018-03-19) 3 commits + - exec_cmd: RUNTIME_PREFIX on some POSIX systems + - Makefile: add Perl runtime prefix support + - Makefile: generate Perl header from template file + + A build-time option has been added to allow Git to be told to refer + to its associated files relative to the main binary, in the same + way that has been possible on Windows for quite some time, for + Linux, BSDs and Darwin. + + +* ti/fetch-everything-local-optim (2018-03-14) 1 commit + (merged to 'next' on 2018-03-15 at 2be87aa7a7) + + fetch-pack.c: use oidset to check existence of loose object + + A "git fetch" from a repository with insane number of refs into a + repository that is already up-to-date still wasted too many cycles + making many lstat(2) calls to see if these objects at the tips + exist as loose objects locally. These lstat(2) calls are optimized + away by enumerating all loose objects beforehand. + + It is unknown if the new strategy negatively affects existing use + cases, fetching into a repository with many loose objects from a + repository with small number of refs. + + Will cook in 'next'. + + +* ab/nuke-emacs-contrib (2018-03-13) 1 commit + (merged to 'next' on 2018-03-15 at 13eb4e2d8b) + + git{,-blame}.el: remove old bitrotting Emacs code + + The scripts in contrib/emacs/ have outlived their usefulness and + have been removed. + + Will cook in 'next'. + + +* bc/object-id (2018-03-14) 36 commits + (merged to 'next' on 2018-03-20 at f1800a33ff) + + convert: convert to struct object_id + + sha1_file: introduce a constant for max header length + + Convert lookup_replace_object to struct object_id + + sha1_file: convert read_sha1_file to struct object_id + + sha1_file: convert read_object_with_reference to object_id + + tree-walk: convert tree entry functions to object_id + + streaming: convert istream internals to struct object_id + + tree-walk: convert get_tree_entry_follow_symlinks internals to object_id + + builtin/notes: convert static functions to object_id + + builtin/fmt-merge-msg: convert remaining code to object_id + + sha1_file: convert sha1_object_info* to object_id + + Convert remaining callers of sha1_object_info_extended to object_id + + packfile: convert unpack_entry to struct object_id + + sha1_file: convert retry_bad_packed_offset to struct object_id + + sha1_file: convert assert_sha1_type to object_id + + builtin/mktree: convert to struct object_id + + streaming: convert open_istream to use struct object_id + + sha1_file: convert check_sha1_signature to struct object_id + + sha1_file: convert read_loose_object to use struct object_id + + builtin/index-pack: convert struct ref_delta_entry to object_id + + archive: convert sha1_file_to_archive to struct object_id + + archive: convert write_archive_entry_fn_t to object_id + + builtin/mktag: convert to struct object_id + + replace_object: convert struct replace_object to object_id + + send-pack: convert remaining functions to struct object_id + + http-walker: convert struct object_request to use struct object_id + + Convert find_unique_abbrev* to struct object_id + + wt-status: convert struct wt_status_state to object_id + + strbuf: convert strbuf_add_unique_abbrev to use struct object_id + + ref-filter: convert grab_objectname to struct object_id + + tree: convert read_tree_recursive to struct object_id + + resolve-undo: convert struct resolve_undo_info to object_id + + cache-tree: convert remnants to struct object_id + + cache-tree: convert write_*_as_tree to object_id + + builtin/write-tree: convert to struct object_id + + bulk-checkin: convert index_bulk_checkin to struct object_id + + Conversion from uchar[20] to struct object_id continues. + + Will cook in 'next'. + + +* jh/fsck-promisors (2018-03-13) 1 commit + (merged to 'next' on 2018-03-15 at 0c283dbe5e) + + sha1_file: restore OBJECT_INFO_QUICK functionality + + A hotfix to a topic that graduated recently. + + Will merge to 'master'. + + +* ma/shortlog-revparse (2018-03-15) 3 commits + (merged to 'next' on 2018-03-15 at 2c2de7eb95) + + shortlog: disallow left-over arguments outside repo + + shortlog: add usage-string for stdin-reading + + git-shortlog.txt: reorder usages + + "git shortlog cruft" aborted with a BUG message when run outside a + Git repository. The command has been taught to complain about + extra and unwanted arguments on its command line instead in such a + case. + + Will cook in 'next'. + + +* ab/pcre-v2 (2018-03-14) 3 commits + (merged to 'next' on 2018-03-15 at e77b116903) + + Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1 + + configure: detect redundant --with-libpcre & --with-libpcre1 + + configure: fix a regression in PCRE v1 detection + + Git can be built to use either v1 or v2 of the PCRE library, and so + far, the build-time configuration USE_LIBPCRE=YesPlease instructed + the build procedure to use v1, but now it means v2. USE_LIBPCRE1 + and USE_LIBPCRE2 can be used to explicitly choose which version to + use, as before. + + Will cook in 'next'. + + * bb/git-gui-ssh-key-files (2018-03-02) 2 commits - Merge branch 'bb/ssh-key-files' of git-gui into bb/git-gui-ssh-key-files - git-gui: search for all current SSH key types @@ -571,23 +474,23 @@ of the repositories listed at the current theme. -* nd/pack-objects-pack-struct (2018-03-05) 9 commits - - pack-objects: reorder 'hash' to pack struct object_entry - - pack-objects: refer to delta objects by index instead of pointer - - pack-objects: move in_pack out of struct object_entry - - pack-objects: move in_pack_pos out of struct object_entry - - pack-objects: note about in_pack_header_size - - pack-objects: use bitfield for object_entry::depth - - pack-objects: use bitfield for object_entry::dfs_state - - pack-objects: turn type and in_pack_type to bitfields - - pack-objects: document holes in struct object_entry.h +* nd/pack-objects-pack-struct (2018-03-19) 11 commits + . pack-objects: reorder members to shrink struct object_entry + . pack-objects: shrink delta_size field in struct object_entry + . pack-objects: shrink size field in struct object_entry + . pack-objects: shrink z_delta_size field in struct object_entry + . pack-objects: refer to delta objects by index instead of pointer + . pack-objects: move in_pack out of struct object_entry + . pack-objects: move in_pack_pos out of struct object_entry + . pack-objects: use bitfield for object_entry::depth + . pack-objects: use bitfield for object_entry::dfs_state + . pack-objects: turn type and in_pack_type to bitfields + . pack-objects: a bit of document about struct object_entry "git pack-objects" needs to allocate tons of "struct object_entry" while doing its work, and shrinking its size helps the performance quite a bit. - Will merge to 'next'. - * nd/repack-keep-pack (2018-03-07) 6 commits - SQUASH??? @@ -603,25 +506,24 @@ of the repositories listed at marked with ".keep" so that it is left untouched while objects in other packs and loose ones are repacked. - Expecting a reroll. - cf. - Except for final finishing touches, this looked more-or-less ready - for 'next'. + Reroll exists, but it seems to be still slushy. + cf. <20180316192745.19557-1-pclouds@gmail.com> -* nd/worktree-prune (2018-03-06) 3 commits - - worktree prune: improve prune logic when worktree is moved - - worktree: delete dead code - - gc.txt: more details about what gc does +* nd/worktree-prune (2018-03-15) 3 commits + (merged to 'next' on 2018-03-20 at e2d9677b20) + + worktree prune: improve prune logic when worktree is moved + + worktree: delete dead code + + gc.txt: more details about what gc does The way "git worktree prune" worked internally has been simplified, by assuming how "git worktree move" moves an existing worktree to a different place. - Will merge to 'next'. + Will cook in 'next'. -* pw/add-p-select (2018-03-06) 3 commits +* pw/add-p-select (2018-03-16) 3 commits - add -p: optimize line selection for short hunks - add -p: allow line selection to be inverted - add -p: select individual hunk lines @@ -630,9 +532,6 @@ of the repositories listed at individual added/removed lines to be used in the operation, instead of accepting or rejecting a whole hunk. - Expecting a reroll. - cf. <6476d776-dbf7-09cf-1c65-e413798b9987@talktalk.net> - * ld/p4-unshelve (2018-02-22) 1 commit - git-p4: add unshelve command @@ -643,28 +542,25 @@ of the repositories listed at cf. -* ps/contains-id-error-message (2018-03-06) 1 commit - - parse-options: squelch usage help on certain errors +* ps/contains-id-error-message (2018-03-19) 1 commit + - Make options that expect object ids less chatty if id is invalid "git tag --contains no-such-commit" gave a full list of options after giving an error message. - Expecting a reroll. - cf. - Rebooted and fixed the root cause of the issue at a lower level. - * nd/remove-ignore-env-field (2018-03-05) 5 commits - - repository: delete ignore_env member - - sha1_file.c: move delayed getenv(altdb) back to setup_git_env() - - repository.c: delete dead functions - - repository.c: move env-related setup code back to environment.c - - repository: initialize the_repository in main() + (merged to 'next' on 2018-03-15 at 802b6ea1cb) + + repository: delete ignore_env member + + sha1_file.c: move delayed getenv(altdb) back to setup_git_env() + + repository.c: delete dead functions + + repository.c: move env-related setup code back to environment.c + + repository: initialize the_repository in main() (this branch is used by sb/object-store and sb/packfiles-in-repository.) Code clean-up for the "repository" abstraction. - Will merge to 'next'. + Will cook in 'next'. * sb/object-store (2018-03-05) 27 commits @@ -727,32 +623,12 @@ of the repositories listed at * ma/skip-writing-unchanged-index (2018-03-01) 1 commit - - write_locked_index(): add flag to avoid writing unchanged index + (merged to 'next' on 2018-03-15 at cdbbc66464) + + write_locked_index(): add flag to avoid writing unchanged index Internal API clean-up to allow write_locked_index() optionally skip writing the in-core index when it is not modified. - Will merge to 'next'. - - -* ab/perl-fixes (2018-03-05) 13 commits - (merged to 'next' on 2018-03-09 at 262d84c1ba) - + perl Git::LoadCPAN: emit better errors under NO_PERL_CPAN_FALLBACKS - + Makefile: add NO_PERL_CPAN_FALLBACKS knob - + perl: move the perl/Git/FromCPAN tree to perl/FromCPAN - + perl: generalize the Git::LoadCPAN facility - + perl: move CPAN loader wrappers to another namespace - + perl: update our copy of Mail::Address - + perl: update our ancient copy of Error.pm - + git-send-email: unconditionally use Net::{SMTP,Domain} - + Git.pm: hard-depend on the File::{Temp,Spec} modules - + gitweb: hard-depend on the Digest::MD5 5.8 module - + Git.pm: add the "use warnings" pragma - + Git.pm: remove redundant "use strict" from sub-package - + perl: *.pm files should not have the executable bit - - Clean-up to various pieces of Perl code we have. - Will merge to 'master'. @@ -782,16 +658,17 @@ of the repositories listed at * ma/config-page-only-in-list-mode (2018-02-21) 3 commits - - config: change default of `pager.config` to "on" - - config: respect `pager.config` in list/get-mode only - - t7006: add tests for how git config paginates + (merged to 'next' on 2018-03-15 at 652430af12) + + config: change default of `pager.config` to "on" + + config: respect `pager.config` in list/get-mode only + + t7006: add tests for how git config paginates In a way similar to how "git tag" learned to honor the pager setting only in the list mode, "git config" learned to ignore the pager setting when it is used for setting values (i.e. when the purpose of the operation is not to "show"). - Will merge to 'next'. + Will merge to 'master'. * pc/submodule-helper-foreach (2018-02-02) 5 commits @@ -805,62 +682,38 @@ of the repositories listed at e.g. cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com> -* tg/worktree-add-existing-branch (2018-02-05) 3 commits +* tg/worktree-add-existing-branch (2018-03-19) 4 commits - worktree: teach "add" to check out existing branches + - worktree: factor out dwim_branch function - worktree: be clearer when "add" dwim-ery kicks in - worktree: improve message when creating a new worktree "git worktree add" learned to check out an existing branch. - Expecting a reroll. - cf. - cf. - The general idea is good, just end-user facing messages are found - suboptimal. - - -* np/send-email-header-parsing (2017-12-15) 1 commit - (merged to 'next' on 2018-03-09 at 91ef7216f7) - + send-email: extract email-parsing code into a subroutine - (this branch is used by cl/send-email-reply-to.) - - Code refactoring. - - Will merge to 'master'. - - -* cl/send-email-reply-to (2018-03-06) 2 commits - (merged to 'next' on 2018-03-09 at 3d3c3ab441) - + send-email: support separate Reply-To address - + send-email: rename variable for clarity - (this branch uses np/send-email-header-parsing.) - - "git send-email" learned "--reply-to=
" option. - - Will merge to 'master'. - * js/rebase-recreate-merge (2018-02-23) 12 commits - - rebase -i: introduce --recreate-merges=[no-]rebase-cousins - - pull: accept --rebase=recreate to recreate the branch topology - - sequencer: handle post-rewrite for merge commands - - sequencer: make refs generated by the `label` command worktree-local - - rebase: introduce the --recreate-merges option - - rebase-helper --make-script: introduce a flag to recreate merges - - sequencer: fast-forward merge commits, if possible - - sequencer: introduce the `merge` command - - sequencer: introduce new commands to reset the revision - - git-rebase--interactive: clarify arguments - - sequencer: make rearrange_squash() a bit more obvious - - sequencer: avoid using errno clobbered by rollback_lock_file() + (merged to 'next' on 2018-03-15 at 3d1671756f) + + rebase -i: introduce --recreate-merges=[no-]rebase-cousins + + pull: accept --rebase=recreate to recreate the branch topology + + sequencer: handle post-rewrite for merge commands + + sequencer: make refs generated by the `label` command worktree-local + + rebase: introduce the --recreate-merges option + + rebase-helper --make-script: introduce a flag to recreate merges + + sequencer: fast-forward merge commits, if possible + + sequencer: introduce the `merge` command + + sequencer: introduce new commands to reset the revision + + git-rebase--interactive: clarify arguments + + sequencer: make rearrange_squash() a bit more obvious + + sequencer: avoid using errno clobbered by rollback_lock_file() "git rebase" learned "--recreate-merges" to transplant the whole topology of commit graph elsewhere. - Will merge to 'next'. + This serise has been reverted out of 'next', expecting that it will + be replaced by a reroll on top of a couple of topics by Phillip. -* bw/protocol-v2 (2018-03-14) 35 commits +* bw/protocol-v2 (2018-03-15) 35 commits - remote-curl: don't request v2 when pushing - remote-curl: implement stateless-connect command - http: eliminate "# service" line when using protocol v2 @@ -899,15 +752,19 @@ of the repositories listed at The beginning of the next-gen transfer protocol. + Is everybody happy with this version? One design decision with + larger consequence "to or not to build in?" has been settled in + favor of status quo, IIRC. -* ls/checkout-encoding (2018-03-09) 10 commits + +* ls/checkout-encoding (2018-03-16) 10 commits - convert: add round trip check based on 'core.checkRoundtripEncoding' - convert: add tracing for 'working-tree-encoding' attribute - - convert: advise canonical UTF encoding names - convert: check for detectable errors in UTF encodings - convert: add 'working-tree-encoding' attribute - utf8: add function to detect a missing UTF-16/32 BOM - utf8: add function to detect prohibited UTF-16/32 BOM + - utf8: teach same_encoding() alternative UTF encoding names - strbuf: add a case insensitive starts_with() - strbuf: add xstrdup_toupper() - strbuf: remove unnecessary NUL assignment in xstrdup_tolower() @@ -916,10 +773,6 @@ of the repositories listed at contents to the specified encoding when checking out to the working tree (and the other way around when checking in). - Expecting a reroll. - cf. <66370A41-A048-44E7-9BF8-4631C50AAE63@gmail.com> - Modulo minor design decision corrections, the series is almost there. - * en/rename-directory-detection (2018-02-27) 29 commits (merged to 'next' on 2018-03-06 at d42470f86e) @@ -961,84 +814,4 @@ of the repositories listed at to be overwritten during merge has also been fixed as part of this work. - Will merge to 'master'. - --------------------------------------------------- -[Discarded] - -* cc/require-tcl-tk-for-build (2017-11-29) 2 commits - - travis-ci: avoid new tcl/tk build requirement - - Makefile: check that tcl/tk is installed - - A first-time builder of Git may have installed neither tclsh nor - msgfmt, in which case git-gui and gitk part will fail and break the - build. As a workaround, refuse to run a build when tclsh is not - installed and NO_TCLTK is not set. - - Stalled for too long without any response; will discard. - I still feel that requring tclsh to be installed, with or without - "escape hatch" for experts, may be too heavy-handed. - - -* mg/merge-base-fork-point (2017-09-17) 3 commits - - merge-base: find fork-point outside partial reflog - - merge-base: return fork-point outside reflog - - t6010: test actual test output - - "merge-base --fork-point $branch $commit" is used to guess on which - commit among the commits that were once at the tip of the $branch the - $commit was built on top of, and it learns these historical tips from - the reflog of the $branch. When the true fork-point is lost due to - pruning of old reflog entries, the command does not give any output, - because it has no way to guess correctly and does not want to mislead - the user with a wrong guess. - - The command has been updated to give the best but not known to be - correct guess, based on a hope that a merge-base between $commit and a - virtual merge across all the reflog entries that still are available - for $branch may still be a closer to the true fork-point than the - merge-base between $commit and the current tip of the $branch. - - This may have to be offered by an additional option, to allow the - users that are prepared to see a potentially incorrect guess to opt - into the feature, without affecting the current callers that may not - be prepared to accept a guess that is not known to be correct. - - Stalled for too long without any response; will discard. - - -* mg/status-in-progress-info (2017-05-10) 2 commits - - status --short --inprogress: spell it as --in-progress - - status: show in-progress info for short status - - "git status" learns an option to report various operations - (e.g. "merging") that the user is in the middle of. - - Stalled for too long without any response; will discard. - cf. - - -* nd/tilde-expand-opt-file-value (2018-02-14) 2 commits - - init-db: change --template type to OPTION_FILENAME - - parse-options: expand $HOME on filename options - - "git cmd --opt=~u/path/to/file" did not tilde-expand "~u" part to - the path to the home directory of user 'u' - - This may make the resulting whole more confusing, though. - cf. <87wozffavp.fsf@evledraar.gmail.com> - - -* dp/git-el-ls-files-excludes (2018-03-05) 1 commit - . git.el: handle default excludesfile properly - - The "git.el" script (in contrib/) has been taught to use - "--exclude-standard" option when driving "ls-files", instead of - locating the exclude files on its own. With this change, it now - honors $XDG_CONFIG_HOME when it is set. - - The author of "git.el" recommends that users consider switching to - "magit", though. - - Discarded, as contrib/emacs/ hierarchy is being emptied by the - ab/nuke-emacs-contrib topic. + Will cook in 'next'. -- 2.47.3