From 06392479b44f4af913a9067fba6d4947ed323235 Mon Sep 17 00:00:00 2001 From: guillep2k Date: Fri, 2 Aug 2019 03:57:53 -0300 Subject: [PATCH] Skip non-regular files (e.g. submodules) on repo indexing (#7711) --- models/repo_indexer.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/models/repo_indexer.go b/models/repo_indexer.go index 140ec66c035..83383807a79 100644 --- a/models/repo_indexer.go +++ b/models/repo_indexer.go @@ -231,20 +231,28 @@ func addDelete(filename string, repo *Repository, batch rupture.FlushingBatch) e return indexerUpdate.AddToFlushingBatch(batch) } +func isIndexable(entry *git.TreeEntry) bool { + return entry.IsRegular() +} + // parseGitLsTreeOutput parses the output of a `git ls-tree -r --full-name` command func parseGitLsTreeOutput(stdout []byte) ([]fileUpdate, error) { entries, err := git.ParseTreeEntries(stdout) if err != nil { return nil, err } + var idxCount = 0 updates := make([]fileUpdate, len(entries)) - for i, entry := range entries { - updates[i] = fileUpdate{ - Filename: entry.Name(), - BlobSha: entry.ID.String(), + for _, entry := range entries { + if isIndexable(entry) { + updates[idxCount] = fileUpdate{ + Filename: entry.Name(), + BlobSha: entry.ID.String(), + } + idxCount++ } } - return updates, nil + return updates[:idxCount], nil } // genesisChanges get changes to add repo to the indexer for the first time