36 lines
1.2 KiB
Go
36 lines
1.2 KiB
Go
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 res.Merge == "" {
|
|
return nil
|
|
}
|
|
res.Trees, err = buildstep.ModuleTrees(ctx, m.Run, m.baseEnv(), tree, res.Merge)
|
|
return err
|
|
}
|