1. 08 Jul, 2016 7 commits
  2. 07 Jul, 2016 33 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
    • Alfredo Sumaran's avatar
      Restore user notes icon · cfc14747
      Alfredo Sumaran authored
      cfc14747
    • Alfredo Sumaran's avatar
      Restore "Send email to users" link · 6ba3bf49
      Alfredo Sumaran authored
      6ba3bf49
    • Douwe Maan's avatar
      Fix EE for new diff notes · e9955331
      Douwe Maan authored
      e9955331
    • 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
      7927695b
    • 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
    • Jacob Schatz's avatar
      Merge branch 'mirror-misplaced-button' into 'master' · dab9481b
      Jacob Schatz authored
      Fixed misplaced mirror button
      
      The mirror repo button was misplaced on the tags page & made the content below look weird.
      
      Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/19191
      
      ![Screen_Shot_2016-07-07_at_11.35.35](/uploads/d7e87dfeb3491e53342e9e0a1a342f2f/Screen_Shot_2016-07-07_at_11.35.35.png)
      
      See merge request !536
      dab9481b
    • 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
    • Douwe Maan's avatar
      c66bcf34
    • Valery Sizov's avatar
      Merge branch 'infrastructure_155' into 'master' · 37c8d506
      Valery Sizov authored
      Add missing `storage` argument to some methods in `Gitlab::Shell`
      
      The affected methods are EE only and were basically related to the sync
      of local and remote mirrors.
      
      Fixes: https://gitlab.com/gitlab-com/infrastructure/issues/155
      
      Ref: https://gitlab.com/gitlab-com/support-forum/issues/816
      
      See merge request !532
      37c8d506
    • Douwe Maan's avatar
      Use HAML class syntax in diff line partials · 14c2b968
      Douwe Maan authored
      14c2b968
    • Douwe Maan's avatar
      Make `DiffNote#update_position` private · 6dd71888
      Douwe Maan authored
      6dd71888
    • Robert Speicher's avatar
      Merge branch 'issue_3946' into 'master' · 68155ee7
      Robert Speicher authored
      Improve UI consistency for admin area
      
      Closes #3946
      
      See merge request !4424
      68155ee7
    • Jacob Schatz's avatar
      Merge branch 'dz-remove-icons' into 'master' · 7ebd011e
      Jacob Schatz authored
      Remove icons from file edit tabs
      
      We don't need this icons and it also inconsistent with current UI 
      
      See merge request !5072
      7ebd011e
    • Alfredo Sumaran's avatar
      Namespaces should filter remotely · 5a739360
      Alfredo Sumaran authored
      5a739360
    • Alfredo Sumaran's avatar
      Rephrase deletion alert message · 0a5f2ad3
      Alfredo Sumaran authored
      0a5f2ad3
    • Alfredo Sumaran's avatar
      db907fc7
    • Alfredo Sumaran's avatar
      Layout for Users Groups and Projects on admin area · c5172ff5
      Alfredo Sumaran authored
      # Conflicts:
      #	app/assets/stylesheets/pages/admin.scss
      #	app/views/admin/users/index.html.haml
      c5172ff5
    • Douwe Maan's avatar
      Update test with new factory name · 70a64f6a
      Douwe Maan authored
      70a64f6a
    • Sean McGivern's avatar
      Exclude projects pending delete from notifications · ea25e091
      Sean McGivern authored
      If the Sidekiq job fails for some reason, a project can be 'stuck'
      pending deletion. The project can't be viewed, so it shouldn't be
      available through the notification settings association as this will
      throw an exception when we try to show the link.
      ea25e091
    • Alfredo Sumaran's avatar
      Namespaces should filter remotely · 140b0952
      Alfredo Sumaran authored
      140b0952
    • Alfredo Sumaran's avatar
      Rephrase deletion alert message · 22191fcd
      Alfredo Sumaran authored
      22191fcd
    • Alfredo Sumaran's avatar
      35224dbf
    • Alfredo Sumaran's avatar
      338072cc
    • Douwe Maan's avatar
      We can't call private methods with `self.` · 6eb65651
      Douwe Maan authored
      6eb65651