On Fri, Mar 18, 2022 at 5:57 AM Victoria Dye <vdye@xxxxxxxxxx> wrote: Hi all, It's been a busy week, I'm sorry that did not have much time to respond. ================================= A brief summary of my latest investigations: I think the 'git mv' command still has some questionable aspects, especially with the 'git sparse-checkout' command. And I feel we have to sort things out between 'git mv' and sparse-checkout first, then proceed to the issues with sparse-index. =========== I'm trying to fix the first 2 of the 3 potential things mentioned earlier. > 1. When empty folder2/ is on-disk, 'git mv' (without '--sparse') doesn't > fail with "bad source", even though it should. In this case, 'git mv' does not fail with "bad source" is something expected, because this error is related to the existence of an on-disk file, not a directory. The closest thing that it should fail with, in my opinion, is by calling the advise function 'advise_on_updating_sparse_paths'. With that being said, I now raise the first question: should we change the sparse- checkout cone check to be placed at the very beginning of the checking process, or keep it at the end as a very final check (where it is right now). My preference is to place it at the very beginning, since the user should always be cautious about touching contents outside of sparse-checkout cone, no matter what. If a certain move touches out-of-cone stuff, and at the same time it will fail with the, for example, "destination exists" or "conflicted" error, I think these errors should come second, after being supplied with the "--sparse" flag. > 2. When you try to move a sparse file with 'git mv --sparse', it still > fails. This is also related to the first question, because in this case, "folder2/a" is not on-disk, then 'git mv' will fail fast at the first check and ignore the "--sparse" flag. Even if we modify the code to place the out-of-cone check at the very beginning, and supply a "--sparse" flag, we have to make 'git mv' look into the index to find a sparse file. And here I raise my second question: by moving a sparse file, which is normally not on-disk, we have to alter the original 'git mv' logic to make it grope into the index for the missing sparse file (for now it does not care about the index, except when it receives a directory as <source>); can we make this change? -- Thanks & Regards, Shaoxuan