package main // The merge preview of a fetch (novox/hq ADR 0484 clause 3; issue 1676), as build_go_fetch answers it. The merge itself // is the SDK's (buildstep.MergeInto), the one every build module's fetch step makes. import ( "context" "git.novox.be/novox/mesh-sdk/go/buildstep" "git.novox.be/novox/mesh-sdk/go/forgekey" ) // remote is the address a repository is fetched from: the forge over ssh as the account, or RemoteBase when a test set it. func (m *Module) remote(repository string) string { base := m.RemoteBase if base == "" { base = "ssh://" + ForgeAlias + "/" } return base + repository + ".git" } // merge makes the merge preview of the head onto base and writes the answer into res. func (m *Module) merge(ctx context.Context, run forgekey.Runner, res *FetchResult, tree, remote, base, commit string) error { mr, err := buildstep.MergeInto(ctx, run, tree, remote, base, commit, m.FetchOptions...) if err != nil { return err } res.Base = mr.Base res.Conflicts, res.Merge, res.Changed = mr.Conflicts, mr.Merge, mr.Changed if mr.Merge != "" { res.Programs = &mr.Programs } if res.Merge == "" { return nil } res.Trees, err = buildstep.ModuleTrees(ctx, m.Run, m.baseEnv(), tree, res.Merge) return err }