Conversation
have CloneRepo return the repo so it gets re-indexed
keegancsmith
left a comment
There was a problem hiding this comment.
this code looks a little tricky. Maybe you want to take this opportunity to switch to using go-git to do this? Look at the implementation of setFetch to see how you could do this.
| outBuf := &bytes.Buffer{} | ||
| errBuf := &bytes.Buffer{} | ||
| cmd.Stdout = outBuf | ||
| cmd.Stderr = errBuf |
| settingsToUpdate, err := getZoektSettingsToUpdate(repoDest, settings, keys) | ||
| if err != nil { | ||
| return false, err | ||
| } |
There was a problem hiding this comment.
if this fails do you maybe wanna fallback to just updating everything?
There was a problem hiding this comment.
Yeah sure that makes sense, good idea
Sure, I'll give it a shot! thanks for taking a look |
|
@xvandish are you interested in taking this PR forward? It still seems like a helpful optimization! |
Hi @jtibshirani ! Sorry for the delay, yes, still interested! I'll try to update this week - |
This is an optimization on top of what I introduced in #600.
Rather than always updating the zoekt settings for every repo, which can be at least 10 git calls per repo (10 is the current number of zoekt settings we store), we instead get all
zoekt-*settings with one call, and then only make calls to update the changed values. I remember testing, and the code handled new and deletedzoekt-*keys fine. This is just a constant speedup, but it really limits the number of git calls and IO we perform, especially with larger sets of repos.We also make another change, in that if the zoekt-settings are updated, we return the
repoDestwhich triggers a re-index right away.