1. 08 Jul, 2016 28 commits
  2. 07 Jul, 2016 12 commits
    • Robert Speicher's avatar
      Merge branch 'upgrade-oauth2' into 'master' · cfb5a76b
      Robert Speicher authored
      Upgrade oauth2 from 1.0.0 to 1.2.0.
      
      Changelog: https://github.com/intridea/oauth2/compare/v1.0.0...v1.2.0
      
      Follow-up on !3434 since 1.2.0 doesn't limit the JWT version we can use.
      
      Adds support for Rails 5. Working toward #14286.
      
      See merge request !5041
      cfb5a76b
    • Patricio Cano's avatar
    • Douwe Maan's avatar
      Merge branch 'prefer-scope' into 'master' · 068b1aee
      Douwe Maan authored
      Use scope rather than class method
      
      ## What does this MR do?
      
      Use scope rather than class method
      
      ## Why was this MR needed?
      
      I assume this would be useful and more clear.
      
      See merge request !5133
      068b1aee
    • Douwe Maan's avatar
      Merge branch 'prefer-ref' into 'master' · 5d3a0d38
      Douwe Maan authored
      Prefer ref rather than id because id is shadowing database id
      
      ## What does this MR do?
      
      Just a local variable renaming.
      
      ## Why was this MR needed?
      
      Prefer ref rather than id because id is shadowing database id.
      
      See merge request !5134
      5d3a0d38
    • Robert Speicher's avatar
      dad406da
    • Douwe Maan's avatar
      Merge branch '18627-wildcard-branch-protection' into 'master' · bf89e06a
      Douwe Maan authored
      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
      bf89e06a
    • Robert Speicher's avatar
      Revert "Merge branch 'issue_3946' into 'master' · bf2a86b7
      Robert Speicher authored
      This reverts commit 68155ee7, reversing
      changes made to 7ebd011e.
      bf2a86b7
    • Robert Speicher's avatar
      Merge branch '18181-pipeline-duration' into 'master' · 39fbec94
      Robert Speicher authored
      Update time format of pipeline duration
      
      Closes #18181
      
      Part of #18920 
      
      See merge request !5121
      39fbec94
    • Annabel Dunstone's avatar
      Change 3600 to 1.hour · 4498bb78
      Annabel Dunstone authored
      4498bb78
    • Jacob Schatz's avatar
      Merge branch 'issues-blank-state' into 'master' · 5541e55c
      Jacob Schatz authored
      Added blank state to issues
      
      ## What does this MR do?
      
      Adds new blank state to issues when no issues exist.
      
      Part of #18519 
      
      ## Screenshots (if relevant)
      
      ![Screen_Shot_2016-06-24_at_16.37.12](/uploads/0c3f385615b29216ef1137bd6fac06af/Screen_Shot_2016-06-24_at_16.37.12.png)
      
      See merge request !4908
      5541e55c
    • Douwe Maan's avatar
      Merge branch 'new-diff-notes' into 'master' · 86d238e4
      Douwe Maan authored
      New diff notes
      
      Fixes #12732, #14731, #19375, #14783 
      
      Builds on https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4110
      
      To do:
      - [x] Get it mostly working
      - [x] Validate position validity
      - [x] Fix: Don’t link to `#`
      - [x] Fix: Base ref can be `nil`, potentially, when the MR has an oprhan source branch => Yep, doesn’t work. We need to store a `start_id`
      - [x] Optimize: Fewer duplicate `git diff` compares
      - [x] Optimize: Pass paths to `PositionTracer#diff` for faster diffs
      - [x] Refactor: Use `head_id` in `MergeRequest`/`MergeRequestDiff` instead of `source_sha`
      - [x] Refactor: Convert existing array-based diff refs to the DiffRefs model
      - [x] Tweak: Use `note_type` in `Autosave` key
      - [x] Tweak: Remove `line_code: note.line_code` from `link_to_reply_discussion`
      - [x] Update: `SentNotifications` and reply-by-email receiver
      - [x] Update: MR diff notification email
      - [x] Update: API (MR, Commit note creation and entity)
      - [x] Update: GitHub importer
      - [x] Address any other TODO comments
      - [x] Fix: Suppress "edited 4 minutes ago"
      - [x] Write tests
        - [x] `LineMapper`
        - [x] `PositionTracer`
        - [x] `Position`
        - [x] `DiffPositionUpdateService`
        - [x] `DiffNote`
        - [x] `MergeRequests::RefreshService` / `MergeRequest#update_diff_notes_positions`
      - [x] Make sure commits with diff notes don't get cleaned up, since this would prevent the diff notes from being rendered (https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5062)
      
      Future improvements:
      - Display unresolved comments on files outside the diff, if the comment was added when that file _was_ part of the diff
      - Allow commenting on sections between hunks, when expanding the diff using `...`
        - (We'd need to generate line code based on Position if we have it, even if it falls outside bounds of diff)
      - `diff_hunk` on diff note API entity
      - Show diff hunk in notification email
      - Resolved line notes would have a boolean, and be inactive through `notes.any? { !active? || resolved? }`
      - Multi line notes would store a number of positions, and do the right thing () in grouping and then rendering if the first item is multiline? => true
      - Image diff notes could store x,y,width,height instead of old_line,new_line for similar grouping. Does it need a reference to say if it's on old or new? These can't have line_codes, clearly. Rendering would be interesting.
      - Show commit line comments in the MR diff
      - Comment on specific selected words
      - Comment on file header
      - Unfold top of discussion diff note
      - New diff notes API for commits and MRs
      
      /cc @rspeicher
      
      See merge request !4101
      86d238e4
    • Robert Speicher's avatar
      Merge branch 'pending-delete-project-notifications' into 'master' · 91cf0387
      Robert Speicher authored
      Exclude projects pending delete from notifications
      
      Make `NotificationSetting.for_projects` exclude projects that are excluded by the default scope on `Project`. (At the moment, that's projects with `pending_delete: true`.)
      
      See https://gitlab.com/gitlab-com/support-forum/issues/819
      
      See merge request !5138
      91cf0387