fetchFromGitHub: converge arguments that determines useFetchGit#456226
fetchFromGitHub: converge arguments that determines useFetchGit#456226ShamrockLee merged 3 commits intoNixOS:masterfrom
useFetchGit#456226Conversation
863abdd to
144f605
Compare
useFetchGit
0f69bce to
8fe9d9e
Compare
|
This PR now achieves zero rebuilds, indicating that the implementation is likely correct. |
|
I think the same implementation is in fetchFromGitLab also. Could you take a look if it's been copy-and-pasted into that fetcher, possibly with small mutations? Doesn't have to be fixed in the same PR. |
philiptaron
left a comment
There was a problem hiding this comment.
Looking at the performance results, this is a 1% time regression due to the additional complexity in this extremely hot code path.
Is there a way to shave that down without losing the correctness gains?
8fe9d9e to
60401e9
Compare
How do you get the "1% time regression" statistics from the performance result? (Is it the CPU time difference?)
I prepared a more verbose version, clearing Update: Unchanged values
Updated values
Footnotes
|
be0add3 to
1eaf608
Compare
|
I remember the CPU time was once better after change in my last force-push, but it goes even worse than the fully-converged version after pushing the formatting changes. Is the result significant? Unchanged values
Updated values
Footnotes
|
ede6697 to
fa5f955
Compare
|
@philiptaron I force pushed twice with only variable renaming changes, but got +0.8450% and -1.0678% CPU time changes before and after force-push, both claim to be p < 0.01. I don't think the CI report's CPU time change is significant or the p-value trustworthy. |
d7b6de8 to
8e24202
Compare
aaf0666 to
746e443
Compare
746e443 to
cd58ed0
Compare
|
philiptaron
left a comment
There was a problem hiding this comment.
It's a bit complicated, but I think this works. The convergence is needed.
1b44380 to
92f45c5
Compare
@philiptaron I borrowed some code from If it looks even more complex, I can drop the additional commit. |
philiptaron
left a comment
There was a problem hiding this comment.
I did a little testing; I think this holds together. @ShamrockLee I'm looking for you to self-merge when you think it's ready. I don't have a harness that's good enough at detecting FOD breaks to merge it myself. Bu you do have the ✅ from me.
|
Thank you!
Regrettably, I currently rely on post-merging complaints to detect out-of-test-coverage behavioral changes. The good news is that this PR causes zero rebuilds, which is a lot safer to merge. |
Converge
fetchgit-relatedfetchFromGitHubarguments specification.Before this change, arguments like
fetchSubmodulesare listed in four places:fetchFromGitHub's argument set pattern.useFetchGitdetermination.passthruFun's exclusion list.fetchgit.These lists get out of sync over time. Before this change, specifying any of the following results in
called with unexpected argumenterror:leaveDotGit = falsefetchLFS = falserootDir = ""sparseCheckout = [ ]This PR converges the specification and handling of these argument into the let-in block, and add back the additional
__functionArgswith a helper functionadjustFunctionArgs.This PR depends on PR #462032 for cleaner implementation.
leaveDotGit,nonConeMode, andsparseCheckouta default valuenull#462032Things done
passthru.tests.nixpkgs-reviewon this PR. See nixpkgs-review usage../result/bin/.Add a 👍 reaction to pull requests you find important.