···
"tangled.sh/tangled.sh/core/appview/pages/markup"
"tangled.sh/tangled.sh/core/appview/pages/repoinfo"
"tangled.sh/tangled.sh/core/appview/pagination"
"tangled.sh/tangled.sh/core/types"
"github.com/bluesky-social/indigo/atproto/data"
···
user := s.oauth.GetUser(r)
repoInfo := f.RepoInfo(s, user)
secret, err := db.GetRegistrationKey(s.db, f.Knot)
log.Printf("failed to get registration key for %s: %s", f.Knot, err)
s.pages.Notice(w, "resubmit-error", "Failed to create pull request. Try again later.")
-
// update the hidden tracking branch to latest
signedClient, err := knotclient.NewSignedClient(f.Knot, secret, s.config.Core.Dev)
log.Printf("failed to create signed client for %s: %s", f.Knot, err)
-
s.pages.Notice(w, "resubmit-error", "Failed to create pull request. Try again later.")
newHiddenRefResp, err := signedClient.NewHiddenRef(user.Did, repoInfo.Name, f.Ref, f.Ref)
if err != nil || newHiddenRefResp.StatusCode != http.StatusNoContent {
log.Printf("failed to update tracking branch: %s", err)
-
s.pages.Notice(w, "resubmit-error", "Failed to create pull request. Try again later.")
hiddenRef := fmt.Sprintf("hidden/%s/%s", f.Ref, f.Ref)
comparison, err := us.Compare(user.Did, repoInfo.Name, f.Ref, hiddenRef)
-
log.Printf("failed to compare branches: %s", err)
-
s.pages.Notice(w, "resubmit-error", err.Error())
-
log.Println(comparison)
-
s.pages.RepoIndexPage(w, pages.RepoIndexParams{
-
RepoIndexResponse: result,
-
CommitsTrunc: commitsTrunc,
-
BranchesTrunc: branchesTrunc,
-
EmailToDidOrHandle: EmailToDidOrHandle(s, emails),
func (s *State) RepoLog(w http.ResponseWriter, r *http.Request) {
···
"tangled.sh/tangled.sh/core/appview/pages/markup"
"tangled.sh/tangled.sh/core/appview/pages/repoinfo"
"tangled.sh/tangled.sh/core/appview/pagination"
+
"tangled.sh/tangled.sh/core/knotserver"
"tangled.sh/tangled.sh/core/types"
"github.com/bluesky-social/indigo/atproto/data"
···
user := s.oauth.GetUser(r)
repoInfo := f.RepoInfo(s, user)
+
forkInfo, err := GetForkInfo(repoInfo, s, f, us, w, user)
+
log.Printf("Failed to fetch fork information: %v", err)
+
s.pages.RepoIndexPage(w, pages.RepoIndexParams{
+
RepoIndexResponse: result,
+
CommitsTrunc: commitsTrunc,
+
BranchesTrunc: branchesTrunc,
+
EmailToDidOrHandle: EmailToDidOrHandle(s, emails),
+
repoInfo repoinfo.RepoInfo,
+
us *knotclient.UnsignedClient,
+
) (*pages.ForkInfo, error) {
+
forkInfo := pages.ForkInfo{
+
IsFork: repoInfo.Source != nil,
+
Status: pages.UpToDate,
secret, err := db.GetRegistrationKey(s.db, f.Knot)
log.Printf("failed to get registration key for %s: %s", f.Knot, err)
s.pages.Notice(w, "resubmit-error", "Failed to create pull request. Try again later.")
+
forkInfo.IsFork = false
+
resp, err := us.Branches(repoInfo.Source.Did, repoInfo.Source.Name)
+
log.Println("failed to reach knotserver", err)
+
body, err := io.ReadAll(resp.Body)
+
log.Printf("Error reading forkResponse forkBody: %v", err)
+
var result types.RepoBranchesResponse
+
err = json.Unmarshal(body, &result)
+
log.Println("failed to parse forkResponse:", err)
+
for _, branch := range result.Branches {
+
if branch.Name == f.Ref {
+
forkInfo.Status = pages.MissingBranch
signedClient, err := knotclient.NewSignedClient(f.Knot, secret, s.config.Core.Dev)
log.Printf("failed to create signed client for %s: %s", f.Knot, err)
newHiddenRefResp, err := signedClient.NewHiddenRef(user.Did, repoInfo.Name, f.Ref, f.Ref)
if err != nil || newHiddenRefResp.StatusCode != http.StatusNoContent {
log.Printf("failed to update tracking branch: %s", err)
hiddenRef := fmt.Sprintf("hidden/%s/%s", f.Ref, f.Ref)
comparison, err := us.Compare(user.Did, repoInfo.Name, f.Ref, hiddenRef)
+
log.Printf("failed to compare branches '%s' and '%s': %s", f.Ref, hiddenRef, err)
+
if len(comparison.FormatPatch) == 0 {
+
var isAncestor types.AncestorCheckResponse
+
forkSyncableResp, err := signedClient.RepoForkSyncable(user.Did, string(f.RepoAt), repoInfo.Name, f.Ref, hiddenRef)
+
log.Printf("failed to check if fork is syncable: %s", err)
+
if err := json.NewDecoder(forkSyncableResp.Body).Decode(&isAncestor); err != nil {
+
log.Printf("failed to decode 'isAncestor': %s", err)
+
if isAncestor.IsAncestor {
+
forkInfo.Status = pages.FastForwardable
+
forkInfo.Status = pages.Conflict
func (s *State) RepoLog(w http.ResponseWriter, r *http.Request) {