summaryrefslogtreecommitdiff
path: root/app/models/namespace.rb
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch '4084-epics-username-autocomplete-ce' into 'master'Douwe Maan2018-05-071-0/+7
|\ | | | | | | | | Backport CE changes from "autocomplete usernames in Epic comments/description" See merge request gitlab-org/gitlab-ce!18605
| * Backport of 4084-epics-username-autocompleteMario de la Ossa2018-05-041-0/+7
| |
* | Rename RunnerGroup -> RunnerNamespaceDylan Griffith2018-05-021-0/+3
|/
* Get GITLAB_FEATURES from Project#licensed_features instead of ↵5320-fix-gitlab-features-env-varDylan Griffith2018-04-091-4/+0
| | | | Namespace#features (#5320)
* Extend API for importing a project export with overwrite supportFrancisco Javier López2018-04-061-0/+4
|
* Fix a typo, a conflict and improve documentationissue_38337Felipe Artur2018-03-061-1/+1
|
* Bring one group board to CEFelipe Artur2018-03-031-0/+5
|
* Expose GITLAB_FEATURES as CI/CD variable (fixes #40994)40994-expose-features-as-ci-cd-variableDylan Griffith2018-02-071-0/+4
|
* Validate path uniqueness only on Route, and bubble up appropriatelyDouwe Maan2018-02-061-1/+0
|
* Validate user namespace before saving so that errors persist on modeldm-user-namespace-route-path-validationDouwe Maan2018-02-061-0/+3
|
* 31885 - Ability to transfer a single group to another groupMayra Cabrera2018-02-061-15/+11
|
* Fix export removal for hashed-storage projects within a renamed or deleted ↵Nick Thomas2018-02-051-0/+18
| | | | namespace
* use Gitlab::UserSettings directly as a singleton instead of ↵Mario de la Ossa2018-02-021-1/+0
| | | | including/extending it
* Remove soft removals related codeYorick Peterse2018-01-081-8/+3
| | | | | | | | | | | | | | This removes all usage of soft removals except for the "pending delete" system implemented for projects. This in turn simplifies all the query plans of the models that used soft removals. Since we don't really use soft removals for anything useful there's no point in keeping it around. This _does_ mean that hard removals of issues (which only admins can do if I'm not mistaken) can influence the "iid" values, but that code is broken to begin with. More on this (and how to fix it) can be found in https://gitlab.com/gitlab-org/gitlab-ce/issues/31114. Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/37447
* Write projects config to all projects inside namespace in batchesDouglas Barbosa Alexandre2018-01-031-2/+2
|
* Refactoring Project#write_repository_configDouglas Barbosa Alexandre2018-01-031-1/+1
|
* Update project full path in .git/config when renaming namespaceDouglas Barbosa Alexandre2018-01-031-0/+7
|
* Allow git pull/push on project redirectsMayra Cabrera2017-12-081-0/+11
|
* Cache the forks in a namespace in the RequestStoreBob Van Landuyt2017-12-041-1/+11
| | | | | | | | | On the `show` of a project that is part of a fork network. We check if the user already created a fork of this project in their personal namespace. We do this in several places, so caching the result of this query in the request store prevents us from repeating it.
* Use fuzzy search with minimum length of 3 characters where appropriatedm-search-patternDouwe Maan2017-11-271-4/+1
|
* Use Gitlab::SQL::Pattern where appropriateDouwe Maan2017-11-241-1/+2
|
* Reallow project paths ending in periodsdm-reallow-project-path-ending-in-periodDouwe Maan2017-11-061-1/+1
|
* Merge branch 'master' into bvl-group-treesBob Van Landuyt2017-10-101-1/+3
|\
| * Find forks within users/namespaces using fork membershipsBob Van Landuyt2017-10-071-1/+3
| |
* | Move the `ancestors_upto` to `Project` and `Namespace`Bob Van Landuyt2017-10-101-0/+7
|/
* Fix setting share_with_group_lockfix-share-with-group-lock-updateYorick Peterse2017-09-151-1/+8
| | | | | | | | | | | | | | | | | | | Prior to this commit running Namespace#force_share_with_group_lock_on_descendants would result in updating _all_ namespaces in the namespaces table, not just the descendants. This is the result of ActiveRecord::Relation#update_all not taking into account the CTE. To work around this we use the CTE query as a sub-query instead of directly calling #update_all. To prevent this from happening the relations returned by Gitlab::GroupHierarchy are now marked as read-only, resulting in an error being raised when methods such as #update_all are used. Fortunately on GitLab.com our statement timeouts appear to have prevented this query from actually doing any damage other than causing a very large amount of dead tuples. Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/37916
* Refactor based on code reviewMichael Kozono2017-09-061-2/+2
|
* Enable share_with_group_lock on subgroupMichael Kozono2017-09-061-0/+14
| | | | …when needed
* Don't show references to Pages when not availableZeger-Jan van de Weg2017-08-311-0/+4
| | | | | | | In this instance its subgroups, and given we can't deploy it, we shouldn't allow it to be shown. Fixes gitlab-org/gitlab-ce#34864
* Speed up Group#user_ids_for_project_authorizationsNick Thomas2017-08-141-0/+14
|
* Small refactor in LegacyNamespace and moved back send_update_instructions28283-legacy-storage-formatGabriel Mazetto2017-08-011-0/+6
|
* Move storage specific code from Namespace and Project to concernsGabriel Mazetto2017-08-011-100/+4
|
* Promote visibility level helpers from Group to NamespaceNick Thomas2017-07-171-0/+5
| | | | | In EE, we make use of `namespace#public?` in projects. When the project is in a personal namespace, this breaks as the `public?` helper isn't present.
* Added Cop to blacklist the use of `dependent:`Yorick Peterse2017-07-061-2/+2
| | | | | | | | This is allowed for existing instances so we don't end up 76 offenses right away, but for new code one should _only_ use this if they _have_ to remove non database data. Even then it's usually better to do this in a service class as this gives you more control over how to remove the data (e.g. in bulk).
* Defer project destroys within a namespace in ↵Stan Hu2017-06-291-0/+6
| | | | | | | | | | | Groups::DestroyService#async_execute Group#destroy would actually hard-delete all associated projects even though the acts_as_paranoia gem is used, preventing Projects::DestroyService from doing any work. We first noticed this while trying to log all projects deletion to the Geo log.
* Remove Namespace model default scope override and write additional test to ↵refactor-namespace-default-scope-overrideTiago Botelho2017-06-291-3/+1
| | | | Project search
* Removes redundant pending delete checks30708-stop-using-deleted-at-to-filter-namespacesTiago Botelho2017-06-281-0/+2
|
* Enable Style/DotPosition Rubocop :cop:Grzegorz Bizon2017-06-211-10/+10
|
* Don’t schedule workers from inside transactionsDouwe Maan2017-06-021-1/+4
|
* Merge branch 'rework-authorizations-performance' into 'master'Douwe Maan2017-05-291-15/+9
|\ | | | | | | | | Rework project authorizations and nested groups for better performance See merge request !10885
| * Hide nested group UI/API support for MySQLYorick Peterse2017-05-171-3/+1
| | | | | | | | | | | | This hides/disables some UI elements and API parameters related to nested groups when MySQL is used, since nested groups are not supported for MySQL.
| * Use CTEs for nested groups and authorizationsYorick Peterse2017-05-171-15/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit introduces the usage of Common Table Expressions (CTEs) to efficiently retrieve nested group hierarchies, without having to rely on the "routes" table (which is an _incredibly_ inefficient way of getting the data). This requires a patch to ActiveRecord (found in the added initializer) to work properly as ActiveRecord doesn't support WITH statements properly out of the box. Unfortunately MySQL provides no efficient way of getting nested groups. For example, the old routes setup could easily take 5-10 seconds depending on the amount of "routes" in a database. Providing vastly different logic for both MySQL and PostgreSQL will negatively impact the development process. Because of this the various nested groups related methods return empty relations when used in combination with MySQL. For project authorizations the logic is split up into two classes: * Gitlab::ProjectAuthorizations::WithNestedGroups * Gitlab::ProjectAuthorizations::WithoutNestedGroups Both classes get the fresh project authorizations (= as they should be in the "project_authorizations" table), including nested groups if PostgreSQL is used. The logic of these two classes is quite different apart from their public interface. This complicates development a bit, but unfortunately there is no way around this. This commit also introduces Gitlab::GroupHierarchy. This class can be used to get the ancestors and descendants of a base relation, or both by using a UNION. This in turn is used by methods such as: * Namespace#ancestors * Namespace#descendants * User#all_expanded_groups Again this class relies on CTEs and thus only works on PostgreSQL. The Namespace methods will return an empty relation when MySQL is used, while User#all_expanded_groups will return only the groups a user is a direct member of. Performance wise the impact is quite large. For example, on GitLab.com Namespace#descendants used to take around 580 ms to retrieve data for a particular user. Using CTEs we are able to reduce this down to roughly 1 millisecond, returning the exact same data. == On The Fly Refreshing Refreshing of authorizations on the fly (= when users.authorized_projects_populated was not set) is removed with this commit. This simplifies the code, and ensures any queries used for authorizations are not mutated because they are executed in a Rails scope (e.g. Project.visible_to_user). This commit includes a migration to schedule refreshing authorizations for all users, ensuring all of them have their authorizations in place. Said migration schedules users in batches of 5000, with 5 minutes between every batch to smear the load around a bit. == Spec Changes This commit also introduces some changes to various specs. For example, some specs for ProjectTeam assumed that creating a personal project would _not_ lead to the owner having access, which is incorrect. Because we also no longer refresh authorizations on the fly for new users some code had to be added to the "empty_project" factory. This chunk of code ensures that the owner's permissions are refreshed after creating the project, something that is normally done in Projects::CreateService.
* | Use Namespace.for_user scope (formerly known as Namespace.root)mk-fix-issue-1843Douwe Maan2017-05-181-1/+1
|/
* Enable the Style/TrailingCommaInArguments copRémy Coutable2017-05-101-1/+1
| | | | | | Use the EnforcedStyleForMultiline: no_comma option. Signed-off-by: Rémy Coutable <remy@rymai.me>
* Rename `NamespaceValidator` to `DynamicPathValidator`Bob Van Landuyt2017-05-011-1/+1
| | | | This reflects better that it validates paths instead of a namespace model
* Check `has_parent?` for determining validation typeBob Van Landuyt2017-05-011-0/+4
|
* Fix subgroup repository disappearance if group was moveddz-fix-group-moveDmitriy Zaporozhets2017-04-051-2/+8
| | | | Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
* Merge branch '29843-project-subgroup-transfer' into 'security'Rémy Coutable2017-03-291-9/+9
| | | | | | Use full path for moving directories when changing namespace path See merge request !2078
* Escape route path for LIKE queriesJarka Kadlecova2017-03-211-1/+1
|
* Merge branch 'master' into zj-create-mattermost-teamZ.J. van de Weg2017-03-021-8/+2
|\