{"thread":{"id":"52931","subject":"What's cooking in git.git (Mar 2020, #01; Tue, 3)","startedAt":"2020-03-03T22:22:03Z","lastAt":"2020-03-07T12:17:01Z","messageCount":15,"participants":["Junio C Hamano","Taylor Blau","Heba Waly","Jonathan Tan","Johannes Schindelin","Eric Sunshine","Martin Ågren"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"392823","messageId":"xmqqimjl6pvn.fsf@gitster-ct.c.googlers.com","threadId":"52931","inReplyTo":null,"subject":"What's cooking in git.git (Mar 2020, #01; Tue, 3)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-03-03T22:21:48Z","receivedAt":"2020-03-03T22:22:03Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Here are the topics that have been cooking.  Commits prefixed with\n'-' are only in 'pu' (proposed updates) while commits prefixed with\n'+' are in 'next'.  The ones marked with '.' do not appear in any of\nthe integration branches, but I am still holding onto them.\n\n2.26-rc0 is planned to happen tomorrow (see tinyurl.com/gitCal).\nThe set of remaining topics in 'next' has been shrinking and today\nmay be a good cut-off point to declare that anything that is not in\n'next' isn't expected to ship with the 2.26 release, unless it is an\nobvious regression fix.  That does not mean everything in 'next'\ntoday will be in the release, either.\n\nYou can find the changes described here in the integration branches\nof the repositories listed at\n\n    http://git-blame.blogspot.com/p/git-public-repositories.html\n\n--------------------------------------------------\n[Graduated to \"master\"]\n\n* ak/test-log-graph (2020-02-24) 2 commits\n  (merged to 'next' on 2020-02-25 at 2b68666ffa)\n + lib-log-graph: consolidate colored graph cmp logic\n + lib-log-graph: consolidate test_cmp_graph logic\n\n Test update.\n\n\n* ds/partial-clone-fixes (2020-02-22) 2 commits\n  (merged to 'next' on 2020-02-25 at a26434bb7a)\n + partial-clone: avoid fetching when looking for objects\n + partial-clone: demonstrate bugs in partial fetch\n\n Fix for a bug revealed by a recent change to make the protocol v2\n the default.\n\n\n* en/check-ignore (2020-02-18) 1 commit\n  (merged to 'next' on 2020-02-22 at f05a752211)\n + check-ignore: fix documentation and implementation to match\n\n \"git check-ignore\" did not work when the given path is explicitly\n marked as not ignored with a negative entry in the .gitignore file.\n\n\n* en/rebase-backend (2020-02-16) 20 commits\n  (merged to 'next' on 2020-02-22 at cae5eb0f18)\n + rebase: rename the two primary rebase backends\n + rebase: change the default backend from \"am\" to \"merge\"\n + rebase: make the backend configurable via config setting\n + rebase tests: repeat some tests using the merge backend instead of am\n + rebase tests: mark tests specific to the am-backend with --am\n + rebase: drop '-i' from the reflog for interactive-based rebases\n + git-prompt: change the prompt for interactive-based rebases\n + rebase: add an --am option\n + rebase: move incompatibility checks between backend options a bit earlier\n + git-rebase.txt: add more details about behavioral differences of backends\n + rebase: allow more types of rebases to fast-forward\n + t3432: make these tests work with either am or merge backends\n + rebase: fix handling of restrict_revision\n + rebase: make sure to pass along the quiet flag to the sequencer\n + rebase, sequencer: remove the broken GIT_QUIET handling\n + t3406: simplify an already simple test\n + rebase (interactive-backend): fix handling of commits that become empty\n + rebase (interactive-backend): make --keep-empty the default\n + t3404: directly test the behavior of interest\n + git-rebase.txt: update description of --allow-empty-message\n\n \"git rebase\" has learned to use the merge backend (i.e. the\n machinery that drives \"rebase -i\") by default, while allowing\n \"--apply\" option to use the \"apply\" backend (e.g. the moral\n equivalent of \"format-patch piped to am\").  The rebase.backend\n configuration variable can be set to customize.\n\n\n* en/t3433-rebase-stat-dirty-failure (2020-02-19) 2 commits\n  (merged to 'next' on 2020-02-25 at 000d596d4c)\n + merge-recursive: fix the refresh logic in update_file_flags\n + t3433: new rebase testcase documenting a stat-dirty-like failure\n\n The merge-recursive machinery failed to refresh the cache entry for\n a merge result in a couple of places, resulting in an unnecessary\n merge failure, which has been fixed.\n\n\n* es/worktree-cleanup (2020-02-24) 1 commit\n  (merged to 'next' on 2020-02-25 at 59bc458bcd)\n + worktree: drop unused code from get_main_worktree()\n\n Code cleanup.\n\n\n* jk/doc-diff-parallel (2020-02-18) 1 commit\n  (merged to 'next' on 2020-02-19 at 62b2264fca)\n + doc-diff: use single-colon rule in rendering Makefile\n\n Update to doc-diff.\n\n\n* jk/object-filter-with-bitmap (2020-02-18) 16 commits\n  (merged to 'next' on 2020-02-19 at d38487e23d)\n + rev-list --count: comment on the use of count_right++\n  (merged to 'next' on 2020-02-16 at 42425c3658)\n + pack-objects: support filters with bitmaps\n + pack-bitmap: implement BLOB_LIMIT filtering\n + pack-bitmap: implement BLOB_NONE filtering\n + bitmap: add bitmap_unset() function\n + rev-list: use bitmap filters for traversal\n + pack-bitmap: basic noop bitmap filter infrastructure\n + rev-list: allow commit-only bitmap traversals\n + t5310: factor out bitmap traversal comparison\n + rev-list: allow bitmaps when counting objects\n + rev-list: make --count work with --objects\n + rev-list: factor out bitmap-optimized routines\n + pack-bitmap: refuse to do a bitmap traversal with pathspecs\n + rev-list: fallback to non-bitmap traversal when filtering\n + pack-bitmap: fix leak of haves/wants object lists\n + pack-bitmap: factor out type iterator initialization\n\n The object reachability bitmap machinery and the partial cloning\n machinery were not prepared to work well together, because some\n object-filtering criteria that partial clones use inherently rely\n on object traversal, but the bitmap machinery is an optimization\n to bypass that object traversal.  There however are some cases\n where they can work together, and they were taught about them.\n\n\n* jk/push-option-doc-markup-fix (2020-02-18) 1 commit\n  (merged to 'next' on 2020-02-19 at 975e00fa99)\n + doc/config/push: use longer \"--\" line for preformatted example\n\n Doc markup fix.\n\n\n* jk/run-command-formatfix (2020-02-22) 1 commit\n  (merged to 'next' on 2020-02-25 at 39ad6eeb86)\n + run-command.h: fix mis-indented struct member\n\n Code style cleanup.\n\n\n* ma/test-cleanup (2020-02-24) 3 commits\n  (merged to 'next' on 2020-02-25 at ce00c705a9)\n + t: drop debug `cat` calls\n + t9810: drop debug `cat` call\n + t4117: check for files using `test_path_is_file`\n\n Code cleanup.\n\n\n* rs/blame-typefix-for-fingerprint (2020-02-24) 1 commit\n  (merged to 'next' on 2020-02-25 at 496309f50a)\n + blame: provide type of fingerprints pointer\n\n Code cleanup.\n\n\n* rs/micro-cleanups (2020-02-24) 2 commits\n  (merged to 'next' on 2020-02-25 at eaa8fd097b)\n + use strpbrk(3) to search for characters from a given set\n + quote: use isalnum() to check for alphanumeric characters\n\n Code cleanup.\n\n--------------------------------------------------\n[New Topics]\n\n* ah/force-pull-rebase-configuration (2020-03-02) 1 commit\n . pull: warn if the user didn't say whether to rebase or to merge\n\n \"git pull\" learned to warn when no pull.rebase configuration\n exists, and neither --[no-]rebase nor --ff-only is given (which\n would result a merge).\n\n Needs to adjust some tests.\n\n\n* hd/show-one-mergetag-fix (2020-03-02) 1 commit\n  (merged to 'next' on 2020-03-02 at 12fe907f8d)\n + show_one_mergetag: print non-parent in hex form.\n\n \"git show\" and others gave an object name in raw format in its\n error output, which has been corrected to give it in hex.\n\n Will merge to 'master'.\n\n\n* tg/retire-scripted-stash (2020-03-03) 2 commits\n - stash: remove the stash.useBuiltin setting\n - stash: get git_stash_config at the top level\n\n \"git stash\" has kept an escape hatch to use the scripted version\n for a few releases, which got stale.  It has been removed.\n\n Will merge to 'next'.\n\n\n* es/outside-repo-errmsg-hints (2020-03-03) 1 commit\n - prefix_path: show gitdir if worktree unavailable\n\n An earlier update to show the location of working tree in the error\n message did not consider the possibility that a git command may be\n run in a bare repository, which has been corrected.\n\n May want a test or two.\n\n\n* rs/show-progress-in-dumb-http-fetch (2020-03-03) 1 commit\n - remote-curl: show progress for fetches over dumb HTTP\n\n \"git fetch\" over HTTP walker protocol did not show any progress\n output.  We inherently do not know how much work remains, but still\n we can show something not to bore users.\n\n Will merge to 'next'.\n\n--------------------------------------------------\n[Stalled]\n\n* yz/p4-py3 (2020-02-13) 14 commits\n - ci: use python3 in linux-gcc and osx-gcc and python2 elsewhere\n - git-p4: use python3's input() everywhere\n - git-p4: simplify regex pattern generation for parsing diff-tree\n - git-p4: use dict.items() iteration for python3 compatibility\n - git-p4: use functools.reduce instead of reduce\n - git-p4: fix freezing while waiting for fast-import progress\n - git-p4: use marshal format version 2 when sending to p4\n - git-p4: open .gitp4-usercache.txt in text mode\n - git-p4: convert path to unicode before processing them\n - git-p4: encode/decode communication with git for python3\n - git-p4: encode/decode communication with p4 for python3\n - git-p4: remove string type aliasing\n - git-p4: change the expansion test from basestring to list\n - git-p4: make python2.7 the oldest supported version\n\n Update \"git p4\" to work with Python 3.\n\n Hold.\n Waiting for SoB from Szeder on the last step.\n cf. <xmqqk14qqj7n.fsf@gitster-ct.c.googlers.com>\n\n\n* dl/merge-autostash (2020-01-13) 17 commits\n - pull: pass --autostash to merge\n - t5520: make test_pull_autostash() accept expect_parent_num\n - merge: teach --autostash option\n - sequencer: unlink autostash in apply_autostash()\n - sequencer: extract perform_autostash() from rebase\n - rebase: generify create_autostash()\n - rebase: extract create_autostash()\n - reset: extract reset_head() from rebase\n - rebase: generify reset_head()\n - rebase: use apply_autostash() from sequencer.c\n - sequencer: make apply_rebase() accept a path\n - rebase: use read_oneliner()\n - sequencer: make read_oneliner() extern\n - sequencer: configurably warn on non-existent files\n - sequencer: use file strbuf for read_oneliner()\n - t7600: use test_write_lines()\n - Makefile: alphabetically sort += lists\n\n \"git merge\" learns the \"--autostash\" option.\n\n Expecting a reroll.\n cf. <20200123042906.GA29009@generichostname>\n\n\n* tb/commit-graph-split-merge (2020-02-12) 3 commits\n - builtin/commit-graph.c: support '--input=none'\n - builtin/commit-graph.c: introduce '--input=<source>'\n - builtin/commit-graph.c: support '--split[=<strategy>]'\n\n The code to write out the commit-graph has been taught a few\n options to control if the resulting graph chains should be merged\n or a single new incremental graph is created.\n\n Waiting for the discussion to settle.\n cf. <20200212205028.GE4364@syl.local>\n\n\n* bk/p4-pre-edit-changelist (2020-02-14) 7 commits\n - git-p4: add RCS keyword status message\n - git-p4: add p4 submit hooks\n - git-p4: restructure code in submit\n - git-p4: add --no-verify option\n - git-p4: add p4-pre-submit exit text\n - git-p4: create new function run_git_hook\n - git-p4: rewrite prompt to be Windows compatible\n\n \"git p4\" learned four new hooks and also \"--no-verify\" option to\n bypass them (and the existing \"p4-pre-submit\" hook).\n\n Waiting for response to RFH from Windows/Python folks.\n cf. <pull.698.v6.git.git.1581691486.gitgitgadget@gmail.com>\n\n\n* en/fill-directory-exponential (2020-01-31) 6 commits\n - t7063: blindly accept diffs\n - dir: replace exponential algorithm with a linear one\n - dir: refactor treat_directory to clarify control flow\n - dir: fix confusion based on variable tense\n - dir: fix broken comment\n - dir: consolidate treat_path() and treat_one_path()\n\n The directory traversal code had redundant recursive calls which\n made its performance characteristics exponential with respect to\n the depth of the tree, which was corrected.\n\n Expecting an update.\n cf. <CABPp-BEnt4C_7XyxQKxk4aga=JjM9fXCE-7SFp7azO_v5-pQYw@mail.gmail.com>\n cf. <pull.700.v2.git.git.1580495486.gitgitgadget@gmail.com>\n cf. <CABPp-BF0SO92wxY-dM14Vxv6BGA5=T=CicdwbiaZ7c9w6-j2jQ@mail.gmail.com>\n\n\n* vn/reset-deleted-ita (2019-07-26) 1 commit\n - reset: unstage empty deleted ita files\n\n \"git reset HEAD [<pathspec>]\" did not reset an empty file that was\n added with the intent-to-add bit.\n\n Expecting a reroll.\n\n\n* mk/use-size-t-in-zlib (2018-10-15) 1 commit\n - zlib.c: use size_t for size\n\n The wrapper to call into zlib followed our long tradition to use\n \"unsigned long\" for sizes of regions in memory, which have been\n updated to use \"size_t\".\n\n--------------------------------------------------\n[Cooking]\n\n* ag/rebase-remove-redundant-code (2020-02-26) 1 commit\n  (merged to 'next' on 2020-02-27 at b1f5289b67)\n + builtin/rebase: remove a call to get_oid() on `options.switch_to'\n\n Code reduction.\n\n Will merge to 'master'.\n\n\n* js/ci-windows-update (2020-02-27) 3 commits\n  (merged to 'next' on 2020-02-27 at 691f1c929c)\n + Azure Pipeline: switch to the latest agent pools\n + ci: prevent `perforce` from being quarantined\n + t/lib-httpd: avoid using macOS' sed\n\n Updates to the CI settings.\n\n Will merge to 'master'.\n\n\n* en/merge-path-collision (2020-02-27) 1 commit\n  (merged to 'next' on 2020-03-02 at cb2655c779)\n + merge-recursive: apply collision handling unification to recursive case\n\n Handling of conflicting renames in merge-recursive have further\n been made consistent with how existing codepaths try to mimic what\n is done to add/add conflicts.\n\n Will merge to 'master'.\n\n\n* en/test-cleanup (2020-02-27) 5 commits\n  (merged to 'next' on 2020-03-02 at 93a81886b7)\n + t6020: new test with interleaved lexicographic ordering of directories\n + t6022, t6046: test expected behavior instead of testing a proxy for it\n + t3035: prefer test_must_fail to bash negation for git commands\n + t6020, t6022, t6035: update merge tests to use test helper functions\n + t602[1236], t6034: modernize test formatting\n\n Test cleanup.\n\n Will merge to 'master'.\n\n\n* js/https-proxy-config (2020-02-27) 2 commits\n - config: documentation for HTTPS proxy client cert.\n - http: add client cert for HTTPS proxies.\n\n A handful of options to configure SSL when talking to proxies have\n been added.\n\n Not enough review.  Addition of on-disk key looks wrong.\n\n\n* rs/commit-graph-code-simplification (2020-02-27) 1 commit\n  (merged to 'next' on 2020-02-27 at f298c6ed49)\n + commit-graph: use progress title directly\n\n Code simplfication.\n\n Will merge to 'master'.\n\n\n* jc/doc-single-h-is-for-help (2020-02-27) 1 commit\n - Documentation: clarify that `-h` alone stands for `help`\n\n Both \"git ls-remote -h\" and \"git grep -h\" give short usage help,\n like any other Git subcommand, but it is not unreasonable to expect\n that the former would behave the same as \"git ls-remote --head\"\n (there is no other sensible behaviour for the latter).  The\n documentation has been updated in an attempt to clarify this.\n\n\n* hi/gpg-use-check-signature (2020-02-28) 1 commit\n  (merged to 'next' on 2020-03-02 at 273fb30874)\n + Revert \"gpg-interface: prefer check_signature() for GPG verification\"\n\n \"git merge signed-tag\" while lacking the public key started to say\n \"No signature\", which was utterly wrong.  This regression has been\n reverted.\n\n Will merge to 'master'.\n\n\n* rt/format-zero-length-fix (2020-02-28) 2 commits\n  (merged to 'next' on 2020-03-02 at a4070ef573)\n + config.mak.dev: re-enable -Wformat-zero-length\n + rebase-interactive.c: silence format-zero-length warnings\n\n Recently we inadvertently added a few instances of using 0-width\n format string to functions that we mark as printf-like without any\n developers noticing.  The root cause was that the compiler warning\n that is triggered by this is almost always useless and we disabled\n the warning in our developer builds, but not for general public.\n The new instances have been corrected, and the warning has been\n resurrected in the developer builds.\n\n Will merge to 'master'.\n\n\n* pw/advise-rebase-skip (2019-12-06) 9 commits\n - rebase -i: leave CHERRY_PICK_HEAD when there are conflicts\n - rebase: fix advice when a fixup creates an empty commit\n - commit: give correct advice for empty commit during a rebase\n - commit: encapsulate determine_whence() for sequencer\n - commit: use enum value for multiple cherry-picks\n - sequencer: write CHERRY_PICK_HEAD for reword and edit\n - cherry-pick: check commit error messages\n - cherry-pick: add test for `--skip` advice in `git commit`\n - t3404: use test_cmp_rev\n\n The mechanism to prevent \"git commit\" from making an empty commit\n or amending during an interrupted cherry-pick was broken during the\n rewrite of \"git rebase\" in C, which has been corrected.\n\n Will discard the tip two, which are still RFC, and advance the rest.\n cf. <xmqq7e0e7d9z.fsf@gitster-ct.c.googlers.com>\n\n\n* at/rebase-fork-point-regression-fix (2020-02-11) 1 commit\n  (merged to 'next' on 2020-03-02 at a1a84d37a7)\n + rebase: --fork-point regression fix\n\n The \"--fork-point\" mode of \"git rebase\" regressed when the command\n was rewritten in C back in 2.20 era, which has been corrected.\n\n Will merge to 'master'.\n Was waiting for a response to \"shouldn't this be sufficient?\" but\n I think it should.\n\n\n* am/mingw-poll-fix (2020-02-27) 1 commit\n  (merged to 'next' on 2020-03-02 at 7082619f34)\n + mingw: workaround for hangs when sending STDIN\n\n MinGW's poll() emulation has been improved.\n\n Will merge to 'master'.\n\n\n* pb/am-show-current-patch (2020-02-20) 5 commits\n  (merged to 'next' on 2020-03-02 at 30b5300705)\n + am: support --show-current-patch=diff to retrieve .git/rebase-apply/patch\n + am: support --show-current-patch=raw as a synonym for--show-current-patch\n + am: convert \"resume\" variable to a struct\n + parse-options: convert \"command mode\" to a flag\n + parse-options: add testcases for OPT_CMDMODE()\n\n \"git am --short-current-patch\" is a way to show the piece of e-mail\n for the stopped step, which is not suitable to directly feed \"git\n apply\" (it is designed to be a good \"git am\" input).  It learned a\n new option to show only the patch part.\n\n Will merge to 'master'.\n\n\n* bc/wildcard-credential (2020-02-20) 5 commits\n  (merged to 'next' on 2020-02-25 at ba3706cb90)\n + credential: allow wildcard patterns when matching config\n + credential: use the last matching username in the config\n + t0300: add tests for some additional cases\n + t1300: add test for urlmatch with multiple wildcards\n + mailmap: add an additional email address for brian m. carlson\n\n A configuration element used for credential subsystem can now use\n wildcard pattern to specify for which set of URLs the entry\n applies.\n\n Will merge to 'master'.\n\n\n* es/recursive-single-branch-clone (2020-02-25) 2 commits\n  (merged to 'next' on 2020-02-27 at 8e8fcca7cd)\n + clone: pass --single-branch during --recurse-submodules\n + submodule--helper: use C99 named initializer\n\n \"git clone --recurse-submodules --single-branch\" now uses the same\n single-branch option when cloning the submodules.\n\n Will merge to 'master'.\n\n\n* jc/describe-misnamed-annotated-tag (2020-02-20) 1 commit\n  (merged to 'next' on 2020-03-02 at b4e2ca6a46)\n + describe: force long format for a name based on a mislocated tag\n\n When \"git describe C\" finds an annotated tag with tagname A to be\n the best name to explain commit C, and the tag is stored in a\n \"wrong\" place in the refs/tags hierarchy, e.g. refs/tags/B, the\n command gave a warning message but used A (not B) to describe C.\n If C is exactly at the tag, the describe output would be \"A\", but\n \"git rev-parse A^0\" would not be equal as \"git rev-parse C^0\".  The\n behavior of the command has been changed to use the \"long\" form\n i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.\n\n Will merge to 'master'.\n\n\n* pb/recurse-submodules-fix (2020-02-19) 6 commits\n - t/lib-submodule-update: add test removing nested submodules\n - unpack-trees: check for missing submodule directory in merged_entry\n - unpack-trees: remove outdated description for verify_clean_submodule\n - t/lib-submodule-update: move a test to the right section\n - t/lib-submodule-update: remove outdated test description\n - t7112: remove mention of KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED\n\n\n* rj/t1050-use-test-path-is-file (2020-02-24) 1 commit\n  (merged to 'next' on 2020-03-02 at 68a681640e)\n + t1050: replace test -f with test_path_is_file\n\n Code cleanup.\n\n Will merge to 'master'.\n\n\n* bc/sha-256-part-1-of-4 (2020-02-28) 22 commits\n - fast-import: add options for rewriting submodules\n - fast-import: add a generic function to iterate over marks\n - fast-import: make find_marks work on any mark set\n - fast-import: add helper function for inserting mark object entries\n - fast-import: permit reading multiple marks files\n - commit: use expected signature header for SHA-256\n - worktree: allow repository version 1\n - init-db: move writing repo version into a function\n - builtin/init-db: add environment variable for new repo hash\n - builtin/init-db: allow specifying hash algorithm on command line\n - setup: allow check_repository_format to read repository format\n - t/helper: make repository tests hash independent\n - t/helper: initialize repository if necessary\n - t/helper/test-dump-split-index: initialize git repository\n - t6300: make hash algorithm independent\n - t6300: abstract away SHA-1-specific constants\n - t: use hash-specific lookup tables to define test constants\n - repository: require a build flag to use SHA-256\n - hex: add functions to parse hex object IDs in any algorithm\n - hex: introduce parsing variants taking hash algorithms\n - hash: implement and use a context cloning function\n - builtin/pack-objects: make hash agnostic\n\n SHA-256 transition continues.\n\n Tentatively I dropped the bits about signed tag, as it depended on\n a reverted change to the gpg interface API.\n\n\n* es/do-not-let-rebase-switch-to-protected-branch (2020-02-24) 2 commits\n  (merged to 'next' on 2020-02-27 at 4b0009b609)\n + rebase: refuse to switch to branch already checked out elsewhere\n + t3400: make test clean up after itself\n\n \"git rebase BASE BRANCH\" rebased/updated the tip of BRANCH and\n checked it out, even when the BRANCH is checked out in a different\n worktree.  This has been corrected.\n\n Will merge to 'master'.\n\n\n* es/worktree-avoid-duplication-fix (2020-02-24) 3 commits\n  (merged to 'next' on 2020-02-25 at 74c612837a)\n + worktree: don't allow \"add\" validation to be fooled by suffix matching\n + worktree: add utility to find worktree by pathname\n + worktree: improve find_worktree() documentation\n\n In rare cases \"git worktree add <path>\" could think that <path>\n was already a registered worktree even when it wasn't and refuse\n to add the new worktree. This has been corrected.\n\n Will merge to 'master'.\n\n\n* hv/receive-denycurrent-everywhere (2020-02-24) 3 commits\n  (merged to 'next' on 2020-02-25 at 84e35c4980)\n + receive.denyCurrentBranch: respect all worktrees\n + t5509: use a bare repository for test push target\n + get_main_worktree(): allow it to be called in the Git directory\n\n \"git push\" should stop from updating a branch that is checked out\n when receive.denyCurrentBranch configuration is set, but it failed\n to pay attention to checkouts in secondary worktrees.  This has\n been corrected.\n\n Will merge to 'master'.\n\n\n* jk/nth-packed-object-id (2020-02-24) 10 commits\n  (merged to 'next' on 2020-02-27 at 8f1e796030)\n + packfile: drop nth_packed_object_sha1()\n + packed_object_info(): use object_id internally for delta base\n + packed_object_info(): use object_id for returning delta base\n + pack-check: push oid lookup into loop\n + pack-check: convert \"internal error\" die to a BUG()\n + pack-bitmap: use object_id when loading on-disk bitmaps\n + pack-objects: use object_id struct in pack-reuse code\n + pack-objects: convert oe_set_delta_ext() to use object_id\n + pack-objects: read delta base oid into object_id struct\n + nth_packed_object_oid(): use customary integer return\n\n Code cleanup to use \"struct object_id\" more by replacing use of\n \"char *sha1\"\n\n Will merge to 'master'.\n\n\n* kk/complete-diff-color-moved (2020-02-24) 1 commit\n  (merged to 'next' on 2020-03-02 at 1bdb401f6a)\n + completion: add diff --color-moved[-ws]\n\n Completion update.\n\n Will merge to 'master'.\n\n\n* be/describe-multiroot (2020-02-26) 1 commit\n  (merged to 'next' on 2020-02-27 at b476663ffc)\n + describe: don't abort too early when searching tags\n\n \"git describe\" in a repository with multiple root commits sometimes\n gave up looking for the best tag to describe a given commit with\n too early, which has been adjusted.\n\n Will merge to 'master'.\n\n\n* hw/advise-ng (2020-03-02) 5 commits\n - tag: use new advice API to check visibility\n - SQUASH???\n - advice: revamp advise API\n - advice: change \"setupStreamFailure\" to \"setUpstreamFailure\"\n - advice: extract vadvise() from advise()\n\n Revamping of the advise API to allow more systematic enumeration of\n advice knobs in the future.\n\n\n* ds/sparse-add (2020-02-20) 5 commits\n  (merged to 'next' on 2020-02-25 at de68d14e77)\n + sparse-checkout: allow one-character directories in cone mode\n  (merged to 'next' on 2020-02-14 at 3799757bbe)\n + sparse-checkout: work with Windows paths\n + sparse-checkout: create 'add' subcommand\n + sparse-checkout: extract pattern update from 'set' subcommand\n + sparse-checkout: extract add_patterns_from_input()\n\n \"git sparse-checkout\" learned a new \"add\" subcommand.\n\n Will merge to 'master'.\n\n\n* hn/reftable (2020-02-26) 6 commits\n . Reftable support for git-core\n . Add reftable library\n . reftable: file format documentation\n . refs: document how ref_iterator_advance_fn should handle symrefs\n . create .git/refs in files-backend.c\n . refs.h: clarify reflog iteration order\n\n A new refs backend \"reftable\" to replace the traditional\n combination of packed-refs files and one-file-per-ref loose refs\n has been implemented and integrated for improved performance and\n atomicity.\n\n Temporarily ejected as this unfortunately conflicts with the\n SHA-256 topic.\n\n\n* es/bugreport (2020-03-02) 5 commits\n - bugreport: add compiler info\n - bugreport: add uname info\n - bugreport: gather git version and build info\n - bugreport: add tool to generate debugging info\n - help: move list_config_help to builtin/help\n\n The \"bugreport\" tool.\n\n This round has narrowed its scope significantly, and IMHO should be\n easier to review.\n\n\n* gs/commit-graph-path-filter (2020-02-12) 12 commits\n - (bytesex breakage band-aid)\n - commit-graph: add GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS test flag\n - revision.c: use Bloom filters to speed up path based revision walks\n - commit-graph: add --changed-paths option to write subcommand\n - commit-graph: reuse existing Bloom filters during write.\n - commit-graph: write Bloom filters to commit graph file\n - commit-graph: examine commits by generation number\n - commit-graph: examine changed-path objects in pack order\n - commit-graph: compute Bloom filters for changed paths\n - diff: halt tree-diff early after max_changes\n - bloom: core Bloom filter implementation for changed paths\n - commit-graph: use MAX_NUM_CHUNKS\n\n Introduce an extension to the commit-graph to make it efficient to\n check for the paths that were modified at each commit using Bloom\n filters.\n\n Will be rerolled with bytesex fixes squashed in.\n Breakage due to byte-order dependency reported.\n\n\n* mr/bisect-in-c-1 (2020-02-19) 12 commits\n  (merged to 'next' on 2020-02-25 at 7e9e7950fd)\n + bisect: libify `bisect_next_all`\n + bisect: libify `handle_bad_merge_base` and its dependents\n + bisect: libify `check_good_are_ancestors_of_bad` and its dependents\n + bisect: libify `check_merge_bases` and its dependents\n + bisect: libify `bisect_checkout`\n + bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and its dependents\n + bisect--helper: return error codes from `cmd_bisect__helper()`\n + bisect: add enum to represent bisect returning codes\n + bisect--helper: introduce new `decide_next()` function\n + bisect: use the standard 'if (!var)' way to check for 0\n + bisect--helper: change `retval` to `res`\n + bisect--helper: convert `vocab_*` char pointers to char arrays\n\n Underlying machinery of \"git bisect--helper\" is being refactored\n into pieces that are more easily reused.\n\n Will merge to 'master'.\n\n\n* am/pathspec-f-f-more (2020-02-19) 8 commits\n  (merged to 'next' on 2020-03-02 at 33ff7e29f0)\n + stash push: support the --pathspec-from-file option\n + stash: eliminate crude option parsing\n + doc: stash: synchronize <pathspec> description\n + doc: stash: document more options\n + doc: stash: split options from description (2)\n + doc: stash: split options from description (1)\n + rm: support the --pathspec-from-file option\n + doc: rm: synchronize <pathspec> description\n\n \"git rm\" and \"git stash\" learns the new \"--pathspec-from-file\"\n option.\n\n Will merge to 'master'.\n\n--------------------------------------------------\n[Discarded]\n\n* mt/describe-misnamed-annotated-tag (2020-02-18) 1 commit\n . describe: output tag's ref instead of embedded name\n\n When \"git describe C\" finds an annotated tag with tagname A to be\n the best name to explain commit C, and the tag is stored in a\n \"wrong\" place in the refs/tags hierarchy, e.g. refs/tags/B, the\n command gave a warning message but used A (not B) to describe C.\n If C is exactly at the tag, the describe output would be \"A\", but\n \"git rev-parse A^0\" would not be equal as \"git rev-parse C^0\".  The\n behavior of the command has been changed to use \"B\" to describe C\n instead.\n\n This is not the only possible approach for the issue, and it is\n unknown if the proposed solution is the best one.\n\n\n* jn/reftable-doc (2020-02-22) 1 commit\n  (merged to 'next' on 2020-02-25 at e128adbaf6)\n + reftable: file format documentation\n\n Doc update, in preparation for adding the reftable feature.\n\n Let's take and polish this as a part of hn/reftable topic.\n"},{"id":"392831","messageId":"20200303230554.GA11837@syl.local","threadId":"52931","inReplyTo":"xmqqimjl6pvn.fsf@gitster-ct.c.googlers.com","subject":"Re: What's cooking in git.git (Mar 2020, #01; Tue, 3)","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2020-03-03T23:05:54Z","receivedAt":"2020-03-03T23:06:03Z","isPatch":false,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"Hi Junio,\n\nOn Tue, Mar 03, 2020 at 02:21:48PM -0800, Junio C Hamano wrote:\n> * tb/commit-graph-split-merge (2020-02-12) 3 commits\n>  - builtin/commit-graph.c: support '--input=none'\n>  - builtin/commit-graph.c: introduce '--input=<source>'\n>  - builtin/commit-graph.c: support '--split[=<strategy>]'\n>\n>  The code to write out the commit-graph has been taught a few\n>  options to control if the resulting graph chains should be merged\n>  or a single new incremental graph is created.\n>\n>  Waiting for the discussion to settle.\n>  cf. <20200212205028.GE4364@syl.local>\n\nI think that this may be as settled as this discussion is going to\nreasonably get. I noticed that this has been on the \"What's Cooking\" as\nwaiting for the discussion to cool down, but there haven't been any new\nmessages.\n\nI think that the options are probably unlikely to change in the future,\nand unless there are some serious reservations that nobody has raised,\nthat we should go forward with the patches as they are.\n\nWhat's in 'v3' of that series [1] is ready to merge, in my opinion.\n\n\nThanks,\nTaylor\n\n[1]: https://lore.kernel.org/git/cover.1581486293.git.me@ttaylorr.com/#t\n"},{"id":"392832","messageId":"xmqq1rq96nih.fsf@gitster-ct.c.googlers.com","threadId":"52931","inReplyTo":"20200303230554.GA11837@syl.local","subject":"Re: What's cooking in git.git (Mar 2020, #01; Tue, 3)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-03-03T23:12:54Z","receivedAt":"2020-03-03T23:13:00Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Taylor Blau <me@ttaylorr.com> writes:\n\n> What's in 'v3' of that series [1] is ready to merge, in my opinion.\n\nAlright.  Let's do so.\n\n> [1]: https://lore.kernel.org/git/cover.1581486293.git.me@ttaylorr.com/#t\n\nThanks.\n"},{"id":"392833","messageId":"xmqqtv3558mt.fsf@gitster-ct.c.googlers.com","threadId":"52931","inReplyTo":"xmqq1rq96nih.fsf@gitster-ct.c.googlers.com","subject":"Re: What's cooking in git.git (Mar 2020, #01; Tue, 3)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-03-03T23:19:38Z","receivedAt":"2020-03-03T23:19:44Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> Taylor Blau <me@ttaylorr.com> writes:\n>\n>> What's in 'v3' of that series [1] is ready to merge, in my opinion.\n>\n> Alright.  Let's do so.\n>\n>> [1]: https://lore.kernel.org/git/cover.1581486293.git.me@ttaylorr.com/#t\n>\n> Thanks.\n\nHmph, actually...\n\n> It was intended as the former, but I share both of your feelings that it\n> could be read either way. I amended the commit message to clarify by\n> adding:\n>\n>   (and haven't since been deleted from the object store)\n>\n> as a parenthetical after \"already in the graph...\".\n\n... don't we want to get that \"amended\" one, at least?  I do not\nrecall if there were other things you said you'd tweak or not during\nthe review of that v3, though.\n\n"},{"id":"392835","messageId":"20200303232826.GA17992@syl.local","threadId":"52931","inReplyTo":"xmqqtv3558mt.fsf@gitster-ct.c.googlers.com","subject":"Re: What's cooking in git.git (Mar 2020, #01; Tue, 3)","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2020-03-03T23:28:26Z","receivedAt":"2020-03-03T23:28:29Z","isPatch":false,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Tue, Mar 03, 2020 at 03:19:38PM -0800, Junio C Hamano wrote:\n> Junio C Hamano <gitster@pobox.com> writes:\n>\n> > Taylor Blau <me@ttaylorr.com> writes:\n> >\n> >> What's in 'v3' of that series [1] is ready to merge, in my opinion.\n> >\n> > Alright.  Let's do so.\n> >\n> >> [1]: https://lore.kernel.org/git/cover.1581486293.git.me@ttaylorr.com/#t\n> >\n> > Thanks.\n>\n> Hmph, actually...\n>\n> > It was intended as the former, but I share both of your feelings that it\n> > could be read either way. I amended the commit message to clarify by\n> > adding:\n> >\n> >   (and haven't since been deleted from the object store)\n> >\n> > as a parenthetical after \"already in the graph...\".\n>\n> ... don't we want to get that \"amended\" one, at least?  I do not\n> recall if there were other things you said you'd tweak or not during\n> the review of that v3, though.\n\nI couldn't quite find where this amended version went, so I recreated it\nand sent it as\n7c47f37122ff2b03f0bccc48cb6ca022904f6353.1583278022.git.me@ttaylorr.com.\n\nThanks.\n\nThanks,\nTaylor\n"},{"id":"392838","messageId":"CACg5j262bzzwifXXC3tGu-bbNtojKQe-j1=byaAbrSNo=WtWgg@mail.gmail.com","threadId":"52931","inReplyTo":"xmqqimjl6pvn.fsf@gitster-ct.c.googlers.com","subject":"Re: What's cooking in git.git (Mar 2020, #01; Tue, 3)","fromName":"Heba Waly","fromEmail":"heba.waly@gmail.com","sentAt":"2020-03-04T03:31:33Z","receivedAt":"2020-03-04T03:31:49Z","isPatch":false,"sender":{"key":"heba.waly@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1539076?v=4"},"body":"> * hw/advise-ng (2020-03-02) 5 commits\n>  - tag: use new advice API to check visibility\n>  - SQUASH???\n\nA local change that needs to be squashed?\n\n>  - advice: revamp advise API\n>  - advice: change \"setupStreamFailure\" to \"setUpstreamFailure\"\n>  - advice: extract vadvise() from advise()\n\nHeba\n"},{"id":"392858","messageId":"20200304153002.233661-1-jonathantanmy@google.com","threadId":"52931","inReplyTo":"CACg5j262bzzwifXXC3tGu-bbNtojKQe-j1=byaAbrSNo=WtWgg@mail.gmail.com","subject":"Re: What's cooking in git.git (Mar 2020, #01; Tue, 3)","fromName":"Jonathan Tan","fromEmail":"jonathantanmy@google.com","sentAt":"2020-03-04T15:30:02Z","receivedAt":"2020-03-04T15:30:13Z","isPatch":false,"sender":{"key":"jonathantanmy@fastmail.com","avatar":null},"body":"> > * hw/advise-ng (2020-03-02) 5 commits\n> >  - tag: use new advice API to check visibility\n> >  - SQUASH???\n> \n> A local change that needs to be squashed?\n> \n> >  - advice: revamp advise API\n> >  - advice: change \"setupStreamFailure\" to \"setUpstreamFailure\"\n> >  - advice: extract vadvise() from advise()\n\nThis just means that Junio has a change that he plans to squash. You can see it\nin his repo of Git with all the topic branches. One mirror of his repo is here:\n\n    https://github.com/gitster/git/commits/hw/advise-ng\n"},{"id":"392860","messageId":"xmqqpnds5c1v.fsf@gitster-ct.c.googlers.com","threadId":"52931","inReplyTo":"CACg5j262bzzwifXXC3tGu-bbNtojKQe-j1=byaAbrSNo=WtWgg@mail.gmail.com","subject":"Re: What's cooking in git.git (Mar 2020, #01; Tue, 3)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-03-04T16:18:04Z","receivedAt":"2020-03-04T16:18:14Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Heba Waly <heba.waly@gmail.com> writes:\n\n>> * hw/advise-ng (2020-03-02) 5 commits\n>>  - tag: use new advice API to check visibility\n>>  - SQUASH???\n>\n> A local change that needs to be squashed?\n\nI often leave these changes that are based on what I suggested in my\nreview (or what somebody else suggested and I found sensible) as a\nseparate \"SQUASH???\" patch while queuing, when I can foresee myself\nchanging minds later (on the other hand, trivial typofixes etc. are\noften squashed directly into the patches as I queue), so that these\ncan be removed easily.\n\nAs such, if the original author agrees with the suggestion, it is OK\nto include it in the next round (when the suggested change is small\nenough, don't bother with \"Helped-by\").  It is OK to drop it from\nthe next round when the original author does not agree with the\nsuggestion, too, but it would be good to say why somewhere in the\ndiscussion.\n\nThanks.\n\n>>  - advice: revamp advise API\n>>  - advice: change \"setupStreamFailure\" to \"setUpstreamFailure\"\n>>  - advice: extract vadvise() from advise()\n>\n> Heba\n"},{"id":"392872","messageId":"nycvar.QRO.7.76.6.2003042139530.46@tvgsbejvaqbjf.bet","threadId":"52931","inReplyTo":"xmqqimjl6pvn.fsf@gitster-ct.c.googlers.com","subject":"hv/receive-denycurrent-everywhere, was Re: What's cooking in git.git (Mar 2020, #01; Tue, 3)","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2020-03-04T20:40:54Z","receivedAt":"2020-03-04T20:41:08Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Junio,\n\nOn Tue, 3 Mar 2020, Junio C Hamano wrote:\n\n> * hv/receive-denycurrent-everywhere (2020-02-24) 3 commits\n>   (merged to 'next' on 2020-02-25 at 84e35c4980)\n>  + receive.denyCurrentBranch: respect all worktrees\n>  + t5509: use a bare repository for test push target\n>  + get_main_worktree(): allow it to be called in the Git directory\n>\n>  \"git push\" should stop from updating a branch that is checked out\n>  when receive.denyCurrentBranch configuration is set, but it failed\n>  to pay attention to checkouts in secondary worktrees.  This has\n>  been corrected.\n>\n>  Will merge to 'master'.\n>\n\nCould we make sure that\nhttps://lore.kernel.org/git/pull.570.git.1583305200143.gitgitgadget@gmail.com\nis also integrated into this before it advances? It only adds a regression\ntest case (which according to the PR build passes just fine).\n\nThanks,\nDscho\n"},{"id":"392874","messageId":"xmqqr1y74xph.fsf@gitster-ct.c.googlers.com","threadId":"52931","inReplyTo":"nycvar.QRO.7.76.6.2003042139530.46@tvgsbejvaqbjf.bet","subject":"Re: hv/receive-denycurrent-everywhere, was Re: What's cooking in git.git (Mar 2020, #01; Tue, 3)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-03-04T21:27:54Z","receivedAt":"2020-03-04T21:28:00Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n> Could we make sure that\n> https://lore.kernel.org/git/pull.570.git.1583305200143.gitgitgadget@gmail.com\n> is also integrated into this before it advances? It only adds a regression\n> test case (which according to the PR build passes just fine).\n\nYup, Eric also reminded me of the same earlier.  Queued.\n\nThanks (duplicated reminders are a lot more appreciated than no\nreminders at all ;-).\n"},{"id":"392880","messageId":"CACg5j26uLyyHRx0ouVhUbJ8P20uJgvN4WCqunP5OoXhGyxuadA@mail.gmail.com","threadId":"52931","inReplyTo":"xmqqpnds5c1v.fsf@gitster-ct.c.googlers.com","subject":"Re: What's cooking in git.git (Mar 2020, #01; Tue, 3)","fromName":"Heba Waly","fromEmail":"heba.waly@gmail.com","sentAt":"2020-03-05T15:17:36Z","receivedAt":"2020-03-05T15:17:52Z","isPatch":false,"sender":{"key":"heba.waly@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1539076?v=4"},"body":"On Thu, Mar 5, 2020 at 5:18 AM Junio C Hamano <gitster@pobox.com> wrote:\n>\n> Heba Waly <heba.waly@gmail.com> writes:\n>\n> >> * hw/advise-ng (2020-03-02) 5 commits\n> >>  - tag: use new advice API to check visibility\n> >>  - SQUASH???\n> >\n> > A local change that needs to be squashed?\n>\n> I often leave these changes that are based on what I suggested in my\n> review (or what somebody else suggested and I found sensible) as a\n> separate \"SQUASH???\" patch while queuing, when I can foresee myself\n> changing minds later (on the other hand, trivial typofixes etc. are\n> often squashed directly into the patches as I queue), so that these\n> can be removed easily.\n>\n> As such, if the original author agrees with the suggestion, it is OK\n> to include it in the next round (when the suggested change is small\n> enough, don't bother with \"Helped-by\").  It is OK to drop it from\n> the next round when the original author does not agree with the\n> suggestion, too, but it would be good to say why somewhere in the\n> discussion.\n>\n\nGot it, thanks Junio and Jonathan for your replies.\n\nHeba\n"},{"id":"392909","messageId":"xmqqzhct2y91.fsf_-_@gitster-ct.c.googlers.com","threadId":"52931","inReplyTo":"CACg5j26uLyyHRx0ouVhUbJ8P20uJgvN4WCqunP5OoXhGyxuadA@mail.gmail.com","subject":"[PATCH] update how-to-maintain-git","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-03-06T17:23:38Z","receivedAt":"2020-03-06T17:23:46Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Some parts of the workflow described in the document has got a bit\nstale with the recent toolchain improvements.  Update the procedure\na bit, and also describe the convention used around SQUASH??? fixups.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n\n * Periodical maintenance of the document to improve the bus factor ;-)\n\n Documentation/howto/maintain-git.txt | 53 +++++++++++++++++++++++++++---------\n 1 file changed, 40 insertions(+), 13 deletions(-)\n\ndiff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt\nindex ca4378740c..02584c2a4b 100644\n--- a/Documentation/howto/maintain-git.txt\n+++ b/Documentation/howto/maintain-git.txt\n@@ -154,15 +154,17 @@ by doing the following:\n    - Anything unobvious that is applicable to 'master' (in other\n      words, does not depend on anything that is still in 'next'\n      and not in 'master') is applied to a new topic branch that\n-     is forked from the tip of 'master'.  This includes both\n+     is forked from the tip of 'master' (or the last feature release,\n+     which is a bit older than 'master').  This includes both\n      enhancements and unobvious fixes to 'master'.  A topic\n      branch is named as ai/topic where \"ai\" is two-letter string\n      named after author's initial and \"topic\" is a descriptive name\n      of the topic (in other words, \"what's the series is about\").\n \n    - An unobvious fix meant for 'maint' is applied to a new\n-     topic branch that is forked from the tip of 'maint'.  The\n-     topic is named as ai/maint-topic.\n+     topic branch that is forked from the tip of 'maint' (or the\n+     oldest and still relevant maintenance branch).  The\n+     topic may named as ai/maint-topic.\n \n    - Changes that pertain to an existing topic are applied to\n      the branch, but:\n@@ -174,24 +176,40 @@ by doing the following:\n    - Replacement patches to an existing topic are accepted only\n      for commits not in 'next'.\n \n-   The above except the \"replacement\" are all done with:\n+   The initial round is done with:\n \n      $ git checkout ai/topic ;# or \"git checkout -b ai/topic master\"\n      $ git am -sc3 mailbox\n \n-   while patch replacement is often done by:\n+   and replacing an existing topic with subsequent round is done with:\n \n-     $ git format-patch ai/topic~$n..ai/topic ;# export existing\n+     $ git checkout master...ai/topic ;# try to reapply to the same base\n+     $ git am -sc3 mailbox\n+\n+   to prepare the new round on a detached HEAD, and then\n+\n+     $ git range-diff @{-1}...\n+     $ git diff @{-1}\n+\n+   to double check what changed since the last round, and finally\n \n-   then replace some parts with the new patch, and reapplying:\n+     $ git checkout -B @{-1}\n \n-     $ git checkout ai/topic\n-     $ git reset --hard ai/topic~$n\n-     $ git am -sc3 -s 000*.txt\n+   to conclude (the last step is why a topic already in 'next' is\n+   not replaced but updated incrementally).\n+\n+   Whether it is the initial round or a subsequent round, the topic\n+   may not build even in isolation, or may break the build when\n+   merged to integration branches due to bugs.  There may already be\n+   an obvious and trivial improvements suggested on the list.  The\n+   maintainer often adds an extra commit, with \"SQUASH???\" in its\n+   title, to fix things up, before publishing the integration\n+   branches to make it usable by other developers for testing.\n+   These changes are what the maintainer is not 100% committed to\n+   (trivial typofixes etc. are often squashed directly into the\n+   patches that needs fixing, without being applied as a separate\n+   \"SQUASH???\" commit), so that they can be removed easily as needed.\n \n-   The full test suite is always run for 'maint' and 'master'\n-   after patch application; for topic branches the tests are run\n-   as time permits.\n \n  - Merge maint to master as needed:\n \n@@ -371,6 +389,15 @@ Some observations to be made.\n    be included in the next feature release.  Being in the\n    'master' branch typically is.\n \n+ * Due to the nature of \"SQUASH???\" fix-ups, if the original author\n+   agrees with the suggested changes, it is OK to squash them to\n+   appropriate patches in the next round (when the suggested change\n+   is small enough, the author should not even bother with\n+   \"Helped-by\").  It is also OK to drop them from the next round\n+   when the original author does not agree with the suggestion, but\n+   the author is expected to say why somewhere in the discussion.\n+\n+\n \n Appendix\n --------\n\n"},{"id":"392924","messageId":"CAPig+cStRc2hTmRBEfyaqhyx=M5nQ84rPzOEMVVLabQ2PS_Qzw@mail.gmail.com","threadId":"52931","inReplyTo":"xmqqzhct2y91.fsf_-_@gitster-ct.c.googlers.com","subject":"Re: [PATCH] update how-to-maintain-git","fromName":"Eric Sunshine","fromEmail":"sunshine@sunshineco.com","sentAt":"2020-03-06T19:06:47Z","receivedAt":"2020-03-06T19:07:04Z","isPatch":true,"sender":{"key":"sunshine@sunshineco.com","avatar":"https://avatars.githubusercontent.com/u/163641?v=4"},"body":"On Fri, Mar 6, 2020 at 12:24 PM Junio C Hamano <gitster@pobox.com> wrote:\n> +   Whether it is the initial round or a subsequent round, the topic\n> +   may not build even in isolation, or may break the build when\n> +   merged to integration branches due to bugs.  There may already be\n> +   an obvious and trivial improvements suggested on the list.  The\n\ns/an//\n\n> +   maintainer often adds an extra commit, with \"SQUASH???\" in its\n> +   title, to fix things up, before publishing the integration\n> +   branches to make it usable by other developers for testing.\n> +   These changes are what the maintainer is not 100% committed to\n> +   (trivial typofixes etc. are often squashed directly into the\n> +   patches that needs fixing, without being applied as a separate\n\ns/needs/need/\n\n> +   \"SQUASH???\" commit), so that they can be removed easily as needed.\n"},{"id":"392925","messageId":"xmqqeeu52mw9.fsf@gitster-ct.c.googlers.com","threadId":"52931","inReplyTo":"CAPig+cStRc2hTmRBEfyaqhyx=M5nQ84rPzOEMVVLabQ2PS_Qzw@mail.gmail.com","subject":"Re: [PATCH] update how-to-maintain-git","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-03-06T21:28:54Z","receivedAt":"2020-03-06T21:29:01Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Eric Sunshine <sunshine@sunshineco.com> writes:\n\n> On Fri, Mar 6, 2020 at 12:24 PM Junio C Hamano <gitster@pobox.com> wrote:\n>> +   Whether it is the initial round or a subsequent round, the topic\n>> +   may not build even in isolation, or may break the build when\n>> +   merged to integration branches due to bugs.  There may already be\n>> +   an obvious and trivial improvements suggested on the list.  The\n>\n> s/an//\n>\n>> +   maintainer often adds an extra commit, with \"SQUASH???\" in its\n>> +   title, to fix things up, before publishing the integration\n>> +   branches to make it usable by other developers for testing.\n>> +   These changes are what the maintainer is not 100% committed to\n>> +   (trivial typofixes etc. are often squashed directly into the\n>> +   patches that needs fixing, without being applied as a separate\n>\n> s/needs/need/\n>\n>> +   \"SQUASH???\" commit), so that they can be removed easily as needed.\n\nThanks.\n"},{"id":"392935","messageId":"CAN0heSoa3K87P=mnNPtvjVGza4SPZxK2UzWaXdL9xr-nQpJJjg@mail.gmail.com","threadId":"52931","inReplyTo":"xmqqzhct2y91.fsf_-_@gitster-ct.c.googlers.com","subject":"Re: [PATCH] update how-to-maintain-git","fromName":"Martin Ågren","fromEmail":"martin.agren@gmail.com","sentAt":"2020-03-07T12:16:46Z","receivedAt":"2020-03-07T12:17:01Z","isPatch":true,"sender":{"key":"martin.agren@gmail.com","avatar":null},"body":"On Fri, 6 Mar 2020 at 18:26, Junio C Hamano <gitster@pobox.com> wrote:\n>     - An unobvious fix meant for 'maint' is applied to a new\n> -     topic branch that is forked from the tip of 'maint'.  The\n> -     topic is named as ai/maint-topic.\n> +     topic branch that is forked from the tip of 'maint' (or the\n> +     oldest and still relevant maintenance branch).  The\n> +     topic may named as ai/maint-topic.\n\ns/may/may be/, for example.\n\nInteresting read, thanks for updating!\n\nMartin\n"}]}