summaryrefslogtreecommitdiffstats
path: root/models/repo_indexer.go
diff options
context:
space:
mode:
authorguillep2k <18600385+guillep2k@users.noreply.github.com>2019-09-11 14:26:28 -0300
committerLauris BH <lauris@nix.lv>2019-09-11 20:26:28 +0300
commit72f6d5c882dc1adfd249e85576aaf6384ee39251 (patch)
tree63c5c5bffb02eba06a10307f1c8f290e9be64386 /models/repo_indexer.go
parent3fd0eec900126d392ff7a45c510cfe64639c198e (diff)
downloadgitea-72f6d5c882dc1adfd249e85576aaf6384ee39251.tar.gz
gitea-72f6d5c882dc1adfd249e85576aaf6384ee39251.zip
Restrict repository indexing by glob match (#7767)
* Restrict repository indexing by file extension * Use REPO_EXTENSIONS_LIST_INCLUDE instead of REPO_EXTENSIONS_LIST_EXCLUDE and have a more flexible extension pattern * Corrected to pass lint gosimple * Add wildcard support to REPO_INDEXER_EXTENSIONS * This reverts commit 72a650c8e42f4abf59d5df7cd5dc27b451494cc6. * Add wildcard support to REPO_INDEXER_EXTENSIONS (no make vendor) * Simplify isIndexable() for better clarity * Add gobwas/glob to vendors * manually set appengine new release * Implement better REPO_INDEXER_INCLUDE and REPO_INDEXER_EXCLUDE * Add unit and integration tests * Update app.ini.sample and reword config-cheat-sheet * Add doc page and correct app.ini.sample * Some polish on the doc * Simplify code as suggested by @lafriks
Diffstat (limited to 'models/repo_indexer.go')
-rw-r--r--models/repo_indexer.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/models/repo_indexer.go b/models/repo_indexer.go
index f625b80389..b842a1c87f 100644
--- a/models/repo_indexer.go
+++ b/models/repo_indexer.go
@@ -234,7 +234,21 @@ func addDelete(filename string, repo *Repository, batch rupture.FlushingBatch) e
}
func isIndexable(entry *git.TreeEntry) bool {
- return entry.IsRegular() || entry.IsExecutable()
+ if !entry.IsRegular() && !entry.IsExecutable() {
+ return false
+ }
+ name := strings.ToLower(entry.Name())
+ for _, g := range setting.Indexer.ExcludePatterns {
+ if g.Match(name) {
+ return false
+ }
+ }
+ for _, g := range setting.Indexer.IncludePatterns {
+ if g.Match(name) {
+ return true
+ }
+ }
+ return len(setting.Indexer.IncludePatterns) == 0
}
// parseGitLsTreeOutput parses the output of a `git ls-tree -r --full-name` command