diff --git a/appview/pages/pages.go b/appview/pages/pages.go index b6d46da3..daff98fa 100644 --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -29,6 +29,7 @@ import ( "tangled.org/core/appview/pages/markup/sanitizer" "tangled.org/core/appview/pages/repoinfo" "tangled.org/core/appview/pagination" + gitmirrorv1 "tangled.org/core/gitmirror/proto/gen" "tangled.org/core/idresolver" "tangled.org/core/types" @@ -1411,7 +1412,7 @@ type RepoNewPull_StepDetailsParams struct { type MergeCheckParams struct { IsConflicted bool - Conflicts []*tangled.GitMergeCheck_ConflictInfo + Conflicts []*gitmirrorv1.MergeConflict Error string } diff --git a/appview/pulls/compose.go b/appview/pulls/compose.go index f7e5e7fc..e46b6c57 100644 --- a/appview/pulls/compose.go +++ b/appview/pulls/compose.go @@ -20,6 +20,7 @@ import ( "tangled.org/core/appview/pages" "tangled.org/core/appview/pages/markup/sanitizer" "tangled.org/core/consts" + gitmirrorv1 "tangled.org/core/gitmirror/proto/gen" "tangled.org/core/types" "github.com/bluesky-social/indigo/atproto/syntax" @@ -275,8 +276,7 @@ func (s *Pulls) composeParams(r *http.Request, repo *models.Repo) (pages.RepoNew } if sourceRepo == "" || sourceBranch == "" || targetBranch == "" { - // return params - l.Error("what's wrong", "source", sourceRepo, "source.branch", sourceBranch, "target.branch", targetBranch) + l.Error("params missing", "source", sourceRepo, "source.branch", sourceBranch, "target.branch", targetBranch) return pages.RepoNewPullParams{ BaseParams: pages.BaseParamsFromContext(r.Context()), RepoInfo: repoInfo, @@ -289,13 +289,6 @@ func (s *Pulls) composeParams(r *http.Request, repo *models.Repo) (pages.RepoNew TargetBranch: targetBranch, Fork: fork, Patch: patch, - // Title: title, - // Body: body, - // StepReviewParams: &stepReviewParams, - // MergeCheck: mergeCheckParams, - // PrefillError: prefillErrorMsg, - // LabelDefs: labelDefs, - // LabelState: labelState, }, nil } @@ -444,21 +437,24 @@ func sortBranchesByRecency(branches []types.Branch) []types.Branch { func (s *Pulls) composeMergeCheck(ctx context.Context, targetRepo *models.Repo, targetBranch string, sourceRepoDid syntax.DID, sourceCommit string) pages.MergeCheckParams { l := s.logger.With("handler", "composeMergeCheck", "repo", targetRepo.RepoDid, "branch", targetBranch, "source", sourceCommit) - xrpcc := s.knotClient(targetRepo.Knot) - out, err := tangled.GitMergeCheck(ctx, xrpcc, &tangled.GitMergeCheck_Input{ - Repo: targetRepo.RepoDid, - Branch: targetBranch, - Source: &tangled.GitMergeCheck_Input_Source{ - Repo: sourceRepoDid.String(), - Commit: sourceCommit, - }, + + xrpcc := &indigoxrpc.Client{Host: s.config.KnotMirror.Url} + branch, err := tangled.GitTempGetBranch(ctx, xrpcc, targetBranch, targetRepo.RepoDid) + if err != nil { + l.Warn("failed to resolve target branch", "err", err) + return pages.MergeCheckParams{Error: "merge check failed"} + } + + out, err := s.gitmirror.MergeCheck(ctx, &gitmirrorv1.MergeCheckRequest{ + Target: &gitmirrorv1.RepoCommit{Repo: targetRepo.RepoDid, Commit: []byte(branch.Hash)}, + Source: &gitmirrorv1.RepoCommit{Repo: sourceRepoDid.String(), Commit: []byte(sourceCommit)}, }) if err != nil { l.Warn("failed to do merge-check", "err", err) - return pages.MergeCheckParams{Error: "unimplemented"} + return pages.MergeCheckParams{Error: "merge check failed"} } for _, conflict := range out.Conflicts { - l.Debug("merge-check", "conflict", *conflict) + l.Debug("merge-check", "filename", conflict.Filename, "reason", conflict.Reason) } return pages.MergeCheckParams{ IsConflicted: out.IsConflicted, diff --git a/appview/pulls/pulls.go b/appview/pulls/pulls.go index 71144d49..74f24f61 100644 --- a/appview/pulls/pulls.go +++ b/appview/pulls/pulls.go @@ -1,7 +1,6 @@ package pulls import ( - "fmt" "log/slog" "time" @@ -20,7 +19,6 @@ import ( "tangled.org/core/ogre" "tangled.org/core/types" - indigoxrpc "github.com/bluesky-social/indigo/xrpc" "github.com/hashicorp/golang-lru/v2/expirable" ) @@ -80,12 +78,4 @@ func New( } } -func (s *Pulls) knotClient(host string) *indigoxrpc.Client { - scheme := "https" - if s.config.Core.Dev { - scheme = "http" - } - return &indigoxrpc.Client{Host: fmt.Sprintf("%s://%s", scheme, host)} -} - func ptrPullState(s models.PullState) *models.PullState { return &s }