add feature to set custom name while forking a repo
+12
appview/pages/templates/repo/fork.html
+12
appview/pages/templates/repo/fork.html
···
6
</div>
7
<div class="p-6 bg-white dark:bg-gray-800 drop-shadow-sm rounded">
8
<form hx-post="/{{ .RepoInfo.FullName }}/fork" class="space-y-12" hx-swap="none">
9
+
<fieldset class="space-y-3">
10
+
<legend class="dark:text-white">Set a name for your fork</legend>
11
+
<input
12
+
type="text"
13
+
id="name"
14
+
name="name"
15
+
value="{{ .RepoInfo.Name }}"
16
+
placeholder="repository name"
17
+
required
18
+
class="dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:placeholder-gray-400"/>
19
+
</fieldset>
20
+
21
<fieldset class="space-y-3">
22
<legend class="dark:text-white">Select a knot to fork into</legend>
23
<div class="space-y-2">
+10
-5
appview/state/repo.go
+10
-5
appview/state/repo.go
···
1690
return
1691
}
1692
1693
ok, err := s.enforcer.E.Enforce(user.Did, knot, knot, "repo:create")
1694
if err != nil || !ok {
1695
s.pages.Notice(w, "repo", "You do not have permission to create a repo in this knot.")
1696
return
1697
}
1698
1699
-
forkName := fmt.Sprintf("%s", f.RepoName)
1700
-
1701
-
existingRepo, err := db.GetRepo(s.db, user.Did, f.RepoName)
1702
if err == nil && existingRepo != nil {
1703
-
forkName = fmt.Sprintf("%s-%s", forkName, randomString(3))
1704
}
1705
1706
secret, err := db.GetRegistrationKey(s.db, knot)
···
1721
} else {
1722
uri = "https"
1723
}
1724
-
sourceUrl := fmt.Sprintf("%s://%s/%s/%s", uri, knot, f.OwnerDid(), f.RepoName)
1725
sourceAt := f.RepoAt.String()
1726
1727
rkey := s.TID()
···
1690
return
1691
}
1692
1693
+
forkName := r.FormValue("name")
1694
+
if forkName == "" {
1695
+
s.pages.Notice(w, "repo", "Invalid form submission—missing repository name.")
1696
+
return
1697
+
}
1698
+
1699
ok, err := s.enforcer.E.Enforce(user.Did, knot, knot, "repo:create")
1700
if err != nil || !ok {
1701
s.pages.Notice(w, "repo", "You do not have permission to create a repo in this knot.")
1702
return
1703
}
1704
1705
+
existingRepo, err := db.GetRepo(s.db, user.Did, forkName)
1706
if err == nil && existingRepo != nil {
1707
+
s.pages.Notice(w, "repo", "Invalid form submission—repository already exists.")
1708
+
return
1709
}
1710
1711
secret, err := db.GetRegistrationKey(s.db, knot)
···
1726
} else {
1727
uri = "https"
1728
}
1729
+
sourceUrl := fmt.Sprintf("%s://%s/%s/%s", uri, f.Knot, f.OwnerDid(), f.RepoName)
1730
sourceAt := f.RepoAt.String()
1731
1732
rkey := s.TID()