-
Notifications
You must be signed in to change notification settings - Fork 96
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
blame: enable and test the sparse index #431
blame: enable and test the sparse index #431
Conversation
On Linux, I get these numbers:
It might be one of those things where macOS is behaving differently. I'm going to deepen the tree and see how that looks. Edit: Here are the numbers after increasing the depth by one:
|
Ah this is very good to see! Let me try increasing the depth by 1 and doing the same comparison between |
This is looking a lot better
|
Yep, ok, looks like I was just holding it incorrectly
|
32ab4a9
to
375b924
Compare
375b924
to
6843315
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approved with some minor edits recommended.
dbe21fd
to
c6dca27
Compare
Enable the sparse index for the 'git blame' command. The index was already not expanded with this command, so the most interesting thing to do is to add tests that verify that 'git blame' behaves correctly when the sparse index is enabled and that its performance improves. More specifically, these cases are: 1. The index is not expanded for `blame` when given paths in the sparse checkout cone at multiple levels. 2. Performance measurably improves for `blame` with sparse index when given paths in the sparse checkout cone at multiple levels. The following are the performance results comparing the branch with sparse index enabled for `blame` with the vfs-2.33.0 branch in the microsoft/git repository: ``` Test msft/vfs-2.33.0 sparse-index-blame ----------------------------------------------------------------------------------- 2000.62: git blame f2/f4/a (full-v3) 0.31(0.21+0.09) 0.32(0.21+0.10) +3.2% 2000.63: git blame f2/f4/a (full-v4) 0.29(0.19+0.08) 0.31(0.21+0.08) +6.9% 2000.64: git blame f2/f4/a (sparse-v3) 0.55(0.38+0.14) 0.23(0.14+0.07) -58.2% 2000.65: git blame f2/f4/a (sparse-v4) 0.57(0.40+0.16) 0.23(0.15+0.07) -59.6% 2000.66: git blame f2/f4/f3/a (full-v3) 0.77(0.56+0.20) 0.85(0.60+0.22) +10.4% 2000.67: git blame f2/f4/f3/a (full-v4) 0.78(0.56+0.20) 0.81(0.59+0.21) +3.8% 2000.68: git blame f2/f4/f3/a (sparse-v3) 1.07(0.78+0.28) 0.72(0.52+0.19) -32.7% 2000.99: git blame f2/f4/f3/a (sparse-v4) 1.05(0.78+0.26) 0.73(0.51+0.19) -30.5% ``` We do not include paths outside the sparse checkout cone because blame currently does not support blaming files outside of the sparse definition. Attempting to do so fails with the following error: fatal: no such path '<path outside sparse definition>' in HEAD Signed-off-by: Lessley Dennington <lessleydennington@gmail.com>
c6dca27
to
058b7a9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I re-ran the Scalar functional tests because it's likely you hit a known FS Monitor flake.
b9e1150
to
8e4980f
Compare
c10d236
to
fb66670
Compare
Making the 'blame with pathspec outside sparse definition' test more robust. Previously, this test just looked for a generic "failure" and didn't verify that sparse index and non-sparse index provide the same error. We now fail only when the error messages from sparse index and non-sparse index don't match (and still document the behavior in the test). Signed-off-by: Lessley Dennington <lessleydennington@gmail.com>
fb66670
to
dd14948
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice work - especially the extra-thorough performance testing!
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
blame: enable and test the sparse index
Enable the sparse index for the 'git blame' command. The index was already
not expanded with this command, so the most interesting thing to do is
to add tests that verify that 'git blame' behaves correctly when the sparse
index is enabled and that its performance improves. More specifically, these
cases are...
blame
when given paths in the sparsecheckout cone at multiple levels.
blame
with sparse index whengiven paths in the sparse checkout cone at multiple levels.
The following are the performance results comparing the branch with
sparse index enabled for
blame
with the vfs-2.33.0 branch in themicrosoft/git repository:
We do not include paths outside the sparse checkout cone because blame
currently does not support blaming files outside of the sparse
definition.