@@ -65,27 +65,20 @@ type PageMeta struct {
65
65
66
66
// findEntryForFile finds the tree entry for a target filepath.
67
67
func findEntryForFile (commit * git.Commit , target string ) (* git.TreeEntry , error ) {
68
- entries , err := commit .ListEntries ( )
69
- if err != nil {
68
+ entry , err := commit .GetTreeEntryByPath ( target )
69
+ if err != nil && ! git . IsErrNotExist ( err ) {
70
70
return nil , err
71
71
}
72
- // The longest name should be checked first
73
- for _ , entry := range entries {
74
- if entry .IsRegular () && entry .Name () == target {
75
- return entry , nil
76
- }
72
+ if entry != nil {
73
+ return entry , nil
77
74
}
75
+
78
76
// Then the unescaped, shortest alternative
79
77
var unescapedTarget string
80
78
if unescapedTarget , err = url .QueryUnescape (target ); err != nil {
81
79
return nil , err
82
80
}
83
- for _ , entry := range entries {
84
- if entry .IsRegular () && entry .Name () == unescapedTarget {
85
- return entry , nil
86
- }
87
- }
88
- return nil , nil
81
+ return commit .GetTreeEntryByPath (unescapedTarget )
89
82
}
90
83
91
84
func findWikiRepoCommit (ctx * context.Context ) (* git.Repository , * git.Commit , error ) {
@@ -122,10 +115,9 @@ func wikiContentsByEntry(ctx *context.Context, entry *git.TreeEntry) []byte {
122
115
// wikiContentsByName returns the contents of a wiki page, along with a boolean
123
116
// indicating whether the page exists. Writes to ctx if an error occurs.
124
117
func wikiContentsByName (ctx * context.Context , commit * git.Commit , wikiName string ) ([]byte , * git.TreeEntry , string , bool ) {
125
- var entry * git.TreeEntry
126
- var err error
127
118
pageFilename := models .WikiNameToFilename (wikiName )
128
- if entry , err = findEntryForFile (commit , pageFilename ); err != nil {
119
+ entry , err := findEntryForFile (commit , pageFilename )
120
+ if err != nil && ! git .IsErrNotExist (err ) {
129
121
ctx .ServerError ("findEntryForFile" , err )
130
122
return nil , nil , "" , false
131
123
} else if entry == nil {
@@ -517,7 +509,7 @@ func WikiRaw(ctx *context.Context) {
517
509
if commit != nil {
518
510
// Try to find a file with that name
519
511
entry , err = findEntryForFile (commit , providedPath )
520
- if err != nil {
512
+ if err != nil && ! git . IsErrNotExist ( err ) {
521
513
ctx .ServerError ("findFile" , err )
522
514
return
523
515
}
@@ -530,7 +522,7 @@ func WikiRaw(ctx *context.Context) {
530
522
531
523
wikiPath := models .WikiNameToFilename (providedPath )
532
524
entry , err = findEntryForFile (commit , wikiPath )
533
- if err != nil {
525
+ if err != nil && ! git . IsErrNotExist ( err ) {
534
526
ctx .ServerError ("findFile" , err )
535
527
return
536
528
}
0 commit comments