Context is not passed when updating submodules
When pulling or cloning from a repo, go-git will update submodules if the option is set.
The problem is when calling (*Worktree).updateSubmodules. It doesn't take the context from a caller.
| func (w *Worktree) updateSubmodules(o *SubmoduleUpdateOptions) error { | |
| s, err := w.Submodules() | |
| if err != nil { | |
| return err | |
| } | |
| o.Init = true | |
| return s.Update(o) | |
| } |
It creates new context internally.
| // Update updates all the submodules in this list. | |
| func (s Submodules) Update(o *SubmoduleUpdateOptions) error { | |
| return s.UpdateContext(context.Background(), o) | |
| } |
This can lead to situations where we can't gracefully handle slow fetching of submodules or etc.
Is there any reason that it ignores context from caller?
If there isn't, I think we better pass context to the funciton.