Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2020-12-16 03:09:46 +00:00
parent eba30e2ad8
commit 6aaf8cf6f4
101 changed files with 448 additions and 360 deletions

View File

@ -292,7 +292,6 @@ gem 'sassc-rails', '~> 2.1.0'
gem 'terser', '1.0.2'
gem 'addressable', '~> 2.7'
gem 'font-awesome-rails', '~> 4.7'
gem 'gemojione', '~> 3.3'
gem 'gon', '~> 6.2'
gem 'request_store', '~> 1.5'

View File

@ -396,8 +396,6 @@ GEM
fog-xml (0.1.3)
fog-core
nokogiri (>= 1.5.11, < 2.0.0)
font-awesome-rails (4.7.0.5)
railties (>= 3.2, < 6.1)
formatador (0.2.5)
fugit (1.2.1)
et-orbi (~> 1.1, >= 1.1.8)
@ -1347,7 +1345,6 @@ DEPENDENCIES
fog-local (~> 0.6)
fog-openstack (~> 1.0)
fog-rackspace (~> 0.1.1)
font-awesome-rails (~> 4.7)
fugit (~> 1.2.1)
fuubar (~> 2.2.0)
gemojione (~> 3.3)

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

View File

@ -130,6 +130,11 @@ export function isListDraggable(list) {
return list.listType !== ListType.backlog && list.listType !== ListType.closed;
}
// EE-specific feature. Find the implementation in the `ee/`-folder
export function transformBoardConfig() {
return '';
}
export default {
getMilestone,
formatIssue,

View File

@ -7,7 +7,6 @@ import { sortableStart, sortableEnd } from '~/boards/mixins/sortable_default_opt
import BoardNewIssue from './board_new_issue_new.vue';
import BoardCard from './board_card.vue';
import eventHub from '../eventhub';
import boardsStore from '../stores/boards_store';
import { sprintf, __ } from '~/locale';
export default {
@ -44,7 +43,6 @@ export default {
data() {
return {
scrollOffset: 250,
filters: boardsStore.state.filters,
showCount: false,
showIssueForm: false,
};
@ -94,12 +92,6 @@ export default {
},
},
watch: {
filters: {
handler() {
this.listRef.scrollTop = 0;
},
deep: true,
},
issues() {
this.$nextTick(() => {
this.showCount = this.scrollHeight() > Math.ceil(this.listHeight());

View File

@ -1,6 +1,5 @@
import FilteredSearchBoards from '../../filtered_search_boards';
import FilteredSearchContainer from '../../../filtered_search/container';
import vuexstore from '~/boards/stores';
export default {
name: 'modal-filters',
@ -13,7 +12,7 @@ export default {
mounted() {
FilteredSearchContainer.container = this.$el;
this.filteredSearch = new FilteredSearchBoards(this.store, vuexstore);
this.filteredSearch = new FilteredSearchBoards(this.store);
this.filteredSearch.setup();
this.filteredSearch.removeTokens();
this.filteredSearch.handleInputPlaceholder();

View File

@ -1,10 +1,13 @@
import IssuableFilteredSearchTokenKeys from 'ee_else_ce/filtered_search/issuable_filtered_search_token_keys';
import FilteredSearchManager from 'ee_else_ce/filtered_search/filtered_search_manager';
import { transformBoardConfig } from 'ee_else_ce/boards/boards_util';
import FilteredSearchContainer from '../filtered_search/container';
import boardsStore from './stores/boards_store';
import vuexstore from './stores';
import { updateHistory } from '~/lib/utils/url_utility';
export default class FilteredSearchBoards extends FilteredSearchManager {
constructor(store, vuexstore, updateUrl = false, cantEdit = []) {
constructor(store, updateUrl = false, cantEdit = []) {
super({
page: 'boards',
isGroupDecendent: true,
@ -23,16 +26,26 @@ export default class FilteredSearchBoards extends FilteredSearchManager {
this.cantEdit = cantEdit.filter(i => typeof i === 'string');
this.cantEditWithValue = cantEdit.filter(i => typeof i === 'object');
this.vuexstore = vuexstore;
if (vuexstore.getters.shouldUseGraphQL && vuexstore.state.boardConfig) {
const boardConfigPath = transformBoardConfig(vuexstore.state.boardConfig);
if (boardConfigPath !== '') {
const filterPath = window.location.search ? `${window.location.search}&` : '?';
updateHistory({
url: `${filterPath}${transformBoardConfig(vuexstore.state.boardConfig)}`,
});
}
}
}
updateObject(path) {
const groupByParam = new URLSearchParams(window.location.search).get('group_by');
this.store.path = `${path.substr(1)}${groupByParam ? `&group_by=${groupByParam}` : ''}`;
if (this.vuexstore.getters.shouldUseGraphQL) {
boardsStore.updateFiltersUrl();
boardsStore.performSearch();
if (vuexstore.getters.shouldUseGraphQL) {
updateHistory({
url: `?${path.substr(1)}${groupByParam ? `&group_by=${groupByParam}` : ''}`,
});
vuexstore.dispatch('performSearch');
} else if (this.updateUrl) {
boardsStore.updateFiltersUrl();
}

View File

@ -40,7 +40,6 @@ import {
NavigationType,
convertObjectPropsToCamelCase,
parseBoolean,
urlParamsToObject,
} from '~/lib/utils/common_utils';
import mountMultipleBoardsSwitcher from './mount_multiple_boards_switcher';
@ -112,7 +111,7 @@ export default () => {
};
},
computed: {
...mapGetters(['isSwimlanesOn', 'shouldUseGraphQL']),
...mapGetters(['shouldUseGraphQL']),
detailIssueVisible() {
return Object.keys(this.detailIssue.issue).length;
},
@ -130,6 +129,17 @@ export default () => {
...endpoints,
boardType: this.parent,
disabled: this.disabled,
boardConfig: {
milestoneId: parseInt($boardApp.dataset.boardMilestoneId, 10),
milestoneTitle: $boardApp.dataset.boardMilestoneTitle || '',
iterationId: parseInt($boardApp.dataset.boardIterationId, 10),
iterationTitle: $boardApp.dataset.boardIterationTitle || '',
assigneeUsername: $boardApp.dataset.boardAssigneeUsername,
labels: $boardApp.dataset.labels ? JSON.parse($boardApp.dataset.labels || []) : [],
weight: $boardApp.dataset.boardWeight
? parseInt($boardApp.dataset.boardWeight, 10)
: null,
},
});
boardsStore.setEndpoints(endpoints);
boardsStore.rootPath = this.boardsEndpoint;
@ -138,7 +148,6 @@ export default () => {
eventHub.$on('newDetailIssue', this.updateDetailIssue);
eventHub.$on('clearDetailIssue', this.clearDetailIssue);
sidebarEventHub.$on('toggleSubscription', this.toggleSubscription);
eventHub.$on('performSearch', this.performSearch);
eventHub.$on('initialBoardLoad', this.initialBoardLoad);
},
beforeDestroy() {
@ -146,16 +155,10 @@ export default () => {
eventHub.$off('newDetailIssue', this.updateDetailIssue);
eventHub.$off('clearDetailIssue', this.clearDetailIssue);
sidebarEventHub.$off('toggleSubscription', this.toggleSubscription);
eventHub.$off('performSearch', this.performSearch);
eventHub.$off('initialBoardLoad', this.initialBoardLoad);
},
mounted() {
this.filterManager = new FilteredSearchBoards(
boardsStore.filter,
store,
true,
boardsStore.cantEdit,
);
this.filterManager = new FilteredSearchBoards(boardsStore.filter, true, boardsStore.cantEdit);
this.filterManager.setup();
this.performSearch();
@ -167,14 +170,7 @@ export default () => {
}
},
methods: {
...mapActions([
'setInitialBoardData',
'setFilters',
'fetchEpicsSwimlanes',
'resetIssues',
'resetEpics',
'fetchLists',
]),
...mapActions(['setInitialBoardData', 'performSearch']),
initialBoardLoad() {
boardsStore
.all()
@ -190,17 +186,6 @@ export default () => {
updateTokens() {
this.filterManager.updateTokens();
},
performSearch() {
this.setFilters(convertObjectPropsToCamelCase(urlParamsToObject(window.location.search)));
if (this.isSwimlanesOn) {
this.resetEpics();
this.resetIssues();
this.fetchEpicsSwimlanes({});
} else if (gon.features.graphqlBoardLists) {
this.fetchLists();
this.resetIssues();
}
},
updateDetailIssue(newIssue, multiSelect = false) {
const { sidebarInfoEndpoint } = newIssue;
if (sidebarInfoEndpoint && newIssue.subscribed === undefined) {

View File

@ -3,6 +3,7 @@ import { pick } from 'lodash';
import boardListsQuery from 'ee_else_ce/boards/graphql/board_lists.query.graphql';
import createGqClient, { fetchPolicies } from '~/lib/graphql';
import { getIdFromGraphQLId } from '~/graphql_shared/utils';
import { convertObjectPropsToCamelCase, urlParamsToObject } from '~/lib/utils/common_utils';
import { BoardType, ListType, inactiveId } from '~/boards/constants';
import * as types from './mutation_types';
import {
@ -64,6 +65,18 @@ export default {
commit(types.SET_FILTERS, filterParams);
},
performSearch({ dispatch }) {
dispatch(
'setFilters',
convertObjectPropsToCamelCase(urlParamsToObject(window.location.search)),
);
if (gon.features.graphqlBoardLists) {
dispatch('fetchLists');
dispatch('resetIssues');
}
},
fetchLists: ({ commit, state, dispatch }) => {
const { endpoints, boardType, filterParams } = state;
const { fullPath, boardId } = endpoints;

View File

@ -492,10 +492,6 @@ const boardsStore = {
eventHub.$emit('updateTokens');
},
performSearch() {
eventHub.$emit('performSearch');
},
setListDetail(newList) {
this.detail.list = newList;
},

View File

@ -32,10 +32,11 @@ export const addIssueToList = ({ state, listId, issueId, moveBeforeId, moveAfter
export default {
[mutationTypes.SET_INITIAL_BOARD_DATA](state, data) {
const { boardType, disabled, ...endpoints } = data;
const { boardType, disabled, boardConfig, ...endpoints } = data;
state.endpoints = endpoints;
state.boardType = boardType;
state.disabled = disabled;
state.boardConfig = boardConfig;
},
[mutationTypes.RECEIVE_BOARD_LISTS_SUCCESS]: (state, lists) => {

View File

@ -14,6 +14,7 @@ export default () => ({
pageInfoByListId: {},
issues: {},
filterParams: {},
boardConfig: {},
error: undefined,
// TODO: remove after ce/ee split of board_content.vue
isShowingEpicsSwimlanes: false,

View File

@ -9,9 +9,6 @@
// GitLab UI framework
@import 'framework';
// Custom Fontawesome icons
@import 'fontawesome_custom';
// Page specific styles (issues, projects etc):
@import 'page_specific_files';

View File

@ -1,11 +1,6 @@
.selected-item::before {
content: '\f00c';
color: $green-500;
position: absolute;
left: 16px;
top: 16px;
transform: translateY(-50%);
font: 14px FontAwesome;
.selected-item {
/* stylelint-disable-next-line function-url-quotes */
background: url(asset_path('checkmark.png')) no-repeat 0 2px;
}
.dropdown-item-space {

View File

@ -1,56 +1,43 @@
/*!
* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/
// Custom Font Awesome styles that render emojis in asciidoc
.md {
.fa {
display: inline-block;
font-style: normal;
font-size: 14px;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
// stylelint-disable property-no-vendor-prefix
// stylelint-disable at-rule-no-vendor-prefix
// stylelint-disable stylelint-gitlab/duplicate-selectors
// scss-lint:disable MergeableSelector
@font-face {
font-family: 'FontAwesome';
src: asset-url('fontawesome-webfont.woff2?v=4.7.0') format('woff2'), asset-url('fontawesome-webfont.woff?v=4.7.0') format('woff');
font-weight: normal;
font-style: normal;
}
.fa-2x {
font-size: 2em;
}
.fa {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.fa-exclamation-triangle::before {
content: '';
}
.fa-2x {
font-size: 2em;
}
.fa-exclamation-circle::before {
content: '';
}
.fa-exclamation-triangle::before {
content: '\f071';
}
.fa-lightbulb-o::before {
content: '💡';
}
.fa-exclamation-circle::before {
content: '\f06a';
}
.fa-thumb-tack::before {
content: '📌';
}
.fa-lightbulb-o::before {
content: '\f0eb';
}
.fa-fire::before {
content: '🔥';
}
.fa-thumb-tack::before {
content: '\f08d';
}
.fa-square-o::before {
content: '\2610';
}
.fa-fire::before {
content: '\f06d';
}
.fa-square-o::before {
content: '\f096';
}
.fa-check-square-o::before {
content: '\f046';
.fa-check-square-o::before {
content: '\2611';
}
}

View File

@ -505,29 +505,27 @@
&.is-active {
color: $gl-text-color;
&::before {
position: absolute;
left: 16px;
top: 16px;
transform: translateY(-50%);
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
&.dropdown-menu-user-link::before {
top: 50%;
}
}
&.is-indeterminate::before {
content: '\f068';
position: absolute;
left: 16px;
top: 16px;
transform: translateY(-50%);
font-style: normal;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: '';
}
&.is-active::before {
content: '\f00c';
&.is-active {
/* stylelint-disable-next-line function-url-quotes */
background: url(asset_path('checkmark.png')) no-repeat 14px 8px;
}
}
}

View File

@ -1,3 +1,6 @@
// Custom Fontawesome icons
@import 'fontawesome_custom';
/**
* Apply Markup (Markdown/AsciiDoc) typography
*
@ -432,11 +435,11 @@
&::before {
margin-right: 4px;
font: normal normal normal 14px/1 FontAwesome;
font-style: normal;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
content: '\f0c6';
content: '📎';
}
&.no-attachment-icon {

View File

@ -22,32 +22,14 @@
border-radius: $gl-border-radius-base;
.select2-arrow {
background-image: none;
background-color: transparent;
border: 0;
padding-top: 12px;
padding-right: 20px;
font-size: 10px;
/* stylelint-disable-next-line function-url-quotes */
background: url(asset_path('chevron-down.png')) no-repeat 2px 8px;
b {
display: none;
}
&::after {
content: '\f078';
position: absolute;
z-index: 1;
text-align: center;
pointer-events: none;
box-sizing: border-box;
color: $gray-darkest;
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
}
.select2-chosen {

View File

@ -51,7 +51,7 @@ class Projects::IssuesController < Projects::ApplicationController
real_time_feature_flag = :real_time_issue_sidebar
real_time_enabled = Gitlab::ActionCable::Config.in_app? || Feature.enabled?(real_time_feature_flag, @project)
push_to_gon_features(real_time_feature_flag, real_time_enabled)
push_to_gon_attributes(:features, real_time_feature_flag, real_time_enabled)
record_experiment_user(:invite_members_version_a)
record_experiment_user(:invite_members_version_b)

View File

@ -4,7 +4,6 @@ require 'json'
module IconsHelper
extend self
include FontAwesome::Rails::IconHelper
DEFAULT_ICON_SIZE = 16

View File

@ -21,8 +21,6 @@ module TriggerableHooks
extend ActiveSupport::Concern
class_methods do
attr_reader :triggerable_hooks
attr_reader :triggers
def hooks_for(trigger)

View File

@ -4,7 +4,7 @@ module Gitlab
module WhatsNew
class ItemPresenter
DICTIONARY = {
free: 'Free',
core: 'Free',
starter: 'Bronze',
premium: 'Silver',
ultimate: 'Gold'

View File

@ -0,0 +1,5 @@
---
title: Replace wiki fontawesome icons with emojis
merge_request: 49097
author:
type: other

View File

@ -0,0 +1,5 @@
---
title: Remove dast_unlicensed job
merge_request: 50129
author:
type: changed

View File

@ -229,11 +229,6 @@ module Gitlab
config.assets.precompile << "icons.json"
config.assets.precompile << "illustrations/*.svg"
# Import Fontawesome fonts
config.assets.paths << "#{config.root}/node_modules/font-awesome/fonts"
config.assets.precompile << "fontawesome-webfont.woff2"
config.assets.precompile << "fontawesome-webfont.woff"
# Import css for xterm
config.assets.paths << "#{config.root}/node_modules/xterm/src/"
config.assets.precompile << "xterm.css"

View File

@ -7,7 +7,7 @@
stage: Plan
self-managed: true
gitlab-com: true
packages: [Ultimate, Gold]
packages: [Ultimate]
url: https://docs.gitlab.com/ee/user/project/requirements/index.html
image_url: https://docs.gitlab.com/ee/user/project/requirements/img/requirements_list_v13_5.png
published_at: 2020-04-22
@ -20,7 +20,7 @@
stage: Release
self-managed: true
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/ci/examples/authenticating-with-hashicorp-vault/index.html
image_url: https://about.gitlab.com/images/12_10/jwt-vault-1.png
published_at: 2020-04-22
@ -35,7 +35,7 @@
stage: Plan
self-managed: true
gitlab-com: true
packages: [Ultimate, Gold]
packages: [Ultimate]
url: https://docs.gitlab.com/ee/user/project/issues/index.html#health-status
image_url: https://about.gitlab.com/images/12_10/epic-health-status.png
published_at: 2020-04-22
@ -48,7 +48,7 @@
stage: Plan
self-managed: true
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/project/import/jira.html
image_url: https://about.gitlab.com/images/12_10/jira-importer.png
published_at: 2020-04-22

View File

@ -20,7 +20,7 @@
stage: Release
self-managed: true
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/topics/autodevops/index.html#aws-ecs
image_url: https://docs.gitlab.com/ee/ci/img/ecs_dashboard_v12_9.png
published_at: 2020-05-22
@ -33,7 +33,7 @@
stage: Plan
self-managed: true
gitlab-com: true
packages: [Ultimate, Gold]
packages: [Ultimate]
url: https://docs.gitlab.com/ee/user/group/roadmap/
image_url: https://about.gitlab.com/images/13_0/Expand-Epic-Hierarchy-Roadmap_roadmap.png
published_at: 2020-05-22
@ -46,7 +46,7 @@
stage: Create
self-managed: true
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/snippets.html#versioned-snippets
image_url: https://about.gitlab.com/images/13_0/phikai-versioned-snippets.png
published_at: 2020-05-22
@ -59,7 +59,7 @@
stage: Create
self-managed: true
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/project/web_ide/#themes
image_url: https://about.gitlab.com/images/13_0/phikai-web-ide-dark-theme.png
published_at: 2020-05-22

View File

@ -7,7 +7,7 @@
stage: Monitor
self-managed: true
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/project/operations/alert_management.html
image_url: https://about.gitlab.com/images/13_1/alert_management.png
published_at: 2020-06-22
@ -20,7 +20,7 @@
stage: Verify
self-managed: true
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/project/merge_requests/accessibility_testing.html#accessibility-merge-request-widget
image_url: https://about.gitlab.com/images/13_1/a11y-merge-request-widget.png
published_at: 2020-06-22
@ -31,7 +31,7 @@
stage: Create
self-managed: true
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/project/issues/design_management.html#resolve-design-threads
image_url: https://about.gitlab.com/images/13_1/resolve-design-comment.gif
published_at: 2020-06-22
@ -42,7 +42,7 @@
stage: Create
self-managed: true
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/discussions/index.html#merge-request-reviews
image_url: https://about.gitlab.com/images/13_1/batch_comments.png
published_at: 2020-06-22

View File

@ -20,7 +20,7 @@
stage: Defend
self-managed: true
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://www.youtube.com/watch?v=WxBzBz76FxU&feature=youtu.be
image_url: https://img.youtube.com/vi/WxBzBz76FxU/hqdefault.jpg
published_at: 2020-07-22
@ -33,7 +33,7 @@
stage: Create
self-managed: false
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/project/issues/design_management.html#gitlab-figma-plugin
image_url: https://about.gitlab.com/images/13_2/figma-plugin.png
published_at: 2020-07-22
@ -48,7 +48,7 @@
stage: Monitor
self-managed: true
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/project/clusters/#visualizing-cluster-health
image_url: https://about.gitlab.com/images/13_2/k8s_cluster_monitoring.png
published_at: 2020-07-22

View File

@ -18,7 +18,7 @@
stage: Verify
self-managed: true
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/ci/yaml/#parallel-matrix-jobs
image_url: https://about.gitlab.com/images/13_3/cartesian-matrix.png
published_at: 2020-08-22
@ -46,7 +46,7 @@
stage: Secure
self-managed: true
gitlab-com: true
packages: [All]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/application_security/sast/#making-sast-analyzers-available-to-all-gitlab-tiers
image_url: https://about.gitlab.com/images/13_3/sast-gitlab-languages.png
published_at: 2020-08-22

View File

@ -76,7 +76,7 @@
stage: Enablement
self-managed: true
gitlab-com: true
packages: [core, starter, premium, ultimate]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/search/#autocomplete-suggestions
image_url: https://about.gitlab.com/images/13_4/enablement_global_search.gif
published_at: 2020-09-22

View File

@ -65,7 +65,7 @@
stage: Release
self-managed: true
gitlab-com: true
packages: [core, starter, premium, ultimate]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/operations/feature_flags.html#percent-rollout
image_url: https://about.gitlab.com/images/13_5/percent-rollout.png
published_at: 2020-10-22
@ -78,7 +78,7 @@
stage: Secure
self-managed: true
gitlab-com: true
packages: [core, starter, premium, ultimate]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/application_security/sast/#supported-languages-and-frameworks
image_url: https://about.gitlab.com/images/13_5/sast-gitlab-mobile.png
published_at: 2020-10-22

View File

@ -9,7 +9,7 @@
stage: Release
self-managed: true
gitlab-com: true
packages: [core, starter, premium, ultimate]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/ci/cloud_deployment/#custom-build-job-for-auto-devops
image_url: https://img.youtube.com/vi/4B-qSwKnacA/hqdefault.jpg
published_at: 2020-11-22
@ -22,7 +22,7 @@
stage: Verify
self-managed: true
gitlab-com: true
packages: [core, starter, premium, ultimate]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/project/merge_requests/code_quality.html#code-quality-widget
image_url: https://about.gitlab.com/images/13_6/code_quality_severity.png
published_at: 2020-11-22
@ -39,7 +39,7 @@
stage: Verify
self-managed: true
gitlab-com: true
packages: [premium, ultimate]
packages: [Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/group/repositories_analytics/index.html#latest-project-test-coverage-list
image_url: https://about.gitlab.com/images/13_6/display_selected_coverage_projects_example.png
published_at: 2020-11-22
@ -58,7 +58,7 @@
stage: Create
self-managed: true
gitlab-com: true
packages: [core, starter, premium, ultimate]
packages: [Core, Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/admin_area/settings/project_integration_management.html
image_url: https://about.gitlab.com/images/13_6/project-integration-inheriting-settings.png
published_at: 2020-11-22
@ -75,7 +75,7 @@
stage: Plan
self-managed: true
gitlab-com: true
packages: [starter, premium, ultimate]
packages: [Starter, Premium, Ultimate]
url: https://docs.gitlab.com/ee/user/project/milestones/burndown_and_burnup_charts.html#burnup-charts
image_url: https://about.gitlab.com/images/13_6/burnup-chart.png
published_at: 2020-11-22

View File

@ -0,0 +1,21 @@
---
# Error: gitlab.AlertBoxStyle
#
# Makes sure alert boxes are used with block quotes.
#
# Checks for 3 formatting issues:
# - Alert boxes inside a block quote (">")
# - Alert boxes with the note text on the same line
# - Alert boxes using words other than "NOTE" or "WARNING"
#
# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
extends: existence
message: 'Alert box "%s" must use the formatting in the style guide.'
link: https://docs.gitlab.com/ee/development/documentation/styleguide.html#alert-boxes
level: error
nonword: true
scope: raw
raw:
- '(\n *\> *(?:NOTE|WARNING)|'
- '\n(NOTE):[^\n]|' # Adding "WARNING" here causes a false positive
- '\n *(?:> )?\**(Note|note|TIP|Tip|tip|CAUTION|Caution|caution|DANGER|Danger|danger|warning):.*)' ## Adding "Warning" here causes a false positive

View File

@ -11,7 +11,7 @@ type: reference
> - Until GitLab 12.8, the feature name was Plugins.
With custom file hooks, GitLab administrators can introduce custom integrations
without modifying GitLab's source code.
without modifying the GitLab source code.
NOTE:
Instead of writing and supporting your own file hook you can make changes

View File

@ -287,7 +287,6 @@ This list of limitations only reflects the latest version of GitLab. If you are
- Real-time updates of issues/merge requests (for example, via long polling) doesn't work on the **secondary** node.
- [Selective synchronization](replication/configuration.md#selective-synchronization) applies only to files and repositories. Other datasets are replicated to the **secondary** node in full, making it inappropriate for use as an access control mechanism.
- Object pools for forked project deduplication work only on the **primary** node, and are duplicated on the **secondary** node.
- [External merge request diffs](../merge_request_diffs.md) will not be replicated if they are on-disk, and viewing merge requests will fail. However, external MR diffs in object storage **are** supported. The default configuration (in-database) does work.
- GitLab Runners cannot register with a **secondary** node. Support for this is [planned for the future](https://gitlab.com/gitlab-org/gitlab/-/issues/3294).
- Geo **secondary** nodes can not be configured to [use high-availability configurations of PostgreSQL](https://gitlab.com/groups/gitlab-org/-/epics/2536).

View File

@ -308,7 +308,8 @@ log data to build up in `pg_xlog`. Removing the unused slots can reduce the amou
sudo gitlab-psql
```
Note: Using `gitlab-rails dbconsole` will not work, because managing replication slots requires superuser permissions.
NOTE:
Using `gitlab-rails dbconsole` will not work, because managing replication slots requires superuser permissions.
1. View your replication slots with:

View File

@ -970,7 +970,7 @@ not an external process, there was very little overhead between:
- GitLab application code that tried to look up data in Git repositories.
- The Git implementation itself.
Because the combination of Rugged and Unicorn was so efficient, GitLab's application code ended up with lots of
Because the combination of Rugged and Unicorn was so efficient, the GitLab application code ended up with lots of
duplicate Git object lookups. For example, looking up the `master` commit a dozen times in one
request. We could write inefficient code without poor performance.
@ -1006,7 +1006,7 @@ enables direct Git access.
When GitLab calls a function that has a "Rugged patch", it performs two checks:
- Is the feature flag for this patch set in the database? If so, the feature flag setting controls
GitLab's use of "Rugged patch" code.
the GitLab use of "Rugged patch" code.
- If the feature flag is not set, GitLab tries accessing the filesystem underneath the
Gitaly server directly. If it can, it uses the "Rugged patch":
- If using Unicorn.

View File

@ -1054,6 +1054,55 @@ To monitor strong consistency, you can use the following Prometheus metrics:
- `gitaly_hook_transaction_voting_delay_seconds`: Client-side delay introduced
by waiting for the transaction to be committed.
## Replication factor
Replication factor is the number of copies Praefect maintains of a given repository. A higher
replication factor offers better redundancy and distribution of read workload, but also results
in a higher storage cost. By default, Praefect replicates repositories to every storage in a
virtual storage.
### Variable replication factor
WARNING:
The feature is not production ready yet. After you set a replication factor, you can't unset it
without manually modifying database state. Variable replication factor requires you to enable
repository-specific primaries by configuring the `per_repository` primary election strategy. The election
strategy is not production ready yet.
Praefect supports configuring a replication factor on a per-repository basis, by assigning
specific storage nodes to host a repository.
[In an upcoming release](https://gitlab.com/gitlab-org/gitaly/-/issues/3362), we intend to
support configuring a default replication factor for a virtual storage. The default replication factor
is applied to every newly-created repository.
Prafect does not store the actual replication factor, but assigns enough storages to host the repository
so the desired replication factor is met. If a storage node is later removed from the virtual storage,
the replication factor of repositories assigned to the storage is decreased accordingly.
The only way to configure a repository's replication factor is the `set-replication-factor`
sub-command. `set-replication-factor` automatically assigns or unassigns random storage nodes as necessary to
reach the desired replication factor. The repository's primary node is always assigned
first and is never unassigned.
```shell
sudo /opt/gitlab/embedded/bin/praefect -config /var/opt/gitlab/praefect/config.toml set-replication-factor -virtual-storage <virtual-storage> -repository <relative-path> -replication-factor <replication-factor>
```
- `-virtual-storage` is the virtual storage the repository is located in.
- `-repository` is the repository's relative path in the storage.
- `-replication-factor` is the desired replication factor of the repository. The minimum value is
`1`, as the primary needs a copy of the repository. The maximum replication factor is the number of
storages in the virtual storage.
On success, the assigned host storages are printed. For example:
```shell
$ sudo /opt/gitlab/embedded/bin/praefect -config /var/opt/gitlab/praefect/config.toml set-replication-factor -virtual-storage default -repository @hashed/3f/db/3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278.git -replication-factor 2
current assignments: gitaly-1, gitaly-2
```
## Automatic failover and leader election
Praefect regularly checks the health of each backend Gitaly node. This
@ -1111,15 +1160,14 @@ useful for identifying potential data loss after a failover. The following param
available:
- `-virtual-storage` that specifies which virtual storage to check. The default behavior is to
display outdated replicas of read-only repositories as they generally require administrator
action.
display outdated replicas of read-only repositories as they might require administrator action.
- In GitLab 13.3 and later, `-partially-replicated` that specifies whether to display a list of
[outdated replicas of writable repositories](#outdated-replicas-of-writable-repositories).
NOTE:
`dataloss` is still in beta and the output format is subject to change.
To check for outdated replicas of read-only repositories, run:
To check for repositories with outdated primaries, run:
```shell
sudo /opt/gitlab/embedded/bin/praefect -config /var/opt/gitlab/praefect/config.toml dataloss [-virtual-storage <virtual-storage>]
@ -1131,24 +1179,45 @@ Every configured virtual storage is checked if none is specified:
sudo /opt/gitlab/embedded/bin/praefect -config /var/opt/gitlab/praefect/config.toml dataloss
```
The number of potentially unapplied changes to repositories is listed for each replica. Listed
repositories might have the latest changes but it is not guaranteed. Only outdated replicas of
read-only repositories are listed by default. For example:
Repositories which have assigned storage nodes that contain an outdated copy of the repository are listed
in the output. A number of useful information is printed for each repository:
- A repository's relative path to the storage directory identifies each repository and groups the related
information.
- The repository's current status is printed in parentheses next to the disk path. If the repository's primary
is outdated, the repository is in `read-only` mode and can't accept writes. Otherwise, the mode is `writable`.
- The primary field lists the repository's current primary. If the repository has no primary, the field shows
`No Primary`.
- The In-Sync Storages lists replicas which have replicated the latest successful write and all writes
preceding it.
- The Outdated Storages lists replicas which contain an outdated copy of the repository. Replicas which have no copy
of the repository but should contain it are also listed here. The maximum number of changes the replica is missing
is listed next to replica. It's important to notice that the outdated replicas may be fully up to date or contain
later changes but Praefect can't guarantee it.
Whether a replica is assigned to host the repository is listed with each replica's status. `assigned host` is printed
next to replicas which are assigned to store the repository. The text is omitted if the replica contains a copy of
the repository but is not assigned to store the repository. Such replicas won't be kept in-sync by Praefect but may
act as replication sources to bring assigned replicas up to date.
Example output:
```shell
Virtual storage: default
Primary: gitaly-3
Outdated repositories:
@hashed/2c/62/2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3.git (read-only):
gitaly-2 is behind by 1 change or less
gitaly-3 is behind by 2 changes or less
@hashed/3f/db/3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278.git (read-only):
Primary: gitaly-1
In-Sync Storages:
gitaly-2, assigned host
Outdated Storages:
gitaly-1 is behind by 3 changes or less, assigned host
gitaly-3 is behind by 3 changes or less
```
A confirmation is printed out when every repository is writable. For example:
```shell
Virtual storage: default
Primary: gitaly-1
All repositories are writable!
```
@ -1156,8 +1225,8 @@ Virtual storage: default
> [Introduced](https://gitlab.com/gitlab-org/gitaly/-/issues/3019) in GitLab 13.3.
To also list information for outdated replicas of writable repositories, use the
`-partially-replicated` parameter.
To also list information of repositories whose primary is up to date but one or more assigned
replicas are outdated, use the `-partially-replicated` flag.
A repository is writable if the primary has the latest changes. Secondaries might be temporarily
outdated while they are waiting to replicate the latest changes.
@ -1170,21 +1239,23 @@ Example output:
```shell
Virtual storage: default
Primary: gitaly-3
Outdated repositories:
@hashed/2c/62/2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3.git (read-only):
gitaly-2 is behind by 1 change or less
gitaly-3 is behind by 2 changes or less
@hashed/4b/22/4b227777d4dd1fc61c6f884f48641d02b4d121d3fd328cb08b5531fcacdabf8a.git (writable):
gitaly-2 is behind by 1 change or less
@hashed/3f/db/3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278.git (writable):
Primary: gitaly-1
In-Sync Storages:
gitaly-1, assigned host
Outdated Storages:
gitaly-2 is behind by 3 changes or less, assigned host
gitaly-3 is behind by 3 changes or less
```
With the `-partially-replicated` flag set, a confirmation is printed out if every replica is fully up to date.
With the `-partially-replicated` flag set, a confirmation is printed out if every assigned replica is fully up to
date.
For example:
```shell
Virtual storage: default
Primary: gitaly-1
All repositories are up to date!
```

View File

@ -28,7 +28,8 @@ GitLab Shell solves this by providing a way to authorize SSH users via a fast,
indexed lookup in the GitLab database. This page describes how to enable the fast
lookup of authorized SSH keys.
> **Warning:** OpenSSH version 6.9+ is required because
WARNING:
OpenSSH version 6.9+ is required because
`AuthorizedKeysCommand` must be able to accept a fingerprint. These
instructions will break installations using older versions of OpenSSH, such as
those included with CentOS 6 as of September 2017. If you want to use this

View File

@ -54,7 +54,7 @@ Each of the approaches we list can or does overwrite data in the target director
### Recommended approach in all cases
GitLab's [backup and restore capability](../../raketasks/backup_restore.md) should be used. Git
The GitLab [backup and restore capability](../../raketasks/backup_restore.md) should be used. Git
repositories are accessed, managed, and stored on GitLab servers by Gitaly as a database. Data loss
can result from directly accessing and copying Gitaly's files using tools like `rsync`.

View File

@ -19,7 +19,8 @@ user, including ones that expire 24 hours after issuing.
In such setups some external automated process is needed to constantly
upload the new keys to GitLab.
> **Warning:** OpenSSH version 6.9+ is required because that version
WARNING:
OpenSSH version 6.9+ is required because that version
introduced the `AuthorizedPrincipalsCommand` configuration option. If
using CentOS 6, you can [follow these
instructions](fast_ssh_key_lookup.html#compiling-a-custom-version-of-openssh-for-centos-6)

View File

@ -40,27 +40,26 @@ storage2:
## Configure GitLab
> **Warning:**
> In order for [backups](../raketasks/backup_restore.md) to work correctly, the storage path must **not** be a
> mount point and the GitLab user should have correct permissions for the parent
> directory of the path. In Omnibus GitLab this is taken care of automatically,
> but for source installations you should be extra careful.
>
> The thing is that for compatibility reasons `gitlab.yml` has a different
> structure than Omnibus. In `gitlab.yml` you indicate the path for the
> repositories, for example `/home/git/repositories`, while in Omnibus you
> indicate `git_data_dirs`, which for the example above would be `/home/git`.
> Then, Omnibus creates a `repositories` directory under that path to use with
> `gitlab.yml`.
>
> This little detail matters because while restoring a backup, the current
> contents of `/home/git/repositories` [are moved to](https://gitlab.com/gitlab-org/gitlab/blob/033e5423a2594e08a7ebcd2379bd2331f4c39032/lib/backup/repository.rb#L54-56) `/home/git/repositories.old`,
> so if `/home/git/repositories` is the mount point, then `mv` would be moving
> things between mount points, and bad things could happen. Ideally,
> `/home/git` would be the mount point, so then things would be moving within the
> same mount point. This is guaranteed with Omnibus installations (because they
> don't specify the full repository path but the parent path), but not for source
> installations.
In order for [backups](../raketasks/backup_restore.md) to work correctly, the storage path must **not** be a
mount point and the GitLab user should have correct permissions for the parent
directory of the path. In Omnibus GitLab this is taken care of automatically,
but for source installations you should be extra careful.
The thing is that for compatibility reasons `gitlab.yml` has a different
structure than Omnibus. In `gitlab.yml` you indicate the path for the
repositories, for example `/home/git/repositories`, while in Omnibus you
indicate `git_data_dirs`, which for the example above would be `/home/git`.
Then, Omnibus creates a `repositories` directory under that path to use with
`gitlab.yml`.
This little detail matters because while restoring a backup, the current
contents of `/home/git/repositories` [are moved to](https://gitlab.com/gitlab-org/gitlab/blob/033e5423a2594e08a7ebcd2379bd2331f4c39032/lib/backup/repository.rb#L54-56) `/home/git/repositories.old`,
so if `/home/git/repositories` is the mount point, then `mv` would be moving
things between mount points, and bad things could happen. Ideally,
`/home/git` would be the mount point, so then things would be moving within the
same mount point. This is guaranteed with Omnibus installations (because they
don't specify the full repository path but the parent path), but not for source
installations.
Now that you've read that big fat warning above, let's edit the configuration
files and add the full paths of the alternative repository storage paths. In
@ -68,7 +67,7 @@ the example below, we add two more mount points that are named `nfs_1` and `nfs_
respectively.
NOTE:
This example uses NFS. We do not recommend using EFS for storage as it may impact GitLab's performance. See the [relevant documentation](nfs.md#avoid-using-awss-elastic-file-system-efs) for more details.
This example uses NFS. We do not recommend using EFS for storage as it may impact GitLab performance. See the [relevant documentation](nfs.md#avoid-using-awss-elastic-file-system-efs) for more details.
**For installations from source**

View File

@ -123,13 +123,13 @@ Within a directory, server hooks:
- Are executed in alphabetical order.
- Stop executing when a hook exits with a non-zero value.
Note:
`<hook_name>.d` must be either `pre-receive.d`, `post-receive.d`, or `update.d` to work properly.
Any other names are ignored.
- `<hook_name>.d` must be either `pre-receive.d`, `post-receive.d`, or `update.d` to work properly.
Any other names are ignored.
- Files in `.d` directories must be executable and not match the backup file pattern (`*~`).
- For `<project>.git` you need to [translate](repository_storage_types.md#translating-hashed-storage-paths)
your project name into the hashed storage format that GitLab uses.
Files in `.d` directories must be executable and not match the backup file pattern (`*~`).
For `<project>.git` you need to [translate](repository_storage_types.md#translating-hashed-storage-paths)
your project name into the hashed storage format that GitLab uses.
## Environment Variables
@ -160,7 +160,7 @@ them as they can change.
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/5073) in GitLab 8.10.
To have custom error messages appear in GitLab's UI when a commit is declined or an error occurs
To have custom error messages appear in the GitLab UI when a commit is declined or an error occurs
during the Git hook, your script should:
- Send the custom error messages to either the script's `stdout` or `stderr`.
@ -168,7 +168,7 @@ during the Git hook, your script should:
### Example custom error message
This hook script written in Bash generates the following message in GitLab's UI:
This hook script written in Bash generates the following message in the GitLab UI:
```shell
#!/bin/sh

View File

@ -747,7 +747,8 @@ Send IRC messages, on update, to a list of recipients through an Irker gateway.
Set Irker (IRC gateway) service for a project.
> NOTE: Irker does NOT have built-in authentication, which makes it vulnerable to spamming IRC channels if it is hosted outside of a firewall. Please make sure you run the daemon within a secured network to prevent abuse. For more details, read: <http://www.catb.org/~esr/irker/security.html>.
NOTE:
Irker does NOT have built-in authentication, which makes it vulnerable to spamming IRC channels if it is hosted outside of a firewall. Please make sure you run the daemon within a secured network to prevent abuse. For more details, read: <http://www.catb.org/~esr/irker/security.html>.
```plaintext
PUT /projects/:id/services/irker

View File

@ -62,8 +62,9 @@ To use GitLab CI/CD with a Bitbucket Cloud repository:
1. In Bitbucket, add a script to push the pipeline status to Bitbucket.
> Note: changes made in GitLab are overwritten by any changes made
> upstream in Bitbucket.
NOTE:
Changes made in GitLab are overwritten by any changes made
upstream in Bitbucket.
Create a file `build_status` and insert the script below and run
`chmod +x build_status` in your terminal to make the script executable.

View File

@ -10,7 +10,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
This document describes the design behind [Code Intelligence](../../user/project/code_intelligence.md).
GitLab's built-in Code Intelligence is powered by
The built-in Code Intelligence in GitLab is powered by
[LSIF](https://lsif.dev) and comes down to generating an LSIF document for a
project in a CI job, processing the data, uploading it as a CI artifact and
displaying this information for the files in the project.

View File

@ -188,7 +188,7 @@ All the marks and measures should be instantiated with the constants from
`app/assets/javascripts/performance/constants.js`. When youre ready to add a new marks or
measurements label, you can follow the pattern.
NOTE: **Note:**
NOTE:
This pattern is a recommendation and not a hard rule.
```javascript

View File

@ -13,7 +13,7 @@ Workhorse and GitLab Shell.
## Deep Dive
In May 2019, Bob Van Landuyt hosted a Deep Dive (GitLab team members only: `https://gitlab.com/gitlab-org/create-stage/issues/1`)
on GitLab's [Gitaly project](https://gitlab.com/gitlab-org/gitaly) and how to contribute to it as a
on the [Gitaly project](https://gitlab.com/gitlab-org/gitaly) and how to contribute to it as a
Ruby developer, to share his domain specific knowledge with anyone who may work in this part of the
codebase in the future.

View File

@ -399,7 +399,7 @@ isn't a stable identifier and you shouldn't assume it as such when tracking vuln
The maximum number of identifiers for a vulnerability is set as 20. If a vulnerability has more than 20 identifiers,
the system saves only the first 20 of them. Note that vulnerabilities in the [Pipeline
Security](../../user/application_security/security_dashboard/#pipeline-security)
tab do not enforce this limit and will show all identifiers present in the report artifact.
tab do not enforce this limit and all identifiers present in the report artifact are displayed.
### Location

View File

@ -99,7 +99,7 @@ and complete an integration with the Secure stage.
- In the [Security Dashboard](../../user/application_security/security_dashboard/index.md) ([Dashboard data flow](https://gitlab.com/snippets/1910005#project-and-group-dashboards)).
1. Optional: Provide a way to interact with results as Vulnerabilities:
- Users can interact with the findings from your artifact within their workflow. They can dismiss the findings or accept them and create a backlog issue.
- To automatically create issues without user interaction, use the [issue API](../../api/issues.md). This will be replaced by [Standalone Vulnerabilities](https://gitlab.com/groups/gitlab-org/-/epics/634) in the future.
- To automatically create issues without user interaction, use the [issue API](../../api/issues.md).
1. Optional: Provide auto-remediation steps:
- If you specified `remediations` in your artifact, it is proposed through our [automatic remediation](../../user/application_security/index.md#automatic-remediation-for-vulnerabilities)
interface.

View File

@ -9,7 +9,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
## Deep Dive
In April 2019, Francisco Javier López hosted a Deep Dive (GitLab team members only: `https://gitlab.com/gitlab-org/create-stage/issues/1`)
on GitLab's [Git LFS](../topics/git/lfs/index.md) implementation to share his domain
on the GitLab [Git LFS](../topics/git/lfs/index.md) implementation to share his domain
specific knowledge with anyone who may work in this part of the codebase in the future.
You can find the [recording on YouTube](https://www.youtube.com/watch?v=Yyxwcksr0Qc),
and the slides on [Google Slides](https://docs.google.com/presentation/d/1E-aw6-z0rYd0346YhIWE7E9A65zISL9iIMAOq2zaw9E/edit)

View File

@ -74,7 +74,8 @@ We follow a simple formula roughly based on Hungarian notation.
- `_tab`
- `_menu_item`
*Note: If none of the listed types are suitable, please open a merge request to add an appropriate type to the list.*
NOTE:
If none of the listed types are suitable, please open a merge request to add an appropriate type to the list.
### Examples

View File

@ -46,4 +46,4 @@ These resources will help you get further acclimated to working on the command l
- [Start using Git on the command line](start-using-git.md), for some simple Git commands.
- [Command line basics](command-line-commands.md), to create and edit files using the command line.
More Git resources are available in GitLab's [Git documentation](../topics/git/index.md).
More Git resources are available in the GitLab [Git documentation](../topics/git/index.md).

View File

@ -22,7 +22,7 @@ the command line and then push your changes to the remote server.
This guide will help you get started with Git through the command line and can be your reference
for Git commands in the future. If you're only looking for a quick reference of Git commands, you
can download GitLab's [Git Cheat Sheet](https://about.gitlab.com/images/press/git-cheat-sheet.pdf).
can download the GitLab [Git Cheat Sheet](https://about.gitlab.com/images/press/git-cheat-sheet.pdf).
> For more information about the advantages of working with Git and GitLab:
>
@ -128,7 +128,7 @@ to our computer:
- If you don't have 2FA enabled, use your account's password.
NOTE:
Authenticating via SSH is GitLab's recommended method. You can read more about credential storage
Authenticating via SSH is the GitLab recommended method. You can read more about credential storage
in the [Git Credentials documentation](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage).
## Git terminology

View File

@ -832,7 +832,7 @@ sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
If all items are green, congratulations on successfully installing GitLab!
TIP: **Tip:**
NOTE:
Supply the `SANITIZE=true` environment variable to `gitlab:check` to omit project names from the output of the check command.
### Initial Login

View File

@ -70,7 +70,7 @@ When trying to integrate GitLab with services that are using self-signed certifi
There are two approaches you can take to solve this:
1. Add the root certificate to the trusted chain of the OS.
1. If using Omnibus, you can add the certificate to GitLab's trusted certificates.
1. If using Omnibus, you can add the certificate to the GitLab trusted certificates.
**OS main trusted chain**

View File

@ -16,7 +16,7 @@ Once configured, you can reference external issues using the format `CODE-123`,
These references in GitLab merge requests, commits, or comments are automatically converted to links to the issues.
You can keep GitLab's issue tracker enabled in parallel or disable it. When enabled, the **Issues** link in the
You can keep the GitLab issue tracker enabled in parallel or disable it. When enabled, the **Issues** link in the
GitLab menu always opens the internal issue tracker. When disabled, the link is not visible in the menu.
## Configuration

View File

@ -12,7 +12,7 @@ From GitLab, you can trigger a Jenkins build when you push code to a repository,
request is created. In return, the Jenkins pipeline status is shown on merge requests widgets and
on the GitLab project's home page.
To better understand GitLab's Jenkins integration, watch the following video:
To better understand the GitLab Jenkins integration, watch the following video:
- [GitLab workflow with Jira issues and Jenkins pipelines](https://youtu.be/Jn-_fyra7xQ)
@ -36,7 +36,7 @@ GitLab. Learn how to **migrate** from Jenkins to GitLab CI/CD in our
## Configure GitLab integration with Jenkins
GitLab's Jenkins integration requires installation and configuration in both GitLab and Jenkins.
The GitLab Jenkins integration requires installation and configuration in both GitLab and Jenkins.
In GitLab, you need to grant Jenkins access to the relevant projects. In Jenkins, you need to
install and configure several plugins.

View File

@ -76,7 +76,7 @@ in the **Authorized applications** section under **Profile Settings > Applicatio
![Authorized_applications](img/oauth_provider_authorized_application.png)
GitLab's OAuth applications support scopes, which allow various actions that any given
The GitLab OAuth applications support scopes, which allow various actions that any given
application can perform such as `read_user` and `api`. There are many more scopes
available.

View File

@ -22,7 +22,7 @@ mobile applications.
On the client side, you can use [OmniAuth::OpenIDConnect](https://github.com/jjbohn/omniauth-openid-connect/) for Rails
applications, or any of the other available [client implementations](https://openid.net/developers/libraries/#connect).
GitLab's implementation uses the [doorkeeper-openid_connect](https://github.com/doorkeeper-gem/doorkeeper-openid_connect "Doorkeeper::OpenidConnect website") gem, refer
The GitLab implementation uses the [doorkeeper-openid_connect](https://github.com/doorkeeper-gem/doorkeeper-openid_connect "Doorkeeper::OpenidConnect website") gem, refer
to its README for more details about which parts of the specifications
are supported.

View File

@ -8,7 +8,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
NOTE:
The preferred approach for integrating a Shibboleth authentication system
with GitLab 10 or newer is to use [GitLab's SAML integration](saml.md). This documentation is for Omnibus GitLab 9.x installs or older.
with GitLab 10 or newer is to use the [GitLab SAML integration](saml.md). This documentation is for Omnibus GitLab 9.x installs or older.
In order to enable Shibboleth support in GitLab we need to use Apache instead of NGINX (It may be possible to use NGINX, however this is difficult to configure using the bundled NGINX provided in the Omnibus GitLab package). Apache uses mod_shib2 module for Shibboleth authentication and can pass attributes as headers to OmniAuth Shibboleth provider.

View File

@ -6,7 +6,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
# Trello Power-Up
GitLab's Trello Power-Up enables you to seamlessly attach
The GitLab Trello Power-Up enables you to seamlessly attach
GitLab **merge requests** to Trello cards.
![GitLab Trello PowerUp - Trello card](img/trello_card_with_gitlab_powerup.png)
@ -35,7 +35,7 @@ If your instance's URL is `https://example.com`, your API URL is `https://exampl
## What is my Personal Access Token?
Your GitLab's personal access token enables your GitLab account to be accessed
Your GitLab personal access token enables your GitLab account to be accessed
from Trello.
> Find it in GitLab by clicking on your avatar (upright corner), from which you access

View File

@ -12,11 +12,10 @@ This Rake task enables [namespaces](../user/group/index.md#namespaces) for proje
This command enables the namespaces feature introduced in GitLab 4.0. It moves every project in its namespace folder.
Note:
The **repository location changes as part of this task**, so you must **update all your Git URLs** to
point to the new location.
- The **repository location changes as part of this task**, so you must **update all your Git URLs** to
point to the new location.
- The username can be changed at **Profile > Account**.
The username can be changed at **Profile > Account**.
For example:

View File

@ -32,7 +32,7 @@ ones that GitLab developed.
- Git Annex requires a more complex setup, but has much more options than Git
LFS. You can compare the commands each one offers by running `man git-annex`
and `man git-lfs`.
- Annex files cannot be browsed directly in GitLab's interface, whereas LFS
- Annex files cannot be browsed directly in the GitLab interface, whereas LFS
files can.
## Migration steps

View File

@ -8,7 +8,7 @@ type: howto
# Numerous undo possibilities in Git
In this tutorial, we will show you different ways of undoing your work in Git, for which
we will assume you have a basic working knowledge of. Check GitLab's
we will assume you have a basic working knowledge of. Check the GitLab
[Git documentation](../index.md) for reference.
Also, we will only provide some general information of the commands, which is enough

View File

@ -224,7 +224,7 @@ Not only does this rewrite history, but it also loses authorship information.
Rebasing prevents the other authors from being attributed and sharing part of the [`git blame`](https://git-scm.com/docs/git-blame).
If a merge involves many commits, it may seem more difficult to undo.
You might consider solving this by squashing all the changes into one commit just before merging by using GitLab's [Squash-and-Merge](../user/project/merge_requests/squash_and_merge.md) feature.
You might consider solving this by squashing all the changes into one commit just before merging by using the GitLab [Squash-and-Merge](../user/project/merge_requests/squash_and_merge.md) feature.
Fortunately, there is an easy way to undo a merge with all its commits.
The way to do this is by reverting the merge commit.
Preserving this ability to revert a merge is a good reason to always use the "no fast-forward" (`--no-ff`) strategy when you merge manually.

View File

@ -76,9 +76,9 @@ to deploy this application under.
![Google auth](../autodevops/img/guide_google_auth_v12_3.png)
1. The last step is to provide the cluster details.
1. Give it a name, leave the environment scope as is, and choose the GCP project under which the cluster
will be created (per the instructions to [configure your Google account](#configuring-your-google-account), a project should have already been created for you).
1. Choose the [region/zone](https://cloud.google.com/compute/docs/regions-zones/) under which the cluster will be created.
1. Give it a name, leave the environment scope as is, and choose the GCP project under which to create the cluster.
(Per the instructions to [configure your Google account](#configuring-your-google-account), a project should have already been created for you.)
1. Choose the [region/zone](https://cloud.google.com/compute/docs/regions-zones/) to create the cluster in.
1. Enter the number of nodes you want it to have.
1. Choose the [machine type](https://cloud.google.com/compute/docs/machine-types).
@ -118,7 +118,7 @@ filled in the domain, click **Save changes**.
Prometheus should also be installed. It is an open-source monitoring and
alerting system that is used to supervise the deployed application.
We will not install GitLab Runner as we use the shared runners that
Installing GitLab Runner is not required as we use the shared runners that
GitLab.com provides.
## Enabling Auto DevOps (optional)

View File

@ -45,7 +45,7 @@ specific guidelines (should there be any) are covered separately.
### 1. Backup
NOTE: If you installed GitLab from source, make sure `rsync` is installed.
If you installed GitLab from source, make sure `rsync` is installed.
```shell
cd /home/git/gitlab
@ -61,7 +61,8 @@ sudo service gitlab stop
### 3. Update Ruby
NOTE: Beginning in GitLab 13.6, we only support Ruby 2.7 or higher, and dropped
NOTE:
Beginning in GitLab 13.6, we only support Ruby 2.7 or higher, and dropped
support for Ruby 2.6. Be sure to upgrade if necessary.
You can check which version you are running with `ruby -v`.
@ -81,7 +82,7 @@ sudo make install
### 4. Update Node.js
NOTE: To check the minimum required Node.js version, see [Node.js versions](../install/requirements.md#nodejs-versions).
To check the minimum required Node.js version, see [Node.js versions](../install/requirements.md#nodejs-versions).
GitLab also requires the use of Yarn `>= v1.10.0` to manage JavaScript
dependencies.
@ -99,7 +100,7 @@ More information can be found on the [Yarn website](https://classic.yarnpkg.com/
### 5. Update Go
NOTE: To check the minimum required Go version, see [Go versions](../install/requirements.md#go-versions).
To check the minimum required Go version, see [Go versions](../install/requirements.md#go-versions).
You can check which version you are running with `go version`.

View File

@ -90,7 +90,7 @@ These settings can be found within:
1. From the Group's homepage, navigate to **Settings > General**.
1. Fill in the **Repository size limit (MB)** field in the **Naming, visibility** section.
1. Click **Save changes**.
- GitLab's global settings:
- GitLab global settings:
1. From the Dashboard, navigate to **Admin Area > Settings > General**.
1. Expand the **Account and limit** section.
1. Fill in the **Size limit per repository (MB)** field.

View File

@ -151,7 +151,7 @@ For more details, see [Exporting a project and its data](../../../user/project/s
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/4696) in GitLab 8.10.
With GitLab's access restrictions, you can select with which protocols users can communicate with
With GitLab access restrictions, you can select with which protocols users can communicate with
GitLab.
Disabling an access protocol does not block access to the server itself via those ports. The ports

View File

@ -94,6 +94,31 @@ Note that the Java analyzers can also be used for variants like the
[Grails](https://grails.org/),
and the [Maven wrapper](https://github.com/takari/maven-wrapper).
### Multi-project support
> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/4895) in GitLab 13.7.
GitLab SAST can scan repositories that contain multiple projects. All projects must be in the same
language.
The following analyzers have multi-project support:
- Bandit
- ESLint
- Gosec
- Kubesec
- NodeJsScan
- MobSF
- PMD
- Security Code Scan
- SpotBugs
- Sobelow
#### Enable multi-project support for Security Code Scan
Multi-project support in the Security Code Scan requires a Solution (`.sln`) file in the root of
the repository. For details on the Solution format, see the Microsoft reference [Solution (.sln) file](https://docs.microsoft.com/en-us/visualstudio/extensibility/internals/solution-dot-sln-file?view=vs-2019).
### Making SAST analyzers available to all GitLab tiers
All open source (OSS) analyzers have been moved to the GitLab Core tier as of GitLab 13.3.

View File

@ -332,7 +332,7 @@ For information on this, see the [general Application Security troubleshooting s
This error is usually caused by the `GIT_DEPTH` value of 50 that is set for all [projects by default](../../../ci/pipelines/settings.md#git-shallow-clone).
For example, if a pipeline is triggered from a Merge Request containing 60 commits while the `GIT_DEPTH` is set to 50, the Secret Detection job will fail as the clone will not have been deep enough to contain all of the relevant commits.
For example, if a pipeline is triggered from a Merge Request containing 60 commits while the `GIT_DEPTH` is set to 50, the Secret Detection job fails as the clone is not deep enough to contain all of the relevant commits.
You can confirm this to be the cause of the error by implementing a [logging level](../../application_security/secret_detection/index.md#logging-level) of `debug`. Once implemented, the logs should look similar to the following example, wherein an "object not found" error can be seen:

View File

@ -48,13 +48,10 @@ monospaced font:
and lines breaks will be preserved.
```
An admonition paragraph grabs the reader's attention:
Admonition paragraphs grab the reader's attention:
```plaintext
NOTE: This is a brief reference, please read the full documentation at https://asciidoctor.org/docs/.
TIP: Lists can be indented. Leading whitespace is not significant.
```
- `NOTE: This is a brief reference, please read the full documentation at https://asciidoctor.org/docs/.`
- `TIP: Lists can be indented. Leading whitespace is not significant.`
### Text Formatting

View File

@ -22,7 +22,7 @@ For information on how to contribute to the development of Value Stream Analytic
Group-level Value Stream Analytics is available via **Group > Analytics > Value Stream**.
Note: [Project-level Value Stream Analytics](../../analytics/value_stream_analytics.md) is also available.
[Project-level Value Stream Analytics](../../analytics/value_stream_analytics.md) is also available.
## Default stages

View File

@ -7,9 +7,9 @@ type: reference, howto
# GitLab Markdown
This Markdown guide is **valid only for GitLab's internal Markdown rendering system for entries and files**.
This Markdown guide is **valid only for the GitLab internal Markdown rendering system for entries and files**.
It is **not** valid for the [GitLab documentation website](https://docs.gitlab.com)
or [GitLab's main website](https://about.gitlab.com), as they both use
or the [GitLab main website](https://about.gitlab.com), as they both use
[Kramdown](https://kramdown.gettalong.org) as their Markdown engine. The documentation
website uses an extended Kramdown gem, [GitLab Kramdown](https://gitlab.com/gitlab-org/gitlab_kramdown).
Consult the [GitLab Kramdown Guide](https://about.gitlab.com/handbook/markdown-guide/)
@ -52,7 +52,7 @@ The documentation website had its [Markdown engine migrated from Redcarpet to Kr
in October 2018.
You may have older issues, merge requests, or Markdown documents in your
repository that were written using some of the nuances of GitLab's RedCarpet version
repository that were written using some of the nuances of the GitLab RedCarpet version
of Markdown. Since CommonMark uses slightly stricter syntax, these documents
might now appear a little differently since we have transitioned to CommonMark.
@ -353,7 +353,7 @@ The wrapping tags can be either curly braces or square brackets:
- [- deletion 4 -]
```
![Inline diff as rendered by GitLab's interface](img/inline_diff_01_v13_3.png)
![Inline diff as rendered by the GitLab interface](img/inline_diff_01_v13_3.png)
---
@ -375,7 +375,7 @@ backslash `\`, otherwise the diff highlight don't render correctly:
- {+ Text with escaped \`backticks\` inside +}
```
![Inline diff with mixed formatting, as rendered by GitLab's interface](img/inline_diff_02_v13_3.png)
![Inline diff with mixed formatting, as rendered by the GitLab interface](img/inline_diff_02_v13_3.png)
### Math
@ -480,7 +480,7 @@ unordered or ordered lists:
1. [x] Sub-task 2
```
![A task list as rendered by GitLab's interface](img/completed_tasks_v13_3.png)
![A task list as rendered by the GitLab interface](img/completed_tasks_v13_3.png)
### Table of contents
@ -1056,7 +1056,7 @@ are separated into their own lines:
```
<!--
Note: The example below uses HTML to force correct rendering on docs.gitlab.com,
The example below uses HTML to force correct rendering on docs.gitlab.com,
Markdown is fine in GitLab.
-->

View File

@ -16,6 +16,9 @@ info: To determine the technical writer assigned to the Stage/Group associated w
> - The group-level Container Registry was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/23315) in GitLab 12.10.
> - Searching by image repository name was [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/31322) in GitLab 13.0.
NOTE:
If you pull container images from Docker Hub, you can also use the [GitLab Dependency Proxy](../dependency_proxy/index.md#use-the-dependency-proxy-for-docker-images) to avoid running into rate limits and speed up your pipelines.
With the Docker Container Registry integrated into GitLab, every GitLab project can
have its own space to store its Docker images.

View File

@ -62,9 +62,8 @@ Prerequisites:
### Authenticate with the Dependency Proxy
> - [Authentication and support for private groups](https://gitlab.com/gitlab-org/gitlab/-/issues/11582) in [GitLab Core](https://about.gitlab.com/pricing/) 13.7.
> - It was [deployed behind a feature flag](../../feature_flags.md), disabled by default.
> - [Became enabled by default](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/49519) on GitLab 13.7.
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11582) in [GitLab Core](https://about.gitlab.com/pricing/) 13.7.
> - It's [deployed behind a feature flag](../../feature_flags.md), enabled by default.
> - It's enabled on GitLab.com.
> - It's recommended for production use.
> - For GitLab self-managed instances, GitLab administrators can opt to [disable it](../../../administration/packages/dependency_proxy.md#disabling-authentication). **(CORE ONLY)**
@ -94,7 +93,7 @@ You can authenticate using:
#### Authenticate within CI/CD
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/280582) in 13.7.
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/280582) in GitLab 13.7.
To work with the Dependency Proxy in [GitLab CI/CD](../../../ci/README.md), you can use:
@ -209,6 +208,9 @@ the [Dependency Proxy API](../../../api/dependency_proxy.md).
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/241639) in [GitLab Core](https://about.gitlab.com/pricing/) 13.7.
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
Watch how to [use the Dependency Proxy to help avoid Docker Hub rate limits](https://youtu.be/Nc4nUo7Pq08).
In November 2020, Docker introduced
[rate limits on pull requests from Docker Hub](https://docs.docker.com/docker-hub/download-rate-limit/).
If your GitLab [CI/CD configuration](../../../ci/README.md) uses

View File

@ -181,7 +181,7 @@ nuget push <package_file> -Source <source_name>
Prerequisite:
[A NuGet package created with .NET CLI](https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package-dotnet-cli).
- [A NuGet package created with .NET CLI](https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package-dotnet-cli).
Publish a package by running this command:

View File

@ -50,7 +50,7 @@ When you create a project in GitLab, you'll have access to a large number of
- [Merge Request Approvals](merge_requests/merge_request_approvals.md): Ask for approval before
implementing a change **(STARTER)**
- [Fix merge conflicts from the UI](merge_requests/resolve_conflicts.md):
Your Git diff tool right from GitLab's UI
Your Git diff tool right from the GitLab UI
- [Review Apps](../../ci/review_apps/index.md): Live preview the results
of the changes proposed in a merge request in a per-branch basis
- [Labels](labels.md): Organize issues and merge requests by labels
@ -69,7 +69,7 @@ When you create a project in GitLab, you'll have access to a large number of
**GitLab CI/CD:**
- [GitLab CI/CD](../../ci/README.md): GitLab's built-in [Continuous Integration, Delivery, and Deployment](https://about.gitlab.com/blog/2016/08/05/continuous-integration-delivery-and-deployment-with-gitlab/) tool
- [GitLab CI/CD](../../ci/README.md): the GitLab built-in [Continuous Integration, Delivery, and Deployment](https://about.gitlab.com/blog/2016/08/05/continuous-integration-delivery-and-deployment-with-gitlab/) tool
- [Container Registry](../packages/container_registry/index.md): Build and push Docker
images out-of-the-box
- [Auto Deploy](../../topics/autodevops/stages.md#auto-deploy): Configure GitLab CI/CD
@ -100,7 +100,7 @@ When you create a project in GitLab, you'll have access to a large number of
- [Insights](insights/index.md): configure the Insights that matter for your projects. **(ULTIMATE)**
- [Security Dashboard](../application_security/security_dashboard/index.md): Security Dashboard. **(ULTIMATE)**
- [Syntax highlighting](highlighting.md): an alternative to customize
your code blocks, overriding GitLab's default choice of language.
your code blocks, overriding the GitLab default choice of language.
- [Badges](badges.md): badges for the project overview.
- [Releases](releases/index.md): a way to track deliverables in your project as snapshot in time of
the source, build output, other metadata, and other artifacts

View File

@ -39,7 +39,7 @@ Keep in mind that you need to have the appropriate permissions for your Slack
team in order to be able to install a new application, read more in Slack's
docs on [Adding an app to your workspace](https://slack.com/help/articles/202035138-Add-an-app-to-your-workspace).
To enable GitLab's service for your Slack team:
To enable the GitLab service for your Slack team:
1. Go to your project's **Settings > Integration > Slack application** (only
visible on GitLab.com).

View File

@ -6,7 +6,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
# GitLab Jira integration
If you need to use Jira to track work that's implemented in GitLab, GitLab's Jira integrations make the process of working across systems more efficient.
If you need to use Jira to track work that's implemented in GitLab, Jira integrations with GitLab make the process of working across systems more efficient.
This page is about the GitLab Jira integration, which is available in every GitLab project by default, allowing you to connect it to any Jira instance, whether Cloud or self-managed. To compare features with the complementary Jira Development Panel integration, see [Jira integrations](jira_integrations.md).
@ -18,7 +18,7 @@ Features include:
- GitLab links to the Jira issue.
- The Jira issue adds a comment with details and a link back to the activity in GitLab.
- **Mention that a commit or MR resolves or closes a specific Jira issue** and when it's merged to the default branch:
- GitLab's MR displays a note that it closed the Jira issue. Prior to the merge, MRs indicate which issue they close.
- The GitLab MR displays a note that it closed the Jira issue. Prior to the merge, MRs indicate which issue they close.
- The Jira issue shows the activity and is closed or otherwise transitioned as specified in your GitLab settings.
- **View a list of Jira issues directly in GitLab** **(PREMIUM)**

View File

@ -11,7 +11,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
GitLab Issues are a tool for discussing ideas and planning and tracking work. However, your organization may already use Jira for these purposes, with
extensive, established data and business processes they rely on.
Although you can [migrate](../../../user/project/import/jira.md) your Jira issues and work exclusively in GitLab, you also have the option of continuing to use Jira by using GitLab's Jira integrations.
Although you can [migrate](../../../user/project/import/jira.md) your Jira issues and work exclusively in GitLab, you also have the option of continuing to use Jira by using the GitLab Jira integrations.
## Integrations

View File

@ -110,7 +110,7 @@ result = Net::HTTP.get(URI('https://<GITLAB URL>'));0
```
If GitLab is not trusting HTTPS connections to itself, then you may
need to [add your certificate to GitLab's trusted certificates](https://docs.gitlab.com/omnibus/settings/ssl.html#install-custom-public-certificates).
need to [add your certificate to the GitLab trusted certificates](https://docs.gitlab.com/omnibus/settings/ssl.html#install-custom-public-certificates).
If GitLab is not trusting connections to Slack, then the GitLab
OpenSSL trust store is incorrect. Some typical causes: overriding

View File

@ -409,7 +409,8 @@ X-Gitlab-Event: Issue Hook
}
```
NOTE: `assignee` and `assignee_id` keys are deprecated and now show the first assignee only.
NOTE:
`assignee` and `assignee_id` keys are deprecated and now show the first assignee only.
### Comment events
@ -734,7 +735,8 @@ X-Gitlab-Event: Note Hook
}
```
NOTE: `assignee_id` field is deprecated and now shows the first assignee only.
NOTE:
`assignee_id` field is deprecated and now shows the first assignee only.
#### Comment on code snippet
@ -1603,7 +1605,7 @@ Missing intermediate certificates are a common point of verification failure.
## Example webhook receiver
If you want to see GitLab's webhooks in action for testing purposes you can use
If you want to see GitLab webhooks in action for testing purposes you can use
a simple echo script running in a console session. For the following script to
work you need to have Ruby installed.

View File

@ -95,7 +95,7 @@ you can drag and drop designs onto the dedicated drop zone to upload them.
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/202634)
in GitLab 12.10, you can also copy images from your file system and
paste them directly on GitLab's Design page as a new design.
paste them directly on the GitLab Design page as a new design.
On macOS you can also take a screenshot and immediately copy it to
the clipboard by simultaneously clicking <kbd>Control</kbd> + <kbd>Command</kbd> + <kbd>Shift</kbd> + <kbd>3</kbd>, and then paste it as a design.

View File

@ -126,7 +126,7 @@ Requesting a code review is an important part of contributing code. However, dec
your code and asking for a review are no easy tasks. Using the "assignee" field for both authors and
reviewers makes it hard for others to determine who's doing what on a merge request.
GitLab's Merge Request Reviewers easily allow authors to request a review as well as see the status of the
GitLab Merge Request Reviewers easily allow authors to request a review as well as see the status of the
review. By selecting one or more users from the **Reviewers** field in the merge request's right-hand
sidebar, the assigned reviewers will receive a notification of the request to review the merge request.

View File

@ -232,7 +232,7 @@ you can preview the changes submitted to a feature-branch through a merge reques
in a per-branch basis. No need to checkout the branch, install and preview locally;
all your changes will be available to preview by anyone with the Review Apps link.
With GitLab's [Route Maps](../../../ci/review_apps/index.md#route-maps) set, the
With GitLab [Route Maps](../../../ci/review_apps/index.md#route-maps) set, the
merge request widget takes you directly to the pages changed, making it easier and
faster to preview proposed modifications.

View File

@ -170,7 +170,7 @@ From time to time, it may be required to delete or clean up branches that are
protected.
User with [Maintainer permissions](../permissions.md) and up can manually delete protected
branches via GitLab's web interface:
branches via the GitLab web interface:
1. Visit **Repository > Branches**
1. Click on the delete icon next to the branch you wish to delete

View File

@ -48,7 +48,7 @@ to your repository's root.
**From the user interface:**
GitLab's UI allows you to perform lots of Git commands without having to
The GitLab UI allows you to perform lots of Git commands without having to
touch the command line. Even if you use the command line regularly, sometimes
it's easier to do so [via GitLab UI](web_editor.md):
@ -67,7 +67,7 @@ To get started with the command line, please read through the
### Find files
Use GitLab's [file finder](file_finder.md) to search for files in a repository.
Use the GitLab [file finder](file_finder.md) to search for files in a repository.
### Supported markup languages and extensions
@ -141,7 +141,7 @@ their filenames include `openapi` or `swagger` and their extension is `yaml`,
Then, to render them:
1. Navigate to the OpenAPI file in your repository in GitLab's UI.
1. Navigate to the OpenAPI file in your repository in the GitLab UI.
1. Click the "Display OpenAPI" button which is located between the "Display source"
and "Edit" buttons (when an OpenAPI file is found, it replaces the
"Display rendered file" button).

View File

@ -253,7 +253,7 @@ When using repository cleanup, note:
are not be removed immediately. If you have access to the
[Gitaly](../../../administration/gitaly/index.md) server, you may slip that delay and run `git gc --prune=now` to
prune all loose objects immediately.
- This process removes some copies of the rewritten commits from GitLab's cache and database,
- This process removes some copies of the rewritten commits from the GitLab cache and database,
but there are still numerous gaps in coverage and some of the copies may persist indefinitely.
[Clearing the instance cache](../../../administration/raketasks/maintenance.md#clear-redis-cache)
may help to remove some of them, but it should not be depended on for security purposes!

View File

@ -94,7 +94,7 @@ the target branch. Click **Create directory** to finish.
## Create a new branch
There are multiple ways to create a branch from GitLab's web interface.
There are multiple ways to create a branch from the GitLab web interface.
### Create a new branch from an issue

View File

@ -169,7 +169,7 @@ title, layout template, or author, but can be used to pass any kind of metadata
generator as the page renders out to HTML. Included at the very top of each data file, the
front matter is often formatted as YAML or JSON and requires consistent and accurate syntax.
To edit the front matter from the Static Site Editor you can use the GitLab's regular file editor,
To edit the front matter from the Static Site Editor you can use the GitLab regular file editor,
the Web IDE, or easily update the data directly from the WYSIWYG editor:
1. Click the **Page settings** button on the bottom-right to reveal a web form with the data you

View File

@ -64,7 +64,7 @@ When you're ready, click the **Create page** and the new page will be created.
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/33475) in GitLab 11.3.
Starting with GitLab 11.3, any file that is uploaded to the wiki via GitLab's
Starting with GitLab 11.3, any file that is uploaded to the wiki via the GitLab
interface will be stored in the wiki Git repository, and it will be available
if you clone the wiki repository locally. All uploaded files prior to GitLab
11.3 are stored in GitLab itself. If you want them to be part of the wiki's Git

View File

@ -40,7 +40,7 @@ storage item. Click on each project's title to see a breakdown per storage item.
> - It's enabled on GitLab.com.
> - It's recommended for production use.
CAUTION: **Warning:**
WARNING:
This feature might not be available to you. Check the **version history** note above for details.
The following storage usage statistics are available to an owner:

View File

@ -49,32 +49,3 @@ dast:
- if: $CI_COMMIT_BRANCH &&
$GITLAB_FEATURES =~ /\bdast\b/ &&
$DAST_API_SPECIFICATION
dast_unlicensed:
stage: dast
allow_failure: true
variables:
GIT_STRATEGY: none
rules:
- if: $DAST_DISABLED
when: never
- if: $DAST_DISABLED_FOR_DEFAULT_BRANCH &&
$CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
when: never
- if: $CI_DEFAULT_BRANCH != $CI_COMMIT_REF_NAME &&
$REVIEW_DISABLED && $DAST_WEBSITE == null &&
$DAST_API_SPECIFICATION == null
when: never
- if: $CI_COMMIT_BRANCH &&
$CI_KUBERNETES_ACTIVE &&
$GITLAB_FEATURES !~ /\bdast\b/
- if: $CI_COMMIT_BRANCH &&
$GITLAB_FEATURES !~ /\bdast\b/ &&
$DAST_WEBSITE
- if: $CI_COMMIT_BRANCH &&
$GITLAB_FEATURES !~ /\bdast\b/ &&
$DAST_API_SPECIFICATION
script:
- |
echo "Error: Your GitLab project is not licensed for DAST."
- exit 1

View File

@ -61,15 +61,15 @@ module Gitlab
def push_frontend_feature_flag(name, *args, **kwargs)
enabled = Feature.enabled?(name, *args, **kwargs)
push_to_gon_features(name, enabled)
push_to_gon_attributes(:features, name, enabled)
end
def push_to_gon_features(name, enabled)
def push_to_gon_attributes(key, name, enabled)
var_name = name.to_s.camelize(:lower)
# Here the `true` argument signals gon that the value should be merged
# into any existing ones, instead of overwriting them. This allows you to
# use this method to push multiple feature flags.
gon.push({ features: { var_name => enabled } }, true)
gon.push({ key => { var_name => enabled } }, true)
end
def default_avatar_url

View File

@ -31,6 +31,10 @@ const expectNotImplemented = action => {
// subgroups when the movIssue action is called.
const getProjectPath = path => path.split('#')[0];
beforeEach(() => {
window.gon = { features: {} };
});
describe('setInitialBoardData', () => {
it('sets data object', () => {
const mockData = {
@ -67,6 +71,24 @@ describe('setFilters', () => {
});
});
describe('performSearch', () => {
it('should dispatch setFilters action', done => {
testAction(actions.performSearch, {}, {}, [], [{ type: 'setFilters', payload: {} }], done);
});
it('should dispatch setFilters, fetchLists and resetIssues action when graphqlBoardLists FF is on', done => {
window.gon = { features: { graphqlBoardLists: true } };
testAction(
actions.performSearch,
{},
{},
[],
[{ type: 'setFilters', payload: {} }, { type: 'fetchLists' }, { type: 'resetIssues' }],
done,
);
});
});
describe('setActiveId', () => {
it('should commit mutation SET_ACTIVE_ID', done => {
const state = {

View File

@ -33,16 +33,21 @@ describe('Board Store Mutations', () => {
};
const boardType = 'group';
const disabled = false;
const boardConfig = {
milestoneTitle: 'Milestone 1',
};
mutations[types.SET_INITIAL_BOARD_DATA](state, {
...endpoints,
boardType,
disabled,
boardConfig,
});
expect(state.endpoints).toEqual(endpoints);
expect(state.boardType).toEqual(boardType);
expect(state.disabled).toEqual(disabled);
expect(state.boardConfig).toEqual(boardConfig);
});
});

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