-11
appview/pages/templates/layouts/repobase.html
-11
appview/pages/templates/layouts/repobase.html
···
21
21
22
22
<div class="flex items-center gap-2 z-auto">
23
23
{{ template "repo/fragments/repoStar" .RepoInfo }}
24
-
{{ if .RepoInfo.DisableFork }}
25
-
<button
26
-
class="btn text-sm no-underline hover:no-underline flex items-center gap-2 disabled:opacity-50 disabled:cursor-not-allowed"
27
-
disabled
28
-
title="Empty repositories cannot be forked"
29
-
>
30
-
{{ i "git-fork" "w-4 h-4" }}
31
-
fork
32
-
</button>
33
-
{{ else }}
34
24
<a
35
25
class="btn text-sm no-underline hover:no-underline flex items-center gap-2 group"
36
26
hx-boost="true"
···
40
30
fork
41
31
{{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
42
32
</a>
43
-
{{ end }}
44
33
</div>
45
34
</div>
46
35
{{ template "repo/fragments/repoDescription" . }}
+2
-15
appview/reporesolver/resolver.go
+2
-15
appview/reporesolver/resolver.go
···
20
20
"tangled.sh/tangled.sh/core/appview/pages"
21
21
"tangled.sh/tangled.sh/core/appview/pages/repoinfo"
22
22
"tangled.sh/tangled.sh/core/idresolver"
23
-
"tangled.sh/tangled.sh/core/knotclient"
24
23
"tangled.sh/tangled.sh/core/rbac"
25
24
)
26
25
···
180
179
}
181
180
182
181
knot := f.Knot
183
-
var disableFork bool
184
-
us, err := knotclient.NewUnsignedClient(knot, f.rr.config.Core.Dev)
185
-
if err != nil {
186
-
log.Printf("failed to create unsigned client for %s: %v", knot, err)
187
-
} else {
188
-
if result, err := us.Branches(f.OwnerDid(), f.Name); err != nil {
189
-
log.Printf("failed to get branches for %s/%s: %v", f.OwnerDid(), f.Name, err)
190
-
} else if len(result.Branches) == 0 {
191
-
disableFork = true
192
-
}
193
-
}
194
182
195
183
repoInfo := repoinfo.RepoInfo{
196
184
OwnerDid: f.OwnerDid(),
···
207
195
IssueCount: issueCount,
208
196
PullCount: pullCount,
209
197
},
210
-
DisableFork: disableFork,
211
-
CurrentDir: f.CurrentDir,
212
-
Ref: f.Ref,
198
+
CurrentDir: f.CurrentDir,
199
+
Ref: f.Ref,
213
200
}
214
201
215
202
if sourceRepo != nil {
+4
-8
knotserver/git/fork.go
+4
-8
knotserver/git/fork.go
···
10
10
)
11
11
12
12
func Fork(repoPath, source string) error {
13
-
_, err := git.PlainClone(repoPath, true, &git.CloneOptions{
14
-
URL: source,
15
-
SingleBranch: false,
16
-
})
17
-
18
-
if err != nil {
13
+
cloneCmd := exec.Command("git", "clone", "--bare", source, repoPath)
14
+
if err := cloneCmd.Run(); err != nil {
19
15
return fmt.Errorf("failed to bare clone repository: %w", err)
20
16
}
21
17
22
-
err = exec.Command("git", "-C", repoPath, "config", "receive.hideRefs", "refs/hidden").Run()
23
-
if err != nil {
18
+
configureCmd := exec.Command("git", "-C", repoPath, "config", "receive.hideRefs", "refs/hidden")
19
+
if err := configureCmd.Run(); err != nil {
24
20
return fmt.Errorf("failed to configure hidden refs: %w", err)
25
21
}
26
22