From 8bfb9d210ff267c6df5d78138a3d4b3532e6e1d4 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 24 Aug 2025 16:17:30 +0200 Subject: [PATCH] fix: parse extra weird tree mode value (#8900) - It also seems possible `040775` to be a valid tree mode. - Ref: https://codeberg.org/Codeberg/Community/issues/2086 - As this is 'officially' not possible I cannot make a small reproducer without importing a existing repository. ## Testing 1. Import https://codeberg.org/GeekRuthie/Dist-Zilla-PluginBundle-Author-GEEKRUTH via the migration tool (either git or github type) 2. Observe that there's no error when viewing the migrated repository. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8900 Reviewed-by: Earl Warren Co-authored-by: Gusted Co-committed-by: Gusted --- modules/git/parse.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/git/parse.go b/modules/git/parse.go index 6bc32057a7..69649460b4 100644 --- a/modules/git/parse.go +++ b/modules/git/parse.go @@ -64,7 +64,7 @@ func parseTreeEntries(data []byte, ptree *Tree) ([]*TreeEntry, error) { entry.entryMode = EntryModeSymlink case "160000": entry.entryMode = EntryModeCommit - case "040000", "040755": // git uses 040000 for tree object, but some users may get 040755 for unknown reasons + case "040000", "040755", "040775": // git uses 040000 for tree object, but some users may get 040755 or 040775 for unknown reasons entry.entryMode = EntryModeTree default: return nil, fmt.Errorf("unknown type: %v", string(entryMode)) @@ -118,7 +118,7 @@ loop: entry.entryMode = EntryModeSymlink case "160000": entry.entryMode = EntryModeCommit - case "40000", "40755": // git uses 40000 for tree object, but some users may get 40755 for unknown reasons + case "40000", "40755", "40775": // git uses 40000 for tree object, but some users may get 40755 or 40775 for unknown reasons entry.entryMode = EntryModeTree default: log.Debug("Unknown mode: %v", string(mode))