-
Notifications
You must be signed in to change notification settings - Fork 335
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
diff-so-fancy 1.1.0 struggles with large/slow inputs #251
Comments
(This was not a problem before 1.1.0) |
We don't officially support How big is the |
This repo has 350,000 commits, so pretty big :-) (It's the firefox codebase) I know |
Actually I know why this is an issue now. We're parse the entirety of the input before we display anything (we didn't used to do this). This was part of moving to d-h internally instead of an external script. This is something we may change in the future. |
This seems to cause an issue on Sufficiently Large Git Repos (tm). e.g. |
Yes that's the same issue. I'll have to ponder a good solution. In version 1.0 we shelled out to |
This issue has less to do with
This will help get eyes on the issue. |
@scottchiefbaker updated the title, let me know if you want me to update the original text as well |
Can you provide some benchmarks on before and after? If I 1.0.0 = ~54 seconds On really small input the difference is barely noticeable. Maybe I'm doing my tests wrong...?
|
a) Are you sure b) I'm not sure what you're measuring makes sense, |
Ahhhh that makes more sense... the delay is in DISPLAYING the data, not total output. Duh... Thus my testing was bad. I can see a big diff between 1.0.0 and 1.1.0 when you first see data on the screen of large diffs. Thanks for setting me straight. |
git doesn't disable the pager, but we did some work a while ago to get dsf to disable its affect, the motivation there being redirection to a patch file.
Disabling when piping was actually a bad consequence of that, since it means the user can't modify their actual pager - the pipe to less and its options had to be brought inside dsf.
I think it wasn't merged for that reason, so unless @scottchiefbaker found a different way of doing that, I think it must be running as usual when piping to wc.
--
Oliver Ford
On Tue, 18 Jul 2017, at 21:59, Alex Gaynor wrote:
a) Are you sure diff-so-fancy is still run when piped to wc? I thought git might disable the pager when stdout isn't a tty> b) I'm not sure what you're measuring makes sense, time git show ... | wc measures the time to display everything, whereas the important thing is "time to first pain"> —
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub[1], or mute the thread[2]. >
|
This makes diff-so-fancy unusable for me and I had to disable it. Even in a moderately sized repository with 15K commits, I also noticed that diff-so-fancy now writes to my |
I can also confirm the problem in very large git repos. For me also a normal log with statistic output is hanging forever |
Yep, I'm having this issue too, with a large git repo. Running Keep up the great work, I love d-s-f 💯 |
Same issue here (repo with 25,000 commits). Until this is fixed I've added this as a temporary workaround:
This way EDIT: clarification |
I believe I've fixed this issue in an unpublished alpha build. If this issue affects you please try that build and let me know if it solves this issue. |
Have you all considered pulling the release until this is fixed? This is a show-stopper, IMO. |
No... d-s-f was never designed to work on HUGE inputs. It's main focus is making single diffs easily consumable by humans. It happens to work on large input like This will be fixed in the next version. Feel free to try the alpha build, or downgrade if this is a huge issue for you. |
If that is indeed not that case, maybe the instructions should be updated to not recommend using it for the pager, only for diff? EDIT: Or is it now officially supporting "HUGE" inputs. EDIT2: After thinking more about this, I often do "HUGE" diffs, so I think it's really all or nothing. |
@scottchiefbaker Regarding #251 (comment), the alpha build fixed the issue for me. |
@externl #251 (comment) didn't work for me, got |
@jasonnoble, on macOS I do this:
|
fwiw, ran into this as well (slow |
Time permitting I'll do an official release on this pretty soon. |
I've verified the alpha-build resolves the slowness with large inputs. ( |
My biggest hold up right now is the changelog. If someone wants to go through the git history and pull out appropriate changelog stuff that'll help me get a new release out the door. |
@scottchiefbaker - perhaps you could use something like https://github.com/skywinder/github-changelog-generator? |
I think the readme should clearly indicate that diff-so-fancy is not suitable for The current release will try to render the entire log, which is extremely slow for mature repos. The alpha-build dies part-way so my |
I would really love to see this fixed. git log -p is my main way of viewing logs, and it's just too slow to use now. I don't think I can go back to normal diffs haha. |
I'm closing this because a new release is pending ASAP. |
@scottchiefbaker - this is not fixed for me in |
@boris-petrov It must be just you? I just tested |
@scottchiefbaker - Actually, I've been installing |
@boris-petrov oh good call. I don't do NPM, I think @stevemao does that. Maybe he can update it. |
Specifically, there appears to be a bug with buffering. Running
env HGPLAIN=1 hg log | diff-so-fancy
will hang forever ashg
computes the log of everything, anddiff-so-fancy
doesn't display it (until the entire log is written tostdout
).I'm not sure if there's any other information I can provide which would help reproduce this.
The text was updated successfully, but these errors were encountered: