{"thread":{"id":"61920","subject":"[BUG REPORT] sparseIndexExpanded hint always shows on sparse worktree move","startedAt":"2024-08-08T02:07:32Z","lastAt":"2024-09-10T19:33:38Z","messageCount":3,"participants":["Brian Lyles","Derrick Stolee"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"500381","messageId":"17e99eb90d57089d.70b1dd9aae081c6e.203dcd72f6563036@zivdesk","threadId":"61920","inReplyTo":null,"subject":"[BUG REPORT] sparseIndexExpanded hint always shows on sparse worktree move","fromName":"Brian Lyles","fromEmail":"brianmlyles@gmail.com","sentAt":"2024-08-08T02:07:30Z","receivedAt":"2024-08-08T02:07:32Z","isPatch":false,"sender":{"key":"brianmlyles@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1123282?v=4"},"body":"After updating to v2.46.0, the \"sparse index is expanding to a full\nindex\" hint added in 9479a31d60 (advice: warn when sparse index expands,\n2024-07-08) seems to show any time a worktree using a sparse index is\nmoved. This is easily reproduced with the following script:\n\n    git init --initial-branch=main main-worktree\n    mkdir main-worktree/A main-worktree/B\n    touch main-worktree/A/a.txt main-worktree/B/b.txt\n    git -C main-worktree add .\n    git -C main-worktree commit -m \"initial commit\"\n    git -C main-worktree worktree add --no-checkout ../other-worktree -b other main\n    git -C other-worktree sparse-checkout set A --sparse-index\n    git -C other-worktree checkout\n    git -C main-worktree worktree move ../other-worktree ../other-worktree-moved\n\nIt does not appear that the index is ever actually touched. Testing in a\nreal repository shows that the index size does not change, nor does its\nlast modified timestamp.\n\nI've reproduced this on Windows, MacOS, and Gentoo Linux.\n\n-- \nThank you,\nBrian Lyles\n"},{"id":"501009","messageId":"3ace452b-f68f-46b9-b8a9-a175299deef7@gmail.com","threadId":"61920","inReplyTo":"17e99eb90d57089d.70b1dd9aae081c6e.203dcd72f6563036@zivdesk","subject":"Re: [BUG REPORT] sparseIndexExpanded hint always shows on sparse worktree move","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2024-08-15T14:25:19Z","receivedAt":"2024-08-15T14:25:21Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 8/7/24 10:07 PM, Brian Lyles wrote:\n> After updating to v2.46.0, the \"sparse index is expanding to a full\n> index\" hint added in 9479a31d60 (advice: warn when sparse index expands,\n> 2024-07-08) seems to show any time a worktree using a sparse index is\n> moved.\n\nYes, this is a new warning. tl;dr: the warning is working correctly,\nbut maybe 'git worktree move' could be improved to avoid this behavior.\n\n> This is easily reproduced with the following script:\n\nThank you for the easy reproducer, which does repro for me.\n\n> \n>      git init --initial-branch=main main-worktree\n>      mkdir main-worktree/A main-worktree/B\n>      touch main-worktree/A/a.txt main-worktree/B/b.txt\n>      git -C main-worktree add .\n>      git -C main-worktree commit -m \"initial commit\"\n>      git -C main-worktree worktree add --no-checkout ../other-worktree -b other main\n>      git -C other-worktree sparse-checkout set A --sparse-index\n>      git -C other-worktree checkout\n>      git -C main-worktree worktree move ../other-worktree ../other-worktree-moved\n> \n> It does not appear that the index is ever actually touched. Testing in a\n> real repository shows that the index size does not change, nor does its\n> last modified timestamp.\n\nThe important thing to know is that the index is being expanded in memory,\nnot on-disk. That's why you don't see the file change.\n\nThe key issue with this reproducer is the following: the sparse index\nconfig is set in the worktree config. When you are running this move\ncommand from the main-worktree, it is not configured to work with a\nsparse index. Thus, when reading the index, Git thinks the sparse\nindex is disabled and must inflate the index into a full one before\ncontinuing.\n\nFor full information, this happens in the callstack\n\n   move_worktree()\n   validate_no_submodules()\n   read_index_from()\n   do_read_index()\n   ensure_correct_sparsity()\n   ensure_full_index()\n\nIf you add \"git -C main-worktree sparse-checkout set A --sparse-index\"\nbefore you create the other-worktree (or move it) then the message\ndoes not appear.\n\nThis is a quirk of the worktree config that may be worth updating to\nrespect the sparse index of the target worktree, but may also be worth\nleaving as-is because we are running this from a different worktree.\n\nThanks,\n-Stolee\n\n\n10:12:52.162660 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:12:52.163373 common-main.c:58             | d0 | main                     | start        |     |  0.002568 |           |              | git init --initial-branch=main main-worktree\n10:12:52.163661 git.c:545                    | d0 | main                     | cmd_name     |     |           |           |              | init (init)\n10:12:52.163861 repository.c:201             | d0 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/main-worktree\n10:12:52.167964 usage.c:90                   | d0 | main                     | error        |     |           |           |              | re-init: ignored --initial-branch=main\n10:12:52.168151 git.c:808                    | d0 | main                     | exit         |     |  0.007393 |           |              | code:0\n10:12:52.168165 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.007406 |           |              | code:0\n10:12:52.178257 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:12:52.178734 common-main.c:58             | d0 | main                     | start        |     |  0.001519 |           |              | git -C main-worktree add .\n10:12:52.179132 repository.c:201             | d0 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/main-worktree\n10:12:52.179424 git.c:545                    | d0 | main                     | cmd_name     |     |           |           |              | add (add)\n10:12:52.179659 read-cache.c:2416            | d0 | main                     | region_enter | r1  |  0.002447 |           | index        | label:do_read_index .git/index\n10:12:52.179972 read-cache.c:1765            | d0 | main                     | region_enter |     |  0.002760 |           | index        | ..label:read/extension/cache_tree\n10:12:52.180014 cache-tree.c:671             | d0 | main                     | region_enter | r1  |  0.002786 |           | cache_tree   | ....label:read\n10:12:52.180024 cache-tree.c:673             | d0 | main                     | region_leave | r1  |  0.002813 |  0.000027 | cache_tree   | ....label:read\n10:12:52.180032 read-cache.c:1767            | d0 | main                     | data         |     |  0.002821 |  0.000061 | index        | ....read/extension/cache_tree/bytes:77\n10:12:52.180040 read-cache.c:1768            | d0 | main                     | region_leave |     |  0.002829 |  0.000069 | index        | ..label:read/extension/cache_tree\n10:12:52.180055 read-cache.c:2365            | d0 | main                     | data         | r1  |  0.002843 |  0.000396 | index        | ..read/version:2\n10:12:52.180062 read-cache.c:2367            | d0 | main                     | data         | r1  |  0.002851 |  0.000404 | index        | ..read/cache_nr:2\n10:12:52.180070 read-cache.c:2421            | d0 | main                     | region_leave | r1  |  0.002859 |  0.000412 | index        | label:do_read_index .git/index\n10:12:52.180356 dir.c:3172                   | d0 | main                     | region_enter | r1  |  0.003144 |           | dir          | label:read_directory\n10:12:52.180956 name-hash.c:591              | d0 | main                     | region_enter | r1  |  0.003729 |           | index        | ..label:name-hash-init\n10:12:52.180976 name-hash.c:612              | d0 | main                     | region_leave | r1  |  0.003765 |  0.000036 | index        | ..label:name-hash-init\n10:12:52.181086 dir.c:3140                   | d0 | main                     | data         | r1  |  0.003875 |  0.000731 | read_directo | ..path:\n10:12:52.181097 dir.c:3149                   | d0 | main                     | data         | r1  |  0.003886 |  0.000742 | read_directo | ..directories-visited:3\n10:12:52.181125 dir.c:3151                   | d0 | main                     | data         | r1  |  0.003914 |  0.000770 | read_directo | ..paths-visited:5\n10:12:52.181132 dir.c:3195                   | d0 | main                     | region_leave | r1  |  0.003921 |  0.000777 | dir          | label:read_directory\n10:12:52.181872 read-cache.c:3182            | d0 | main                     | region_enter | r1  |  0.004660 |           | index        | label:do_write_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/index.lock\n10:12:52.181887 read-cache.c:3052            | d0 | main                     | region_enter |     |  0.004676 |           | index        | ..label:write/extension/cache_tree\n10:12:52.181894 cache-tree.c:574             | d0 | main                     | region_enter | r1  |  0.004682 |           | cache_tree   | ....label:write\n10:12:52.181901 cache-tree.c:576             | d0 | main                     | region_leave | r1  |  0.004690 |  0.000008 | cache_tree   | ....label:write\n10:12:52.181907 read-cache.c:3056            | d0 | main                     | data         |     |  0.004696 |  0.000020 | index        | ....write/extension/cache_tree/bytes:20\n10:12:52.181913 read-cache.c:3057            | d0 | main                     | region_leave |     |  0.004702 |  0.000026 | index        | ..label:write/extension/cache_tree\n10:12:52.181998 read-cache.c:3142            | d0 | main                     | data         | r1  |  0.004786 |  0.000126 | index        | ..write/version:2\n10:12:52.182005 read-cache.c:3144            | d0 | main                     | data         | r1  |  0.004794 |  0.000134 | index        | ..write/cache_nr:2\n10:12:52.182012 read-cache.c:3185            | d0 | main                     | region_leave | r1  |  0.004800 |  0.000140 | index        | label:do_write_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/index.lock\n10:12:52.182186 git.c:808                    | d0 | main                     | exit         |     |  0.004975 |           |              | code:0\n10:12:52.182200 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.004988 |           |              | code:0\n10:12:52.186699 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:12:52.187028 common-main.c:58             | d0 | main                     | start        |     |  0.001077 |           |              | git -C main-worktree commit -m 'initial commit'\n10:12:52.187190 repository.c:201             | d0 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/main-worktree\n10:12:52.187422 git.c:545                    | d0 | main                     | cmd_name     |     |           |           |              | commit (commit)\n10:12:52.188412 read-cache.c:2416            | d0 | main                     | region_enter | r1  |  0.002464 |           | index        | label:do_read_index .git/index\n10:12:52.188465 read-cache.c:1765            | d0 | main                     | region_enter |     |  0.002517 |           | index        | ..label:read/extension/cache_tree\n10:12:52.188480 cache-tree.c:671             | d0 | main                     | region_enter | r1  |  0.002532 |           | cache_tree   | ....label:read\n10:12:52.188489 cache-tree.c:673             | d0 | main                     | region_leave | r1  |  0.002542 |  0.000010 | cache_tree   | ....label:read\n10:12:52.188497 read-cache.c:1767            | d0 | main                     | data         |     |  0.002550 |  0.000033 | index        | ....read/extension/cache_tree/bytes:20\n10:12:52.188505 read-cache.c:1768            | d0 | main                     | region_leave |     |  0.002558 |  0.000041 | index        | ..label:read/extension/cache_tree\n10:12:52.188514 read-cache.c:2365            | d0 | main                     | data         | r1  |  0.002567 |  0.000103 | index        | ..read/version:2\n10:12:52.188522 read-cache.c:2367            | d0 | main                     | data         | r1  |  0.002574 |  0.000110 | index        | ..read/cache_nr:2\n10:12:52.188536 read-cache.c:2421            | d0 | main                     | region_leave | r1  |  0.002588 |  0.000124 | index        | label:do_read_index .git/index\n10:12:52.188628 read-cache.c:1552            | d0 | main                     | region_enter |     |  0.002680 |           | index        | label:refresh\n10:12:52.188695 read-cache.c:1634            | d0 | main                     | data         |     |  0.002748 |  0.000068 | index        | ..refresh/sum_lstat:2\n10:12:52.188702 read-cache.c:1635            | d0 | main                     | data         |     |  0.002755 |  0.000075 | index        | ..refresh/sum_scan:0\n10:12:52.188708 read-cache.c:1636            | d0 | main                     | region_leave |     |  0.002761 |  0.000081 | index        | label:refresh\n10:12:52.188715 cache-tree.c:258             | d0 | main                     | region_enter |     |  0.002767 |           | cache_tree   | label:fully_valid\n10:12:52.188720 cache-tree.c:260             | d0 | main                     | region_leave |     |  0.002773 |  0.000006 | cache_tree   | label:fully_valid\n10:12:52.188727 cache-tree.c:519             | d0 | main                     | region_enter | r1  |  0.002779 |           | cache_tree   | label:update\n10:12:52.188866 cache-tree.c:524             | d0 | main                     | region_leave | r1  |  0.002918 |  0.000139 | cache_tree   | label:update\n10:12:52.188874 read-cache.c:3182            | d0 | main                     | region_enter | r1  |  0.002926 |           | index        | label:do_write_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/index.lock\n10:12:52.188890 read-cache.c:3052            | d0 | main                     | region_enter |     |  0.002943 |           | index        | ..label:write/extension/cache_tree\n10:12:52.188896 cache-tree.c:574             | d0 | main                     | region_enter | r1  |  0.002948 |           | cache_tree   | ....label:write\n10:12:52.188902 cache-tree.c:576             | d0 | main                     | region_leave | r1  |  0.002954 |  0.000006 | cache_tree   | ....label:write\n10:12:52.188907 read-cache.c:3056            | d0 | main                     | data         |     |  0.002960 |  0.000017 | index        | ....write/extension/cache_tree/bytes:77\n10:12:52.188913 read-cache.c:3057            | d0 | main                     | region_leave |     |  0.002965 |  0.000022 | index        | ..label:write/extension/cache_tree\n10:12:52.188976 read-cache.c:3142            | d0 | main                     | data         | r1  |  0.003029 |  0.000103 | index        | ..write/version:2\n10:12:52.188983 read-cache.c:3144            | d0 | main                     | data         | r1  |  0.003036 |  0.000110 | index        | ..write/cache_nr:2\n10:12:52.188989 read-cache.c:3185            | d0 | main                     | region_leave | r1  |  0.003041 |  0.000115 | index        | label:do_write_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/index.lock\n10:12:52.189361 unpack-trees.c:1927          | d0 | main                     | region_enter |     |  0.003414 |           | unpack_trees | label:unpack_trees\n10:12:52.189369 unpack-trees.c:1931          | d0 | main                     | region_enter | r1  |  0.003422 |           | unpack_trees | ..label:unpack_trees\n10:12:52.189417 unpack-trees.c:2038          | d0 | main                     | region_enter | r1  |  0.003469 |           | unpack_trees | ....label:traverse_trees\n10:12:52.189439 unpack-trees.c:2040          | d0 | main                     | region_leave | r1  |  0.003492 |  0.000023 | unpack_trees | ....label:traverse_trees\n10:12:52.189445 unpack-trees.c:437           | d0 | main                     | region_enter |     |  0.003498 |           | unpack_trees | ....label:check_updates\n10:12:52.189450 unpack-trees.c:526           | d0 | main                     | region_leave |     |  0.003503 |  0.000005 | unpack_trees | ....label:check_updates\n10:12:52.189465 unpack-trees.c:2132          | d0 | main                     | region_leave | r1  |  0.003517 |  0.000095 | unpack_trees | ..label:unpack_trees\n10:12:52.189470 unpack-trees.c:2135          | d0 | main                     | data         |     |  0.003523 |  0.000109 | unpack_trees | ..unpack_trees/nr_unpack_entries:0\n10:12:52.189476 unpack-trees.c:2136          | d0 | main                     | region_leave |     |  0.003528 |  0.000114 | unpack_trees | label:unpack_trees\n10:12:52.189498 diffcore-rename.c:1408       | d0 | main                     | region_enter | r1  |  0.003551 |           | diff         | label:setup\n10:12:52.189504 diffcore-rename.c:1461       | d0 | main                     | region_leave | r1  |  0.003556 |  0.000005 | diff         | label:setup\n10:12:52.189509 diffcore-rename.c:1640       | d0 | main                     | region_enter | r1  |  0.003561 |           | diff         | label:write back to queue\n10:12:52.189514 diffcore-rename.c:1717       | d0 | main                     | region_leave | r1  |  0.003567 |  0.000006 | diff         | label:write back to queue\n10:12:52.189596 wt-status.c:838              | d0 | main                     | region_enter | r1  |  0.003649 |           | status       | label:worktrees\n10:12:52.189607 diffcore-rename.c:1408       | d0 | main                     | region_enter | r1  |  0.003660 |           | diff         | ..label:setup\n10:12:52.189613 diffcore-rename.c:1461       | d0 | main                     | region_leave | r1  |  0.003665 |  0.000005 | diff         | ..label:setup\n10:12:52.189618 diffcore-rename.c:1640       | d0 | main                     | region_enter | r1  |  0.003670 |           | diff         | ..label:write back to queue\n10:12:52.189623 diffcore-rename.c:1717       | d0 | main                     | region_leave | r1  |  0.003675 |  0.000005 | diff         | ..label:write back to queue\n10:12:52.189628 wt-status.c:840              | d0 | main                     | region_leave | r1  |  0.003681 |  0.000032 | status       | label:worktrees\n10:12:52.189633 wt-status.c:847              | d0 | main                     | region_enter | r1  |  0.003686 |           | status       | label:index\n10:12:52.189676 unpack-trees.c:1927          | d0 | main                     | region_enter |     |  0.003729 |           | unpack_trees | ..label:unpack_trees\n10:12:52.189683 unpack-trees.c:1931          | d0 | main                     | region_enter | r1  |  0.003735 |           | unpack_trees | ....label:unpack_trees\n10:12:52.189709 unpack-trees.c:2038          | d0 | main                     | region_enter | r1  |  0.003762 |           | unpack_trees | ......label:traverse_trees\n10:12:52.189717 unpack-trees.c:2040          | d0 | main                     | region_leave | r1  |  0.003770 |  0.000008 | unpack_trees | ......label:traverse_trees\n10:12:52.189722 unpack-trees.c:437           | d0 | main                     | region_enter |     |  0.003775 |           | unpack_trees | ......label:check_updates\n10:12:52.189728 unpack-trees.c:526           | d0 | main                     | region_leave |     |  0.003780 |  0.000005 | unpack_trees | ......label:check_updates\n10:12:52.189734 unpack-trees.c:2132          | d0 | main                     | region_leave | r1  |  0.003787 |  0.000052 | unpack_trees | ....label:unpack_trees\n10:12:52.189740 unpack-trees.c:2135          | d0 | main                     | data         |     |  0.003792 |  0.000063 | unpack_trees | ....unpack_trees/nr_unpack_entries:0\n10:12:52.189745 unpack-trees.c:2136          | d0 | main                     | region_leave |     |  0.003797 |  0.000068 | unpack_trees | ..label:unpack_trees\n10:12:52.189750 diffcore-rename.c:1408       | d0 | main                     | region_enter | r1  |  0.003803 |           | diff         | ..label:setup\n10:12:52.189755 diffcore-rename.c:1461       | d0 | main                     | region_leave | r1  |  0.003807 |  0.000004 | diff         | ..label:setup\n10:12:52.189759 diffcore-rename.c:1640       | d0 | main                     | region_enter | r1  |  0.003812 |           | diff         | ..label:write back to queue\n10:12:52.189771 diffcore-rename.c:1717       | d0 | main                     | region_leave | r1  |  0.003823 |  0.000011 | diff         | ..label:write back to queue\n10:12:52.189777 wt-status.c:849              | d0 | main                     | region_leave | r1  |  0.003829 |  0.000143 | status       | label:index\n10:12:52.189782 wt-status.c:852              | d0 | main                     | region_enter | r1  |  0.003835 |           | status       | label:untracked\n10:12:52.189805 dir.c:3172                   | d0 | main                     | region_enter | r1  |  0.003857 |           | dir          | ..label:read_directory\n10:12:52.189834 name-hash.c:591              | d0 | main                     | region_enter | r1  |  0.003887 |           | index        | ....label:name-hash-init\n10:12:52.189847 name-hash.c:612              | d0 | main                     | region_leave | r1  |  0.003899 |  0.000012 | index        | ....label:name-hash-init\n10:12:52.189894 dir.c:3140                   | d0 | main                     | data         | r1  |  0.003946 |  0.000089 | read_directo | ....path:\n10:12:52.189900 dir.c:3149                   | d0 | main                     | data         | r1  |  0.003953 |  0.000096 | read_directo | ....directories-visited:3\n10:12:52.189905 dir.c:3151                   | d0 | main                     | data         | r1  |  0.003958 |  0.000101 | read_directo | ....paths-visited:5\n10:12:52.189911 dir.c:3195                   | d0 | main                     | region_leave | r1  |  0.003963 |  0.000106 | dir          | ..label:read_directory\n10:12:52.189918 wt-status.c:854              | d0 | main                     | region_leave | r1  |  0.003971 |  0.000136 | status       | label:untracked\n10:12:52.189959 wt-status.c:2570             | d0 | main                     | data         | r1  |  0.004012 |  0.004012 | status       | count/changed:0\n10:12:52.189966 wt-status.c:2572             | d0 | main                     | data         | r1  |  0.004018 |  0.004018 | status       | count/untracked:0\n10:12:52.189971 wt-status.c:2573             | d0 | main                     | data         | r1  |  0.004024 |  0.004024 | status       | count/ignored:0\n10:12:52.189976 wt-status.c:2605             | d0 | main                     | region_enter | r1  |  0.004029 |           | status       | label:print\n10:12:52.190058 remote.c:2292                | d0 | main                     | region_enter |     |  0.004111 |           | tracking     | ..label:stat_tracking_info\n10:12:52.190076 remote.c:2294                | d0 | main                     | data         |     |  0.004129 |  0.000018 | tracking     | ....stat_tracking_info/ab_flags:1\n10:12:52.190083 remote.c:2295                | d0 | main                     | data         |     |  0.004135 |  0.000024 | tracking     | ....stat_tracking_info/ab_result:-1\n10:12:52.190088 remote.c:2300                | d0 | main                     | region_leave |     |  0.004141 |  0.000030 | tracking     | ..label:stat_tracking_info\n10:12:52.190113 wt-status.c:2629             | d0 | main                     | region_leave | r1  |  0.004166 |  0.000137 | status       | label:print\n10:12:52.190120 git.c:808                    | d0 | main                     | exit         |     |  0.004172 |           |              | code:1\n10:12:52.190128 tree-walk.c:186              | d0 | main                     | data_json    | r1  |  0.004180 |  0.004180 | traverse_tre | statistics:{\"traverse_trees_count\":2,\"traverse_trees_max_depth\":1}\n10:12:52.190139 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.004191 |           |              | code:1\n10:12:52.193928 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:12:52.194196 common-main.c:58             | d0 | main                     | start        |     |  0.000816 |           |              | git -C main-worktree worktree add --no-checkout ../other-worktree -b other main\n10:12:52.194321 repository.c:201             | d0 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/main-worktree\n10:12:52.194514 git.c:545                    | d0 | main                     | cmd_name     |     |           |           |              | worktree (worktree)\n10:12:52.195100 run-command.c:734            | d0 | main                     | child_start  |     |  0.001723 |           |              | [ch0] class:? argv:[git branch other main]\n10:12:52.198291 common-main.c:57             | d1 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:12:52.198571 common-main.c:58             | d1 | main                     | start        |     |  0.000810 |           |              | /usr/local/git/libexec/git-core/git branch other main\n10:12:52.198695 repository.c:201             | d1 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/main-worktree\n10:12:52.198725 git.c:545                    | d1 | main                     | cmd_name     |     |           |           |              | branch (worktree/branch)\n10:12:52.198954 usage.c:64                   | d1 | main                     | error        |     |           |           |              | a branch named 'other' already exists\n10:12:52.198965 usage.c:78                   | d1 | main                     | exit         |     |  0.001209 |           |              | code:128\n10:12:52.198977 trace2/tr2_tgt_perf.c:217    | d1 | main                     | atexit       |     |  0.001221 |           |              | code:128\n10:12:52.199161 run-command.c:990            | d0 | main                     | child_exit   |     |  0.005784 |  0.004061 |              | [ch0] pid:2550 code:128\n10:12:52.199197 git.c:808                    | d0 | main                     | exit         |     |  0.005821 |           |              | code:255\n10:12:52.199210 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.005833 |           |              | code:255\n10:12:52.202335 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:12:52.202585 common-main.c:58             | d0 | main                     | start        |     |  0.000682 |           |              | git -C other-worktree sparse-checkout set A --sparse-index\n10:12:52.202620 usage.c:64                   | d0 | main                     | error        |     |           |           |              | cannot change to 'other-worktree': No such file or directory\n10:12:52.202632 usage.c:78                   | d0 | main                     | exit         |     |  0.000731 |           |              | code:128\n10:12:52.202644 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.000743 |           |              | code:128\n10:12:52.205923 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:12:52.206234 common-main.c:58             | d0 | main                     | start        |     |  0.000841 |           |              | git -C other-worktree checkout\n10:12:52.206264 usage.c:64                   | d0 | main                     | error        |     |           |           |              | cannot change to 'other-worktree': No such file or directory\n10:12:52.206281 usage.c:78                   | d0 | main                     | exit         |     |  0.000891 |           |              | code:128\n10:12:52.206297 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.000906 |           |              | code:128\n10:12:52.209665 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:12:52.209926 common-main.c:58             | d0 | main                     | start        |     |  0.000779 |           |              | git -C main-worktree worktree move ../other-worktree ../other-worktree-moved\n10:12:52.210036 repository.c:201             | d0 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/main-worktree\n10:12:52.210220 git.c:545                    | d0 | main                     | cmd_name     |     |           |           |              | worktree (worktree)\n10:12:52.210854 usage.c:64                   | d0 | main                     | error        |     |           |           |              | '../other-worktree' is not a working tree\n10:12:52.210863 usage.c:78                   | d0 | main                     | exit         |     |  0.001719 |           |              | code:128\n10:12:52.210874 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.001730 |           |              | code:128\n10:13:10.146575 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:13:10.146952 common-main.c:58             | d0 | main                     | start        |     |  0.000931 |           |              | git init --initial-branch=main main-worktree\n10:13:10.147071 git.c:545                    | d0 | main                     | cmd_name     |     |           |           |              | init (init)\n10:13:10.147300 repository.c:201             | d0 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/main-worktree\n10:13:10.154750 git.c:808                    | d0 | main                     | exit         |     |  0.008732 |           |              | code:0\n10:13:10.154767 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.008749 |           |              | code:0\n10:13:10.160937 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:13:10.161281 common-main.c:58             | d0 | main                     | start        |     |  0.000871 |           |              | git -C main-worktree add .\n10:13:10.161465 repository.c:201             | d0 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/main-worktree\n10:13:10.161756 git.c:545                    | d0 | main                     | cmd_name     |     |           |           |              | add (add)\n10:13:10.161870 read-cache.c:2416            | d0 | main                     | region_enter | r1  |  0.001481 |           | index        | label:do_read_index .git/index\n10:13:10.161887 read-cache.c:2421            | d0 | main                     | region_leave | r1  |  0.001498 |  0.000017 | index        | label:do_read_index .git/index\n10:13:10.161931 dir.c:3172                   | d0 | main                     | region_enter | r1  |  0.001542 |           | dir          | label:read_directory\n10:13:10.162286 name-hash.c:591              | d0 | main                     | region_enter | r1  |  0.001897 |           | index        | ..label:name-hash-init\n10:13:10.162299 name-hash.c:612              | d0 | main                     | region_leave | r1  |  0.001910 |  0.000013 | index        | ..label:name-hash-init\n10:13:10.162366 dir.c:3140                   | d0 | main                     | data         | r1  |  0.001978 |  0.000436 | read_directo | ..path:\n10:13:10.162376 dir.c:3149                   | d0 | main                     | data         | r1  |  0.001987 |  0.000445 | read_directo | ..directories-visited:3\n10:13:10.162383 dir.c:3151                   | d0 | main                     | data         | r1  |  0.001995 |  0.000453 | read_directo | ..paths-visited:5\n10:13:10.162390 dir.c:3195                   | d0 | main                     | region_leave | r1  |  0.002002 |  0.000460 | dir          | label:read_directory\n10:13:10.163019 read-cache.c:3182            | d0 | main                     | region_enter | r1  |  0.002630 |           | index        | label:do_write_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/index.lock\n10:13:10.163070 read-cache.c:3142            | d0 | main                     | data         | r1  |  0.002682 |  0.000052 | index        | ..write/version:2\n10:13:10.163077 read-cache.c:3144            | d0 | main                     | data         | r1  |  0.002689 |  0.000059 | index        | ..write/cache_nr:2\n10:13:10.163084 read-cache.c:3185            | d0 | main                     | region_leave | r1  |  0.002695 |  0.000065 | index        | label:do_write_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/index.lock\n10:13:10.163164 git.c:808                    | d0 | main                     | exit         |     |  0.002775 |           |              | code:0\n10:13:10.163172 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.002783 |           |              | code:0\n10:13:10.167353 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:13:10.167680 common-main.c:58             | d0 | main                     | start        |     |  0.001016 |           |              | git -C main-worktree commit -m 'initial commit'\n10:13:10.167836 repository.c:201             | d0 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/main-worktree\n10:13:10.168089 git.c:545                    | d0 | main                     | cmd_name     |     |           |           |              | commit (commit)\n10:13:10.168221 read-cache.c:2416            | d0 | main                     | region_enter | r1  |  0.001565 |           | index        | label:do_read_index .git/index\n10:13:10.168256 read-cache.c:2365            | d0 | main                     | data         | r1  |  0.001599 |  0.000034 | index        | ..read/version:2\n10:13:10.168264 read-cache.c:2367            | d0 | main                     | data         | r1  |  0.001608 |  0.000043 | index        | ..read/cache_nr:2\n10:13:10.168271 read-cache.c:2421            | d0 | main                     | region_leave | r1  |  0.001615 |  0.000050 | index        | label:do_read_index .git/index\n10:13:10.168359 read-cache.c:1552            | d0 | main                     | region_enter |     |  0.001703 |           | index        | label:refresh\n10:13:10.168428 read-cache.c:1634            | d0 | main                     | data         |     |  0.001772 |  0.000069 | index        | ..refresh/sum_lstat:2\n10:13:10.168436 read-cache.c:1635            | d0 | main                     | data         |     |  0.001780 |  0.000077 | index        | ..refresh/sum_scan:0\n10:13:10.168443 read-cache.c:1636            | d0 | main                     | region_leave |     |  0.001786 |  0.000083 | index        | label:refresh\n10:13:10.168451 cache-tree.c:258             | d0 | main                     | region_enter |     |  0.001794 |           | cache_tree   | label:fully_valid\n10:13:10.168457 cache-tree.c:260             | d0 | main                     | region_leave |     |  0.001801 |  0.000007 | cache_tree   | label:fully_valid\n10:13:10.168465 cache-tree.c:519             | d0 | main                     | region_enter | r1  |  0.001809 |           | cache_tree   | label:update\n10:13:10.170260 cache-tree.c:524             | d0 | main                     | region_leave | r1  |  0.003593 |  0.001784 | cache_tree   | label:update\n10:13:10.170287 read-cache.c:3182            | d0 | main                     | region_enter | r1  |  0.003630 |           | index        | label:do_write_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/index.lock\n10:13:10.170320 read-cache.c:3052            | d0 | main                     | region_enter |     |  0.003663 |           | index        | ..label:write/extension/cache_tree\n10:13:10.170329 cache-tree.c:574             | d0 | main                     | region_enter | r1  |  0.003673 |           | cache_tree   | ....label:write\n10:13:10.170353 cache-tree.c:576             | d0 | main                     | region_leave | r1  |  0.003697 |  0.000024 | cache_tree   | ....label:write\n10:13:10.170360 read-cache.c:3056            | d0 | main                     | data         |     |  0.003704 |  0.000041 | index        | ....write/extension/cache_tree/bytes:77\n10:13:10.170366 read-cache.c:3057            | d0 | main                     | region_leave |     |  0.003710 |  0.000047 | index        | ..label:write/extension/cache_tree\n10:13:10.170449 read-cache.c:3142            | d0 | main                     | data         | r1  |  0.003793 |  0.000163 | index        | ..write/version:2\n10:13:10.170457 read-cache.c:3144            | d0 | main                     | data         | r1  |  0.003801 |  0.000171 | index        | ..write/cache_nr:2\n10:13:10.170463 read-cache.c:3185            | d0 | main                     | region_leave | r1  |  0.003806 |  0.000176 | index        | label:do_write_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/index.lock\n10:13:10.170743 cache-tree.c:519             | d0 | main                     | region_enter | r1  |  0.004087 |           | cache_tree   | label:update\n10:13:10.170761 cache-tree.c:524             | d0 | main                     | region_leave | r1  |  0.004105 |  0.000018 | cache_tree   | label:update\n10:13:10.172184 run-command.c:734            | d0 | main                     | child_start  |     |  0.005526 |           |              | [ch0] class:? argv:[git maintenance run --auto --no-quiet]\n10:13:10.175856 common-main.c:57             | d1 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:13:10.176132 common-main.c:58             | d1 | main                     | start        |     |  0.000870 |           |              | /usr/local/git/libexec/git-core/git maintenance run --auto --no-quiet\n10:13:10.176245 repository.c:201             | d1 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/main-worktree\n10:13:10.176346 git.c:545                    | d1 | main                     | cmd_name     |     |           |           |              | maintenance (commit/maintenance)\n10:13:10.176947 git.c:808                    | d1 | main                     | exit         |     |  0.001687 |           |              | code:0\n10:13:10.176957 trace2/tr2_tgt_perf.c:217    | d1 | main                     | atexit       |     |  0.001697 |           |              | code:0\n10:13:10.177151 run-command.c:990            | d0 | main                     | child_exit   |     |  0.010484 |  0.004958 |              | [ch0] pid:2651 code:0\n10:13:10.177370 diffcore-rename.c:1408       | d0 | main                     | region_enter | r1  |  0.010712 |           | diff         | label:setup\n10:13:10.177377 diffcore-rename.c:1461       | d0 | main                     | region_leave | r1  |  0.010721 |  0.000009 | diff         | label:setup\n10:13:10.177382 diffcore-rename.c:1640       | d0 | main                     | region_enter | r1  |  0.010726 |           | diff         | label:write back to queue\n10:13:10.177388 diffcore-rename.c:1717       | d0 | main                     | region_leave | r1  |  0.010731 |  0.000005 | diff         | label:write back to queue\n10:13:10.177612 git.c:808                    | d0 | main                     | exit         |     |  0.010956 |           |              | code:0\n10:13:10.177620 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.010963 |           |              | code:0\n10:13:10.180873 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:13:10.181125 common-main.c:58             | d0 | main                     | start        |     |  0.000696 |           |              | git -C main-worktree worktree add --no-checkout ../other-worktree -b other main\n10:13:10.181236 repository.c:201             | d0 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/main-worktree\n10:13:10.181413 git.c:545                    | d0 | main                     | cmd_name     |     |           |           |              | worktree (worktree)\n10:13:10.181929 run-command.c:734            | d0 | main                     | child_start  |     |  0.001501 |           |              | [ch0] class:? argv:[git branch other main]\n10:13:10.185148 common-main.c:57             | d1 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:13:10.185441 common-main.c:58             | d1 | main                     | start        |     |  0.000901 |           |              | /usr/local/git/libexec/git-core/git branch other main\n10:13:10.185571 repository.c:201             | d1 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/main-worktree\n10:13:10.185606 git.c:545                    | d1 | main                     | cmd_name     |     |           |           |              | branch (worktree/branch)\n10:13:10.186720 git.c:808                    | d1 | main                     | exit         |     |  0.002182 |           |              | code:0\n10:13:10.186730 trace2/tr2_tgt_perf.c:217    | d1 | main                     | atexit       |     |  0.002192 |           |              | code:0\n10:13:10.186963 run-command.c:990            | d0 | main                     | child_exit   |     |  0.006532 |  0.005031 |              | [ch0] pid:2653 code:0\n10:13:10.188019 git.c:808                    | d0 | main                     | exit         |     |  0.007592 |           |              | code:0\n10:13:10.188027 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.007600 |           |              | code:0\n10:13:10.191431 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:13:10.191693 common-main.c:58             | d0 | main                     | start        |     |  0.000733 |           |              | git -C other-worktree sparse-checkout set A --sparse-index\n10:13:10.191873 repository.c:201             | d0 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/other-worktree\n10:13:10.192068 git.c:545                    | d0 | main                     | cmd_name     |     |           |           |              | sparse-checkout (sparse-checkout)\n10:13:10.192131 read-cache.c:2416            | d0 | main                     | region_enter | r1  |  0.001173 |           | index        | label:do_read_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/worktrees/other-worktree/index\n10:13:10.192142 read-cache.c:2421            | d0 | main                     | region_leave | r1  |  0.001184 |  0.000011 | index        | label:do_read_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/worktrees/other-worktree/index\n10:13:10.192861 sparse-index.c:607           | d0 | main                     | region_enter | r1  |  0.001904 |           | index        | label:clear_skip_worktree_from_present_files_sparse\n10:13:10.192872 sparse-index.c:624           | d0 | main                     | data         | r1  |  0.001915 |  0.000011 | index        | ..sparse_path_count:0\n10:13:10.192879 sparse-index.c:626           | d0 | main                     | data         | r1  |  0.001921 |  0.000017 | index        | ..sparse_lstat_count:0\n10:13:10.192884 sparse-index.c:628           | d0 | main                     | region_leave | r1  |  0.001927 |  0.000023 | index        | label:clear_skip_worktree_from_present_files_sparse\n10:13:10.193045 git.c:808                    | d0 | main                     | exit         |     |  0.002088 |           |              | code:0\n10:13:10.193060 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.002102 |           |              | code:0\n10:13:10.195764 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:13:10.195989 common-main.c:58             | d0 | main                     | start        |     |  0.000625 |           |              | git -C other-worktree checkout\n10:13:10.196158 repository.c:201             | d0 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/other-worktree\n10:13:10.196371 git.c:545                    | d0 | main                     | cmd_name     |     |           |           |              | checkout (checkout)\n10:13:10.196418 builtin/checkout.c:1175      | d0 | main                     | cmd_mode     |     |           |           |              | branch\n10:13:10.196903 read-cache.c:2416            | d0 | main                     | region_enter | r1  |  0.001540 |           | index        | label:do_read_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/worktrees/other-worktree/index\n10:13:10.196929 read-cache.c:2421            | d0 | main                     | region_leave | r1  |  0.001566 |  0.000026 | index        | label:do_read_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/worktrees/other-worktree/index\n10:13:10.196939 sparse-index.c:607           | d0 | main                     | region_enter | r1  |  0.001576 |           | index        | label:clear_skip_worktree_from_present_files_sparse\n10:13:10.196945 sparse-index.c:624           | d0 | main                     | data         | r1  |  0.001583 |  0.000007 | index        | ..sparse_path_count:0\n10:13:10.196951 sparse-index.c:626           | d0 | main                     | data         | r1  |  0.001589 |  0.000013 | index        | ..sparse_lstat_count:0\n10:13:10.196956 sparse-index.c:628           | d0 | main                     | region_leave | r1  |  0.001594 |  0.000018 | index        | label:clear_skip_worktree_from_present_files_sparse\n10:13:10.196963 read-cache.c:1552            | d0 | main                     | region_enter |     |  0.001601 |           | index        | label:refresh\n10:13:10.196969 read-cache.c:1634            | d0 | main                     | data         |     |  0.001607 |  0.000006 | index        | ..refresh/sum_lstat:0\n10:13:10.196974 read-cache.c:1635            | d0 | main                     | data         |     |  0.001612 |  0.000011 | index        | ..refresh/sum_scan:0\n10:13:10.196980 read-cache.c:1636            | d0 | main                     | region_leave |     |  0.001618 |  0.000017 | index        | label:refresh\n10:13:10.197019 unpack-trees.c:1927          | d0 | main                     | region_enter |     |  0.001656 |           | unpack_trees | label:unpack_trees\n10:13:10.197025 unpack-trees.c:1931          | d0 | main                     | region_enter | r1  |  0.001663 |           | unpack_trees | ..label:unpack_trees\n10:13:10.197067 progress.c:272               | d0 | main                     | region_enter | r1  |  0.001704 |           | progress     | ....label:Updating index flags\n10:13:10.197073 unpack-trees.c:1796          | d0 | main                     | region_enter | r1  |  0.001711 |           | unpack_trees | ......label:clear_ce_flags/0x00000000_0x02000000\n10:13:10.197079 unpack-trees.c:1810          | d0 | main                     | region_leave | r1  |  0.001716 |  0.000005 | unpack_trees | ......label:clear_ce_flags/0x00000000_0x02000000\n10:13:10.197084 progress.c:344               | d0 | main                     | data         | r1  |  0.001722 |  0.000018 | progress     | ......total_objects:0\n10:13:10.197090 progress.c:350               | d0 | main                     | region_leave | r1  |  0.001728 |  0.000024 | progress     | ....label:Updating index flags\n10:13:10.197097 unpack-trees.c:2038          | d0 | main                     | region_enter | r1  |  0.001734 |           | unpack_trees | ....label:traverse_trees\n10:13:10.197157 unpack-trees.c:2040          | d0 | main                     | region_leave | r1  |  0.001794 |  0.000060 | unpack_trees | ....label:traverse_trees\n10:13:10.197163 progress.c:272               | d0 | main                     | region_enter | r1  |  0.001801 |           | progress     | ....label:Updating index flags\n10:13:10.197168 unpack-trees.c:1796          | d0 | main                     | region_enter | r1  |  0.001806 |           | unpack_trees | ......label:clear_ce_flags/0x00080000_0x42000000\n10:13:10.197173 unpack-trees.c:1810          | d0 | main                     | region_leave | r1  |  0.001811 |  0.000005 | unpack_trees | ......label:clear_ce_flags/0x00080000_0x42000000\n10:13:10.197178 progress.c:344               | d0 | main                     | data         | r1  |  0.001816 |  0.000015 | progress     | ......total_objects:2\n10:13:10.197182 progress.c:350               | d0 | main                     | region_leave | r1  |  0.001820 |  0.000019 | progress     | ....label:Updating index flags\n10:13:10.197190 unpack-trees.c:437           | d0 | main                     | region_enter |     |  0.001827 |           | unpack_trees | ....label:check_updates\n10:13:10.197195 progress.c:272               | d0 | main                     | region_enter | r1  |  0.001833 |           | progress     | ......label:Updating files\n10:13:10.197358 progress.c:344               | d0 | main                     | data         | r1  |  0.001996 |  0.000163 | progress     | ........total_objects:1\n10:13:10.197365 progress.c:350               | d0 | main                     | region_leave | r1  |  0.002002 |  0.000169 | progress     | ......label:Updating files\n10:13:10.197371 progress.c:272               | d0 | main                     | region_enter | r1  |  0.002008 |           | progress     | ......label:Filtering content\n10:13:10.197375 progress.c:344               | d0 | main                     | data         | r1  |  0.002013 |  0.000005 | progress     | ........total_objects:0\n10:13:10.197379 progress.c:350               | d0 | main                     | region_leave | r1  |  0.002017 |  0.000009 | progress     | ......label:Filtering content\n10:13:10.197385 unpack-trees.c:523           | d0 | main                     | data         |     |  0.002023 |  0.000196 | unpack_trees | ......check_updates/nr_write:1\n10:13:10.197389 unpack-trees.c:526           | d0 | main                     | region_leave |     |  0.002027 |  0.000200 | unpack_trees | ....label:check_updates\n10:13:10.197397 cache-tree.c:258             | d0 | main                     | region_enter |     |  0.002032 |           | cache_tree   | ....label:fully_valid\n10:13:10.197401 cache-tree.c:260             | d0 | main                     | region_leave |     |  0.002039 |  0.000007 | cache_tree   | ....label:fully_valid\n10:13:10.197406 cache-tree.c:519             | d0 | main                     | region_enter | r1  |  0.002044 |           | cache_tree   | ....label:update\n10:13:10.197450 cache-tree.c:524             | d0 | main                     | region_leave | r1  |  0.002088 |  0.000044 | cache_tree   | ....label:update\n10:13:10.197460 unpack-trees.c:2132          | d0 | main                     | region_leave | r1  |  0.002097 |  0.000434 | unpack_trees | ..label:unpack_trees\n10:13:10.197464 unpack-trees.c:2135          | d0 | main                     | data         |     |  0.002102 |  0.000446 | unpack_trees | ..unpack_trees/nr_unpack_entries:0\n10:13:10.197469 unpack-trees.c:2136          | d0 | main                     | region_leave |     |  0.002107 |  0.000451 | unpack_trees | label:unpack_trees\n10:13:10.197473 cache-tree.c:258             | d0 | main                     | region_enter |     |  0.002111 |           | cache_tree   | label:fully_valid\n10:13:10.197489 cache-tree.c:260             | d0 | main                     | region_leave |     |  0.002127 |  0.000016 | cache_tree   | label:fully_valid\n10:13:10.197495 read-cache.c:3182            | d0 | main                     | region_enter | r1  |  0.002132 |           | index        | label:do_write_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/worktrees/other-worktree/index.lock\n10:13:10.197514 read-cache.c:3052            | d0 | main                     | region_enter |     |  0.002152 |           | index        | ..label:write/extension/cache_tree\n10:13:10.197518 cache-tree.c:574             | d0 | main                     | region_enter | r1  |  0.002156 |           | cache_tree   | ....label:write\n10:13:10.197523 cache-tree.c:576             | d0 | main                     | region_leave | r1  |  0.002161 |  0.000005 | cache_tree   | ....label:write\n10:13:10.197528 read-cache.c:3056            | d0 | main                     | data         |     |  0.002166 |  0.000014 | index        | ....write/extension/cache_tree/bytes:77\n10:13:10.197532 read-cache.c:3057            | d0 | main                     | region_leave |     |  0.002170 |  0.000018 | index        | ..label:write/extension/cache_tree\n10:13:10.197573 read-cache.c:3142            | d0 | main                     | data         | r1  |  0.002210 |  0.000078 | index        | ..write/version:3\n10:13:10.197578 read-cache.c:3144            | d0 | main                     | data         | r1  |  0.002216 |  0.000084 | index        | ..write/cache_nr:2\n10:13:10.197583 read-cache.c:3185            | d0 | main                     | region_leave | r1  |  0.002221 |  0.000089 | index        | label:do_write_index /Users/stolee/_git/t/worktree-test/main-worktree/.git/worktrees/other-worktree/index.lock\n10:13:10.197652 unpack-trees.c:1927          | d0 | main                     | region_enter |     |  0.002290 |           | unpack_trees | label:unpack_trees\n10:13:10.197658 unpack-trees.c:1931          | d0 | main                     | region_enter | r1  |  0.002295 |           | unpack_trees | ..label:unpack_trees\n10:13:10.197678 unpack-trees.c:2038          | d0 | main                     | region_enter | r1  |  0.002315 |           | unpack_trees | ....label:traverse_trees\n10:13:10.197722 unpack-trees.c:2040          | d0 | main                     | region_leave | r1  |  0.002359 |  0.000044 | unpack_trees | ....label:traverse_trees\n10:13:10.197727 unpack-trees.c:437           | d0 | main                     | region_enter |     |  0.002365 |           | unpack_trees | ....label:check_updates\n10:13:10.197732 unpack-trees.c:526           | d0 | main                     | region_leave |     |  0.002370 |  0.000005 | unpack_trees | ....label:check_updates\n10:13:10.197737 unpack-trees.c:2132          | d0 | main                     | region_leave | r1  |  0.002375 |  0.000080 | unpack_trees | ..label:unpack_trees\n10:13:10.197742 unpack-trees.c:2135          | d0 | main                     | data         |     |  0.002380 |  0.000090 | unpack_trees | ..unpack_trees/nr_unpack_entries:0\n10:13:10.197747 unpack-trees.c:2136          | d0 | main                     | region_leave |     |  0.002385 |  0.000095 | unpack_trees | label:unpack_trees\n10:13:10.198093 builtin/checkout.c:1050      | d0 | main                     | region_enter | r1  |  0.002731 |           | tracking     | label:report_tracking\n10:13:10.198140 remote.c:2292                | d0 | main                     | region_enter |     |  0.002777 |           | tracking     | ..label:stat_tracking_info\n10:13:10.198158 remote.c:2294                | d0 | main                     | data         |     |  0.002796 |  0.000019 | tracking     | ....stat_tracking_info/ab_flags:1\n10:13:10.198164 remote.c:2295                | d0 | main                     | data         |     |  0.002802 |  0.000025 | tracking     | ....stat_tracking_info/ab_result:-1\n10:13:10.198169 remote.c:2300                | d0 | main                     | region_leave |     |  0.002806 |  0.000029 | tracking     | ..label:stat_tracking_info\n10:13:10.198173 builtin/checkout.c:1054      | d0 | main                     | data         |     |  0.002811 |  0.000080 | tracking     | ..report_tracking/nr_unpack_entries:0\n10:13:10.198183 builtin/checkout.c:1055      | d0 | main                     | region_leave | r1  |  0.002820 |  0.000089 | tracking     | label:report_tracking\n10:13:10.198196 git.c:808                    | d0 | main                     | exit         |     |  0.002834 |           |              | code:0\n10:13:10.198204 tree-walk.c:186              | d0 | main                     | data_json    | r1  |  0.002841 |  0.002841 | traverse_tre | statistics:{\"traverse_trees_count\":3,\"traverse_trees_max_depth\":2}\n10:13:10.198210 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.002847 |           |              | code:0\n10:13:10.200956 common-main.c:57             | d0 | main                     | version      |     |           |           |              | 2.46.0.vfs.0.0\n10:13:10.201183 common-main.c:58             | d0 | main                     | start        |     |  0.000605 |           |              | git -C main-worktree worktree move ../other-worktree ../other-worktree-moved\n10:13:10.201280 repository.c:201             | d0 | main                     | def_repo     | r1  |           |           |              | worktree:/Users/stolee/_git/t/worktree-test/main-worktree\n10:13:10.201441 git.c:545                    | d0 | main                     | cmd_name     |     |           |           |              | worktree (worktree)\n10:13:10.201869 read-cache.c:2416            | d0 | main                     | region_enter | r1  |  0.001294 |           | index        | label:do_read_index .git/worktrees/other-worktree/index\n10:13:10.201896 read-cache.c:1765            | d0 | main                     | region_enter |     |  0.001320 |           | index        | ..label:read/extension/cache_tree\n10:13:10.201903 cache-tree.c:671             | d0 | main                     | region_enter | r1  |  0.001327 |           | cache_tree   | ....label:read\n10:13:10.201910 cache-tree.c:673             | d0 | main                     | region_leave | r1  |  0.001334 |  0.000007 | cache_tree   | ....label:read\n10:13:10.201915 read-cache.c:1767            | d0 | main                     | data         |     |  0.001340 |  0.000020 | index        | ....read/extension/cache_tree/bytes:77\n10:13:10.201920 read-cache.c:1768            | d0 | main                     | region_leave |     |  0.001345 |  0.000025 | index        | ..label:read/extension/cache_tree\n10:13:10.201927 read-cache.c:2365            | d0 | main                     | data         | r1  |  0.001352 |  0.000058 | index        | ..read/version:3\n10:13:10.201933 read-cache.c:2367            | d0 | main                     | data         | r1  |  0.001357 |  0.000063 | index        | ..read/cache_nr:2\n10:13:10.201940 cache-tree.c:519             | d0 | main                     | region_enter | r1  |  0.001364 |           | cache_tree   | ..label:update\n10:13:10.202022 cache-tree.c:524             | d0 | main                     | region_leave | r1  |  0.001446 |  0.000082 | cache_tree   | ..label:update\n10:13:10.202042 sparse-index.c:366           | d0 | main                     | region_enter | r1  |  0.001467 |           | index        | ..label:ensure_full_index\n10:13:10.202093 cache-tree.c:519             | d0 | main                     | region_enter | r1  |  0.001518 |           | cache_tree   | ....label:update\n10:13:10.202162 cache-tree.c:524             | d0 | main                     | region_leave | r1  |  0.001587 |  0.000069 | cache_tree   | ....label:update\n10:13:10.202168 sparse-index.c:449           | d0 | main                     | region_leave | r1  |  0.001593 |  0.000126 | index        | ..label:ensure_full_index\n10:13:10.202174 read-cache.c:2421            | d0 | main                     | region_leave | r1  |  0.001598 |  0.000304 | index        | label:do_read_index .git/worktrees/other-worktree/index\n10:13:10.202378 git.c:808                    | d0 | main                     | exit         |     |  0.001803 |           |              | code:0\n10:13:10.202385 trace2/tr2_tgt_perf.c:217    | d0 | main                     | atexit       |     |  0.001810 |           |              | code:0\n"},{"id":"502586","messageId":"17f3f8f5b8a02458.e3447cfa6f132bd0.af4b8bafcdefe090@zivnix","threadId":"61920","inReplyTo":"3ace452b-f68f-46b9-b8a9-a175299deef7@gmail.com","subject":"Re: [BUG REPORT] sparseIndexExpanded hint always shows on sparse worktree move","fromName":"Brian Lyles","fromEmail":"brianmlyles@gmail.com","sentAt":"2024-09-10T19:33:36Z","receivedAt":"2024-09-10T19:33:38Z","isPatch":false,"sender":{"key":"brianmlyles@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1123282?v=4"},"body":"Hi Derrick,\n\nThanks for taking a look, and apologies for the delayed response.\n\nOn 15/08/2024 10:25, Derrick Stolee wrote:\n> The key issue with this reproducer is the following: the sparse index\n> config is set in the worktree config. When you are running this move\n> command from the main-worktree, it is not configured to work with a\n> sparse index. Thus, when reading the index, Git thinks the sparse\n> index is disabled and must inflate the index into a full one before\n> continuing.\n> \n> For full information, this happens in the callstack\n> \n>    move_worktree()\n>    validate_no_submodules()\n>    read_index_from()\n>    do_read_index()\n>    ensure_correct_sparsity()\n>    ensure_full_index()\n> \n> If you add \"git -C main-worktree sparse-checkout set A --sparse-index\"\n> before you create the other-worktree (or move it) then the message\n> does not appear.\n> \n> This is a quirk of the worktree config that may be worth updating to\n> respect the sparse index of the target worktree, but may also be worth\n> leaving as-is because we are running this from a different worktree.\n\nIt seems to me that we really should be respecting the sparsity of the\nworktree being moved rather than the worktree from which we happened to\nrun the command, at least in this case. The purpose of reading the index\n(in this call stack) is to ensure that there are no submodules in the\nworktree being moved, so the index of (and therefore, the sparse-index\nconfig of) the worktree from which the command is running seems\nirrelevant.\n\nI poked at this a little bit, and the main challenge seems to be that\n`is_sparse_index_allowed()` uses some cached\n`core_apply_sparse_checkout` and `core_sparse_checkout_cone` values that\nare populated with the config from the worktree in which the command is\nbeing run, rather than accepting those values directly or via some\nworktree object. It looks like this would need some fairly significant\nrefactoring to address since there are multiple functions in that call\nchain that would need to be updated to allow passing something more\nworktree-specific through, and those functions (most notably\n`read_index_from()` are called from several places.\n\n-- \nThank you,\nBrian Lyles\n"}]}