Description
The rust-lang/rust repo itself takes awhile to clone but we somewhat mitigate that with --depth=1
clones. Our submodules, however, are much larger and unfortunately cannot be cloned with a --depth
argument due to how the branches work. This typically means that cloning the LLVM repo takes quite a long time! Unfortunately this also increases our chances to network problems by requiring a lot of data to move over the network.
When playing around with CircleCI recently I found that they automatically cached git repository data which greatly sped up cloning the repository and checking out submodules. Overall it felt quite nifty! We should investigate to see if a similar strategy can apply to Travis and/or AppVeyor. I'm not personally familiar with how CircleCI's git caching works, so some investigation there would be needed (and comments if you're familiar with it would be most welcome!)
Overall I would expec this change to:
- Reduce timeouts when cloning LLVM because very little data would transfer over the network
- Speed up builds (slightly). It'd save ~10 minutes on AppVeyor and ~2 minutes on Travis from the look of today's timings.
Any help to implement this would be very much appreciated!