diff --git a/admin/sync/importer_gitbin.go b/admin/sync/importer_gitbin.go index c8d75a70..5e0ad75e 100644 --- a/admin/sync/importer_gitbin.go +++ b/admin/sync/importer_gitbin.go @@ -122,6 +122,28 @@ func (i GitImporter) Sync() error { log.Printf("Local git repository submodules clean failed: %s\n%s", err, stdout) return fmt.Errorf("%w:\n%s", err, stdout) } + + // Start by a light hard reset (without submodules, in order to init new ones) + cmdreset := exec.Command("git", "-C", i.li.Base, "reset", "--hard", "origin/"+i.Branch) + stdout, err = cmdreset.CombinedOutput() + if err != nil { + log.Printf("Local git repository reset failed: %s\n%s", err, stdout) + return fmt.Errorf("%w:\n%s", err, stdout) + } + + cmdsubinit := exec.Command("git", "-C", i.li.Base, "submodule", "init") + stdout, err = cmdsubinit.CombinedOutput() + if err != nil { + log.Printf("Local git repository submodule init failed: %s\n%s", err, stdout) + return fmt.Errorf("%w:\n%s", err, stdout) + } + + cmdsubupdate := exec.Command("git", "-C", i.li.Base, "submodule", "update") + stdout, err = cmdsubupdate.CombinedOutput() + if err != nil { + log.Printf("Local git repository submodule init failed: %s\n%s", err, stdout) + return fmt.Errorf("%w:\n%s", err, stdout) + } } cmdreset := exec.Command("git", "-C", i.li.Base, "reset", "--hard", "--recurse-submodule", "origin/"+i.Branch)