Merge branch 'master' into bootstrap4

This commit is contained in:
Clement Ho 2018-05-22 17:20:57 -05:00
commit 6dd13180cc
224 changed files with 1356 additions and 1165 deletions

View File

@ -855,3 +855,15 @@ gitlab_git_test:
cache: {}
script:
- spec/support/prepare-gitlab-git-test-for-commit --check-for-changes
no_ee_check:
<<: *dedicated-runner
<<: *except-docs-and-qa
variables:
SETUP_DB: "false"
before_script: []
cache: {}
script:
- scripts/no-ee-check
only:
- //@gitlab-org/gitlab-ce

View File

@ -2,6 +2,182 @@
documentation](doc/development/changelog.md) for instructions on adding your own
entry.
## 10.8.0 (2018-05-22)
### Security (3 changes, 1 of them is from the community)
- Update faraday_middlewar to 0.12.2. !18397 (Takuya Noguchi)
- Serve archive requests with the correct file in all cases.
- Sanitizes user name to avoid XSS attacks.
### Fixed (47 changes, 11 of them are from the community)
- Refactor CSS to eliminate vertical misalignment of login nav. !16275 (Takuya Noguchi)
- Fix pipeline status in branch/tag tree page. !17995
- Allow group owner to enable runners from subgroups (#41981). !18009
- Fix template selector menu visibility when toggling preview mode in file edit view. !18118 (Fabian Schneider)
- Fix confirmation modal for deleting a protected branch. !18176 (Paul Bonaud @PaulRbR)
- Triggering custom hooks by Wiki UI edit. !18251
- Now `rake cache:clear` will also clear pipeline status cache. !18257
- Fix `joined` information on project members page. !18290 (Fabian Schneider)
- Fix missing namespace for some internal users. !18357
- Show shared projects on group page. !18390
- Restore label underline color. !18407 (George Tsiolis)
- Fix undefined `html_escape` method during markdown rendering. !18418
- Fix unassign slash command preview. !18447
- Correct text and functionality for delete user / delete user and contributions modal. !18463 (Marc Schwede)
- Fix discussions API setting created_at for notable in a group or notable in a project in a group with owners. !18464
- Don't include lfs_file_locks data in export bundle. !18495
- Reset milestone filter when clicking "Any Milestone" in dashboard. !18531
- Ensure member notifications are sent after the member actual creation/update in the DB. !18538
- Update links to /ci/lint with ones to project ci/lint. !18539 (Takuya Noguchi)
- Fix tabs container styles to make RSS button clickable. !18559
- Raise NoRepository error for non-valid repositories when calculating repository checksum. !18594
- Don't automatically remove artifacts for pages jobs after pages:deploy has run. !18628
- Increase new issue metadata form margin. !18630 (George Tsiolis)
- Add loading icon padding for pipeline environments. !18631 (George Tsiolis)
- ShaAttribute no longer stops startup if database is missing. !18726
- Fix close keyboard shortcuts dialog using the keyboard shortcut. !18783 (Lars Greiss)
- Fixes database inconsistencies between Community and Enterprise Edition on import state. !18811
- Add database foreign key constraint between pipelines and build. !18822
- Fix finding wiki pages when they have invalidly-encoded content. !18856
- Fix outdated Web IDE welcome copy. !18861
- fixed copy to blipboard button in embed bar of snippets. !18923 (haseebeqx)
- Disables RBAC on nginx-ingress. !18947
- Correct skewed Kubernetes popover illustration. !18949
- Resolve Import/Export ci_cd_settings error updating the project. !46049
- Fix project creation for user endpoint when jobs_enabled parameter supplied.
- 46210 Display logo and user dropdown on mobile for terms page and fix styling.
- Adds illustration for when job log was erased.
- Ensure web hook 'blocked URL' errors are stored in web hook logs and properly surfaced to the user.
- Make toggle markdown preview shortcut only toggle selected field.
- Verifiy if pipeline has commit idetails and render information in MR widget when branch is deleted.
- Fixed inconsistent protected branch pill baseline.
- Fix setting Gitlab metrics content types.
- Display only generic message on merge error to avoid exposing any potentially sensitive or user unfriendly backend messages.
- Fix label links update on project transfer.
- Breaks commit not found message in pipelines table.
- Adjust issue boards list header label text color.
- Prevent pipeline actions in dropdown to redirct to a new page.
### Changed (35 changes, 15 of them are from the community)
- Improve tooltips in collapsed right sidebar. !17714
- Partition job_queue_duration_seconds with jobs_running_for_project. !17730
- For group dashboard, we no longer show groups which the visitor is not a member of (this applies to admins and auditors). !17884 (Roger Rüttimann)
- Use RFC 3676 mail signature delimiters. !17979 (Enrico Scholz)
- Add sha filter to pipelines list API. !18125
- New CI Job live-trace architecture. !18169
- Make project deploy keys table more clearly structured. !18279
- Remove green background from unlock button in admin area. !18288
- Renamed Overview to Project in the contextual navigation at a project level. !18295 (Constance Okoghenun)
- Load branches on new merge request page asynchronously. !18315
- Create settings section for autodevops. !18321
- Add a comma to the time estimate system notes. !18326
- Enable specifying variables when executing a manual pipeline. !18440
- Fix size and position for fork icon. !18449 (George Tsiolis)
- Refactored activity calendar. !18469 (Enrico Scholz)
- Small improvements to repository checks. !18484
- Add 2FA filter to users API for admins only. !18503
- Align project avatar on small viewports. !18513 (George Tsiolis)
- Show group and project LFS settings in the interface to Owners and Masters. !18562
- Update environment item action buttons icons. !18632 (George Tsiolis)
- Update timeline icon for description edit. !18633 (George Tsiolis)
- Revert discussion counter height. !18656 (George Tsiolis)
- Improve quick actions summary preview. !18659 (George Tsiolis)
- Change font for tables inside diff discussions. !18660 (George Tsiolis)
- Add padding to profile description. !18663 (George Tsiolis)
- Break issue title for board card title and issuable header text. !18674 (George Tsiolis)
- Adds push mirrors to GitLab Community Edition. !18715
- Inform the user when there are no project import options available. !18716 (George Tsiolis)
- Improve commit message body rendering and fix responsive compare panels. !18725 (Constance Okoghenun)
- Reconcile project templates with Auto DevOps. !18737
- Remove branch name from the status bar of WebIDE.
- Clean up WebIDE status bar and add useful info.
- Improve interaction on WebIDE commit panel.
- Keep current labels visible when editing them in the sidebar.
- Use VueJS for rendering pipeline stages.
### Performance (26 changes, 11 of them are from the community)
- Move WorkInProgress vue component. !17536 (George Tsiolis)
- Move ReadyToMerge vue component. !17545 (George Tsiolis)
- Move BoardBlankState vue component. !17666 (George Tsiolis)
- Improve DB performance of calculating total artifacts size. !17839
- Add i18n and update specs for UnresolvedDiscussions vue component. !17866 (George Tsiolis)
- Introduce new ProjectCiCdSetting model with group_runners_enabled. !18144
- Move PipelineFailed vue component. !18277 (George Tsiolis)
- Move TimeTrackingEstimateOnlyPane vue component. !18318 (George Tsiolis)
- Move TimeTrackingHelpState vue component. !18319 (George Tsiolis)
- Reduce queries on merge requests list page for merge requests from forks. !18561
- Destroy build_chunks efficiently with FastDestroyAll module. !18575
- Improve performance of a service responsible for creating a pipeline. !18582
- Replace time_ago_in_words with JS-based one. !18607 (Takuya Noguchi)
- Move TimeTrackingNoTrackingPane vue component. !18676 (George Tsiolis)
- Move SidebarTimeTracking vue component. !18677 (George Tsiolis)
- Move TimeTrackingSpentOnlyPane vue component. !18710 (George Tsiolis)
- Detecting tags containing a commit uses Gitaly by default.
- Increase cluster applications installer availability using alpine linux mirrors.
- Compute notification recipients in background jobs.
- Use persisted diff data instead fetching Git on discussions.
- Detecting branchnames containing a commit uses Gitaly by default.
- Detect repository license on Gitaly by default.
- Finish NamespaceService migration to Gitaly.
- Check if a ref exists is done by Gitaly by default.
- Compute Gitlab::Git::Repository#checksum on Gitaly by default.
- Repository#exists? is always executed through Gitaly.
### Added (22 changes, 10 of them are from the community)
- Allow group masters to configure runners for groups. !9646 (Alexis Reigel)
- Adds Embedded Snippets Support. !15695 (haseebeqx)
- Add Copy metadata quick action. !16473 (Mateusz Bajorski)
- Show Runner's description on job's page. !17321
- Add deprecation message to dynamic milestone pages. !17505
- Show new branch/mr button even when branch exists. !17712 (Jacopo Beschi @jacopo-beschi)
- API: add languages of project GET /projects/:id/languages. !17770 (Roger Rüttimann)
- Display active sessions and allow the user to revoke any of it. !17867 (Alexis Reigel)
- Add cron job to email users on issue due date. !17985 (Stuart Nelson)
- Rubocop rule to avoid returning from a block. !18000 (Jacopo Beschi @jacopo-beschi)
- Add the signature verfication badge to the compare view. !18245 (Marc Shaw)
- Expose Deploy Token data as environment varialbes on CI/CD jobs. !18414
- Show group id in group settings. !18482 (George Tsiolis)
- Allow admins to enforce accepting Terms of Service on an instance. !18570
- Add CI_COMMIT_MESSAGE, CI_COMMIT_TITLE and CI_COMMIT_DESCRIPTION predefined variables. !18672
- Add GCP signup offer to cluster index / create pages. !18684
- Output some useful information when running the rails console. !18697
- Display merge commit SHA in merge widget after merge. !18722
- git SHA is now displayed alongside the GitLab version on the Admin Dashboard.
- Expose the target commit ID through the tag API.
- Added fuzzy file finder to web IDE.
- Add discussion API for merge requests and commits.
### Other (22 changes, 8 of them are from the community)
- Replace the `project/issues/milestones.feature` spinach test with an rspec analog. !18300 (@blackst0ne)
- Replace the `project/commits/branches.feature` spinach test with an rspec analog. !18302 (@blackst0ne)
- Replacing gollum libraries for gitlab custom libs. !18343
- Replace the `project/commits/comments.feature` spinach test with an rspec analog. !18356 (@blackst0ne)
- Replace "Click" with "Select" to be more inclusive of people with accessibility requirements. !18386 (Mark Lapierre)
- Remove ahead/behind graphs on project branches on mobile. !18415 (Takuya Noguchi)
- Replace the `project/source/markdown_render.feature` spinach test with an rspec analog. !18525 (@blackst0ne)
- Add missing changelog type to docs. !18526 (@blackst0ne)
- Added Webhook SSRF prevention to documentation. !18532
- Upgrade underscore.js to 1.9.0. !18578
- Add documentation about how to use variables to define deploy policies for staging/production environments. !18675
- Replace the `project/builds/artifacts.feature` spinach test with an rspec analog. !18729 (@blackst0ne)
- Block access to the API & git for users that did not accept enforced Terms of Service. !18816
- Transition to atomic internal ids for all models. !44259
- Removes modal boards store and mixins from global scope.
- Replace GKE acronym with Google Kubernetes Engine.
- Replace vue resource with axios for pipelines details page.
- Enable prometheus monitoring by default.
- Replace vue resource with axios in pipelines table.
- Bump lograge to 0.10.0 and remove monkey patch.
- Improves wording in new pipeline page.
- Gitaly handles repository forks by default.
## 10.7.4 (2018-05-21)
### Fixed (1 change)

View File

@ -1 +1 @@
4.2.0
4.2.1

View File

@ -174,6 +174,9 @@ gem 'httparty', '~> 0.13.3'
# Colored output to console
gem 'rainbow', '~> 2.2'
# Progress bar
gem 'ruby-progressbar'
# GitLab settings
gem 'settingslogic', '~> 2.0.9'
@ -293,7 +296,7 @@ group :metrics do
gem 'influxdb', '~> 0.2', require: false
# Prometheus
gem 'prometheus-client-mmap', '~> 0.9.2'
gem 'prometheus-client-mmap', '~> 0.9.3'
gem 'raindrops', '~> 0.18'
end

View File

@ -623,7 +623,7 @@ GEM
parser
unparser
procto (0.0.3)
prometheus-client-mmap (0.9.2)
prometheus-client-mmap (0.9.3)
pry (0.10.4)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
@ -1108,7 +1108,7 @@ DEPENDENCIES
peek-sidekiq (~> 1.0.3)
pg (~> 0.18.2)
premailer-rails (~> 1.9.7)
prometheus-client-mmap (~> 0.9.2)
prometheus-client-mmap (~> 0.9.3)
pry-byebug (~> 3.4.1)
pry-rails (~> 0.3.4)
rack-attack (~> 4.4.1)
@ -1143,6 +1143,7 @@ DEPENDENCIES
rubocop-rspec (~> 1.22.1)
ruby-fogbugz (~> 0.2.1)
ruby-prof (~> 0.17.0)
ruby-progressbar
ruby_parser (~> 3.8)
rufus-scheduler (~> 3.4)
rugged (~> 0.27)

View File

@ -1 +1 @@
10.8.0-pre
11.0.0-pre

View File

@ -2,10 +2,7 @@ import $ from 'jquery';
import timeago from 'timeago.js';
import dateFormat from 'vendor/date.format';
import { pluralize } from './text_utility';
import {
languageCode,
s__,
} from '../../locale';
import { languageCode, s__ } from '../../locale';
window.timeago = timeago;
window.dateFormat = dateFormat;
@ -17,11 +14,37 @@ window.dateFormat = dateFormat;
*
* @param {Boolean} abbreviated
*/
const getMonthNames = (abbreviated) => {
const getMonthNames = abbreviated => {
if (abbreviated) {
return [s__('Jan'), s__('Feb'), s__('Mar'), s__('Apr'), s__('May'), s__('Jun'), s__('Jul'), s__('Aug'), s__('Sep'), s__('Oct'), s__('Nov'), s__('Dec')];
return [
s__('Jan'),
s__('Feb'),
s__('Mar'),
s__('Apr'),
s__('May'),
s__('Jun'),
s__('Jul'),
s__('Aug'),
s__('Sep'),
s__('Oct'),
s__('Nov'),
s__('Dec'),
];
}
return [s__('January'), s__('February'), s__('March'), s__('April'), s__('May'), s__('June'), s__('July'), s__('August'), s__('September'), s__('October'), s__('November'), s__('December')];
return [
s__('January'),
s__('February'),
s__('March'),
s__('April'),
s__('May'),
s__('June'),
s__('July'),
s__('August'),
s__('September'),
s__('October'),
s__('November'),
s__('December'),
];
};
/**
@ -29,7 +52,8 @@ const getMonthNames = (abbreviated) => {
* @param {date} date
* @returns {String}
*/
export const getDayName = date => ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][date.getDay()];
export const getDayName = date =>
['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][date.getDay()];
/**
* @example
@ -55,7 +79,7 @@ export function getTimeago() {
if (!timeagoInstance) {
const localeRemaining = function getLocaleRemaining(number, index) {
return [
[s__('Timeago|less than a minute ago'), s__('Timeago|in a while')],
[s__('Timeago|less than a minute ago'), s__('Timeago|right now')],
[s__('Timeago|less than a minute ago'), s__('Timeago|%s seconds remaining')],
[s__('Timeago|about a minute ago'), s__('Timeago|1 minute remaining')],
[s__('Timeago|%s minutes ago'), s__('Timeago|%s minutes remaining')],
@ -73,7 +97,7 @@ export function getTimeago() {
};
const locale = function getLocale(number, index) {
return [
[s__('Timeago|less than a minute ago'), s__('Timeago|in a while')],
[s__('Timeago|less than a minute ago'), s__('Timeago|right now')],
[s__('Timeago|less than a minute ago'), s__('Timeago|in %s seconds')],
[s__('Timeago|about a minute ago'), s__('Timeago|in 1 minute')],
[s__('Timeago|%s minutes ago'), s__('Timeago|in %s minutes')],
@ -102,7 +126,7 @@ export function getTimeago() {
* For the given element, renders a timeago instance.
* @param {jQuery} $els
*/
export const renderTimeago = ($els) => {
export const renderTimeago = $els => {
const timeagoEls = $els || document.querySelectorAll('.js-timeago-render');
// timeago.js sets timeouts internally for each timeago value to be updated in real time
@ -119,7 +143,7 @@ export const localTimeAgo = ($timeagoEls, setTimeago = true) => {
if (setTimeago) {
// Recreate with custom template
$(el).tooltip({
template: '<div class="tooltip local-timeago" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',
template: '<div class="tooltip local-timeago" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
});
}
@ -141,7 +165,9 @@ export const timeFor = (time, expiredLabel) => {
if (new Date(time) < new Date()) {
return expiredLabel || s__('Timeago|Past due');
}
return getTimeago().format(time, `${timeagoLanguageCode}-remaining`).trim();
return getTimeago()
.format(time, `${timeagoLanguageCode}-remaining`)
.trim();
};
export const getDayDifference = (a, b) => {
@ -161,7 +187,7 @@ export const getDayDifference = (a, b) => {
export function timeIntervalInWords(intervalInSeconds) {
const secondsInteger = parseInt(intervalInSeconds, 10);
const minutes = Math.floor(secondsInteger / 60);
const seconds = secondsInteger - (minutes * 60);
const seconds = secondsInteger - minutes * 60;
let text = '';
if (minutes >= 1) {
@ -178,8 +204,34 @@ export function dateInWords(date, abbreviated = false, hideYear = false) {
const month = date.getMonth();
const year = date.getFullYear();
const monthNames = [s__('January'), s__('February'), s__('March'), s__('April'), s__('May'), s__('June'), s__('July'), s__('August'), s__('September'), s__('October'), s__('November'), s__('December')];
const monthNamesAbbr = [s__('Jan'), s__('Feb'), s__('Mar'), s__('Apr'), s__('May'), s__('Jun'), s__('Jul'), s__('Aug'), s__('Sep'), s__('Oct'), s__('Nov'), s__('Dec')];
const monthNames = [
s__('January'),
s__('February'),
s__('March'),
s__('April'),
s__('May'),
s__('June'),
s__('July'),
s__('August'),
s__('September'),
s__('October'),
s__('November'),
s__('December'),
];
const monthNamesAbbr = [
s__('Jan'),
s__('Feb'),
s__('Mar'),
s__('Apr'),
s__('May'),
s__('Jun'),
s__('Jul'),
s__('Aug'),
s__('Sep'),
s__('Oct'),
s__('Nov'),
s__('Dec'),
];
const monthName = abbreviated ? monthNamesAbbr[month] : monthNames[month];
@ -210,7 +262,7 @@ export const monthInWords = (date, abbreviated = false) => {
*
* @param {Date} date
*/
export const totalDaysInMonth = (date) => {
export const totalDaysInMonth = date => {
if (!date) {
return 0;
}
@ -223,12 +275,20 @@ export const totalDaysInMonth = (date) => {
*
* @param {Date} date
*/
export const getSundays = (date) => {
export const getSundays = date => {
if (!date) {
return [];
}
const daysToSunday = ['Saturday', 'Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday', 'Sunday'];
const daysToSunday = [
'Saturday',
'Friday',
'Thursday',
'Wednesday',
'Tuesday',
'Monday',
'Sunday',
];
const month = date.getMonth();
const year = date.getFullYear();

View File

@ -351,7 +351,7 @@ import Cookies from 'js-cookie';
},
getCommitButtonText() {
const initial = 'Commit conflict resolution';
const initial = 'Commit to source branch';
const inProgress = 'Committing...';
return this.state ? this.state.isSubmitting ? inProgress : initial : initial;

View File

@ -2,7 +2,7 @@
import tooltip from '../../vue_shared/directives/tooltip';
export default {
name: 'MRWidgetAuthor',
name: 'MrWidgetAuthor',
directives: {
tooltip,
},

View File

@ -1,10 +1,10 @@
<script>
import mrWidgetAuthor from './mr_widget_author.vue';
import MrWidgetAuthor from './mr_widget_author.vue';
export default {
name: 'MRWidgetAuthorTime',
components: {
mrWidgetAuthor,
MrWidgetAuthor,
},
props: {
actionText: {

View File

@ -1,13 +1,13 @@
<script>
import Flash from '../../../flash';
import statusIcon from '../mr_widget_status_icon.vue';
import mrWidgetAuthor from '../../components/mr_widget_author.vue';
import MrWidgetAuthor from '../../components/mr_widget_author.vue';
import eventHub from '../../event_hub';
export default {
name: 'MRWidgetMergeWhenPipelineSucceeds',
components: {
mrWidgetAuthor,
MrWidgetAuthor,
statusIcon,
},
props: {

View File

@ -329,6 +329,10 @@
&.invalid {
@include status-color($gray-dark, color("gray"), $gray-darkest);
border-color: $gray-darkest;
&:not(span):hover {
color: $gray;
}
}
}

View File

@ -286,6 +286,14 @@ $colors: (
}
.resolve-conflicts-form {
padding-top: $gl-padding;
h4 {
margin-top: 0;
}
.resolve-info {
@media (max-width: $screen-md-max) {
margin-bottom: $gl-padding;
}
}
}
}

View File

@ -1,12 +1,12 @@
module Groups
module Settings
class BadgesController < Groups::ApplicationController
include GrapeRouteHelpers::NamedRouteMatcher
include API::Helpers::RelatedResourcesHelpers
before_action :authorize_admin_group!
def index
@badge_api_endpoint = api_v4_groups_badges_path(id: @group.id)
@badge_api_endpoint = expose_url(api_v4_groups_badges_path(id: @group.id))
end
end
end

View File

@ -1,12 +1,12 @@
module Projects
module Settings
class BadgesController < Projects::ApplicationController
include GrapeRouteHelpers::NamedRouteMatcher
include API::Helpers::RelatedResourcesHelpers
before_action :authorize_admin_project!
def index
@badge_api_endpoint = api_v4_projects_badges_path(id: @project.id)
@badge_api_endpoint = expose_url(api_v4_projects_badges_path(id: @project.id))
end
end
end

View File

@ -894,6 +894,13 @@ class Project < ActiveRecord::Base
Gitlab::Routing.url_helpers.project_url(self)
end
def readme_url
readme = repository.readme
if readme
Gitlab::Routing.url_helpers.project_blob_url(self, File.join(default_branch, readme.path))
end
end
def new_issuable_address(author, address_type)
return unless Gitlab::IncomingEmail.supports_issue_creation? && author

View File

@ -596,7 +596,7 @@ class Repository
cache_method :gitlab_ci_yml
def xcode_project?
file_on_head(:xcode_config).present?
file_on_head(:xcode_config, :tree).present?
end
cache_method :xcode_project?
@ -920,11 +920,21 @@ class Repository
end
end
def file_on_head(type)
if head = tree(:head)
head.blobs.find do |blob|
Gitlab::FileDetector.type_of(blob.path) == type
def file_on_head(type, object_type = :blob)
return unless head = tree(:head)
objects =
case object_type
when :blob
head.blobs
when :tree
head.trees
else
raise ArgumentError, "Object type #{object_type} is not supported"
end
objects.find do |object|
Gitlab::FileDetector.type_of(object.path) == type
end
end

View File

@ -109,7 +109,7 @@ class User < ActiveRecord::Base
has_many :created_projects, foreign_key: :creator_id, class_name: 'Project'
has_many :users_star_projects, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
has_many :starred_projects, through: :users_star_projects, source: :project
has_many :project_authorizations
has_many :project_authorizations, dependent: :delete_all # rubocop:disable Cop/ActiveRecordDependent
has_many :authorized_projects, through: :project_authorizations, source: :project
has_many :user_interacted_projects
@ -165,8 +165,7 @@ class User < ActiveRecord::Base
validate :signup_domain_valid?, on: :create, if: ->(user) { !user.created_by_id }
before_validation :sanitize_attrs
before_validation :set_notification_email, if: :email_changed?
before_save :set_notification_email, if: :email_changed? # in case validation is skipped
before_validation :set_notification_email, if: :new_record?
before_validation :set_public_email, if: :public_email_changed?
before_save :set_public_email, if: :public_email_changed? # in case validation is skipped
before_save :ensure_incoming_email_token
@ -179,8 +178,21 @@ class User < ActiveRecord::Base
after_update :username_changed_hook, if: :username_changed?
after_destroy :post_destroy_hook
after_destroy :remove_key_cache
after_commit :update_emails_with_primary_email, on: :update, if: -> { previous_changes.key?('email') }
after_commit :update_invalid_gpg_signatures, on: :update, if: -> { previous_changes.key?('email') }
after_commit(on: :update) do
if previous_changes.key?('email')
# Grab previous_email here since previous_changes changes after
# #update_emails_with_primary_email and #update_notification_email are called
previous_email = previous_changes[:email][0]
update_emails_with_primary_email(previous_email)
update_invalid_gpg_signatures
if previous_email == notification_email
self.notification_email = email
save
end
end
end
after_initialize :set_projects_limit
@ -546,8 +558,7 @@ class User < ActiveRecord::Base
# hash and `_was` variables getting munged.
# By using an `after_commit` instead of `after_update`, we avoid the recursive callback
# scenario, though it then requires us to use the `previous_changes` hash
def update_emails_with_primary_email
previous_email = previous_changes[:email][0] # grab this before the DestroyService is called
def update_emails_with_primary_email(previous_email)
primary_email_record = emails.find_by(email: email)
Emails::DestroyService.new(self, user: self).execute(primary_email_record) if primary_email_record
@ -772,13 +783,13 @@ class User < ActiveRecord::Base
end
def set_notification_email
if notification_email.blank? || !all_emails.include?(notification_email)
if notification_email.blank? || all_emails.exclude?(notification_email)
self.notification_email = email
end
end
def set_public_email
if public_email.blank? || !all_emails.include?(public_email)
if public_email.blank? || all_emails.exclude?(public_email)
self.public_email = ''
end
end

View File

@ -19,7 +19,7 @@
= nav_link(path: 'projects#show', html_options: { class: "fly-out-top-item" } ) do
= link_to project_path(@project) do
%strong.fly-out-top-item-name
= _('Overview')
= _('Project')
%li.divider.fly-out-top-item
= nav_link(path: 'projects#show') do
= link_to project_path(@project), title: _('Project details'), class: 'shortcuts-project' do

View File

@ -11,6 +11,6 @@
Showing
%strong.cred {{conflictsCountText}}
between
%strong {{conflictsData.sourceBranch}}
%strong.ref-name {{conflictsData.sourceBranch}}
and
%strong {{conflictsData.targetBranch}}
%strong.ref-name {{conflictsData.targetBranch}}

View File

@ -1,13 +1,21 @@
- branch_name = link_to @merge_request.source_branch, project_tree_path(@merge_request.project, @merge_request.source_branch), class: "ref-name"
- translation =_('You can resolve the merge conflict using either the Interactive mode, by choosing %{use_ours} or %{use_theirs} buttons, or by editing the files directly. Commit these changes into %{branch_name}') % { use_ours: '<code>Use Ours</code>', use_theirs: '<code>Use Theirs</code>', branch_name: branch_name }
%hr
.resolve-conflicts-form
.form-group.row
%label.col-sm-2.col-form-label{ "for" => "commit-message" }
#{ _('Commit message') }
.col-sm-10
.col-md-4
%h4= _('Resolve conflicts on source branch')
.resolve-info
= translation.html_safe
.col-md-8
%label.label-light{ "for" => "commit-message" }
#{ _('Commit message') }
.commit-message-container
.max-width-marker
%textarea.form-control.js-commit-message#commit-message{ "v-model" => "conflictsData.commitMessage", "rows" => "5" }
.form-group.row
.offset-sm-2.col-sm-10
.col-md-offset-4.col-md-8
.row
.col-6
%button.btn.btn-success.js-submit-button{ type: "button", "@click" => "commit()", ":disabled" => "!readyToCommit" }

View File

@ -30,7 +30,7 @@
%br
%p
- deploy_token = link_to(_('deploy token'), help_page_path('user/project/deploy_tokens/index', anchor: 'read-container-registry-images'), target: '_blank')
= s_('ContainerRegistry|You can also %{deploy_token} for read-only access to the registry images.').html_safe % { deploy_token: deploy_token }
= s_('ContainerRegistry|You can also use a %{deploy_token} for read-only access to the registry images.').html_safe % { deploy_token: deploy_token }
%br
%p
= s_('ContainerRegistry|Once you log in, you&rsquo;re free to create and upload a container image using the common %{build} and %{push} commands').html_safe % { build: "<code>build</code>".html_safe, push: "<code>push</code>".html_safe }

View File

@ -1,5 +0,0 @@
---
title: Introduce new ProjectCiCdSetting model with group_runners_enabled
merge_request: 18144
author:
type: performance

View File

@ -1,5 +0,0 @@
---
title: Add cron job to email users on issue due date
merge_request: 17985
author: Stuart Nelson
type: added

View File

@ -1,5 +0,0 @@
---
title: Improves wording in new pipeline page
merge_request:
author:
type: other

View File

@ -0,0 +1,6 @@
---
title: Fix an issue where the notification email address would be set to an unconfirmed
email address
merge_request: 18474
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Improve tooltips in collapsed right sidebar
merge_request: 17714
author:
type: changed

View File

@ -1,5 +0,0 @@
---
title: Fix `joined` information on project members page
merge_request: 18290
author: Fabian Schneider
type: fixed

View File

@ -1,6 +0,0 @@
---
title: Fix template selector menu visibility when toggling preview mode in file edit
view
merge_request: 18118
author: Fabian Schneider
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Use VueJS for rendering pipeline stages
merge_request:
author:
type: changed

View File

@ -1,5 +0,0 @@
---
title: Prevent pipeline actions in dropdown to redirct to a new page
merge_request:
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Keep current labels visible when editing them in the sidebar
merge_request:
author:
type: changed

View File

@ -1,5 +0,0 @@
---
title: Reconcile project templates with Auto DevOps
merge_request: 18737
author:
type: changed

View File

@ -1,5 +0,0 @@
---
title: Adjust issue boards list header label text color
merge_request:
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Add a comma to the time estimate system notes
merge_request: 18326
author:
type: changed

View File

@ -1,4 +0,0 @@
title: Replace vue resource with axios in pipelines table
merge_request:
author:
type: other

View File

@ -1,5 +0,0 @@
---
title: Improve DB performance of calculating total artifacts size
merge_request: 17839
author:
type: performance

View File

@ -1,5 +0,0 @@
---
title: Make project deploy keys table more clearly structured
merge_request: 18279
author:
type: changed

View File

@ -1,5 +0,0 @@
---
title: Refactor CSS to eliminate vertical misalignment of login nav
merge_request: 16275
author: Takuya Noguchi
type: fixed

View File

@ -1,5 +0,0 @@
---
title: 'Allow group owner to enable runners from subgroups (#41981)'
merge_request: 18009
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Adds push mirrors to GitLab Community Edition
merge_request: 18715
author:
type: changed

View File

@ -1,5 +0,0 @@
---
title: Remove ahead/behind graphs on project branches on mobile
merge_request: 18415
author: Takuya Noguchi
type: other

View File

@ -1,5 +0,0 @@
---
title: Show new branch/mr button even when branch exists
merge_request: 17712
author: Jacopo Beschi @jacopo-beschi
type: added

View File

@ -1,5 +0,0 @@
---
title: Rubocop rule to avoid returning from a block
merge_request: 18000
author: Jacopo Beschi @jacopo-beschi
type: added

View File

@ -1,6 +0,0 @@
---
title: Fix discussions API setting created_at for notable in a group or notable in
a project in a group with owners
merge_request: 18464
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Reduce queries on merge requests list page for merge requests from forks
merge_request: 18561
author:
type: performance

View File

@ -1,5 +0,0 @@
---
title: Breaks commit not found message in pipelines table
merge_request:
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Create settings section for autodevops
merge_request: 18321
author:
type: changed

View File

@ -1,5 +0,0 @@
---
title: Add GCP signup offer to cluster index / create pages
merge_request: 18684
author:
type: added

View File

@ -1,5 +0,0 @@
---
title: Display merge commit SHA in merge widget after merge
merge_request: 18722
author:
type: added

View File

@ -1,5 +0,0 @@
---
title: Replace GKE acronym with Google Kubernetes Engine
merge_request:
author:
type: other

View File

@ -1,5 +0,0 @@
---
title: Use RFC 3676 mail signature delimiters
merge_request: 17979
author: Enrico Scholz
type: changed

View File

@ -1,5 +0,0 @@
---
title: Enable specifying variables when executing a manual pipeline
merge_request: 18440
author:
type: changed

View File

@ -1,5 +0,0 @@
---
title: Removes modal boards store and mixins from global scope
merge_request:
author:
type: other

View File

@ -1,6 +0,0 @@
---
title: Verifiy if pipeline has commit idetails and render information in MR widget
when branch is deleted
merge_request:
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Expose Deploy Token data as environment varialbes on CI/CD jobs
merge_request: 18414
author:
type: added

View File

@ -1,5 +0,0 @@
---
title: Fix pipeline status in branch/tag tree page
merge_request: 17995
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Now `rake cache:clear` will also clear pipeline status cache
merge_request: 18257
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Make toggle markdown preview shortcut only toggle selected field
merge_request:
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Clean up WebIDE status bar and add useful info
merge_request:
author:
type: changed

View File

@ -1,5 +0,0 @@
---
title: Remove branch name from the status bar of WebIDE
merge_request:
author:
type: changed

View File

@ -1,5 +0,0 @@
---
title: Add the signature verfication badge to the compare view
merge_request: 18245
author: Marc Shaw
type: added

View File

@ -1,5 +0,0 @@
---
title: Fix confirmation modal for deleting a protected branch
merge_request: 18176
author: Paul Bonaud @PaulRbR
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Adds illustration for when job log was erased
merge_request:
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Update faraday_middlewar to 0.12.2
merge_request: 18397
author: Takuya Noguchi
type: security

View File

@ -1,5 +0,0 @@
---
title: Fix tabs container styles to make RSS button clickable
merge_request: 18559
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Fix undefined `html_escape` method during markdown rendering
merge_request: 18418
author:
type: fixed

View File

@ -1,6 +0,0 @@
---
title: Correct text and functionality for delete user / delete user and contributions
modal.
merge_request: 18463
author: Marc Schwede
type: fixed

View File

@ -1,6 +0,0 @@
---
title: Don't automatically remove artifacts for pages jobs after pages:deploy has
run
merge_request: 18628
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Ensure member notifications are sent after the member actual creation/update in the DB
merge_request: 18538
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Fix project creation for user endpoint when jobs_enabled parameter supplied
merge_request:
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Update links to /ci/lint with ones to project ci/lint
merge_request: 18539
author: Takuya Noguchi
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Replace time_ago_in_words with JS-based one
merge_request: 18607
author: Takuya Noguchi
type: performance

View File

@ -0,0 +1,5 @@
---
title: Expose readme url in Project API
merge_request: 18960
author: Imre Farkas
type: changed

View File

@ -1,5 +0,0 @@
---
title: Resolve Import/Export ci_cd_settings error updating the project
merge_request: 46049
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: 46210 Display logo and user dropdown on mobile for terms page and fix styling
merge_request:
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Disables RBAC on nginx-ingress
merge_request: 18947
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: fixed copy to blipboard button in embed bar of snippets
merge_request: 18923
author: haseebeqx
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Correct skewed Kubernetes popover illustration
merge_request: 18949
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Fix unassign slash command preview
merge_request: 18447
author:
type: fixed

View File

@ -1,6 +0,0 @@
---
title: Raise NoRepository error for non-valid repositories when calculating repository
checksum
merge_request: 18594
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: ShaAttribute no longer stops startup if database is missing
merge_request: 18726
author:
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Adds Embedded Snippets Support
merge_request: 15695
author: haseebeqx
type: added

View File

@ -0,0 +1,5 @@
---
title: Add NOT NULL constraints to project_authorizations.
merge_request: 18980
author:
type: other

View File

@ -1,5 +0,0 @@
---
title: Transition to atomic internal ids for all models.
merge_request: 44259
author:
type: other

View File

@ -0,0 +1,5 @@
---
title: Increase text limit for GPG keys (mysql only).
merge_request: 19069
author:
type: other

View File

@ -1,6 +0,0 @@
---
title: Replace "Click" with "Select" to be more inclusive of people with accessibility
requirements
merge_request: 18386
author: Mark Lapierre
type: other

View File

@ -1,5 +0,0 @@
---
title: Add Copy metadata quick action
merge_request: 16473
author: Mateusz Bajorski
type: added

View File

@ -1,5 +0,0 @@
---
title: Add CI_COMMIT_MESSAGE, CI_COMMIT_TITLE and CI_COMMIT_DESCRIPTION predefined variables
merge_request: 18672
author:
type: added

View File

@ -1,5 +0,0 @@
---
title: Add loading icon padding for pipeline environments
merge_request: 18631
author: George Tsiolis
type: fixed

View File

@ -1,5 +0,0 @@
---
title: Add padding to profile description
merge_request: 18663
author: George Tsiolis
type: changed

View File

@ -1,5 +0,0 @@
---
title: Align project avatar on small viewports
merge_request: 18513
author: George Tsiolis
type: changed

View File

@ -1,5 +0,0 @@
---
title: git SHA is now displayed alongside the GitLab version on the Admin Dashboard
merge_request:
author:
type: added

View File

@ -1,5 +0,0 @@
---
title: Add missing changelog type to docs
merge_request: 18526
author: "@blackst0ne"
type: other

View File

@ -1,5 +0,0 @@
---
title: 'Replace the `project/builds/artifacts.feature` spinach test with an rspec analog'
merge_request: 18729
author: '@blackst0ne'
type: other

View File

@ -1,5 +0,0 @@
---
title: "Replace the `project/commits/branches.feature` spinach test with an rspec analog"
merge_request: 18302
author: "@blackst0ne"
type: other

View File

@ -1,5 +0,0 @@
---
title: Replace the `project/commits/comments.feature` spinach test with an rspec analog
merge_request: 18356
author: "@blackst0ne"
type: other

View File

@ -1,5 +0,0 @@
---
title: Replace the `project/issues/milestones.feature` spinach test with an rspec analog
merge_request: 18300
author: "@blackst0ne"
type: other

View File

@ -1,5 +0,0 @@
---
title: Replace the `project/source/markdown_render.feature` spinach test with an rspec analog
merge_request: 18525
author: "@blackst0ne"
type: other

View File

@ -1,5 +0,0 @@
---
title: Break issue title for board card title and issuable header text
merge_request: 18674
author: George Tsiolis
type: changed

Some files were not shown because too many files have changed in this diff Show More