diff --git a/admin/sync/importer_gitbin.go b/admin/sync/importer_gitbin.go index 6ed9d671..4b4b0683 100644 --- a/admin/sync/importer_gitbin.go +++ b/admin/sync/importer_gitbin.go @@ -326,8 +326,17 @@ func (i GitImporter) IsRepositoryUptodate(repopath string) (*GitSubmoduleStatus, cmdsubmodule = exec.Command("git", "-C", path.Join(i.li.Base, repopath), "show", "-q", "--oneline", "origin/"+i.Branch) stdout, err = cmdsubmodule.CombinedOutput() if err != nil { - log.Printf("Git repository submodule status failed: %s\n%s", err, stdout) - return nil, fmt.Errorf("%w:\n%s", err, stdout) + cmdconfig := exec.Command("git", "-C", path.Join(i.li.Base, repopath), "config", "remote.origin.fetch") + if cfg, err2 := cmdconfig.CombinedOutput(); err2 == nil && !strings.Contains(string(cfg), "+refs/heads/*:refs/remotes/origin/*") { + cmdsubmodule := exec.Command("git", "-C", path.Join(i.li.Base, repopath), "config", "remote.origin.fetch", "+refs/heads/*:refs/remotes/origin/*") + if stdout, err = cmdsubmodule.CombinedOutput(); err != nil { + log.Printf("Git repository submodule config failed: %s\n%s", err, stdout) + return nil, fmt.Errorf("%w:\n%s", err, stdout) + } + } else { + log.Printf("Git repository submodule status failed: %s\n%s", err, stdout) + return nil, fmt.Errorf("%w:\n%s", err, stdout) + } } flds := strings.SplitN(string(stdout), " ", 2)