-
Notifications
You must be signed in to change notification settings - Fork 269
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
Check out subversion modules in parallel to speed up checkout #110
base: master
Are you sure you want to change the base?
Conversation
How does this affect checking out into overlapping directories, e.g. one module to Thread count should be configurable (System property to be set on master would suffice IMO), and this code needs to make sure to work correctly with one thread. |
Thank you for a pull request! Please check this document for how the Jenkins project handles pull requests |
@daniel-beck good point about overlapping directories. I guess the behaviour would be unpredictable in worst case. I'm already checking for exact duplicates and issue a warning. Will try to do the same for overlaps, but I'm pretty sure that could become arbitrary complex if someone is using relative paths. |
@daniel-beck what do you mean by: "this code needs to make sure to work correctly with one thread"? |
@daniel-beck I've implemented your suggested changes |
I expect the most common case to be as I described with one of them being I'd also prefer if that kind of configuration wasn't effectively deprecated. |
I'm not sure, I yet understand what you mean by the common case, but I guess it's something like this:
In that case it should be safe to check out in parallel - given the 'sane case' that the main module doesn't contains an I can see various solutions to this:
I'd prefer to implement option 3. If there are problems because of not detected corner cases, users could still use the system property to use single-threaded check out. What do you think? |
@daniel-beck do you have any feedback? |
@kutzi I have not had the time to try this PR in a staging environment, and am still on 1.565.3 and 2.4.x in production. I wonder though, shouldn't it be fairly easy to determine which checkouts need to be serialized based on different levels in the folder hierarchy? For example, |
This change lets the plugin check out modules in parallel.
We have a project which has a big number of SVN modules and checking out/updating the modules alone took > 2 minutes.
Checking out with 4 threads in parallel brought the time down to 30 secs.
We have been running this code on our Jenkins for > 2 years now without any issues. I've recently rebased the changes on top op subversion-plugin 2.5