I realized legacy patchdemo environments were using git worktree add to checkout repos whereas catalyst is using reference clones.
In testing worktree is faster.
$ cat worktree-checkout.sh #!/bin/bash git -C /srv/git/cache/mediawiki/core fetch origin master git -C /srv/git/cache/mediawiki/core worktree add --detach "$@" HEAD $ time ./worktree-checkout.sh /tmp/worktree2 From https://gerrit.wikimedia.org/r/mediawiki/core * branch master -> FETCH_HEAD Preparing worktree (detached HEAD b88d5470b27e) HEAD is now at b88d5470b27e Merge "SpecialBlock: Scroll to erroneous field rather than just the error" real 0m1.938s user 0m1.230s sys 0m0.385s $ cat reference-checkout.sh #!/bin/bash git -C /srv/git/cache/mediawiki/core fetch origin master git clone --reference /srv/git/cache/mediawiki/core --depth=1 https://gerrit.wikimedia.org/r/mediawiki/core.git "$@" $ time ./reference-checkout.sh /tmp/reference2 From https://gerrit.wikimedia.org/r/mediawiki/core * branch master -> FETCH_HEAD Cloning into '/tmp/reference2'... remote: Total 0 (delta 0), reused 0 (delta 0) real 0m8.273s user 0m5.761s sys 0m1.028s