aboutsummaryrefslogtreecommitdiffstats
path: root/models
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
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')
-rw-r--r--models/fixtures/repo_unit.yml37
-rw-r--r--models/fixtures/repository.yml11
-rw-r--r--models/fixtures/user.yml2
-rw-r--r--models/repo_indexer.go16
-rw-r--r--models/repo_list_test.go6
5 files changed, 66 insertions, 6 deletions
diff --git a/models/fixtures/repo_unit.yml b/models/fixtures/repo_unit.yml
index 43311c4764..014e5155ba 100644
--- a/models/fixtures/repo_unit.yml
+++ b/models/fixtures/repo_unit.yml
@@ -402,4 +402,39 @@
repo_id: 11
type: 1
config: "{}"
- created_unix: 946684810 \ No newline at end of file
+ created_unix: 946684810
+
+-
+ id: 59
+ repo_id: 42
+ type: 1
+ config: "{}"
+ created_unix: 946684810
+
+-
+ id: 60
+ repo_id: 42
+ type: 4
+ config: "{}"
+ created_unix: 946684810
+
+-
+ id: 61
+ repo_id: 42
+ type: 5
+ config: "{}"
+ created_unix: 946684810
+
+-
+ id: 62
+ repo_id: 42
+ type: 2
+ config: "{\"EnableTimetracker\":true,\"AllowOnlyContributorsToTrackTime\":true}"
+ created_unix: 946684810
+
+-
+ id: 63
+ repo_id: 42
+ type: 3
+ config: "{\"IgnoreWhitespaceConflicts\":false,\"AllowMerge\":true,\"AllowRebase\":true,\"AllowRebaseMerge\":true,\"AllowSquash\":true}"
+ created_unix: 946684810
diff --git a/models/fixtures/repository.yml b/models/fixtures/repository.yml
index 16b0045b21..e1370aa098 100644
--- a/models/fixtures/repository.yml
+++ b/models/fixtures/repository.yml
@@ -497,4 +497,15 @@
num_stars: 0
num_forks: 0
num_issues: 0
+ is_mirror: false
+
+-
+ id: 42
+ owner_id: 2
+ lower_name: glob
+ name: glob
+ is_private: false
+ num_stars: 0
+ num_forks: 0
+ num_issues: 0
is_mirror: false \ No newline at end of file
diff --git a/models/fixtures/user.yml b/models/fixtures/user.yml
index 37225f1449..5177173e7e 100644
--- a/models/fixtures/user.yml
+++ b/models/fixtures/user.yml
@@ -30,7 +30,7 @@
is_admin: false
avatar: avatar2
avatar_email: user2@example.com
- num_repos: 8
+ num_repos: 9
num_stars: 2
num_followers: 2
num_following: 1
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
diff --git a/models/repo_list_test.go b/models/repo_list_test.go
index 76ae9ab3d7..e3a7acd4a4 100644
--- a/models/repo_list_test.go
+++ b/models/repo_list_test.go
@@ -175,10 +175,10 @@ func TestSearchRepository(t *testing.T) {
count: 14},
{name: "AllPublic/PublicRepositoriesOfUserIncludingCollaborative",
opts: &SearchRepoOptions{Page: 1, PageSize: 10, OwnerID: 15, AllPublic: true},
- count: 21},
+ count: 22},
{name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborative",
opts: &SearchRepoOptions{Page: 1, PageSize: 10, OwnerID: 15, Private: true, AllPublic: true},
- count: 27},
+ count: 28},
{name: "AllPublic/PublicAndPrivateRepositoriesOfUserIncludingCollaborativeByName",
opts: &SearchRepoOptions{Keyword: "test", Page: 1, PageSize: 10, OwnerID: 15, Private: true, AllPublic: true},
count: 15},
@@ -187,7 +187,7 @@ func TestSearchRepository(t *testing.T) {
count: 13},
{name: "AllPublic/PublicRepositoriesOfOrganization",
opts: &SearchRepoOptions{Page: 1, PageSize: 10, OwnerID: 17, AllPublic: true, Collaborate: util.OptionalBoolFalse},
- count: 21},
+ count: 22},
}
for _, testCase := range testCases {