e019eb33a2
When trying to find a `README.md` in a `.profile` repo, do so case insensitively. This change does not make it possible to render readmes in formats other than Markdown, it just removes the hard-coded "README.md". Also adds a few tests to make sure the change works. Fixes #1494. Signed-off-by: Gergely Nagy <forgejo@gergo.csillger.hu> (cherry picked from commit edd219d8e9d69becb9814ab0a8359555e80fcd4f) (cherry picked from commit 2c0105ef17b9673e6892a66aa689af7c5c87b8a1) (cherry picked from commit 3975a9f3aaf8ed3ceb5788abc325dbe8e89225d3) (cherry picked from commit dee4a18423151ac7f22221e6fce12d863921c200) (cherry picked from commit 60aee6370fb15b12fffc6f29582dd4a235f87d94)
40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
// Copyright 2015 The Gogs Authors. All rights reserved.
|
|
// Copyright 2019 The Gitea Authors. All rights reserved.
|
|
// Copyright 2024 The Forgejo Authors c/o Codeberg e.V.. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package git
|
|
|
|
import "strings"
|
|
|
|
// GetBlobByPath get the blob object according the path
|
|
func (t *Tree) GetBlobByPath(relpath string) (*Blob, error) {
|
|
entry, err := t.GetTreeEntryByPath(relpath)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if !entry.IsDir() && !entry.IsSubModule() {
|
|
return entry.Blob(), nil
|
|
}
|
|
|
|
return nil, ErrNotExist{"", relpath}
|
|
}
|
|
|
|
// GetBlobByFoldedPath returns the blob object at relpath, regardless of the
|
|
// case of relpath. If there are multiple files with the same case-insensitive
|
|
// name, the first one found will be returned.
|
|
func (t *Tree) GetBlobByFoldedPath(relpath string) (*Blob, error) {
|
|
entries, err := t.ListEntries()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
for _, entry := range entries {
|
|
if strings.EqualFold(entry.Name(), relpath) {
|
|
return t.GetBlobByPath(entry.Name())
|
|
}
|
|
}
|
|
|
|
return nil, ErrNotExist{"", relpath}
|
|
}
|