I don't have any hard data, just from experience and looking at the code, it looks like an entire git clone is performed. I imagine it should be sufficient to shallow clones of the various branches one needs to request. And that should provide enough information to generate the commits necessary for locking the repositories. But there could also be a gap here in my understanding of git the tool, the SSH/HTTP APIs, and/or git internals.
My motivation for starting this discussion is that my own state repository has grown to be about 70 MB, and so I really notice slowness during wrapper runs. Other options I've considered are running the backend as a local service, though I really like the CLI wrapper style of usage. I also considered patching the code to cache repositories to disk locally for reuse, but this felt like a potentially more durable and widely useful solution, so I wanted to open this discussion before delving deeper into what that would look like.
I hope this is the right place for this.
I don't have any hard data, just from experience and looking at the code, it looks like an entire git clone is performed. I imagine it should be sufficient to shallow clones of the various branches one needs to request. And that should provide enough information to generate the commits necessary for locking the repositories. But there could also be a gap here in my understanding of git the tool, the SSH/HTTP APIs, and/or git internals.
My motivation for starting this discussion is that my own state repository has grown to be about 70 MB, and so I really notice slowness during wrapper runs. Other options I've considered are running the backend as a local service, though I really like the CLI wrapper style of usage. I also considered patching the code to cache repositories to disk locally for reuse, but this felt like a potentially more durable and widely useful solution, so I wanted to open this discussion before delving deeper into what that would look like.
I hope this is the right place for this.