+27
knotserver/internal.go
+27
knotserver/internal.go
···
15
15
"github.com/go-chi/chi/v5/middleware"
16
16
"tangled.org/core/api/tangled"
17
17
"tangled.org/core/hook"
18
+
"tangled.org/core/idresolver"
18
19
"tangled.org/core/knotserver/config"
19
20
"tangled.org/core/knotserver/db"
20
21
"tangled.org/core/knotserver/git"
···
111
112
Messages: make([]string, 0),
112
113
}
113
114
115
+
userIdent, err := idresolver.DefaultResolver().ResolveIdent(r.Context(), gitUserDid)
116
+
user := gitUserDid
117
+
if err != nil {
118
+
l.Error("Failed to fetch user identity", "err", err)
119
+
// non-fatal
120
+
} else {
121
+
user = userIdent.Handle.String()
122
+
}
123
+
gr, err := git.PlainOpen(gitRelativeDir)
124
+
if err != nil {
125
+
l.Error("Failed to open git repository", "err", err)
126
+
return
127
+
}
128
+
defaultBranch, err := gr.FindMainBranch()
129
+
if err != nil {
130
+
l.Error("Failed to fetch default branch", "err", err)
131
+
return
132
+
}
133
+
114
134
for _, line := range lines {
115
135
err := h.insertRefUpdate(line, gitUserDid, repoDid, repoName)
116
136
if err != nil {
117
137
l.Error("failed to insert op", "err", err, "line", line, "did", gitUserDid, "repo", gitRelativeDir)
118
138
// non-fatal
139
+
}
140
+
141
+
if (line.NewSha.String() != line.OldSha.String()) && line.OldSha.IsZero() && (line.Ref != fmt.Sprint("refs/heads/", defaultBranch)) {
142
+
resp.Messages = append(resp.Messages, "")
143
+
resp.Messages = append(resp.Messages, fmt.Sprintf("Create a PR pointing to %s", defaultBranch))
144
+
resp.Messages = append(resp.Messages, fmt.Sprintf("\t%s/@%s/%s/compare/%s...%s", h.c.AppViewEndpoint, user, repoName, defaultBranch, strings.TrimPrefix(line.Ref, "refs/heads/")))
145
+
resp.Messages = append(resp.Messages, "")
119
146
}
120
147
121
148
err = h.triggerPipeline(&resp.Messages, line, gitUserDid, repoDid, repoName, pushOptions)