@@ -10,8 +10,6 @@ import (
1010 "bytes"
1111 "fmt"
1212 "io"
13- "strconv"
14- "strings"
1513
1614 "code.gitea.io/gitea/modules/log"
1715)
@@ -21,64 +19,6 @@ func ParseTreeEntries(data []byte) ([]*TreeEntry, error) {
2119 return parseTreeEntries (data , nil )
2220}
2321
24- var sepSpace = []byte {' ' }
25-
26- func parseLsTreeLine (line []byte ) (* TreeEntry , error ) {
27- // expect line to be of the form:
28- // <mode> <type> <sha> <space-padded-size>\t<filename>
29- // <mode> <type> <sha>\t<filename>
30-
31- var err error
32- posTab := bytes .IndexByte (line , '\t' )
33- if posTab == - 1 {
34- return nil , fmt .Errorf ("invalid ls-tree output (no tab): %q" , line )
35- }
36-
37- entry := new (TreeEntry )
38-
39- entryAttrs := line [:posTab ]
40- entryName := line [posTab + 1 :]
41-
42- entryMode , entryAttrs , _ := bytes .Cut (entryAttrs , sepSpace )
43- _ /* entryType */ , entryAttrs , _ = bytes .Cut (entryAttrs , sepSpace ) // the type is not used, the mode is enough to determine the type
44- entryObjectID , entryAttrs , _ := bytes .Cut (entryAttrs , sepSpace )
45- if len (entryAttrs ) > 0 {
46- entrySize := entryAttrs // the last field is the space-padded-size
47- entry .size , _ = strconv .ParseInt (strings .TrimSpace (string (entrySize )), 10 , 64 )
48- entry .sized = true
49- }
50-
51- switch string (entryMode ) {
52- case "100644" :
53- entry .entryMode = EntryModeBlob
54- case "100755" :
55- entry .entryMode = EntryModeExec
56- case "120000" :
57- entry .entryMode = EntryModeSymlink
58- case "160000" :
59- entry .entryMode = EntryModeCommit
60- case "040000" , "040755" : // git uses 040000 for tree object, but some users may get 040755 for unknown reasons
61- entry .entryMode = EntryModeTree
62- default :
63- return nil , fmt .Errorf ("unknown type: %v" , string (entryMode ))
64- }
65-
66- entry .ID , err = NewIDFromString (string (entryObjectID ))
67- if err != nil {
68- return nil , fmt .Errorf ("invalid ls-tree output (invalid object id): %q, err: %w" , line , err )
69- }
70-
71- if len (entryName ) > 0 && entryName [0 ] == '"' {
72- entry .name , err = strconv .Unquote (string (entryName ))
73- if err != nil {
74- return nil , fmt .Errorf ("invalid ls-tree output (invalid name): %q, err: %w" , line , err )
75- }
76- } else {
77- entry .name = string (entryName )
78- }
79- return entry , nil
80- }
81-
8222// parseTreeEntries FIXME this function's design is not right, it should make the caller read all data into memory
8323func parseTreeEntries (data []byte , ptree * Tree ) ([]* TreeEntry , error ) {
8424 entries := make ([]* TreeEntry , 0 , bytes .Count (data , []byte {'\n' })+ 1 )
0 commit comments