Parallelize multi-repository pull
For each pulled repository a job is created that performs the pull
operation and refreshes affected projects. Each pull job defines a
scheduling rule for the affected projects. Created new core pull job
rule and configured it to have the same icon as the ui pull rule used by
the parent job.
The overall action waits until all scheduled jobs are
terminated, via job group API. Introduced new egit.core preference
"core_maxPullThreadsCount" (default is 1), which defines how many
parallel pull jobs are allowed, and added a UI for that preference on
the EGit root preferences page.
Changed IndexDiffCacheEntry.waitForWorkspaceLock() to wait for affected
projects only, not for the workspace root lock. This allows git status
recalculation for updated repositories start immediately after pull and
not wait for all jobs to be done.
Bug: 540548
Change-Id: Idc6f498197705d7b2c681dac9536470336b1ded8
Signed-off-by: Karsten Thoms <karsten.thoms@itemis.de>
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>