summaryrefslogtreecommitdiff
path: root/spec/lib
Commit message (Collapse)AuthorAgeFilesLines
* Re-use queries in reference parsersreuse-queries-in-reference-parsersYorick Peterse2016-07-081-0/+75
| | | | | This caches various queries to ensure that multiple reference extraction runs re-use any objects queried in previous runs.
* Merge branch '1548-average-commits-per-day' into 'master' Rémy Coutable2016-07-081-0/+39
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix: Infinity Bug in Commit Statistics ## What does this MR do? It fixes a logic bug in the commits statistics: The code assumed that the amount of days involved in a commit range is equal to the difference between the first and last date. This is not true, though, as (from a human standpoint), a commit yesterday and a commit today involve two days, not one. Similarly, a fresh project with only commits made today already 'used' one day. Since the number of involved days used to be zero for new projects, the result for commits per day quite often amounted to `Infinity`… ## Are there points in the code the reviewer needs to double check? The test file. I hope it is up to the standards of GitLab. ## Why was this MR needed? The bug occurres especially for new users with their first project while exploring GitLab. ## What are the relevant issue numbers? This bug was reported as #1548. ## Screenshots (if relevant) See merge request !4231
| * Infinity Bug in Commit StatisticsJonas Weber2016-05-201-0/+39
| | | | | | | | fixes #1548
* | Merge branch '18627-wildcard-branch-protection' into 'master' Douwe Maan2016-07-071-0/+70
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow specifying protected branches using wildcards Closes #18627 # Tasks - [ ] #18627 !4665 Allow specifying protected branches using wildcards - [x] Find existing usages of protected branches - Protecting branches - `ProtectedBranchesController` is used to mark a branch protected/unprotected - `API::Branches` can be used to mark a branch protected/unprotected - Enforcing branch protection - `Gitlab::GitAccess` has helpers (`can_push_to_branch?`, `check`) that are used to deny pushes if a branch is protected - Over SSH: `gitlab-shell` receives a push, and calls `/allowed` on the GitLab API, which calls `GitAccess.check` - Over HTTP: - `gitlab-workhorse` receives the request, and forwards it to rails - Rails (in the `GitHttpController#git-recieve-pack`) runs basic checks (is the user logged in, not protected branch checks) and returns ok with `GL_ID` and `RepoPath` - `gitlab-workhorse` looks at the response, and calls the relevant `gitlab-shell` action from `git-http/handlePostRPC` - Rest of this flow is the same as the SSH flow above - [x] Implementation - [x] Backend - [x] Change `project#protected_branch?` to look at wildcard protected branches - [x] Change `project#developers_can_push_to_protected_branch?` - [x] Change `project#open_branches` - [x] Better error message when creating a disallowed branch from the Web UI - [x] Frontend - [x] Protected branches page should allow typing out a wildcard pattern - [x] Add help text explaining the use of wildcards - [x] Show matching branches for each protected branch - [x] ~~On the index page~~ - [x] On a show page - [x] Index? - [x] Can't have the "last commit" column for wildcard protected branches - [x] Fix / write tests - [x] What happens if a hook is missing in dev? - [x] Refactor - [x] Test workflows - Create a branch matching a wildcard pattern - Push to a branch matching a wildcard pattern - Force push to a branch matching a wildcard pattern - Delete a branch matching a wildcard pattern - [x] Test using Web UI - [x] Test over SSH - [x] Test over HTTP - [x] Test as developer and master - [x] Investigate performance - [x] Test with a large number of protected branches / branches - [x] Paginate list of protected branches - [x] ~~Possibly rewrite `open_branches`~~ - [x] Add `iid`s to existing `ProtectedBranch`es - [x] Add documentation - [x] Add CHANGELOG entry - [x] Add screenshots - [x] Make sure [build](https://gitlab.com/gitlab-org/gitlab-ce/commit/2f753e3ed2ce681b4444944d521f4419e8ed37f7/builds) passes - [x] Assign to endboss for review - [x] Address @DouweM's comments - [x] `protected_branch_params` - [x] `exact_match` instead of `explicit_match` - [x] When would self.name be blank? - [x] Move `protected_branches.each` to a partial - [x] Move `matching_branches.each` to a partial - [x] If the branch is in @matching_branches, it's not been removed - [x] move this regex to a method and memoize it - [x] `commit_sha` directly for exact matches - [x] Number of matches for wildcard matches, with a link - [x] Wait for [build](https://gitlab.com/gitlab-org/gitlab-ce/commit/43f9ce0e88194b8f719bb1c1e656b7fc13278d56/builds) to pass - [x] Respond to @DouweM's comments - [x] Don't use iid - [x] Controller should use `@project.protected_branches.new` - [x] move the memoization to `def wildcard_regex` - [x] render with `collection: @protected_branches` - [x] Wait for [build](https://gitlab.com/gitlab-org/gitlab-ce/commit/f7beedf122fa0c7aa89e86181fe7499321fb10ca/builds) to pass - [x] Wait for @DouweM's review - [x] Wait for @jschatz1's review - [x] Respond to @jschatz1's comments - [x] Use the new dropdown style - [x] description should be moved to the description section without the styling - [x] Protect button should be disabled when no branch is selected - [x] Update screenshots - [x] Merge conflicts - [x] Make sure [build](https://gitlab.com/gitlab-org/gitlab-ce/commit/20f3cfe8d5540eab64c2ba548043d600b28c61ba/builds) passes - [ ] Revisit performance, possibly with staging/production data - [ ] Get a dump of staging / run against staging live - [ ] Get SSH access to staging - [ ] Wait for review/merge # Screenshots ## Creating wildcard protected branches ![1](/uploads/9446afccfdf6fa381e00c800dd2cc82e/1.png) ![2](/uploads/0b154503b297a818d3577488c575d845/2.png) ![3](/uploads/36217f79df9e41cc1550601f02627fe8/3.png) ![4](/uploads/041ca9bd529bcfa5373fca67e917cbcb/4.png) ### Using the `GLDropdown` component ![2016-06-30_14-16-15](/uploads/508afc2a5e2463c2954641409a560d88/2016-06-30_14-16-15.gif) ## Enforcing wildcard protected branches ### From the Web UI ![Screen_Shot_2016-06-20_at_1.21.18_PM](/uploads/8b5d4b1911e9152698a0488daf1880bc/Screen_Shot_2016-06-20_at_1.21.18_PM.png) ### Over SSH ![SSH](/uploads/7365989d7e4c406ef37b6ae5106442c9/SSH.gif) ### Over HTTPS ![HTTPS](/uploads/a7c0f56ae58efcffc75e6700fa2f4ac0/HTTPS.gif) ## Listing matching branches ![Screen_Shot_2016-06-20_at_1.33.44_PM](/uploads/d054113022f5d7ec64c0e57e501ac104/Screen_Shot_2016-06-20_at_1.33.44_PM.png) See merge request !4665
| * | Improve the error message displayed when branch creation fails.Timothy Andrew2016-07-051-0/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Note: This feature was developed independently on master while this was in review. I've removed the conflicting bits and left the relevant additions, mainly a test for `Gitlab::Git::Hook`. The original commit message follows: 1. `gitlab-shell` outputs errors to `stderr`, but we weren't using this information, prior to this commit. Now we capture the `stderr`, and display it in the flash message when branch creation fails. 2. This can be used to display better errors for other git operation failures with small tweaks. 3. The return value of `Gitlab::Git::Hook#trigger` is changed from a simple `true`/`false` to a tuple of `[status, errors]`. All usages and tests have been updated to reflect this change. 4. This is only relevant to branch creation _from the Web UI_, since SSH and HTTP pushes access `gitlab-shell` either directly or through `gitlab-workhorse`. 5. A few minor changes need to be made on the `gitlab-shell` end. Right now, the `stderr` message it outputs is prefixed by "GitLab: ", which shows up in our flash message. This is better removed.
* | | Add tests for PositionDouwe Maan2016-07-061-0/+341
| | |
* | | Add tests for PositionTracerDouwe Maan2016-07-061-0/+1758
| | |
* | | Add DiffNote modelDouwe Maan2016-07-062-6/+6
| | |
* | | Add Gitlab::Diff::LineMapperDouwe Maan2016-07-061-0/+137
| | |
* | | Represent DiffRefs as proper class instead of tuple arrayDouwe Maan2016-07-063-6/+5
| | |
* | | Rename MergeRequest methods that return commits or shas to be more clear and ↵Douwe Maan2016-07-062-7/+7
| | | | | | | | | | | | consistent
* | | Consider that a GH exists only if both `ref`, and `sha` existDouglas Barbosa Alexandre2016-07-062-14/+23
| | |
* | | Render references for labels that name contains ?, or &Douglas Barbosa Alexandre2016-07-051-0/+50
| | |
* | | Revert back to not defining a default Git access protocol.Patricio Cano2016-07-051-1/+1
| | |
* | | Default Git access protocol to `web`Patricio Cano2016-07-051-1/+1
| | |
* | | Rename `enabled_git_access_protocols` to singular.Patricio Cano2016-07-051-1/+1
| | |
* | | Add more tests to the allowed protocols featurePatricio Cano2016-07-051-0/+37
| | |
* | | Rename ENV['PROTOCOL'] to ENV['GL_PROTOCOL'] to conform to what GitLab Shell ↵Patricio Cano2016-07-052-2/+2
| | | | | | | | | | | | expects and make the `protocol` param in `GitAccess` mandatory.
* | | RailsCache metrics now includes fetch_hit/fetch_miss and read_hit/read_miss ↵Paco Guzman2016-07-051-0/+103
| | | | | | | | | | | | info.
* | | Merge branch 'refactor/ci-config-move-global-entries' into 'master' Rémy Coutable2016-07-0517-136/+657
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move global ci entries handling from legacy to new config ## What does this MR do? This MR moves responsibility of handling global CI config entries (like `image`, `services`), from legacy `GitlabCiYamlProcessor` to new CI Config ## Why was this MR needed? This is the next iteration of CI configuration refactoring ## What are the relevant issue numbers? #15060 ## Does this MR meet the acceptance criteria? - Tests - [x] Added for this feature/bug - [x] All builds are passing - [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides) - [x] Branch has no merge conflicts with `master` (if you do - rebase it please) See merge request !4820
| * | Add minor improvements in readability in CI configrefactor/ci-config-move-global-entriesGrzegorz Bizon2016-07-043-4/+3
| | |
| * | Improve description of CI types node and in specsGrzegorz Bizon2016-06-301-2/+2
| | |
| * | Add global cache config entry to new CI configGrzegorz Bizon2016-06-2911-30/+45
| | |
| * | Add CI config entry location info to error messageGrzegorz Bizon2016-06-292-7/+6
| | | | | | | | | | | | This CI config entry location in configuration Hash.
| * | Make it possible to set parent in CI config nodeGrzegorz Bizon2016-06-291-2/+14
| | |
| * | Merge branch 'master' into refactor/ci-config-move-global-entriesGrzegorz Bizon2016-06-2814-308/+608
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master: (352 commits) Display last commit of deleted branch in push events (!4699) add changelog add missing attribute to attr_encrypted so it is fully backwards-compatible Add "GitLab team members only" to diagram link doc: note that .gitattributes uses default branch use the conf lexer so we have highlighted comments first draft of docs support cgi style options, such as erb?parent=json move the path alias to a more appropriate location make #custom_language private appease rubocop add an alias for Snippet#path appease rubocop check the tag so that an instance will pass too fix the spec, using project.change_head Revert "bump the master sha for gitlab-test!9" bump the master sha for gitlab-test!9 add custom highlighting via .gitattributes Rename Licenses API to License Templates API Check for conflict with wiki projects when creating a new project. ...
| * | | Validate interface only with CI node validatorGrzegorz Bizon2016-06-271-25/+7
| | | |
| * | | Add new ci config entry that handles cache configGrzegorz Bizon2016-06-272-0/+93
| | | |
| * | | Add ci config entry that represents array of pathsGrzegorz Bizon2016-06-241-0/+34
| | | |
| * | | Add ci config class that represents a boolean valueGrzegorz Bizon2016-06-241-0/+34
| | | |
| * | | Add ci config class that represents a key valueGrzegorz Bizon2016-06-241-0/+34
| | | |
| * | | Fix ci config cache validation in legacy processorGrzegorz Bizon2016-06-241-1/+14
| | | |
| * | | Minor refactorings in new CI configuration classesGrzegorz Bizon2016-06-231-2/+2
| | | |
| * | | Move CI stages configuration to new CI configGrzegorz Bizon2016-06-234-7/+88
| | | |
| * | | Assume that unspecified CI config is undefinedGrzegorz Bizon2016-06-235-81/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We assume that when someone adds a key for the configuration entry, but does not provide a valid value, which causes entry to be `nil`, then entry should be considered as the undefined one. We also assume this is semantically correct, this is also backwards compatible with legacy CI config processor. See issue #18775 for more details.
| * | | Return default config value when entry is undefinedGrzegorz Bizon2016-06-223-31/+42
| | | |
| * | | Handle CI environment variables in a new CI configGrzegorz Bizon2016-06-223-3/+77
| | | |
| * | | Rename CI config null node entry to undefined nodeGrzegorz Bizon2016-06-222-7/+7
| | | |
| * | | Handle after script CI config in new classesGrzegorz Bizon2016-06-214-8/+15
| | | | | | | | | | | | | | | | | | | | This also makes Script to return an array of commands instead of concatented command, which is our current direction.
| * | | Handle CI services config in new CI config classesGrzegorz Bizon2016-06-213-4/+54
| | | |
| * | | Move CI image configuration entry to new CI configGrzegorz Bizon2016-06-212-9/+21
| | | |
| * | | Add image configuration entry to new ci configGrzegorz Bizon2016-06-211-0/+46
| | | |
| * | | Use generic type validator in new ci configurationGrzegorz Bizon2016-06-211-0/+6
| | | |
* | | | Merge branch 'master' into dev-masterTomasz Maczukin2016-07-0229-2056/+4169
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master: (98 commits) Enable Style/EmptyLines cop, remove redundant ones Update CHANGELOG Cache results from jQuery selectors to retrieve namespace name Fix import button when import fail due the namespace already been taken Fix snippets comments not displayed Fix emoji paths in relative root configurations Exclude requesters from Project#members, Group#members and User#members Upgrade Thin from 1.6.1 to 1.7.0. Many squashed commits Cache autocomplete results Upgrade Sidekiq from 4.1.2 to 4.1.4. Upgrade seed-fu from 2.3.5 to 2.3.6 use has_many relationship with events Support creating a todo on issuables via API Expose target, filter by state as string Add todos API documentation and changelog Improve the request / withdraw access button Metrics for Rouge::Plugins::Redcarpet and Rouge::Formatters::HTMLGitlab Groundwork for Kerberos SPNEGO (EE feature) Update CHANGELOG 8.9.5 for runners related fixes ...
| * | | | Enable Style/EmptyLines cop, remove redundant onesrubocop/enable-cops-for-empty-linesGrzegorz Bizon2016-07-0121-26/+0
| | | | |
| * | | | Merge branch 'fix-relative-root-emoji-support' into 'master' Stan Hu2016-07-011-0/+15
| |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix emoji paths in relative root configurations ## What does this MR do? If a site specifies a relative URL root, emoji files would omit the path from the URL, leading to lots of 404s. ## Are there points in the code the reviewer needs to double check? At first, I tried to use `ActionView::Helpers::AssetUrlHelper.asset_url` since this is what it's intended to do. But this helper function is extremely slow, and it took minutes to generate the URLs for the hundreds of links needed for each emoji. ## Why was this MR needed? Because emojis were broken in relative URL installations ## What are the relevant issue numbers? #15642 ## Does this MR meet the acceptance criteria? - [X] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added - Tests - [X] Added for this feature/bug - [x] All builds are passing - [X] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides) - [X] Branch has no merge conflicts with `master` (if you do - rebase it please) - [X] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) See merge request !5027
| | * | | | Fix emoji paths in relative root configurationsStan Hu2016-07-011-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a site specifies a relative URL root, emoji files would omit the path from the URL, leading to lots of 404s. Closes #15642
| * | | | | use has_many relationship with eventsJames Lopez2016-07-011-0/+6
| | | | | |
| * | | | | Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce into ↵James Lopez2016-07-018-6/+103
| |\ \ \ \ \ | | |/ / / / | | | | | | | | | | | | fix/import-export-events
| | * | | | Merge branch 'fix-external-issue-rendering' into 'master' Robert Speicher2016-06-301-0/+13
| | |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Handle external issues in IssueReferenceFilter Rendering issue references such as `#1` was broken for projects using an external issues tracker. See gitlab-org/gitlab-ce#19036 See merge request !4988