To create a feature proposal for CE, open an issue on the
[issue tracker of CE][ce-tracker].
For feature proposals for EE, open an issue on the
[issue tracker of EE][ee-tracker].
In order to help track the feature proposals, we have created a
[`feature proposal`][fpl] label. For the time being, users that are not members
of the project cannot add labels. You can instead ask one of the [core team]
members to add the label `feature proposal` to the issue or add the following
code snippet right after your description in a new line: `~"feature proposal"`.
Please keep feature proposals as small and simple as possible, complex ones
might be edited to make them small and simple.
Please submit Feature Proposals using the ['Feature Proposal' issue template](.gitlab/issue_templates/Feature Proposal.md) provided on the issue tracker.
For changes in the interface, it can be helpful to create a mockup first.
If you want to create something yourself, consider opening an issue first to
discuss whether it is interesting to include this in GitLab.
### Issue tracker guidelines
**[Search the issue tracker][ce-tracker]** for similar entries before
submitting your own, there's a good chance somebody else had the same issue or
feature proposal. Show your support with an award emoji and/or join the
discussion.
Please submit bugs using the ['Bug' issue template](.gitlab/issue_templates/Bug.md) provided on the issue tracker.
The text in the parenthesis is there to help you with what to include. Omit it
when submitting the actual issue. You can copy-paste it and then edit as you
see fit.
### Issue weight
Issue weight allows us to get an idea of the amount of work required to solve
one or multiple issues. This makes it possible to schedule work more accurately.
You are encouraged to set the weight of any issue. Following the guidelines
below will make it easy to manage this, without unnecessary overhead.
1. Set weight for any issue at the earliest possible convenience
1. If you don't agree with a set weight, discuss with other developers until
consensus is reached about the weight
1. Issue weights are an abstract measurement of complexity of the issue. Do not
relate issue weight directly to time. This is called [anchoring](https://en.wikipedia.org/wiki/Anchoring)
and something you want to avoid.
1. Something that has a weight of 1 (or no weight) is really small and simple.
Something that is 9 is rewriting a large fundamental part of GitLab,
which might lead to many hard problems to solve. Changing some text in GitLab
is probably 1, adding a new Git Hook maybe 4 or 5, big features 7-9.
1. If something is very large, it should probably be split up in multiple
issues or chunks. You can simply not set the weight of a parent issue and set
weights to children issues.
### Regression issues
Every monthly release has a corresponding issue on the CE issue tracker to keep
track of functionality broken by that release and any fixes that need to be
included in a patch release (see [8.3 Regressions] as an example).
As outlined in the issue description, the intended workflow is to post one note
with a reference to an issue describing the regression, and then to update that
note with a reference to the merge request that fixes it as it becomes available.
If you're a contributor who doesn't have the required permissions to update
other users' notes, please post a new note with a reference to both the issue
and the merge request.
The release manager will [update the notes] in the regression issue as fixes are
1. For tests that use Capybara or PhantomJS, see this [article on how
to write reliable asynchronous tests](https://robots.thoughtbot.com/write-reliable-asynchronous-integration-tests-with-capybara).
Please keep the change in a single MR **as small as possible**. If you want to
contribute a large feature think very hard what the minimum viable change is.
Can you split the functionality? Can you only submit the backend/API code? Can
you start with a very simple UI? Can you do part of the refactor? The increased
reviewability of small MRs that leads to higher code quality is more important
to us than having a minimal commit log. The smaller an MR is the more likely it
is it will be merged (quickly). After that you can send more MRs to enhance it.
The ['How to get faster PR reviews' document of Kubernetes](https://github.com/kubernetes/community/blob/master/contributors/devel/faster_reviews.md) also has some great points regarding this.
For examples of feedback on merge requests please look at already
[closed merge requests][closed-merge-requests]. If you would like quick feedback
on your merge request feel free to mention someone from the [core team] or one
of the [Merge request coaches][team].
Please ensure that your merge request meets the contribution acceptance criteria.
When having your code reviewed and when reviewing merge requests please take the
[code review guidelines](doc/development/code_review.md) into account.
### Contribution acceptance criteria
1. The change is as small as possible
1. Include proper tests and make all tests pass (unless it contains a test
exposing a bug in existing code). Every new class should have corresponding
unit tests, even if the class is exercised at a higher level, such as a feature test.
1. If you suspect a failing CI build is unrelated to your contribution, you may
try and restart the failing CI job or ask a developer to fix the
aforementioned failing test
1. Your MR initially contains a single commit (please use `git rebase -i` to
squash commits)
1. Your changes can merge without problems (if not please rebase if you're the
only one working on your feature branch, otherwise, merge `master`)
1. Does not break any existing functionality
1. Fixes one specific issue or implements one specific feature (do not combine
things, send separate merge requests if needed)
1. Migrations should do only one thing (e.g., either create a table, move data
to a new table or remove an old table) to aid retrying on failure
1. Keeps the GitLab code base clean and well structured
1. Contains functionality we think other users will benefit from too
1. Doesn't add configuration options or settings options since they complicate
making and testing future changes
1. Changes do not adversely degrade performance.
- Avoid repeated polling of endpoints that require a significant amount of overhead
- Check for N+1 queries via the SQL log or [`QueryRecorder`](https://docs.gitlab.com/ce/development/merge_request_performance_guidelines.html)
- Avoid repeated access of filesystem
1. If you need polling to support real-time features, please use
[polling with ETag caching][polling-etag].
1. Changes after submitting the merge request should be in separate commits
(no squashing).
1. It conforms to the [style guides](#style-guides) and the following:
- If your change touches a line that does not follow the style, modify the
entire line to follow it. This prevents linting tools from generating warnings.
- Don't touch neighbouring lines. As an exception, automatic mass
refactoring modifications may leave style non-compliant.
1. If the merge request adds any new libraries (gems, JavaScript libraries,
etc.), they should conform to our [Licensing guidelines][license-finder-doc].
See the instructions in that document for help if your MR fails the
"license-finder" test with a "Dependencies that need approval" error.
## Definition of done
If you contribute to GitLab please know that changes involve more than just
code. We have the following [definition of done][definition-of-done]. Please ensure you support
the feature you contribute through all of these steps.
1. Description explaining the relevancy (see following item)
1. Working and clean code that is commented where needed
1.[Unit and system tests][testing] that pass on the CI server
1. Performance/scalability implications have been considered, addressed, and tested
1.[Documented][doc-styleguide] in the `/doc` directory
1.[Changelog entry added][changelog], if necessary
1. Reviewed and any concerns are addressed
1. Merged by a project maintainer
1. Added to the release blog article, if relevant
1. Added to [the website](https://gitlab.com/gitlab-com/www-gitlab-com/), if relevant
1. Community questions answered
1. Answers to questions radiated (in docs/wiki/support etc.)
If you add a dependency in GitLab (such as an operating system package) please
consider updating the following and note the applicability of each in your
merge request:
1. Note the addition in the release blog post (create one if it doesn't exist yet) https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/
1. Upgrade guide, for example https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/update/7.5-to-7.6.md
Opened 1 day ago by Mark Chao4 of 12 tasks completed
Edit
Close merge request
Fix Approval UI showing up for free plan
What does this MR do?
Approval related UI are showing for free plan projects in
MR edit page
MR show page widget
This MR hides those UI elements for free plan projects.
What are the relevant issue numbers?
Closes #9908
Does this MR meet the acceptance criteria?
Changelog entry added, if necessary
Documentation created/updated via this MR
Documentation reviewed by technical writer or follow-up review issue created
Tests added for this feature/bug
Tested in all supported browsers
Conforms to the code review guidelines
Conforms to the merge request performance guidelines
Conforms to the style guides
Conforms to the database guides
Link to e2e tests MR added if this MR has Requires e2e tests label. See the Test Planning Process.
EE specific content should be in the top level /ee folder
For a paid feature, have we considered GitLab.com plans, how it works for groups, and is there a design for promoting it to users who aren't on the correct plan?
Edited 1 day ago by Mark Chao
Request to merge 9908-hide-approver-ui-in-free
into master
The source branch is 374 commits behind the target branch
Open in Web IDE
Pipeline #50509308 running for dde663c4 on 9908-hide-approver-ui-in-free
Coverage 72.96%
Will deploy to review-docs/9908-hide-approver-ui-in-free
Will deploy to review/9908-hide-approver-ui-in-free
View app
Requires 1 more approval
Code quality improved on 2 points and degraded on 1 point
Performance metrics degraded on 1 point
Security scanning detected no new vulnerabilities
View full report
The source branch HEAD has recently changed. Please reload the page and review the changes before merging
Closes #9908
Discussion 38
Commits 12
Pipelines 9
Changes 17
10/12 discussions resolved
Mark Chao @lulalala changed milestone to %11.9 1 day ago
Mark Chao @lulalala added Create P2 Pick into 11.8 S2 approvals backend bug devops:create regression:11.0 labels 1 day ago
Mark Chao @lulalala added 3 commits 1 day ago
b56c5466 - Fix MR approval form showing in free plan
2bbb7a68 - Hide rules when approval feature is unavailable
4e877d11 - Make merge_request_approvers available to frontend
Compare with previous version
Mark Chao
Mark Chao @lulalala · 1 day ago
Developer
Hi @pslaughter, could you see what's the best way to hide the approval widget if merge_request_approvers feature is not available to the project? I've added a merge_request_approvers_available attribute to the entity. Thanks!
Mark Chao @lulalala assigned to @pslaughter 1 day ago
Mark Chao @lulalala marked the task Changelog entry added, if necessary as completed 1 day ago
🤖 GitLab Bot 🤖
🤖 GitLab Bot 🤖 @gitlab-bot · 1 day ago
Maintainer
1 Warning
⚠ This merge request includes more than 10 commits. Please rebase these commits into a smaller number of commits.
Reviewer roulette
Changes that require review have been detected! A merge request is normally reviewed by both a reviewer and a maintainer in its primary category (e.g. frontend or backend), and by a maintainer in all other categories.
To spread load more evenly across eligible reviewers, Danger has randomly picked a candidate for each review slot. Feel free to override this selection if you think someone else would be better-suited, or the chosen person is unavailable.
Once you've decided who will review this merge request, mention them as you normally would! Danger does not (yet?) automatically notify them for you.
Category Reviewer Maintainer
frontend Sam Beckham (@samdbeckham) Filipa Lacerda (@filipa)
backend Reuben Pereira (@rpereira2) Sean McGivern (@smcgivern)
Generated by 🚫 Danger
Edited by 🤖 GitLab Bot 🤖 17 minutes ago
Mark Chao
Mark Chao @lulalala · 1 day ago
Developer
Hi @rpereira2 would you be able to do a preliminary review please? Thanks!
Reuben Pereira
Reuben Pereira @rpereira2 started a discussion on an old version of the diff 1 day ago
Resolved by Reuben Pereira 23 hours ago
Reuben Pereira
Reuben Pereira @rpereira2 started a discussion on the diff 1 day ago
Resolved by Reuben Pereira 23 hours ago
Reuben Pereira
Reuben Pereira @rpereira2 started a discussion on the diff 1 day ago
Resolved by Reuben Pereira 23 hours ago
Reuben Pereira
Reuben Pereira @rpereira2 started a discussion on the diff 1 day ago
Resolved by Reuben Pereira 23 hours ago
Reuben Pereira
Reuben Pereira @rpereira2 · 1 day ago
Developer
Thanks @lulalala, I've left a few comments.
Mark Chao @lulalala added 2 commits 1 day ago
35812eae - fix for partial
9fec5dd7 - fix for state
Compare with previous version
Paul Slaughter @pslaughter added 1 commit 1 day ago
bebf0712 - Cleanup has approvals available check in MR widget
Compare with previous version
Paul Slaughter
Paul Slaughter @pslaughter started a discussion on the diff 1 day ago
Resolved by Mark Chao 1 day ago
Paul Slaughter
Paul Slaughter @pslaughter started a discussion on the diff 1 day ago
Last updated by Mark Chao 1 day ago
ee/app/models/concerns/visible_approvable.rb
5 5 module VisibleApprovable
6 6 include ::Gitlab::Utils::StrongMemoize
7 7
8 def requires_approve?
Paul Slaughter
Paul Slaughter @pslaughter · 1 day ago
Developer
note: This was only used in merge_request_presenter which has now been replaced with has_approvals_available?.
Mark Chao
Mark Chao @lulalala · 1 day ago
Developer
I've moved this to Approvable as it is not very related to approvers masking logic. I also changed the name slightly hope you do not mind :)
Paul Slaughter
Paul Slaughter @pslaughter started a discussion on the diff 1 day ago
note: This is safe to replace with has_approvals_available. There's a sneaky typo here. data.approvalsRequired is never an actual value so approvalsRequired was always set to the truthiness of the approvalsPath. In merge_request_presenter we see that this used to be based on requires_approve (which was always true, causing the bug).
Paul Slaughter
Paul Slaughter @pslaughter · 1 day ago
Developer
@lulalala, thanks for the ping! I left some details in the commit message and this MR. Check it out and feel free to ping me if you have any questions 👍
Paul Slaughter @pslaughter assigned to @lulalala 1 day ago
Paul Slaughter
Paul Slaughter @pslaughter · 1 day ago
Developer
@lulalala, I may have caused some small pipeline issues... Do you mind resolving it? If you need me to hop on it, just let me know. Thanks! 🙇
Mark Chao @lulalala added 2 commits 1 day ago
6793ad2b - Rename to approval_feature_available
1218c47c - Hide approval path attributes if nil
Compare with previous version
Mark Chao
Mark Chao @lulalala · 1 day ago
Developer
@pslaughter yes leave it to me
Mark Chao @lulalala added 2 commits 1 day ago
015ac5d2 - Fix api endpoint
0cabfffd - Fix state spec
Compare with previous version
Mark Chao
Mark Chao @lulalala · 1 day ago
Developer
Hi @rpereira2 we made a little more changes, and I tried your suggestions, but the stub_licensed_features didn't work out. So I'll leave it for now. Could you see if the new changes are fine? Thanks!
Mark Chao @lulalala assigned to @rpereira2 1 day ago
Mark Chao
Mark Chao @lulalala · 23 hours ago
Developer
Hi @wortschi, could you review the frontend part of this fix please? Thanks!
Reuben Pereira
Reuben Pereira @rpereira2 · 23 hours ago
Developer
Thanks @lulalala, LGTM 👍
Reuben Pereira @rpereira2 assigned to @wortschi 23 hours ago
Mark Chao @lulalala added 7 commits 22 hours ago
98e597b0 - Fix for partial
ac0fcaf1 - Fix for state
fca88f01 - Cleanup has approvals available check in MR widget
c5c956d1 - Rename to approval_feature_available
e4cc4382 - Fix api endpoint
f98177ee - Fix state spec
a390ba2b - Fix coding style
Compare with previous version
Toggle commit list
Mark Chao
Mark Chao @lulalala · 22 hours ago
Developer
Hi @godfat could you review the backend part please? Thanks! This particular fix was the one found by @wildjcrt
Mark Chao @lulalala assigned to @godfat 22 hours ago
Martin Wortschack
Martin Wortschack 🐻 @wortschi started a discussion on commit fca88f01 22 hours ago
Resolved by Martin Wortschack 15 hours ago
Martin Wortschack
Martin Wortschack 🐻 @wortschi started a discussion on commit fca88f01 22 hours ago
Resolved by Martin Wortschack 15 hours ago
Martin Wortschack
Martin Wortschack 🐻 @wortschi started a discussion on commit fca88f01 22 hours ago
Resolved by Martin Wortschack 15 hours ago
Martin Wortschack
Martin Wortschack 🐻 @wortschi started a discussion on commit fca88f01 22 hours ago
Resolved by Martin Wortschack 15 hours ago
Martin Wortschack
Martin Wortschack 🐻 @wortschi · 22 hours ago
Developer
FE changes look good to me! Just left one question in !9819 (comment 147326814)
Reuben Pereira @rpereira2 mentioned in merge request !9830 20 hours ago
Mark Chao @lulalala added 1 commit 18 hours ago
c014aea2 - Fix memoization and spec
Compare with previous version
Mark Chao @lulalala added 1 commit 18 hours ago
ef1eead7 - Save query by using approval_feature_available?
Compare with previous version
Lin Jen-Shin
Lin Jen-Shin ☀ @godfat started a discussion on the diff 14 hours ago
Resolved by Mark Chao 42 minutes ago
Lin Jen-Shin
Lin Jen-Shin ☀ @godfat · 14 hours ago
Maintainer
@lulalala Thank you, looks great to me. Just one minor comment.
Lin Jen-Shin ☀ @godfat assigned to @lulalala 14 hours ago
Mark Chao
Mark Chao @lulalala · 41 minutes ago
Developer
Thanks @godfat. I've addressed it.
Hi @iamphill, could you review the frontend please? Thanks!
Mark Chao @lulalala assigned to @iamphill 40 minutes ago
Lin Jen-Shin
Lin Jen-Shin ☀ @godfat · 26 minutes ago
Maintainer
@lulalala Did you push? I didn't see any changes?
Mark Chao @lulalala added 1 commit just now
dde663c4 - Apply approval_feature_available? to approvals_before_merge
Compare with previous version
Mark Chao
Mark Chao @lulalala · just now
Developer
@godfat @@ my bad.
Lin Jen-Shin ☀ @godfat approved this merge request 1 minute ago
Lin Jen-Shin
Lin Jen-Shin ☀ @godfat · 1 minute ago
Maintainer
No problems :)
Phil Hughes @iamphill approved this merge request 11 minutes ago
Phil Hughes @iamphill resolved all discussions 11 minutes ago
Phil Hughes @iamphill enabled an automatic merge when the pipeline for dde663c4 succeeds 11 minutes ago
Phil Hughes
Phil Hughes @iamphill · 11 minutes ago
Maintainer
LGTM 👍
Enabled MWPS 👍
@lulalala The milestone is 11.9 but there is a pick into 11.8 label? 🤔