ATProto Browser

ATProto Browser

Experimental browser for the Atmosphere

Record data

{
  "uri": "at://did:plc:hwevmowznbiukdf6uk5dwrrq/sh.tangled.repo.pull/3lmc7vcjzi322",
  "cid": "bafyreifim7ax2prtswgio3gp4xnbuwaqeyk6uwik5tu4fl5qab2bkl3fai",
  "value": {
    "$type": "sh.tangled.repo.pull",
    "patch": "diff --git a/appview/state/repo.go b/appview/state/repo.go\nindex 201f8b8ca1d86ee3c326918767da47aedf19ed58..908c2a255950aa3f0d89454bd9202dafd36cc6f7 100644\n--- a/appview/state/repo.go\n+++ b/appview/state/repo.go\n@@ -453,7 +453,7 @@ \t\tfor idx, elem := range strings.Split(filePath, \"/\") {\n \t\t\tbreadcrumbs = append(breadcrumbs, []string{elem, fmt.Sprintf(\"%s/%s\", breadcrumbs[idx][1], elem)})\n \t\t}\n \t}\n-\t\n+\n \tshowRendered := false\n \trenderToggle := false\n \n@@ -461,7 +461,7 @@ \tif markup.GetFormat(result.Path) == markup.FormatMarkdown {\n \t\trenderToggle = true\n \t\tshowRendered = r.URL.Query().Get(\"code\") != \"true\"\n \t}\n-\t\n+\n \tuser := s.auth.GetUser(r)\n \ts.pages.RepoBlob(w, pages.RepoBlobParams{\n \t\tLoggedInUser:     user,\n@@ -1698,11 +1698,21 @@ \t\t}\n \n \t\tforkName := fmt.Sprintf(\"%s\", f.RepoName)\n \n+\t\t// this check is *only* to see if the forked repo name already exists\n+\t\t// in the user's account.\n \t\texistingRepo, err := db.GetRepo(s.db, user.Did, f.RepoName)\n-\t\tif err == nil && existingRepo != nil {\n+\t\tif err != nil {\n+\t\t\tif errors.Is(err, sql.ErrNoRows) {\n+\t\t\t\t// no existing repo with this name found, we can use the name as is\n+\t\t\t} else {\n+\t\t\t\tlog.Println(\"error fetching existing repo from db\", err)\n+\t\t\t\ts.pages.Notice(w, \"repo\", \"Failed to fork this repository. Try again later.\")\n+\t\t\t\treturn\n+\t\t\t}\n+\t\t} else if existingRepo != nil {\n+\t\t\t// repo with this name already exists, append random string\n \t\t\tforkName = fmt.Sprintf(\"%s-%s\", forkName, randomString(3))\n \t\t}\n-\n \t\tsecret, err := db.GetRegistrationKey(s.db, knot)\n \t\tif err != nil {\n \t\t\ts.pages.Notice(w, \"repo\", fmt.Sprintf(\"No registration key found for knot %s.\", knot))\n@@ -1711,7 +1721,7 @@ \t\t}\n \n \t\tclient, err := NewSignedClient(knot, secret, s.config.Dev)\n \t\tif err != nil {\n-\t\t\ts.pages.Notice(w, \"repo\", \"Failed to connect to knot server.\")\n+\t\t\ts.pages.Notice(w, \"repo\", \"Failed to reach knot server.\")\n \t\t\treturn\n \t\t}\n \n@@ -1721,7 +1731,7 @@ \t\t\turi = \"http\"\n \t\t} else {\n \t\t\turi = \"https\"\n \t\t}\n-\t\tsourceUrl := fmt.Sprintf(\"%s://%s/%s/%s\", uri, knot, f.OwnerDid(), f.RepoName)\n+\t\tsourceUrl := fmt.Sprintf(\"%s://%s/%s/%s\", uri, f.Knot, f.OwnerDid(), f.RepoName)\n \t\tsourceAt := f.RepoAt.String()\n \n \t\trkey := s.TID()\n",
    "title": "appview: state: fix forking across knots",
    "pullId": 40,
    "source": {
      "branch": "fix-knot-forks"
    },
    "targetRepo": "at://did:plc:wshs7t2adsemcrrd4snkeqli/sh.tangled.repo/3liuighjy2h22",
    "targetBranch": "master"
  }
}