On Fri, Apr 19, 2013 at 7:44 AM, <
hor...@gmail.com> wrote:
> Hi everyone,
>
> first of all: I think git cola is the best git UI for Linux :-)
>
> I think staging files is not as fast as it could be though:
> When I stage many small files (many thousands), I can see that git-cola
> calls git diff many times, always on the same file. The staging process
> takes more than 15 minutes for me, using git-cola 1.8.2.
Ah, interesting. Thanks for the report.
This should certainly be improved.
It certainly shouldn't do that since it would make much more sense to
do all the additions at once and then refresh diffs/etc. once at the
very end.
I'm pretty sure this can be fixed. Is it literally thousands of files?
I do know that we had an issue once where the number of added files
was overrunning some "maximum command-line length" so the "add"
operation was modified so that it processes files in chunks of 40(?).
It's an arbitrary number and could be larger, but we should first
determine whether or not that's the source of this slowness. It seems
like there's a callback that's getting triggered multiple times when
really it should only be triggered once.
This would be a good item to tackle before the next release.
> Here you can see what happens when I grep for the git diff process:
>
> csp@noodles ~ $ ps -elf | grep diff | grep -v grep
> 0 R 1000 12393 12169 0 80 0 - 8348 - 16:30 ? 00:00:00
> git diff --unified=2 --submodule --no-ext-diff -M --patience --no-color --
> TestProject/src/test/java/com/tests/v02/001_MainMenuBeforeInitialSync.out.screendump
> csp@noodles ~ $ ps -elf | grep diff | grep -v grep
> 0 R 1000 12662 12169 0 80 0 - 6771 - 16:30 ? 00:00:00
> git diff --unified=2 --submodule --no-ext-diff -M --patience --no-color --
> TestProject/src/test/java/com/tests/v02/001_MainMenuBeforeInitialSync.out.screendump
> csp@noodles ~ $ ps -elf | grep diff | grep -v grep
> csp@noodles ~ $ ps -elf | grep diff | grep -v grep
> csp@noodles ~ $ ps -elf | grep diff | grep -v grep
> 0 R 1000 13070 12169 0 80 0 - 6436 - 16:30 ? 00:00:00
> git diff --unified=2 --submodule --no-ext-diff -M --patience --no-color --
> TestProject/src/test/java/com/tests/v02/001_MainMenuBeforeInitialSync.out.screendump
> csp@noodles ~ $ ps -elf | grep diff | grep -v grep
> csp@noodles ~ $ ps -elf | grep diff | grep -v grep
> csp@noodles ~ $ ps -elf | grep diff | grep -v grep
> 0 R 1000 17525 12169 0 80 0 - 6436 - 16:36 ? 00:00:00
> git diff --unified=2 --submodule --no-ext-diff -M --patience --no-color --
> TestProject/src/test/java/com/tests/v02/001_MainMenuBeforeInitialSync.out.screendump
>
> You can see that the git process-id changes, but the filename is always the
> same. Maybe this is the UI refreshing itself everytime a single file is
> staged? Could this be optimized so that the UI is only refreshed once the
> entire staging is done? I dont know how big the performance impact is, but I
> think its something that slows down the staging to some degree.
>
> kind regards,
> Christian
>
> --
> --
> To unsubscribe from this group an send email to
>
git-cola+u...@googlegroups.com
> For more information about this group visit
>
http://groups.google.com/group/git-cola?hl=en
>
> ---
> You received this message because you are subscribed to the Google Groups
> "git-cola" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to
git-cola+u...@googlegroups.com.
> For more options, visit
https://groups.google.com/groups/opt_out.
>
>
--
David