+4
-5
appview/repo/index.go
+4
-5
appview/repo/index.go
···
351
351
if treeResp != nil && treeResp.Files != nil {
352
352
for _, file := range treeResp.Files {
353
353
niceFile := types.NiceTree{
354
-
IsFile: file.Is_file,
355
-
IsSubtree: file.Is_subtree,
356
-
Name: file.Name,
357
-
Mode: file.Mode,
358
-
Size: file.Size,
354
+
Name: file.Name,
355
+
Mode: file.Mode,
356
+
Size: file.Size,
359
357
}
358
+
360
359
if file.Last_commit != nil {
361
360
when, _ := time.Parse(time.RFC3339, file.Last_commit.When)
362
361
niceFile.LastCommit = &types.LastCommitInfo{
+2
-2
appview/repo/repo_util.go
+2
-2
appview/repo/repo_util.go
+4
-5
appview/repo/tree.go
+4
-5
appview/repo/tree.go
···
50
50
files := make([]types.NiceTree, len(xrpcResp.Files))
51
51
for i, xrpcFile := range xrpcResp.Files {
52
52
file := types.NiceTree{
53
-
Name: xrpcFile.Name,
54
-
Mode: xrpcFile.Mode,
55
-
Size: int64(xrpcFile.Size),
56
-
IsFile: xrpcFile.Is_file,
57
-
IsSubtree: xrpcFile.Is_subtree,
53
+
Name: xrpcFile.Name,
54
+
Mode: xrpcFile.Mode,
55
+
Size: int64(xrpcFile.Size),
58
56
}
59
57
// Convert last commit info if present
60
58
if xrpcFile.Last_commit != nil {
···
97
95
}
98
96
}
99
97
sortFiles(result.Files)
98
+
100
99
rp.pages.RepoTree(w, pages.RepoTreeParams{
101
100
LoggedInUser: user,
102
101
BreadCrumbs: breadcrumbs,
+4
-13
knotserver/git/tree.go
+4
-13
knotserver/git/tree.go
···
7
7
"path"
8
8
"time"
9
9
10
+
"github.com/go-git/go-git/v5/plumbing/filemode"
10
11
"github.com/go-git/go-git/v5/plumbing/object"
11
12
"tangled.org/core/types"
12
13
)
···
53
54
}
54
55
55
56
for _, e := range subtree.Entries {
56
-
mode, _ := e.Mode.ToOSFileMode()
57
57
sz, _ := subtree.Size(e.Name)
58
-
59
58
fpath := path.Join(parent, e.Name)
60
59
61
60
var lastCommit *types.LastCommitInfo
···
69
68
70
69
nts = append(nts, types.NiceTree{
71
70
Name: e.Name,
72
-
Mode: mode.String(),
73
-
IsFile: e.Mode.IsFile(),
71
+
Mode: e.Mode.String(),
74
72
Size: sz,
75
73
LastCommit: lastCommit,
76
74
})
···
126
124
default:
127
125
}
128
126
129
-
mode, err := e.Mode.ToOSFileMode()
130
-
if err != nil {
131
-
// TODO: log this
132
-
continue
133
-
}
134
-
135
127
if e.Mode.IsFile() {
136
-
err = cb(e, currentTree, root)
137
-
if errors.Is(err, TerminateWalk) {
128
+
if err := cb(e, currentTree, root); errors.Is(err, TerminateWalk) {
138
129
return err
139
130
}
140
131
}
141
132
142
133
// e is a directory
143
-
if mode.IsDir() {
134
+
if e.Mode == filemode.Dir {
144
135
subtree, err := currentTree.Tree(e.Name)
145
136
if err != nil {
146
137
return fmt.Errorf("sub tree %s: %w", e.Name, err)
+1
-1
knotserver/ingester.go
+1
-1
knotserver/ingester.go
+1
-1
knotserver/internal.go
+1
-1
knotserver/internal.go
+3
-5
knotserver/xrpc/repo_tree.go
+3
-5
knotserver/xrpc/repo_tree.go
···
67
67
treeEntries := make([]*tangled.RepoTree_TreeEntry, len(files))
68
68
for i, file := range files {
69
69
entry := &tangled.RepoTree_TreeEntry{
70
-
Name: file.Name,
71
-
Mode: file.Mode,
72
-
Size: file.Size,
73
-
Is_file: file.IsFile,
74
-
Is_subtree: file.IsSubtree,
70
+
Name: file.Name,
71
+
Mode: file.Mode,
72
+
Size: file.Size,
75
73
}
76
74
77
75
if file.LastCommit != nil {
+28
-5
types/tree.go
+28
-5
types/tree.go
···
4
4
"time"
5
5
6
6
"github.com/go-git/go-git/v5/plumbing"
7
+
"github.com/go-git/go-git/v5/plumbing/filemode"
7
8
)
8
9
9
10
// A nicer git tree representation.
10
11
type NiceTree struct {
11
12
// Relative path
12
-
Name string `json:"name"`
13
-
Mode string `json:"mode"`
14
-
Size int64 `json:"size"`
15
-
IsFile bool `json:"is_file"`
16
-
IsSubtree bool `json:"is_subtree"`
13
+
Name string `json:"name"`
14
+
Mode string `json:"mode"`
15
+
Size int64 `json:"size"`
17
16
18
17
LastCommit *LastCommitInfo `json:"last_commit,omitempty"`
18
+
}
19
+
20
+
func (t *NiceTree) FileMode() (filemode.FileMode, error) {
21
+
return filemode.New(t.Mode)
22
+
}
23
+
24
+
func (t *NiceTree) IsFile() bool {
25
+
m, err := t.FileMode()
26
+
27
+
if err != nil {
28
+
return false
29
+
}
30
+
31
+
return m.IsFile()
32
+
}
33
+
34
+
func (t *NiceTree) IsSubmodule() bool {
35
+
m, err := t.FileMode()
36
+
37
+
if err != nil {
38
+
return false
39
+
}
40
+
41
+
return m == filemode.Submodule
19
42
}
20
43
21
44
type LastCommitInfo struct {