diff --git a/pkg/commands/submodules.go b/pkg/commands/submodules.go index 493c76eba..41ea3bbbf 100644 --- a/pkg/commands/submodules.go +++ b/pkg/commands/submodules.go @@ -103,6 +103,12 @@ func (c *GitCommand) SubmoduleAdd(name string, path string, url string) error { ) } -func (c *GitCommand) SubmoduleUpdateUrl(path string, newUrl string) error { - return c.OSCommand.RunCommand("git submodule set-url -- %s %s", path, newUrl) +func (c *GitCommand) SubmoduleUpdateUrl(name string, path string, newUrl string) error { + // the set-url command is only for later git versions so we're doing it manually here + if err := c.OSCommand.RunCommand("git config --file .gitmodules submodule.%s.url %s", name, newUrl); err != nil { + return err + } + + return c.OSCommand.RunCommand("git submodule sync -- %s", path) + } diff --git a/pkg/gui/submodules_panel.go b/pkg/gui/submodules_panel.go index 9fc847e7f..d0beeb87e 100644 --- a/pkg/gui/submodules_panel.go +++ b/pkg/gui/submodules_panel.go @@ -148,7 +148,7 @@ func (gui *Gui) handleEditSubmoduleUrl() error { return gui.prompt(gui.Tr.SLocalizef("updateSubmoduleUrl", submodule.Name), submodule.Url, func(newUrl string) error { return gui.WithWaitingStatus(gui.Tr.SLocalize("updatingSubmoduleUrlStatus"), func() error { - err := gui.GitCommand.SubmoduleUpdateUrl(submodule.Name, newUrl) + err := gui.GitCommand.SubmoduleUpdateUrl(submodule.Name, submodule.Path, newUrl) gui.handleCredentialsPopup(err) return gui.refreshSidePanels(refreshOptions{scope: []int{SUBMODULES}})