We're happy to take suggestions for performance improvements in the Jenkins use of JGit. The CLI git implementation in Jenkins is the canonical implementation. The JGit implementation in Jenkins is missing some features (no LFS support, imperfect submodule support, no sparse checkout, no shallow clone, etc.), but works quite well in many, many cases. We use JGit on the
ci.jenkins.io server, as one example of JGit being used widely.
The GSoC student, Rishabh Budhouliya, has created micro-benchmarks that compare command line git and JGit operation performance on various operations and axes. The most crucial observation has been that in the Jenkins environment, JGit fetch performs better than CLI git fetch on small repositories and CLI git fetch performs better than JGIt fetch on large repositories (greater than 60-100 MB).
If you prefer a 15-20 minute video summary of what Rishabh has learned and what he is implementing, refer to
https://youtu.be/b67I6spBdTg?t=305 . That video is the phase 2 demonstration. Phase 3 is the final phase of Google Summer of Code and will end Aug 31, 2020.
Thanks,
Mark Waite