Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab/ci/frontend.gitlab-ci.yml2
-rw-r--r--.gitlab/ci/rails.gitlab-ci.yml1
-rw-r--r--.gitlab/ci/test-metadata.gitlab-ci.yml1
-rw-r--r--.gitlab/merge_request_templates/Deprecations.md2
-rw-r--r--.gitlab/merge_request_templates/Removals.md2
-rw-r--r--.rubocop_todo/layout/argument_alignment.yml22
-rw-r--r--app/assets/javascripts/boards/components/board_top_bar.vue2
-rw-r--r--app/assets/javascripts/content_editor/components/wrappers/reference_label.vue5
-rw-r--r--app/assets/javascripts/content_editor/extensions/link.js1
-rw-r--r--app/assets/javascripts/content_editor/extensions/paste_markdown.js102
-rw-r--r--app/assets/javascripts/content_editor/extensions/reference_label.js8
-rw-r--r--app/assets/javascripts/content_editor/services/create_content_editor.js16
-rw-r--r--app/assets/javascripts/content_editor/services/markdown_serializer.js42
-rw-r--r--app/assets/javascripts/content_editor/services/serialization_helpers.js10
-rw-r--r--app/assets/javascripts/diffs/components/diff_file.vue3
-rw-r--r--app/assets/javascripts/issuable/components/issuable_header_warnings.vue5
-rw-r--r--app/assets/javascripts/issues/show/components/app.vue10
-rw-r--r--app/assets/javascripts/notes/mixins/diff_line_note_form.js8
-rw-r--r--app/assets/javascripts/super_sidebar/components/global_search/command_palette/command_autocomplete_item.vue37
-rw-r--r--app/assets/javascripts/super_sidebar/components/global_search/command_palette/command_palette_items.vue95
-rw-r--r--app/assets/javascripts/super_sidebar/components/global_search/command_palette/constants.js3
-rw-r--r--app/assets/javascripts/super_sidebar/components/global_search/command_palette/user_autocomplete_item.vue12
-rw-r--r--app/assets/javascripts/super_sidebar/components/global_search/command_palette/utils.js34
-rw-r--r--app/assets/javascripts/super_sidebar/super_sidebar_bundle.js6
-rw-r--r--app/assets/javascripts/vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue2
-rw-r--r--app/assets/javascripts/vue_shared/components/markdown_drawer/markdown_drawer.vue10
-rw-r--r--app/experiments/templates/new_project_readme_content/readme_advanced.md.tt2
-rw-r--r--app/helpers/sidebars_helper.rb32
-rw-r--r--app/models/ci/runner.rb5
-rw-r--r--app/models/clusters/cluster.rb2
-rw-r--r--app/models/deployment.rb2
-rw-r--r--app/serializers/environment_serializer.rb2
-rw-r--r--app/views/notify/merge_when_pipeline_succeeds_email.html.haml4
-rw-r--r--app/views/notify/merge_when_pipeline_succeeds_email.text.haml2
-rw-r--r--app/views/projects/readme_templates/default.md.tt2
-rw-r--r--config/feature_flags/development/review_apps_redeploy_mr_widget.yml2
-rw-r--r--config/feature_flags/development/use_click_house_database_for_error_tracking.yml8
-rw-r--r--data/removals/15_9/15-9-omniauth-shibboleth.yml2
-rw-r--r--doc/update/removals.md2
-rw-r--r--glfm_specification/output_example_snapshots/prosemirror_json.yml624
-rw-r--r--lib/api/internal/error_tracking.rb2
-rw-r--r--lib/gitlab/error_tracking/error_repository.rb2
-rw-r--r--lib/gitlab/import_export/legacy_relation_tree_saver.rb23
-rw-r--r--locale/gitlab.pot18
-rw-r--r--package.json1
-rw-r--r--spec/factories/deployment_clusters.rb8
-rw-r--r--spec/factories/deployments.rb6
-rw-r--r--spec/features/projects/jobs_spec.rb12
-rw-r--r--spec/finders/clusters/knative_services_finder_spec.rb4
-rw-r--r--spec/fixtures/lib/gitlab/import_export/complex/project.json8352
-rw-r--r--spec/fixtures/lib/gitlab/import_export/designs/project.json507
-rw-r--r--spec/fixtures/lib/gitlab/import_export/group/project.json282
-rw-r--r--spec/fixtures/lib/gitlab/import_export/group_exports/complex/group.json2197
-rw-r--r--spec/fixtures/lib/gitlab/import_export/group_exports/no_children/group.json954
-rw-r--r--spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/internal/group.json154
-rw-r--r--spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/private/group.json154
-rw-r--r--spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/public/group.json154
-rw-r--r--spec/fixtures/lib/gitlab/import_export/invalid_json/project.json3
-rw-r--r--spec/fixtures/lib/gitlab/import_export/light/project.json164
-rw-r--r--spec/fixtures/lib/gitlab/import_export/milestone-iid/project.json80
-rw-r--r--spec/fixtures/lib/gitlab/import_export/multi_pipeline_ref_one_external_pr/project.json143
-rw-r--r--spec/fixtures/lib/gitlab/import_export/with_invalid_records/project.json37
-rw-r--r--spec/frontend/content_editor/extensions/paste_markdown_spec.js168
-rw-r--r--spec/frontend/content_editor/remark_markdown_processing_spec.js4
-rw-r--r--spec/frontend/content_editor/services/markdown_serializer_spec.js83
-rw-r--r--spec/frontend/content_editor/test_utils.js4
-rw-r--r--spec/frontend/issuable/components/issuable_header_warnings_spec.js11
-rw-r--r--spec/frontend/issues/show/components/app_spec.js11
-rw-r--r--spec/frontend/super_sidebar/components/global_search/command_palette/__snapshots__/command_autocomplete_item_spec.js.snap19
-rw-r--r--spec/frontend/super_sidebar/components/global_search/command_palette/command_autocomplete_item_spec.js25
-rw-r--r--spec/frontend/super_sidebar/components/global_search/command_palette/command_palette_items_spec.js36
-rw-r--r--spec/frontend/super_sidebar/components/global_search/command_palette/mock_data.js67
-rw-r--r--spec/frontend/super_sidebar/components/global_search/command_palette/utils_spec.js18
-rw-r--r--spec/frontend/vue_shared/components/markdown_drawer/markdown_drawer_spec.js5
-rw-r--r--spec/helpers/sidebars_helper_spec.rb11
-rw-r--r--spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb22
-rw-r--r--spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb2
-rw-r--r--spec/lib/gitlab/import_export/import_test_coverage_spec.rb45
-rw-r--r--spec/lib/gitlab/import_export/legacy_relation_tree_saver_spec.rb24
-rw-r--r--spec/lib/gitlab/utils/usage_data_spec.rb2
-rw-r--r--spec/mailers/emails/merge_requests_spec.rb2
-rw-r--r--spec/models/clusters/cluster_spec.rb15
-rw-r--r--spec/models/deployment_spec.rb9
-rw-r--r--spec/models/environment_spec.rb8
-rw-r--r--spec/requests/api/internal/error_tracking_spec.rb4
-rw-r--r--spec/scripts/lib/glfm/update_example_snapshots_spec.rb12
-rw-r--r--spec/serializers/deployment_cluster_entity_spec.rb2
-rw-r--r--spec/services/ci/unlock_artifacts_service_spec.rb18
-rw-r--r--spec/spec_helper.rb2
-rw-r--r--yarn.lock8
90 files changed, 984 insertions, 14042 deletions
diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml
index 0e630fcd811..34c29a9e902 100644
--- a/.gitlab/ci/frontend.gitlab-ci.yml
+++ b/.gitlab/ci/frontend.gitlab-ci.yml
@@ -12,6 +12,7 @@
BROWSERSLIST_IGNORE_OLD_DATA: "true"
WEBPACK_COMPILE_LOG_PATH: "tmp/webpack-output.log"
stage: prepare
+ needs: []
script:
- yarn_install_script
- export GITLAB_ASSETS_HASH=$(bin/rake gitlab:assets:hash_sum)
@@ -109,6 +110,7 @@ retrieve-frontend-fixtures:
- .default-retry
- .frontend:rules:default-frontend-jobs
stage: prepare
+ needs: []
script:
- source scripts/utils.sh
- source scripts/gitlab_component_helpers.sh
diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml
index f465be5cff3..dbca4d09557 100644
--- a/.gitlab/ci/rails.gitlab-ci.yml
+++ b/.gitlab/ci/rails.gitlab-ci.yml
@@ -9,6 +9,7 @@ setup-test-env:
- .setup-test-env-cache
- .rails:rules:setup-test-env
stage: prepare
+ needs: []
variables:
SETUP_DB: "false"
script:
diff --git a/.gitlab/ci/test-metadata.gitlab-ci.yml b/.gitlab/ci/test-metadata.gitlab-ci.yml
index 3f06fcbce40..85d3ea11ac6 100644
--- a/.gitlab/ci/test-metadata.gitlab-ci.yml
+++ b/.gitlab/ci/test-metadata.gitlab-ci.yml
@@ -17,6 +17,7 @@ retrieve-tests-metadata:
# We use a smaller image for this job only (update-tests-metadata compiles some gems)
image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION}-slim
stage: prepare
+ needs: []
script:
- apt-get update && apt-get install -y curl # Not present in ruby-slim, so we add it manually
- install_gitlab_gem
diff --git a/.gitlab/merge_request_templates/Deprecations.md b/.gitlab/merge_request_templates/Deprecations.md
index fa53b9c800a..7e622dbe62c 100644
--- a/.gitlab/merge_request_templates/Deprecations.md
+++ b/.gitlab/merge_request_templates/Deprecations.md
@@ -98,7 +98,7 @@ must be updated before this MR is merged:
If you want to double check that it worked, you can run `bin/rake gitlab:docs:check_deprecations`
to verify that the doc is up to date.
1. Commit the updated file and push the changes.
-1. Set the MR to merge when the pipeline succeeds (or merge if the pipeline is already complete).
+1. Set the merge request to auto-merge, or if the pipeline is already complete, merge.
If you have trouble running the Rake task, check the [troubleshooting steps](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecation-rake-task-troubleshooting).
diff --git a/.gitlab/merge_request_templates/Removals.md b/.gitlab/merge_request_templates/Removals.md
index 4a9efcf364d..d2224a71e65 100644
--- a/.gitlab/merge_request_templates/Removals.md
+++ b/.gitlab/merge_request_templates/Removals.md
@@ -105,6 +105,6 @@ must be updated before this MR is merged:
If you want to double check that it worked, you can run `bin/rake gitlab:docs:check_removals`
to verify that the doc is up to date.
1. Commit the updated file and push the changes.
-1. Set the MR to merge when the pipeline succeeds (or merge if the pipeline is already complete).
+1. Set the merge request to auto-merge, or if the pipeline is already complete, merge.
If you have trouble running the rake task, check the [troubleshooting steps](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecation-rake-task-troubleshooting).
diff --git a/.rubocop_todo/layout/argument_alignment.yml b/.rubocop_todo/layout/argument_alignment.yml
index 8bcb60b0a64..96428c7e9bc 100644
--- a/.rubocop_todo/layout/argument_alignment.yml
+++ b/.rubocop_todo/layout/argument_alignment.yml
@@ -1613,28 +1613,6 @@ Layout/ArgumentAlignment:
- 'qa/qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb'
- 'qa/qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb'
- 'qa/qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/create_merge_request_with_secure_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/export_vulnerability_report_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/fix_vulnerability_workflow_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_2_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/policies_list_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/project_security_dashboard_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_vulnerabilities_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/vulnerabilities_jira_integration_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/license/cloud_activation_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/purchase/overage_modal_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/purchase/purchase_ci_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/purchase/purchase_storage_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/purchase/upgrade_group_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/purchase/user_registration_billing_spec.rb'
- - 'qa/qa/specs/features/ee/browser_ui/11_fulfillment/saas_user_limit_experience_spec.rb'
- 'qa/qa/vendor/jira/jira_api.rb'
- 'qa/spec/support/loglinking_spec.rb'
- 'rubocop/cop/gitlab/finder_with_find_by.rb'
diff --git a/app/assets/javascripts/boards/components/board_top_bar.vue b/app/assets/javascripts/boards/components/board_top_bar.vue
index 54d456867e5..fd9043a561f 100644
--- a/app/assets/javascripts/boards/components/board_top_bar.vue
+++ b/app/assets/javascripts/boards/components/board_top_bar.vue
@@ -95,7 +95,7 @@ export default {
class="issues-details-filters filtered-search-block gl-display-flex gl-flex-direction-column gl-lg-flex-direction-row row-content-block second-block"
>
<div
- class="gl-display-flex gl-flex-direction-column gl-md-flex-direction-row gl-flex-grow-1 gl-lg-mb-0 gl-mb-3 gl-w-full"
+ class="gl-display-flex gl-flex-direction-column gl-md-flex-direction-row gl-flex-grow-1 gl-lg-mb-0 gl-mb-3 gl-w-full gl-min-w-0"
>
<boards-selector :board-apollo="board" @switchBoard="$emit('switchBoard', $event)" />
<new-board-button />
diff --git a/app/assets/javascripts/content_editor/components/wrappers/reference_label.vue b/app/assets/javascripts/content_editor/components/wrappers/reference_label.vue
index 08efcd64367..c67e699cf95 100644
--- a/app/assets/javascripts/content_editor/components/wrappers/reference_label.vue
+++ b/app/assets/javascripts/content_editor/components/wrappers/reference_label.vue
@@ -22,9 +22,10 @@ export default {
},
computed: {
isScopedLabel() {
- return isScopedLabel({ title: this.node.attrs.originalText });
+ return isScopedLabel({ title: this.node.attrs.originalText || this.node.attrs.text });
},
},
+ fallbackLabelBackgroundColor: '#ccc',
};
</script>
<template>
@@ -32,7 +33,7 @@ export default {
<gl-label
size="sm"
:scoped="isScopedLabel"
- :background-color="node.attrs.color"
+ :background-color="node.attrs.color || $options.fallbackLabelBackgroundColor"
:title="node.attrs.text"
class="gl-pointer-events-none"
/>
diff --git a/app/assets/javascripts/content_editor/extensions/link.js b/app/assets/javascripts/content_editor/extensions/link.js
index b83814103d1..584e7b9e4f7 100644
--- a/app/assets/javascripts/content_editor/extensions/link.js
+++ b/app/assets/javascripts/content_editor/extensions/link.js
@@ -40,7 +40,6 @@ export default Link.extend({
},
addAttributes() {
return {
- ...this.parent?.(),
uploading: {
default: false,
renderHTML: ({ uploading }) => (uploading ? { class: 'with-attachment-icon' } : {}),
diff --git a/app/assets/javascripts/content_editor/extensions/paste_markdown.js b/app/assets/javascripts/content_editor/extensions/paste_markdown.js
index 82fa5ce6c1d..db13438de5e 100644
--- a/app/assets/javascripts/content_editor/extensions/paste_markdown.js
+++ b/app/assets/javascripts/content_editor/extensions/paste_markdown.js
@@ -1,5 +1,7 @@
+import OrderedMap from 'orderedmap';
import { Extension } from '@tiptap/core';
import { Plugin, PluginKey } from '@tiptap/pm/state';
+import { Schema, DOMParser as ProseMirrorDOMParser, DOMSerializer } from '@tiptap/pm/model';
import { __ } from '~/locale';
import { VARIANT_DANGER } from '~/alert';
import createMarkdownDeserializer from '../services/gl_api_markdown_deserializer';
@@ -9,47 +11,55 @@ import Diagram from './diagram';
import Frontmatter from './frontmatter';
const TEXT_FORMAT = 'text/plain';
+const GFM_FORMAT = 'text/x-gfm';
const HTML_FORMAT = 'text/html';
const VS_CODE_FORMAT = 'vscode-editor-data';
const CODE_BLOCK_NODE_TYPES = [CodeBlockHighlight.name, Diagram.name, Frontmatter.name];
+function parseHTML(schema, html) {
+ const parser = new DOMParser();
+ const startTag = '<body>';
+ const endTag = '</body>';
+ const { body } = parser.parseFromString(startTag + html + endTag, 'text/html');
+ return { document: ProseMirrorDOMParser.fromSchema(schema).parse(body) };
+}
+
export default Extension.create({
name: 'pasteMarkdown',
priority: EXTENSION_PRIORITY_HIGHEST,
addOptions() {
return {
renderMarkdown: null,
+ serializer: null,
};
},
addCommands() {
return {
- pasteMarkdown: (markdown) => () => {
+ pasteContent: (content = '', processMarkdown = true) => async () => {
const { editor, options } = this;
const { renderMarkdown, eventHub } = options;
const deserializer = createMarkdownDeserializer({ render: renderMarkdown });
- deserializer
- .deserialize({ schema: editor.schema, markdown })
+ const pasteSchemaSpec = { ...editor.schema.spec };
+ pasteSchemaSpec.marks = OrderedMap.from(pasteSchemaSpec.marks).remove('span');
+ pasteSchemaSpec.nodes = OrderedMap.from(pasteSchemaSpec.nodes).remove('div').remove('pre');
+ const schema = new Schema(pasteSchemaSpec);
+
+ const promise = processMarkdown
+ ? deserializer.deserialize({ schema, markdown: content })
+ : Promise.resolve(parseHTML(schema, content));
+
+ promise
.then(({ document }) => {
- if (!document) {
- return;
- }
+ if (!document) return;
- const { state, view } = editor;
- const { tr, selection } = state;
const { firstChild } = document.content;
- const content =
+ const toPaste =
document.content.childCount === 1 && firstChild.type.name === 'paragraph'
? firstChild.content
: document.content;
- if (selection.to - selection.from > 0) {
- tr.replaceWith(selection.from, selection.to, content);
- } else {
- tr.insert(selection.from, content);
- }
-
- view.dispatch(tr);
+ editor.commands.insertContent(toPaste.toJSON());
})
.catch(() => {
eventHub.$emit(ALERT_EVENT, {
@@ -65,24 +75,57 @@ export default Extension.create({
addProseMirrorPlugins() {
let pasteRaw = false;
+ const handleCutAndCopy = (view, event) => {
+ const slice = view.state.selection.content();
+ const gfmContent = this.options.serializer.serialize({ doc: slice.content });
+ const documentFragment = DOMSerializer.fromSchema(view.state.schema).serializeFragment(
+ slice.content,
+ );
+ const div = document.createElement('div');
+ div.appendChild(documentFragment);
+
+ event.clipboardData.setData(TEXT_FORMAT, div.innerText);
+ event.clipboardData.setData(HTML_FORMAT, div.innerHTML);
+ event.clipboardData.setData(GFM_FORMAT, gfmContent);
+
+ event.preventDefault();
+ event.stopPropagation();
+ };
+
return [
new Plugin({
key: new PluginKey('pasteMarkdown'),
props: {
+ handleDOMEvents: {
+ copy: handleCutAndCopy,
+ cut: (view, event) => {
+ handleCutAndCopy(view, event);
+ this.editor.commands.deleteSelection();
+ },
+ },
handleKeyDown: (_, event) => {
pasteRaw = event.key === 'v' && (event.metaKey || event.ctrlKey) && event.shiftKey;
},
handlePaste: (view, event) => {
const { clipboardData } = event;
- const content = clipboardData.getData(TEXT_FORMAT);
- const { state } = view;
- const { tr, selection } = state;
- const { from, to } = selection;
+
+ const gfmContent = clipboardData.getData(GFM_FORMAT);
+
+ if (gfmContent) {
+ return this.editor.commands.pasteContent(gfmContent, true);
+ }
+
+ const textContent = clipboardData.getData(TEXT_FORMAT);
+ const htmlContent = clipboardData.getData(HTML_FORMAT);
+
+ const { from, to } = view.state.selection;
if (pasteRaw) {
- tr.insertText(content.replace(/^\s+|\s+$/gm, ''), from, to);
- view.dispatch(tr);
+ this.editor.commands.insertContentAt(
+ { from, to },
+ textContent.replace(/^\s+|\s+$/gm, ''),
+ );
return true;
}
@@ -91,18 +134,19 @@ export default Extension.create({
const vsCodeMeta = hasVsCode ? JSON.parse(clipboardData.getData(VS_CODE_FORMAT)) : {};
const language = vsCodeMeta.mode;
- if (!content || (hasHTML && !hasVsCode) || (hasVsCode && language !== 'markdown')) {
- return false;
- }
-
// if a code block is active, paste as plain text
- if (CODE_BLOCK_NODE_TYPES.some((type) => this.editor.isActive(type))) {
+ if (!textContent || CODE_BLOCK_NODE_TYPES.some((type) => this.editor.isActive(type))) {
return false;
}
- this.editor.commands.pasteMarkdown(content);
+ if (hasVsCode) {
+ return this.editor.commands.pasteContent(
+ language === 'markdown' ? textContent : `\`\`\`${language}\n${textContent}\n\`\`\``,
+ true,
+ );
+ }
- return true;
+ return this.editor.commands.pasteContent(hasHTML ? htmlContent : textContent, !hasHTML);
},
},
}),
diff --git a/app/assets/javascripts/content_editor/extensions/reference_label.js b/app/assets/javascripts/content_editor/extensions/reference_label.js
index 6fe904ed787..9cd55a0f87c 100644
--- a/app/assets/javascripts/content_editor/extensions/reference_label.js
+++ b/app/assets/javascripts/content_editor/extensions/reference_label.js
@@ -20,7 +20,13 @@ export default Reference.extend({
},
color: {
default: null,
- parseHTML: (element) => element.querySelector('.gl-label-text').style.backgroundColor,
+ parseHTML: (element) => {
+ let color = element.querySelector('.gl-label-text').style.backgroundColor;
+ if (!color || color.startsWith('var'))
+ color = element.style.getPropertyValue('--label-background-color');
+
+ return color;
+ },
},
};
},
diff --git a/app/assets/javascripts/content_editor/services/create_content_editor.js b/app/assets/javascripts/content_editor/services/create_content_editor.js
index 834fb72daba..ee1f706ec7e 100644
--- a/app/assets/javascripts/content_editor/services/create_content_editor.js
+++ b/app/assets/javascripts/content_editor/services/create_content_editor.js
@@ -64,7 +64,7 @@ import Text from '../extensions/text';
import Video from '../extensions/video';
import WordBreak from '../extensions/word_break';
import { ContentEditor } from './content_editor';
-import createMarkdownSerializer from './markdown_serializer';
+import MarkdownSerializer from './markdown_serializer';
import createGlApiMarkdownDeserializer from './gl_api_markdown_deserializer';
import createRemarkMarkdownDeserializer from './remark_markdown_deserializer';
import AssetResolver from './asset_resolver';
@@ -97,6 +97,12 @@ export const createContentEditor = ({
const eventHub = eventHubFactory();
const assetResolver = new AssetResolver({ renderMarkdown });
+ const serializer = new MarkdownSerializer({ serializerConfig });
+ const deserializer = window.gon?.features?.preserveUnchangedMarkdown
+ ? createRemarkMarkdownDeserializer()
+ : createGlApiMarkdownDeserializer({
+ render: renderMarkdown,
+ });
const builtInContentEditorExtensions = [
Attachment.configure({ uploadsPath, renderMarkdown, eventHub }),
@@ -139,7 +145,7 @@ export const createContentEditor = ({
MathInline,
OrderedList,
Paragraph,
- PasteMarkdown.configure({ eventHub, renderMarkdown }),
+ PasteMarkdown.configure({ eventHub, renderMarkdown, serializer }),
Reference.configure({ assetResolver }),
ReferenceLabel,
ReferenceDefinition,
@@ -167,12 +173,6 @@ export const createContentEditor = ({
const trackedExtensions = allExtensions.map(trackInputRulesAndShortcuts);
const tiptapEditor = createTiptapEditor({ extensions: trackedExtensions, ...tiptapOptions });
- const serializer = createMarkdownSerializer({ serializerConfig });
- const deserializer = window.gon?.features?.preserveUnchangedMarkdown
- ? createRemarkMarkdownDeserializer()
- : createGlApiMarkdownDeserializer({
- render: renderMarkdown,
- });
return new ContentEditor({
tiptapEditor,
diff --git a/app/assets/javascripts/content_editor/services/markdown_serializer.js b/app/assets/javascripts/content_editor/services/markdown_serializer.js
index 3b77064e903..20899dcf5bd 100644
--- a/app/assets/javascripts/content_editor/services/markdown_serializer.js
+++ b/app/assets/javascripts/content_editor/services/markdown_serializer.js
@@ -67,6 +67,7 @@ import {
renderContent,
renderBulletList,
renderReference,
+ renderReferenceLabel,
preserveUnchanged,
bold,
italic,
@@ -197,7 +198,7 @@ const defaultSerializerConfig = {
[OrderedList.name]: preserveUnchanged(renderOrderedList),
[Paragraph.name]: preserveUnchanged(defaultMarkdownSerializer.nodes.paragraph),
[Reference.name]: renderReference,
- [ReferenceLabel.name]: renderReference,
+ [ReferenceLabel.name]: renderReferenceLabel,
[ReferenceDefinition.name]: preserveUnchanged({
render: (state, node, parent, index, same, sourceMarkdown) => {
const nextSibling = parent.maybeChild(index + 1);
@@ -273,19 +274,22 @@ const createChangeTracker = (doc, pristineDoc) => {
return changeTracker;
};
-/**
- * Converts a ProseMirror document to Markdown. See the
- * following documentation to learn how to implement
- * custom node and mark serializer functions.
- *
- * https://github.com/prosemirror/prosemirror-markdown
- *
- * @param {Object} params.nodes ProseMirror node serializer functions
- * @param {Object} params.marks ProseMirror marks serializer config
- *
- * @returns a markdown serializer
- */
-export default ({ serializerConfig = {} } = {}) => ({
+export default class MarkdownSerializer {
+ /**
+ * Converts a ProseMirror document to Markdown. See the
+ * following documentation to learn how to implement
+ * custom node and mark serializer functions.
+ *
+ * https://github.com/prosemirror/prosemirror-markdown
+ *
+ * @param {Object} params.nodes ProseMirror node serializer functions
+ * @param {Object} params.marks ProseMirror marks serializer config
+ *
+ * @returns a markdown serializer
+ */
+ constructor({ serializerConfig = {} } = {}) {
+ this.serializerConfig = serializerConfig;
+ }
/**
* Serializes a ProseMirror document as Markdown. If a node contains
* sourcemap metadata, the serializer is capable of restoring the
@@ -301,16 +305,16 @@ export default ({ serializerConfig = {} } = {}) => ({
* changed.
* @returns A String that represents the serialized document as Markdown
*/
- serialize: ({ doc, pristineDoc }) => {
+ serialize({ doc, pristineDoc }) {
const changeTracker = createChangeTracker(doc, pristineDoc);
const serializer = new ProseMirrorMarkdownSerializer(
{
...defaultSerializerConfig.nodes,
- ...serializerConfig.nodes,
+ ...this.serializerConfig.nodes,
},
{
...defaultSerializerConfig.marks,
- ...serializerConfig.marks,
+ ...this.serializerConfig.marks,
},
);
@@ -318,5 +322,5 @@ export default ({ serializerConfig = {} } = {}) => ({
tightLists: true,
changeTracker,
});
- },
-});
+ }
+}
diff --git a/app/assets/javascripts/content_editor/services/serialization_helpers.js b/app/assets/javascripts/content_editor/services/serialization_helpers.js
index 9d8dec96152..b6bcda8d801 100644
--- a/app/assets/javascripts/content_editor/services/serialization_helpers.js
+++ b/app/assets/javascripts/content_editor/services/serialization_helpers.js
@@ -157,6 +157,10 @@ function setIsInBlockTable(table, value) {
});
}
+function ensureSpace(state) {
+ if (!state.atBlank() && !state.out.endsWith(' ')) state.write(' ');
+}
+
function unsetIsInBlockTable(table) {
tableMap.delete(table);
@@ -457,9 +461,15 @@ export function renderOrderedList(state, node) {
}
export function renderReference(state, node) {
+ ensureSpace(state);
state.write(node.attrs.originalText || node.attrs.text);
}
+export function renderReferenceLabel(state, node) {
+ ensureSpace(state);
+ state.write(node.attrs.originalText || `~${state.quote(node.attrs.text)}`);
+}
+
const generateBoldTags = (wrapTagName = openTag) => {
return (_, mark) => {
const type = /^(\*\*|__|<strong|<b).*/.exec(mark.attrs.sourceMarkdown)?.[1];
diff --git a/app/assets/javascripts/diffs/components/diff_file.vue b/app/assets/javascripts/diffs/components/diff_file.vue
index bffa8468b8c..4ffdcd78422 100644
--- a/app/assets/javascripts/diffs/components/diff_file.vue
+++ b/app/assets/javascripts/diffs/components/diff_file.vue
@@ -199,6 +199,9 @@ export default {
(this.fileDiscussions.length || this.file.drafts.length || this.file.hasCommentForm)
);
},
+ diffFileHash() {
+ return this.file.file_hash;
+ },
},
watch: {
'file.id': {
diff --git a/app/assets/javascripts/issuable/components/issuable_header_warnings.vue b/app/assets/javascripts/issuable/components/issuable_header_warnings.vue
index 403997779ac..eab7d01be14 100644
--- a/app/assets/javascripts/issuable/components/issuable_header_warnings.vue
+++ b/app/assets/javascripts/issuable/components/issuable_header_warnings.vue
@@ -40,6 +40,9 @@ export default {
iconName: 'lock',
visible: this.isLocked,
dataTestId: 'locked',
+ tooltip: sprintf(__('This %{issuable} is locked. Only project members can comment.'), {
+ issuable: noteableTypeText[this.getNoteableData.targetType],
+ }),
},
{
iconName: 'spam',
@@ -67,7 +70,7 @@ export default {
<div
v-if="meta.visible"
:key="meta.iconName"
- v-gl-tooltip
+ v-gl-tooltip.bottom
:data-testid="meta.dataTestId"
:title="meta.tooltip || null"
:class="{
diff --git a/app/assets/javascripts/issues/show/components/app.vue b/app/assets/javascripts/issues/show/components/app.vue
index d8734c8a2c4..fcdf1f7741b 100644
--- a/app/assets/javascripts/issues/show/components/app.vue
+++ b/app/assets/javascripts/issues/show/components/app.vue
@@ -531,7 +531,13 @@ export default {
statusText
}}</span></gl-badge
>
- <span v-if="isLocked" data-testid="locked" class="issuable-warning-icon">
+ <span
+ v-if="isLocked"
+ v-gl-tooltip.bottom
+ data-testid="locked"
+ class="issuable-warning-icon"
+ :title="__('This issue is locked. Only project members can comment.')"
+ >
<gl-icon name="lock" :aria-label="__('Locked')" />
</span>
<confidentiality-badge
@@ -542,7 +548,7 @@ export default {
/>
<span
v-if="isHidden"
- v-gl-tooltip
+ v-gl-tooltip.bottom
:title="__('This issue is hidden because its author has been banned')"
data-testid="hidden"
class="issuable-warning-icon"
diff --git a/app/assets/javascripts/notes/mixins/diff_line_note_form.js b/app/assets/javascripts/notes/mixins/diff_line_note_form.js
index 1ea78f18aca..55a63212dc5 100644
--- a/app/assets/javascripts/notes/mixins/diff_line_note_form.js
+++ b/app/assets/javascripts/notes/mixins/diff_line_note_form.js
@@ -58,7 +58,7 @@ export default {
const position =
positionType ||
(this.diffFileCommentForm ? IMAGE_DIFF_POSITION_TYPE : TEXT_DIFF_POSITION_TYPE);
- const selectedDiffFile = this.getDiffFileByHash(this.diffFileHash);
+ const diffFile = this.diffFile || this.file;
const postData = getDraftFormData({
note,
notesData: this.notesData,
@@ -66,7 +66,7 @@ export default {
noteableType: this.noteableType,
noteTargetLine: this.noteTargetLine,
diffViewType: this.diffViewType,
- diffFile: selectedDiffFile,
+ diffFile,
linePosition: this.position,
positionType: position,
...this.diffFileCommentForm,
@@ -74,7 +74,7 @@ export default {
showWhitespace: this.showWhitespace,
});
- const diffFileHeadSha = this.commit && this?.diffFile?.diff_refs?.head_sha;
+ const diffFileHeadSha = this.commit && diffFile?.diff_refs?.head_sha;
postData.data.note.commit_id = diffFileHeadSha || null;
@@ -85,7 +85,7 @@ export default {
} else if (this.line?.line_code) {
this.handleClearForm(this.line.line_code);
} else if (position === FILE_DIFF_POSITION_TYPE) {
- this.toggleFileCommentForm(this.diffFile.file_path);
+ this.toggleFileCommentForm(diffFile.file_path);
}
})
.catch(() => {
diff --git a/app/assets/javascripts/super_sidebar/components/global_search/command_palette/command_autocomplete_item.vue b/app/assets/javascripts/super_sidebar/components/global_search/command_palette/command_autocomplete_item.vue
new file mode 100644
index 00000000000..6ca1e40f1f6
--- /dev/null
+++ b/app/assets/javascripts/super_sidebar/components/global_search/command_palette/command_autocomplete_item.vue
@@ -0,0 +1,37 @@
+<script>
+import { GlIcon } from '@gitlab/ui';
+import SafeHtml from '~/vue_shared/directives/safe_html';
+import highlight from '~/lib/utils/highlight';
+
+export default {
+ name: 'CommandPaletteCommandAutocompleteItem',
+ components: {
+ GlIcon,
+ },
+ directives: {
+ SafeHtml,
+ },
+ props: {
+ command: {
+ type: Object,
+ required: true,
+ },
+ searchQuery: {
+ type: String,
+ required: true,
+ },
+ },
+ computed: {
+ highlightedName() {
+ return highlight(this.command.text, this.searchQuery);
+ },
+ },
+};
+</script>
+
+<template>
+ <div class="gl-display-flex gl-align-items-center">
+ <gl-icon v-if="command.icon" class="gl-mr-3" :name="command.icon" />
+ <span v-safe-html="highlightedName" class="gl-text-gray-900"></span>
+ </div>
+</template>
diff --git a/app/assets/javascripts/super_sidebar/components/global_search/command_palette/command_palette_items.vue b/app/assets/javascripts/super_sidebar/components/global_search/command_palette/command_palette_items.vue
index 8a7d051ed46..4c1f3d3e0eb 100644
--- a/app/assets/javascripts/super_sidebar/components/global_search/command_palette/command_palette_items.vue
+++ b/app/assets/javascripts/super_sidebar/components/global_search/command_palette/command_palette_items.vue
@@ -10,11 +10,13 @@ import {
COMMON_HANDLES,
COMMAND_HANDLE,
USER_HANDLE,
- COMMANDS_GROUP_TITLE,
+ GLOBAL_COMMANDS_GROUP_TITLE,
USERS_GROUP_TITLE,
+ PAGES_GROUP_TITLE,
} from './constants';
-import { userMapper, commandMapper } from './utils';
+import { userMapper, commandMapper, linksReducer } from './utils';
import UserAutocompleteItem from './user_autocomplete_item.vue';
+import CommandAutocompleteItem from './command_autocomplete_item.vue';
export default {
name: 'CommandPaletteItems',
@@ -22,8 +24,9 @@ export default {
GlDisclosureDropdownGroup,
GlLoadingIcon,
UserAutocompleteItem,
+ CommandAutocompleteItem,
},
- inject: ['commandPaletteData'],
+ inject: ['commandPaletteCommands', 'commandPaletteLinks'],
props: {
searchQuery: {
type: String,
@@ -38,7 +41,7 @@ export default {
},
},
data: () => ({
- group: null,
+ groups: [],
error: null,
loading: false,
}),
@@ -50,21 +53,25 @@ export default {
return this.handle === USER_HANDLE;
},
commands() {
- return this.commandPaletteData.map(commandMapper);
+ return this.commandPaletteCommands.map(commandMapper);
+ },
+ links() {
+ return this.commandPaletteLinks.reduce(linksReducer, []);
},
filteredCommands() {
return this.searchQuery
- ? fuzzaldrinPlus.filter(this.commands, this.searchQuery, { key: 'keywords' })
+ ? this.commands
+ .map(({ name, items }) => {
+ return {
+ name: name || GLOBAL_COMMANDS_GROUP_TITLE,
+ items: this.filterBySearchQuery(items, 'text'),
+ };
+ })
+ .filter(({ items }) => items.length)
: this.commands;
},
- commandsGroup() {
- return {
- name: COMMANDS_GROUP_TITLE,
- items: this.filteredCommands,
- };
- },
hasResults() {
- return this.group?.items?.length;
+ return this.groups?.length && this.groups.some((group) => group.items?.length);
},
hasSearchQuery() {
return this.searchQuery?.length;
@@ -75,7 +82,7 @@ export default {
handler() {
switch (this.handle) {
case COMMAND_HANDLE:
- this.group = this.commandsGroup;
+ this.getCommandsAndPages();
break;
case USER_HANDLE:
this.getUsers();
@@ -88,6 +95,32 @@ export default {
},
},
methods: {
+ filterBySearchQuery(items, key = 'keywords') {
+ return fuzzaldrinPlus.filter(items, this.searchQuery, { key });
+ },
+ getCommandsAndPages() {
+ if (!this.searchQuery) {
+ this.groups = [...this.commands];
+ return;
+ }
+
+ const matchedLinks = this.filterBySearchQuery(this.links);
+
+ if (this.filteredCommands.length || matchedLinks.length) {
+ this.groups = [];
+ }
+
+ if (this.filteredCommands.length) {
+ this.groups = [...this.filteredCommands];
+ }
+
+ if (matchedLinks.length) {
+ this.groups.push({
+ name: PAGES_GROUP_TITLE,
+ items: matchedLinks,
+ });
+ }
+ },
getUsers: debounce(function debouncedUserSearch() {
if (this.searchQuery && this.searchQuery.length < 3) return null;
@@ -100,10 +133,12 @@ export default {
},
})
.then(({ data }) => {
- this.group = {
- name: USERS_GROUP_TITLE,
- items: data.map(userMapper),
- };
+ this.groups = [
+ {
+ name: USERS_GROUP_TITLE,
+ items: data.map(userMapper),
+ },
+ ];
})
.catch((error) => {
this.error = error;
@@ -120,11 +155,25 @@ export default {
<ul class="gl-p-0 gl-m-0 gl-list-style-none">
<gl-loading-icon v-if="loading" size="lg" class="gl-my-5" />
- <gl-disclosure-dropdown-group v-else-if="hasResults" :group="group" bordered class="gl-mt-0!">
- <template v-if="isUserMode" #list-item="{ item }">
- <user-autocomplete-item :user="item" :search-query="searchQuery" />
- </template>
- </gl-disclosure-dropdown-group>
+ <template v-else-if="hasResults">
+ <gl-disclosure-dropdown-group
+ v-for="(group, index) in groups"
+ :key="index"
+ :group="group"
+ bordered
+ class="{'gl-mt-0!': index===0}"
+ >
+ <template #list-item="{ item }">
+ <user-autocomplete-item v-if="isUserMode" :user="item" :search-query="searchQuery" />
+ <command-autocomplete-item
+ v-if="isCommandMode"
+ :command="item"
+ :search-query="searchQuery"
+ />
+ </template>
+ </gl-disclosure-dropdown-group>
+ </template>
+
<div v-else-if="hasSearchQuery && !hasResults" class="gl-text-gray-700 gl-pl-5 gl-py-3">
{{ __('No results found') }}
</div>
diff --git a/app/assets/javascripts/super_sidebar/components/global_search/command_palette/constants.js b/app/assets/javascripts/super_sidebar/components/global_search/command_palette/constants.js
index da6ccf1a2ed..a3bb102f6f9 100644
--- a/app/assets/javascripts/super_sidebar/components/global_search/command_palette/constants.js
+++ b/app/assets/javascripts/super_sidebar/components/global_search/command_palette/constants.js
@@ -21,5 +21,6 @@ export const SEARCH_SCOPE = {
[USER_HANDLE]: s__('CommandPalette|user (enter at least 3 chars)'),
};
-export const COMMANDS_GROUP_TITLE = s__('CommandPalette|Commands');
+export const GLOBAL_COMMANDS_GROUP_TITLE = s__('CommandPalette|Global Commands');
export const USERS_GROUP_TITLE = s__('CommandPalette|Users');
+export const PAGES_GROUP_TITLE = s__('CommandPalette|Pages');
diff --git a/app/assets/javascripts/super_sidebar/components/global_search/command_palette/user_autocomplete_item.vue b/app/assets/javascripts/super_sidebar/components/global_search/command_palette/user_autocomplete_item.vue
index 7a3df4f28aa..6a22df79c0f 100644
--- a/app/assets/javascripts/super_sidebar/components/global_search/command_palette/user_autocomplete_item.vue
+++ b/app/assets/javascripts/super_sidebar/components/global_search/command_palette/user_autocomplete_item.vue
@@ -3,7 +3,6 @@ import { GlAvatar } from '@gitlab/ui';
import SafeHtml from '~/vue_shared/directives/safe_html';
import highlight from '~/lib/utils/highlight';
import { AVATAR_SHAPE_OPTION_RECT } from '~/vue_shared/constants';
-import { AUTOCOMPLETE_ERROR_MESSAGE } from '~/vue_shared/global_search/constants';
export default {
name: 'CommandPaletteUserAutocompleteItem',
@@ -23,12 +22,9 @@ export default {
required: true,
},
},
- i18n: {
- AUTOCOMPLETE_ERROR_MESSAGE,
- },
- methods: {
- highlightedName(val) {
- return highlight(val, this.searchQuery);
+ computed: {
+ highlightedName() {
+ return highlight(this.user.text, this.searchQuery);
},
},
AVATAR_SHAPE_OPTION_RECT,
@@ -48,7 +44,7 @@ export default {
aria-hidden="true"
/>
<span class="gl-display-flex gl-flex-direction-column">
- <span v-safe-html="highlightedName(user.text)" class="gl-text-gray-900"></span>
+ <span v-safe-html="highlightedName" class="gl-text-gray-900"></span>
<span v-safe-html="user.username" class="gl-font-sm gl-text-gray-500"></span>
</span>
</div>
diff --git a/app/assets/javascripts/super_sidebar/components/global_search/command_palette/utils.js b/app/assets/javascripts/super_sidebar/components/global_search/command_palette/utils.js
index 2936b20f938..be1edcc6e16 100644
--- a/app/assets/javascripts/super_sidebar/components/global_search/command_palette/utils.js
+++ b/app/assets/javascripts/super_sidebar/components/global_search/command_palette/utils.js
@@ -4,8 +4,32 @@ export const userMapper = ({ name: text, web_url: href, ...user } = {}) => ({
...user,
});
-export const commandMapper = ({ text, href, keywords = [] } = {}) => ({
- text,
- href,
- keywords: keywords.join(''),
-});
+export const commandMapper = ({ name, items }) => {
+ // TODO: we filter out invite_members for now, because it is complicated to add the invite members modal here
+ // and is out of scope for the basic command palette items. If it proves to be useful, we can add it later.
+ return {
+ name,
+ items: items.filter(({ component }) => component !== 'invite_members'),
+ };
+};
+
+export const linksReducer = (acc, menuItem) => {
+ acc.push({
+ text: menuItem.title,
+ keywords: menuItem.title,
+ icon: menuItem.icon,
+ href: menuItem.link,
+ });
+ if (menuItem.items?.length) {
+ const items = menuItem.items.map(({ title, link }) => ({
+ keywords: title,
+ text: [menuItem.title, title].join(' > '),
+ href: link,
+ icon: menuItem.icon,
+ }));
+
+ /* eslint-disable-next-line no-param-reassign */
+ acc = [...acc, ...items];
+ }
+ return acc;
+};
diff --git a/app/assets/javascripts/super_sidebar/super_sidebar_bundle.js b/app/assets/javascripts/super_sidebar/super_sidebar_bundle.js
index c6392cbc452..7f49d261bcb 100644
--- a/app/assets/javascripts/super_sidebar/super_sidebar_bundle.js
+++ b/app/assets/javascripts/super_sidebar/super_sidebar_bundle.js
@@ -72,7 +72,8 @@ export const initSuperSidebar = () => {
const sidebarData = JSON.parse(sidebar);
const searchData = convertObjectPropsToCamelCase(sidebarData.search);
- const commandPaletteData = convertObjectPropsToCamelCase(sidebarData.command_palette_commands);
+ const commandPaletteCommands = sidebarData.create_new_menu_groups || [];
+ const commandPaletteLinks = convertObjectPropsToCamelCase(sidebarData.current_menu_items || []);
const { searchPath, issuesPath, mrPath, autocompletePath, searchContext } = searchData;
const isImpersonating = parseBoolean(sidebarData.is_impersonating);
@@ -86,7 +87,8 @@ export const initSuperSidebar = () => {
toggleNewNavEndpoint,
isImpersonating,
...getTrialStatusWidgetData(sidebarData),
- commandPaletteData,
+ commandPaletteCommands,
+ commandPaletteLinks,
},
store: createStore({
searchPath,
diff --git a/app/assets/javascripts/vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue b/app/assets/javascripts/vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue
index 042400d4340..c72356dc713 100644
--- a/app/assets/javascripts/vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue
+++ b/app/assets/javascripts/vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue
@@ -339,7 +339,7 @@ export default {
</script>
<template>
- <div class="vue-filtered-search-bar-container gl-md-display-flex">
+ <div class="vue-filtered-search-bar-container gl-md-display-flex gl-min-w-0">
<gl-form-checkbox
v-if="showCheckbox"
class="gl-align-self-center"
diff --git a/app/assets/javascripts/vue_shared/components/markdown_drawer/markdown_drawer.vue b/app/assets/javascripts/vue_shared/components/markdown_drawer/markdown_drawer.vue
index 379f22fdc6f..4bb32a53b30 100644
--- a/app/assets/javascripts/vue_shared/components/markdown_drawer/markdown_drawer.vue
+++ b/app/assets/javascripts/vue_shared/components/markdown_drawer/markdown_drawer.vue
@@ -4,6 +4,7 @@ import SafeHtml from '~/vue_shared/directives/safe_html';
import { s__ } from '~/locale';
import { contentTop } from '~/lib/utils/common_utils';
import { renderGFM } from '~/behaviors/markdown/render_gfm';
+import { DRAWER_Z_INDEX } from '~/lib/utils/constants';
import { getRenderedMarkdown } from './utils/fetch';
export const cache = {};
@@ -95,10 +96,17 @@ export default {
safeHtmlConfig: {
ADD_TAGS: ['copy-code'],
},
+ DRAWER_Z_INDEX,
};
</script>
<template>
- <gl-drawer :header-height="drawerTop" :open="open" header-sticky @close="closeDrawer">
+ <gl-drawer
+ :header-height="drawerTop"
+ :open="open"
+ header-sticky
+ :z-index="$options.DRAWER_Z_INDEX"
+ @close="closeDrawer"
+ >
<template #title>
<h4 data-testid="title-element" class="gl-m-0">{{ title }}</h4>
</template>
diff --git a/app/experiments/templates/new_project_readme_content/readme_advanced.md.tt b/app/experiments/templates/new_project_readme_content/readme_advanced.md.tt
index e1dddcb2c66..4f9c00980e1 100644
--- a/app/experiments/templates/new_project_readme_content/readme_advanced.md.tt
+++ b/app/experiments/templates/new_project_readme_content/readme_advanced.md.tt
@@ -31,7 +31,7 @@ git push -uf origin <%= @project.default_branch_or_main %>
- [ ] [Create a new merge request](<%= redirect("https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html") %>)
- [ ] [Automatically close issues from merge requests](<%= redirect("https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically") %>)
- [ ] [Enable merge request approvals](<%= redirect("https://docs.gitlab.com/ee/user/project/merge_requests/approvals/") %>)
-- [ ] [Automatically merge when pipeline succeeds](<%= redirect("https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html") %>)
+- [ ] [Set auto-merge](<%= redirect("https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html") %>)
## Test and Deploy
diff --git a/app/helpers/sidebars_helper.rb b/app/helpers/sidebars_helper.rb
index 02b705a4e0d..02a912d0227 100644
--- a/app/helpers/sidebars_helper.rb
+++ b/app/helpers/sidebars_helper.rb
@@ -89,9 +89,7 @@ module SidebarsHelper
update_pins_url: pins_url,
is_impersonating: impersonating?,
stop_impersonation_path: admin_impersonation_path,
- shortcut_links: shortcut_links(user, project: project),
- # command palette
- command_palette_commands: create_command_palette_menu
+ shortcut_links: shortcut_links(user, project: project)
}
end
@@ -173,34 +171,6 @@ module SidebarsHelper
end
end
- def create_command_palette_menu
- menu_items = []
-
- if current_user.can_create_project?
- menu_items.push({
- text: _('New project/repository'),
- href: new_project_path,
- keywords: [_('Create a new project/repository')]
- })
- end
-
- if current_user.can_create_group?
- menu_items.push({
- text: _('New group'),
- href: new_group_path,
- keywords: ['Create a new group']
- })
- end
-
- return unless current_user.can?(:create_snippet)
-
- menu_items.push({
- text: _('New snippet'),
- href: new_snippet_path,
- keywords: ['Create a new snippet']
- })
- end
-
def create_merge_request_menu(user)
[
{
diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb
index 7727e94875b..6319163b0d7 100644
--- a/app/models/ci/runner.rb
+++ b/app/models/ci/runner.rb
@@ -100,7 +100,10 @@ module Ci
scope :with_recent_runner_queue, -> { where('contacted_at > ?', recent_queue_deadline) }
scope :with_running_builds, -> do
- where('EXISTS(?)', ::Ci::Build.running.select(1).where('ci_builds.runner_id = ci_runners.id'))
+ where('EXISTS(?)',
+ ::Ci::Build.running.select(1)
+ .where("#{::Ci::Build.quoted_table_name}.runner_id = #{quoted_table_name}.id")
+ )
end
# BACKWARD COMPATIBILITY: There are needed to maintain compatibility with `AVAILABLE_SCOPES` used by `lib/api/runners.rb`
diff --git a/app/models/clusters/cluster.rb b/app/models/clusters/cluster.rb
index a2903bba6d2..9cae71809fd 100644
--- a/app/models/clusters/cluster.rb
+++ b/app/models/clusters/cluster.rb
@@ -23,7 +23,7 @@ module Clusters
has_many :projects, through: :cluster_projects, class_name: '::Project'
has_one :cluster_project, -> { order(id: :desc) }, class_name: 'Clusters::Project'
has_many :deployment_clusters
- has_many :deployments, inverse_of: :cluster
+ has_many :deployments, inverse_of: :cluster, through: :deployment_clusters
has_many :successful_deployments, -> { success }, class_name: 'Deployment'
has_many :environments, -> { distinct }, through: :deployments
diff --git a/app/models/deployment.rb b/app/models/deployment.rb
index f3ee21ea4e0..1e3a80087c8 100644
--- a/app/models/deployment.rb
+++ b/app/models/deployment.rb
@@ -16,7 +16,6 @@ class Deployment < ApplicationRecord
belongs_to :project, optional: false
belongs_to :environment, optional: false
- belongs_to :cluster, class_name: 'Clusters::Cluster', optional: true
belongs_to :user
belongs_to :deployable, polymorphic: true, optional: true, inverse_of: :deployment # rubocop:disable Cop/PolymorphicAssociations
has_many :deployment_merge_requests
@@ -35,6 +34,7 @@ class Deployment < ApplicationRecord
delegate :name, to: :environment, prefix: true
delegate :kubernetes_namespace, to: :deployment_cluster, allow_nil: true
+ delegate :cluster, to: :deployment_cluster, allow_nil: true
scope :for_iid, -> (project, iid) { where(project: project, iid: iid) }
scope :for_environment, -> (environment) { where(environment_id: environment) }
diff --git a/app/serializers/environment_serializer.rb b/app/serializers/environment_serializer.rb
index 21ffdce155f..d7820dff6ef 100644
--- a/app/serializers/environment_serializer.rb
+++ b/app/serializers/environment_serializer.rb
@@ -83,7 +83,7 @@ class EnvironmentSerializer < BaseSerializer
def deployment_associations
{
user: [],
- cluster: [],
+ deployment_cluster: { cluster: [] },
project: {
route: [],
namespace: :route
diff --git a/app/views/notify/merge_when_pipeline_succeeds_email.html.haml b/app/views/notify/merge_when_pipeline_succeeds_email.html.haml
index f6b517d6e34..9c25567696f 100644
--- a/app/views/notify/merge_when_pipeline_succeeds_email.html.haml
+++ b/app/views/notify/merge_when_pipeline_succeeds_email.html.haml
@@ -78,7 +78,7 @@
%td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;vertical-align:middle;color:#ffffff;text-align:center;padding-right:5px;" }
%img{ alt: "✓", height: "13", src: image_url('mailers/ci_pipeline_notif_v1/icon-check-green-inverted.gif'), style: "display:block;", width: "13" }
%td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;vertical-align:middle;color:#ffffff;text-align:center;" }
- %span= _('Merge request was scheduled to merge after pipeline succeeds')
+ %span= _('Merge request was set to auto-merge')
%tr.spacer
%td{ style: "font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;height:18px;font-size:18px;line-height:18px;" }
&nbsp;
@@ -91,7 +91,7 @@
%img{ src: image_url('mailers/approval/icon-merge-request-gray.gif'), style: "height:18px;width:18px;margin-bottom:-4px;", alt: "Merge request icon" }
%span{ style: "font-weight: 600;color:#333333;" }= _('Merge request')
%a{ href: merge_request_url(@merge_request), style: "font-weight: 600;color:#3777b0;text-decoration:none" }= @merge_request.to_reference
- %span= _('was scheduled to merge after pipeline succeeds by')
+ %span= _('was set to auto-merge by')
%img.avatar{ height: "24", src: avatar_icon_for_user(@mwps_set_by, 24, only_path: false), style: "border-radius:12px;margin:-7px 0 -7px 3px;", width: "24", alt: "Avatar" }
%a.muted{ href: user_url(@mwps_set_by), style: "color:#333333;text-decoration:none;" }
= @mwps_set_by.name
diff --git a/app/views/notify/merge_when_pipeline_succeeds_email.text.haml b/app/views/notify/merge_when_pipeline_succeeds_email.text.haml
index dbf742a5cbc..cbaa88befd2 100644
--- a/app/views/notify/merge_when_pipeline_succeeds_email.text.haml
+++ b/app/views/notify/merge_when_pipeline_succeeds_email.text.haml
@@ -1,4 +1,4 @@
-Merge request #{@merge_request.to_reference} was scheduled to merge after pipeline succeeds by #{sanitize_name(@mwps_set_by.name)}
+Merge request #{@merge_request.to_reference} was set to auto-merge by #{sanitize_name(@mwps_set_by.name)}
Merge request url: #{project_merge_request_url(@merge_request.target_project, @merge_request)}
diff --git a/app/views/projects/readme_templates/default.md.tt b/app/views/projects/readme_templates/default.md.tt
index ad1d6cce08d..779b87336ea 100644
--- a/app/views/projects/readme_templates/default.md.tt
+++ b/app/views/projects/readme_templates/default.md.tt
@@ -31,7 +31,7 @@ git push -uf origin <%= params[:default_branch] %>
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
-- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
+- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
## Test and Deploy
diff --git a/config/feature_flags/development/review_apps_redeploy_mr_widget.yml b/config/feature_flags/development/review_apps_redeploy_mr_widget.yml
index c2bbdef3c83..c533e8abd9a 100644
--- a/config/feature_flags/development/review_apps_redeploy_mr_widget.yml
+++ b/config/feature_flags/development/review_apps_redeploy_mr_widget.yml
@@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/407456
milestone: '15.11'
type: development
group: group::pipeline execution
-default_enabled: false
+default_enabled: true
diff --git a/config/feature_flags/development/use_click_house_database_for_error_tracking.yml b/config/feature_flags/development/use_click_house_database_for_error_tracking.yml
deleted file mode 100644
index 15d31568fb0..00000000000
--- a/config/feature_flags/development/use_click_house_database_for_error_tracking.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: use_click_house_database_for_error_tracking
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90675
-rollout_issue_url: https://gitlab.com/gitlab-org/opstrace/opstrace/-/issues/1728
-milestone: '15.2'
-type: development
-group: group::observability
-default_enabled: false
diff --git a/data/removals/15_9/15-9-omniauth-shibboleth.yml b/data/removals/15_9/15-9-omniauth-shibboleth.yml
index a7641bb893b..a3923211244 100644
--- a/data/removals/15_9/15-9-omniauth-shibboleth.yml
+++ b/data/removals/15_9/15-9-omniauth-shibboleth.yml
@@ -8,4 +8,4 @@
stage: manage # (required) String value of the stage that the feature was created in. e.g., Growth
issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/388959 # (required) Link to the deprecation issue in GitLab
body: | # (required) Do not modify this line, instead modify the lines below.
- `omniauth-shibboleth` is an OmniAuth strategy gem that was part of GitLab. The gem has not received security updates and does not meet GitLab quality guidance criteria. This gem was originally scheduled for removal by 14.1, but it was not removed at that time. The gem is being removed now.
+ `omniauth-shibboleth` is an OmniAuth strategy gem that was part of GitLab. The gem has not received security updates and does not meet GitLab quality guidance criteria. This gem was originally scheduled for removal by 14.1, but it was not removed at that time. The gem is being removed now. In GitLab 16.1 or later, use the `omniauth-shibboleth-redux` gem instead.
diff --git a/doc/update/removals.md b/doc/update/removals.md
index 4f60674a0a2..e4acc454425 100644
--- a/doc/update/removals.md
+++ b/doc/update/removals.md
@@ -934,7 +934,7 @@ The Live Preview feature of the Web IDE was intended to provide a client-side pr
- To discuss this change or learn more, see the [deprecation issue](https://gitlab.com/gitlab-org/gitlab/-/issues/388959).
</div>
-`omniauth-shibboleth` is an OmniAuth strategy gem that was part of GitLab. The gem has not received security updates and does not meet GitLab quality guidance criteria. This gem was originally scheduled for removal by 14.1, but it was not removed at that time. The gem is being removed now.
+`omniauth-shibboleth` is an OmniAuth strategy gem that was part of GitLab. The gem has not received security updates and does not meet GitLab quality guidance criteria. This gem was originally scheduled for removal by 14.1, but it was not removed at that time. The gem is being removed now. In GitLab 16.1 or later, use the `omniauth-shibboleth-redux` gem instead.
## Removed in 15.8
diff --git a/glfm_specification/output_example_snapshots/prosemirror_json.yml b/glfm_specification/output_example_snapshots/prosemirror_json.yml
index 8cce959c8f8..bc6293b54b2 100644
--- a/glfm_specification/output_example_snapshots/prosemirror_json.yml
+++ b/glfm_specification/output_example_snapshots/prosemirror_json.yml
@@ -3195,10 +3195,8 @@
{
"type": "link",
"attrs": {
- "href": "bar",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "bar",
"title": null,
"canonicalSrc": "bar",
"isReference": false
@@ -3282,10 +3280,8 @@
{
"type": "link",
"attrs": {
- "href": "foo",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "foo",
"title": null,
"canonicalSrc": "foo",
"isReference": false
@@ -3804,10 +3800,8 @@
{
"type": "link",
"attrs": {
- "href": "bar",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "bar",
"title": null,
"canonicalSrc": "bar",
"isReference": false
@@ -3965,10 +3959,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "foo",
"isReference": true
@@ -4008,10 +4000,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "the title",
"canonicalSrc": "foo",
"isReference": true
@@ -4051,10 +4041,8 @@
{
"type": "link",
"attrs": {
- "href": "my_(url)",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "my_(url)",
"title": "title (with parens)",
"canonicalSrc": "foo*bar\\]",
"isReference": true
@@ -4094,10 +4082,8 @@
{
"type": "link",
"attrs": {
- "href": "my%20url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "my%20url",
"title": "title",
"canonicalSrc": "foo bar",
"isReference": true
@@ -4137,10 +4123,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "\ntitle\nline1\nline2\n",
"canonicalSrc": "foo",
"isReference": true
@@ -4213,10 +4197,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -4280,10 +4262,8 @@
{
"type": "link",
"attrs": {
- "href": "",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -4347,10 +4327,8 @@
{
"type": "link",
"attrs": {
- "href": "/url%5Cbar*baz",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url%5Cbar*baz",
"title": "foo\"bar\\baz",
"canonicalSrc": "foo",
"isReference": true
@@ -4376,10 +4354,8 @@
{
"type": "link",
"attrs": {
- "href": "url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "url",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -4419,10 +4395,8 @@
{
"type": "link",
"attrs": {
- "href": "first",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "first",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -4490,10 +4464,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -4533,10 +4505,8 @@
{
"type": "link",
"attrs": {
- "href": "/%CF%86%CE%BF%CF%85",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/%CF%86%CE%BF%CF%85",
"title": null,
"canonicalSrc": "αγω",
"isReference": true
@@ -4740,10 +4710,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -4826,10 +4794,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -4873,10 +4839,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -4944,10 +4908,8 @@
{
"type": "link",
"attrs": {
- "href": "/foo-url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/foo-url",
"title": "foo",
"canonicalSrc": "foo",
"isReference": true
@@ -4966,10 +4928,8 @@
{
"type": "link",
"attrs": {
- "href": "/bar-url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/bar-url",
"title": "bar",
"canonicalSrc": "bar",
"isReference": true
@@ -4988,10 +4948,8 @@
{
"type": "link",
"attrs": {
- "href": "/baz-url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/baz-url",
"title": null,
"canonicalSrc": "baz",
"isReference": true
@@ -5017,10 +4975,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -10816,10 +10772,8 @@
{
"type": "link",
"attrs": {
- "href": "http://example.com?find=%5C*",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://example.com?find=%5C*",
"title": null,
"canonicalSrc": "http://example.com?find=%5C*",
"isReference": false
@@ -10854,10 +10808,8 @@
{
"type": "link",
"attrs": {
- "href": "/bar*",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/bar*",
"title": "ti*tle",
"canonicalSrc": "/bar*",
"isReference": false
@@ -10883,10 +10835,8 @@
{
"type": "link",
"attrs": {
- "href": "/bar*",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/bar*",
"title": "ti*tle",
"canonicalSrc": "foo",
"isReference": true
@@ -11045,10 +10995,8 @@
{
"type": "link",
"attrs": {
- "href": "/f%C3%B6%C3%B6",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/f%C3%B6%C3%B6",
"title": "föö",
"canonicalSrc": "/f%C3%B6%C3%B6",
"isReference": false
@@ -11074,10 +11022,8 @@
{
"type": "link",
"attrs": {
- "href": "/f%C3%B6%C3%B6",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/f%C3%B6%C3%B6",
"title": "föö",
"canonicalSrc": "foo",
"isReference": true
@@ -11612,10 +11558,8 @@
{
"type": "link",
"attrs": {
- "href": "`",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "`",
"title": null,
"canonicalSrc": "`",
"isReference": false
@@ -11665,10 +11609,8 @@
{
"type": "link",
"attrs": {
- "href": "http://foo.bar.%60baz",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://foo.bar.%60baz",
"title": null,
"canonicalSrc": "http://foo.bar.%60baz",
"isReference": false
@@ -12823,10 +12765,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "/url",
"isReference": false
@@ -13295,10 +13235,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "/url",
"isReference": false
@@ -13366,10 +13304,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "/url",
"isReference": false
@@ -13727,10 +13663,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "/url",
"isReference": false
@@ -14635,10 +14569,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "/url",
"isReference": false
@@ -14668,10 +14600,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "/url",
"isReference": false
@@ -14823,10 +14753,8 @@
{
"type": "link",
"attrs": {
- "href": "http://foo.bar/?q=**",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://foo.bar/?q=**",
"title": null,
"canonicalSrc": "http://foo.bar/?q=**",
"isReference": false
@@ -14856,10 +14784,8 @@
{
"type": "link",
"attrs": {
- "href": "http://foo.bar/?q=__",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://foo.bar/?q=__",
"title": null,
"canonicalSrc": "http://foo.bar/?q=__",
"isReference": false
@@ -14933,10 +14859,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": "title",
"canonicalSrc": "/uri",
"isReference": false
@@ -14962,10 +14886,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "/uri",
"isReference": false
@@ -14991,10 +14913,8 @@
{
"type": "link",
"attrs": {
- "href": "",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "",
"title": null,
"canonicalSrc": "",
"isReference": false
@@ -15020,10 +14940,8 @@
{
"type": "link",
"attrs": {
- "href": "",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "",
"title": null,
"canonicalSrc": "",
"isReference": false
@@ -15064,10 +14982,8 @@
{
"type": "link",
"attrs": {
- "href": "/my%20uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/my%20uri",
"title": null,
"canonicalSrc": "/my%20uri",
"isReference": false
@@ -15123,10 +15039,8 @@
{
"type": "link",
"attrs": {
- "href": "b)c",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "b)c",
"title": null,
"canonicalSrc": "b)c",
"isReference": false
@@ -15191,10 +15105,8 @@
{
"type": "link",
"attrs": {
- "href": "(foo)",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "(foo)",
"title": null,
"canonicalSrc": "(foo)",
"isReference": false
@@ -15220,10 +15132,8 @@
{
"type": "link",
"attrs": {
- "href": "foo(and(bar))",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "foo(and(bar))",
"title": null,
"canonicalSrc": "foo(and(bar))",
"isReference": false
@@ -15249,10 +15159,8 @@
{
"type": "link",
"attrs": {
- "href": "foo(and(bar)",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "foo(and(bar)",
"title": null,
"canonicalSrc": "foo(and(bar)",
"isReference": false
@@ -15278,10 +15186,8 @@
{
"type": "link",
"attrs": {
- "href": "foo(and(bar)",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "foo(and(bar)",
"title": null,
"canonicalSrc": "foo(and(bar)",
"isReference": false
@@ -15307,10 +15213,8 @@
{
"type": "link",
"attrs": {
- "href": "foo):",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "foo):",
"title": null,
"canonicalSrc": "foo):",
"isReference": false
@@ -15336,10 +15240,8 @@
{
"type": "link",
"attrs": {
- "href": "#fragment",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "#fragment",
"title": null,
"canonicalSrc": "#fragment",
"isReference": false
@@ -15359,10 +15261,8 @@
{
"type": "link",
"attrs": {
- "href": "http://example.com#fragment",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://example.com#fragment",
"title": null,
"canonicalSrc": "http://example.com#fragment",
"isReference": false
@@ -15382,10 +15282,8 @@
{
"type": "link",
"attrs": {
- "href": "http://example.com?foo=3#frag",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://example.com?foo=3#frag",
"title": null,
"canonicalSrc": "http://example.com?foo=3#frag",
"isReference": false
@@ -15411,10 +15309,8 @@
{
"type": "link",
"attrs": {
- "href": "foo%5Cbar",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "foo%5Cbar",
"title": null,
"canonicalSrc": "foo%5Cbar",
"isReference": false
@@ -15440,10 +15336,8 @@
{
"type": "link",
"attrs": {
- "href": "foo%20b%C3%A4",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "foo%20b%C3%A4",
"title": null,
"canonicalSrc": "foo%20b%C3%A4",
"isReference": false
@@ -15469,10 +15363,8 @@
{
"type": "link",
"attrs": {
- "href": "%22title%22",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "%22title%22",
"title": null,
"canonicalSrc": "%22title%22",
"isReference": false
@@ -15498,10 +15390,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "/url",
"isReference": false
@@ -15527,10 +15417,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title \"\"",
"canonicalSrc": "/url",
"isReference": false
@@ -15556,10 +15444,8 @@
{
"type": "link",
"attrs": {
- "href": "/url%C2%A0%22title%22",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url%C2%A0%22title%22",
"title": null,
"canonicalSrc": "/url%C2%A0%22title%22",
"isReference": false
@@ -15600,10 +15486,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title \"and\" title",
"canonicalSrc": "/url",
"isReference": false
@@ -15629,10 +15513,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": "title",
"canonicalSrc": "/uri",
"isReference": false
@@ -15673,10 +15555,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "/uri",
"isReference": false
@@ -15721,10 +15601,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "/uri",
"isReference": false
@@ -15750,10 +15628,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "/uri",
"isReference": false
@@ -15779,10 +15655,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "/uri",
"isReference": false
@@ -15797,10 +15671,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "/uri",
"isReference": false
@@ -15818,10 +15690,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "/uri",
"isReference": false
@@ -15842,10 +15712,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "/uri",
"isReference": false
@@ -15890,10 +15758,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "/uri",
"isReference": false
@@ -15922,10 +15788,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "/uri",
"isReference": false
@@ -15968,10 +15832,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "/uri",
"isReference": false
@@ -16041,10 +15903,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "/uri",
"isReference": false
@@ -16070,10 +15930,8 @@
{
"type": "link",
"attrs": {
- "href": "baz*",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "baz*",
"title": null,
"canonicalSrc": "baz*",
"isReference": false
@@ -16166,10 +16024,8 @@
{
"type": "link",
"attrs": {
- "href": "http://example.com/?search=%5D(uri)",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://example.com/?search=%5D(uri)",
"title": null,
"canonicalSrc": "http://example.com/?search=%5D(uri)",
"isReference": false
@@ -16195,10 +16051,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "bar",
"isReference": true
@@ -16238,10 +16092,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "ref",
"isReference": true
@@ -16281,10 +16133,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "ref",
"isReference": true
@@ -16324,10 +16174,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "ref",
"isReference": true
@@ -16342,10 +16190,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "ref",
"isReference": true
@@ -16363,10 +16209,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "ref",
"isReference": true
@@ -16387,10 +16231,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "ref",
"isReference": true
@@ -16449,10 +16291,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "ref",
"isReference": true
@@ -16495,10 +16335,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "/uri",
"isReference": false
@@ -16517,10 +16355,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "ref",
"isReference": true
@@ -16573,10 +16409,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "ref",
"isReference": true
@@ -16598,10 +16432,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "ref",
"isReference": true
@@ -16645,10 +16477,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "ref",
"isReference": true
@@ -16688,10 +16518,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "ref",
"isReference": true
@@ -16802,10 +16630,8 @@
{
"type": "link",
"attrs": {
- "href": "http://example.com/?search=%5D%5Bref%5D",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://example.com/?search=%5D%5Bref%5D",
"title": null,
"canonicalSrc": "http://example.com/?search=%5D%5Bref%5D",
"isReference": false
@@ -16845,10 +16671,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "bar",
"isReference": true
@@ -16888,10 +16712,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "толпой",
"isReference": true
@@ -16949,10 +16771,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "foo bar",
"isReference": true
@@ -16982,10 +16802,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "bar",
"isReference": true
@@ -17029,10 +16847,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "bar",
"isReference": true
@@ -17100,10 +16916,8 @@
{
"type": "link",
"attrs": {
- "href": "/url1",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url1",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -17230,10 +17044,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "ref\\[",
"isReference": true
@@ -17287,10 +17099,8 @@
{
"type": "link",
"attrs": {
- "href": "/uri",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uri",
"title": null,
"canonicalSrc": "bar\\\\",
"isReference": true
@@ -17364,10 +17174,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "foo",
"isReference": true
@@ -17407,10 +17215,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "*foo* bar",
"isReference": true
@@ -17428,10 +17234,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "*foo* bar",
"isReference": true
@@ -17471,10 +17275,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "foo",
"isReference": true
@@ -17514,10 +17316,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "foo",
"isReference": true
@@ -17561,10 +17361,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "foo",
"isReference": true
@@ -17604,10 +17402,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "*foo* bar",
"isReference": true
@@ -17625,10 +17421,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "*foo* bar",
"isReference": true
@@ -17672,10 +17466,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "*foo* bar",
"isReference": true
@@ -17693,10 +17485,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "*foo* bar",
"isReference": true
@@ -17744,10 +17534,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -17787,10 +17575,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "foo",
"isReference": true
@@ -17830,10 +17616,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -17924,10 +17708,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "foo*",
"isReference": true
@@ -17953,10 +17735,8 @@
{
"type": "link",
"attrs": {
- "href": "/url2",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url2",
"title": null,
"canonicalSrc": "bar",
"isReference": true
@@ -18010,10 +17790,8 @@
{
"type": "link",
"attrs": {
- "href": "/url1",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url1",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -18053,10 +17831,8 @@
{
"type": "link",
"attrs": {
- "href": "",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "",
"title": null,
"canonicalSrc": "",
"isReference": false
@@ -18096,10 +17872,8 @@
{
"type": "link",
"attrs": {
- "href": "/url1",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url1",
"title": null,
"canonicalSrc": "foo",
"isReference": true
@@ -18147,10 +17921,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": null,
"canonicalSrc": "baz",
"isReference": true
@@ -18190,10 +17962,8 @@
{
"type": "link",
"attrs": {
- "href": "/url2",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url2",
"title": null,
"canonicalSrc": "bar",
"isReference": true
@@ -18208,10 +17978,8 @@
{
"type": "link",
"attrs": {
- "href": "/url1",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url1",
"title": null,
"canonicalSrc": "baz",
"isReference": true
@@ -18269,10 +18037,8 @@
{
"type": "link",
"attrs": {
- "href": "/url1",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url1",
"title": null,
"canonicalSrc": "baz",
"isReference": true
@@ -19015,10 +18781,8 @@
{
"type": "link",
"attrs": {
- "href": "/url",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/url",
"title": "title",
"canonicalSrc": "foo",
"isReference": true
@@ -19058,10 +18822,8 @@
{
"type": "link",
"attrs": {
- "href": "http://foo.bar.baz",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://foo.bar.baz",
"title": null,
"canonicalSrc": "http://foo.bar.baz",
"isReference": false
@@ -19087,10 +18849,8 @@
{
"type": "link",
"attrs": {
- "href": "http://foo.bar.baz/test?q=hello&id=22&boolean",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://foo.bar.baz/test?q=hello&id=22&boolean",
"title": null,
"canonicalSrc": "http://foo.bar.baz/test?q=hello&id=22&boolean",
"isReference": false
@@ -19116,10 +18876,8 @@
{
"type": "link",
"attrs": {
- "href": null,
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": null,
"title": null,
"canonicalSrc": null,
"isReference": false
@@ -19145,10 +18903,8 @@
{
"type": "link",
"attrs": {
- "href": "MAILTO:FOO@BAR.BAZ",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "MAILTO:FOO@BAR.BAZ",
"title": null,
"canonicalSrc": "MAILTO:FOO@BAR.BAZ",
"isReference": false
@@ -19174,10 +18930,8 @@
{
"type": "link",
"attrs": {
- "href": null,
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": null,
"title": null,
"canonicalSrc": null,
"isReference": false
@@ -19203,10 +18957,8 @@
{
"type": "link",
"attrs": {
- "href": null,
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": null,
"title": null,
"canonicalSrc": null,
"isReference": false
@@ -19232,10 +18984,8 @@
{
"type": "link",
"attrs": {
- "href": "http://../",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://../",
"title": null,
"canonicalSrc": "http://../",
"isReference": false
@@ -19261,10 +19011,8 @@
{
"type": "link",
"attrs": {
- "href": null,
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": null,
"title": null,
"canonicalSrc": null,
"isReference": false
@@ -19294,10 +19042,8 @@
{
"type": "link",
"attrs": {
- "href": "http://foo.bar/baz",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://foo.bar/baz",
"title": null,
"canonicalSrc": "http://foo.bar/baz",
"isReference": false
@@ -19327,10 +19073,8 @@
{
"type": "link",
"attrs": {
- "href": "http://example.com/%5C%5B%5C",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://example.com/%5C%5B%5C",
"title": null,
"canonicalSrc": "http://example.com/%5C%5B%5C",
"isReference": false
@@ -19356,10 +19100,8 @@
{
"type": "link",
"attrs": {
- "href": "mailto:foo@bar.example.com",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "mailto:foo@bar.example.com",
"title": null,
"canonicalSrc": "mailto:foo@bar.example.com",
"isReference": false
@@ -19385,10 +19127,8 @@
{
"type": "link",
"attrs": {
- "href": "mailto:foo+special@Bar.baz-bar0.com",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "mailto:foo+special@Bar.baz-bar0.com",
"title": null,
"canonicalSrc": "mailto:foo+special@Bar.baz-bar0.com",
"isReference": false
@@ -19418,10 +19158,8 @@
{
"type": "link",
"attrs": {
- "href": "mailto:foo+@bar.example.com",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "mailto:foo+@bar.example.com",
"title": null,
"canonicalSrc": "mailto:foo+@bar.example.com",
"isReference": false
@@ -19470,10 +19208,8 @@
{
"type": "link",
"attrs": {
- "href": "http://foo.bar",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://foo.bar",
"title": null,
"canonicalSrc": "http://foo.bar",
"isReference": false
@@ -19533,10 +19269,8 @@
{
"type": "link",
"attrs": {
- "href": "http://example.com",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://example.com",
"title": null,
"canonicalSrc": "http://example.com",
"isReference": false
@@ -19562,10 +19296,8 @@
{
"type": "link",
"attrs": {
- "href": "mailto:foo@bar.example.com",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "mailto:foo@bar.example.com",
"title": null,
"canonicalSrc": "mailto:foo@bar.example.com",
"isReference": false
@@ -19591,10 +19323,8 @@
{
"type": "link",
"attrs": {
- "href": "http://www.commonmark.org",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://www.commonmark.org",
"title": null,
"canonicalSrc": "http://www.commonmark.org",
"isReference": false
@@ -19624,10 +19354,8 @@
{
"type": "link",
"attrs": {
- "href": "http://www.commonmark.org/help",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://www.commonmark.org/help",
"title": null,
"canonicalSrc": "http://www.commonmark.org/help",
"isReference": false
@@ -19661,10 +19389,8 @@
{
"type": "link",
"attrs": {
- "href": "http://www.commonmark.org",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://www.commonmark.org",
"title": null,
"canonicalSrc": "http://www.commonmark.org",
"isReference": false
@@ -19692,10 +19418,8 @@
{
"type": "link",
"attrs": {
- "href": "http://www.commonmark.org/a.b",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://www.commonmark.org/a.b",
"title": null,
"canonicalSrc": "http://www.commonmark.org/a.b",
"isReference": false
@@ -19725,10 +19449,8 @@
{
"type": "link",
"attrs": {
- "href": "http://www.google.com/search?q=Markup+(business)",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://www.google.com/search?q=Markup+(business)",
"title": null,
"canonicalSrc": "http://www.google.com/search?q=Markup+(business)",
"isReference": false
@@ -19748,10 +19470,8 @@
{
"type": "link",
"attrs": {
- "href": "http://www.google.com/search?q=Markup+(business)",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://www.google.com/search?q=Markup+(business)",
"title": null,
"canonicalSrc": "http://www.google.com/search?q=Markup+(business)",
"isReference": false
@@ -19779,10 +19499,8 @@
{
"type": "link",
"attrs": {
- "href": "http://www.google.com/search?q=Markup+(business)",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://www.google.com/search?q=Markup+(business)",
"title": null,
"canonicalSrc": "http://www.google.com/search?q=Markup+(business)",
"isReference": false
@@ -19810,10 +19528,8 @@
{
"type": "link",
"attrs": {
- "href": "http://www.google.com/search?q=Markup+(business)",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://www.google.com/search?q=Markup+(business)",
"title": null,
"canonicalSrc": "http://www.google.com/search?q=Markup+(business)",
"isReference": false
@@ -19839,10 +19555,8 @@
{
"type": "link",
"attrs": {
- "href": "http://www.google.com/search?q=(business))+ok",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://www.google.com/search?q=(business))+ok",
"title": null,
"canonicalSrc": "http://www.google.com/search?q=(business))+ok",
"isReference": false
@@ -19868,10 +19582,8 @@
{
"type": "link",
"attrs": {
- "href": "http://www.google.com/search?q=commonmark&hl=en",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://www.google.com/search?q=commonmark&hl=en",
"title": null,
"canonicalSrc": "http://www.google.com/search?q=commonmark&hl=en",
"isReference": false
@@ -19891,10 +19603,8 @@
{
"type": "link",
"attrs": {
- "href": "http://www.google.com/search?q=commonmark",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://www.google.com/search?q=commonmark",
"title": null,
"canonicalSrc": "http://www.google.com/search?q=commonmark",
"isReference": false
@@ -19924,10 +19634,8 @@
{
"type": "link",
"attrs": {
- "href": "http://www.commonmark.org/he",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://www.commonmark.org/he",
"title": null,
"canonicalSrc": "http://www.commonmark.org/he",
"isReference": false
@@ -19957,10 +19665,8 @@
{
"type": "link",
"attrs": {
- "href": "http://commonmark.org",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "http://commonmark.org",
"title": null,
"canonicalSrc": "http://commonmark.org",
"isReference": false
@@ -19984,10 +19690,8 @@
{
"type": "link",
"attrs": {
- "href": "https://encrypted.google.com/search?q=Markup+(business)",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "https://encrypted.google.com/search?q=Markup+(business)",
"title": null,
"canonicalSrc": "https://encrypted.google.com/search?q=Markup+(business)",
"isReference": false
@@ -20026,10 +19730,8 @@
{
"type": "link",
"attrs": {
- "href": "mailto:foo@bar.baz",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "mailto:foo@bar.baz",
"title": null,
"canonicalSrc": "mailto:foo@bar.baz",
"isReference": false
@@ -20059,10 +19761,8 @@
{
"type": "link",
"attrs": {
- "href": "mailto:hello+xyz@mail.example",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "mailto:hello+xyz@mail.example",
"title": null,
"canonicalSrc": "mailto:hello+xyz@mail.example",
"isReference": false
@@ -20092,10 +19792,8 @@
{
"type": "link",
"attrs": {
- "href": "mailto:a.b-c_d@a.b",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "mailto:a.b-c_d@a.b",
"title": null,
"canonicalSrc": "mailto:a.b-c_d@a.b",
"isReference": false
@@ -20115,10 +19813,8 @@
{
"type": "link",
"attrs": {
- "href": "mailto:a.b-c_d@a.b",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "mailto:a.b-c_d@a.b",
"title": null,
"canonicalSrc": "mailto:a.b-c_d@a.b",
"isReference": false
@@ -21347,10 +21043,8 @@
{
"type": "link",
"attrs": {
- "href": "/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.zip",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.zip",
"title": null,
"canonicalSrc": "/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.zip",
"isReference": false
@@ -21376,10 +21070,8 @@
{
"type": "link",
"attrs": {
- "href": "/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.zip",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.zip",
"title": null,
"canonicalSrc": "/uploads/aa45a38ec2cfe97433281b10bbff042c/test-file.zip",
"isReference": false
@@ -21433,10 +21125,8 @@
{
"type": "link",
"attrs": {
- "href": "test-file.zip",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "test-file.zip",
"title": null,
"canonicalSrc": "test-file.zip",
"isReference": false
@@ -23118,10 +22808,8 @@
{
"type": "link",
"attrs": {
- "href": "https://gitlab.com",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "https://gitlab.com",
"title": null,
"canonicalSrc": "https://gitlab.com",
"isReference": false
diff --git a/lib/api/internal/error_tracking.rb b/lib/api/internal/error_tracking.rb
index 1680ac8afb5..e5047ba3e54 100644
--- a/lib/api/internal/error_tracking.rb
+++ b/lib/api/internal/error_tracking.rb
@@ -43,7 +43,7 @@ module API
project = Project.find(project_id)
enabled = error_tracking_enabled? &&
- Feature.enabled?(:use_click_house_database_for_error_tracking, project) &&
+ Feature.enabled?(:gitlab_error_tracking, project) &&
::ErrorTracking::ClientKey.enabled_key_for(project_id, public_key).exists?
status 200
diff --git a/lib/gitlab/error_tracking/error_repository.rb b/lib/gitlab/error_tracking/error_repository.rb
index fd2467add20..3871305c9c5 100644
--- a/lib/gitlab/error_tracking/error_repository.rb
+++ b/lib/gitlab/error_tracking/error_repository.rb
@@ -16,7 +16,7 @@ module Gitlab
# @return [self]
def self.build(project)
strategy =
- if Feature.enabled?(:use_click_house_database_for_error_tracking, project)
+ if Feature.enabled?(:gitlab_error_tracking, project)
OpenApiStrategy.new(project)
else
ActiveRecordStrategy.new(project)
diff --git a/lib/gitlab/import_export/legacy_relation_tree_saver.rb b/lib/gitlab/import_export/legacy_relation_tree_saver.rb
deleted file mode 100644
index cf75a2c7fa8..00000000000
--- a/lib/gitlab/import_export/legacy_relation_tree_saver.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
- module ImportExport
- class LegacyRelationTreeSaver
- include Gitlab::ImportExport::CommandLineUtil
-
- def serialize(exportable, relations_tree)
- Gitlab::ImportExport::FastHashSerializer
- .new(exportable, relations_tree)
- .execute
- end
-
- def save(tree, dir_path, filename)
- mkdir_p(dir_path)
-
- tree_json = ::JSON.generate(tree)
-
- File.write(File.join(dir_path, filename), tree_json)
- end
- end
- end
-end
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 620fc5f3dff..b39c4d93383 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -11202,7 +11202,10 @@ msgstr ""
msgid "Command line instructions"
msgstr ""
-msgid "CommandPalette|Commands"
+msgid "CommandPalette|Global Commands"
+msgstr ""
+
+msgid "CommandPalette|Pages"
msgstr ""
msgid "CommandPalette|Type %{commandHandle} for command, %{userHandle} for user or perform generic search..."
@@ -12935,9 +12938,6 @@ msgstr ""
msgid "Create a new project"
msgstr ""
-msgid "Create a new project/repository"
-msgstr ""
-
msgid "Create a new repository"
msgstr ""
@@ -28384,7 +28384,7 @@ msgstr ""
msgid "Merge request title"
msgstr ""
-msgid "Merge request was scheduled to merge after pipeline succeeds"
+msgid "Merge request was set to auto-merge"
msgstr ""
msgid "Merge requests"
@@ -46391,6 +46391,9 @@ msgstr ""
msgid "This %{issuable} is locked. Only %{strong_open}project members%{strong_close} can comment."
msgstr ""
+msgid "This %{issuable} is locked. Only project members can comment."
+msgstr ""
+
msgid "This %{noteableTypeText} is %{confidentialLinkStart}confidential%{confidentialLinkEnd} and %{lockedLinkStart}locked%{lockedLinkEnd}."
msgstr ""
@@ -46721,6 +46724,9 @@ msgstr ""
msgid "This issue is in a child epic of the filtered epic"
msgstr ""
+msgid "This issue is locked. Only project members can comment."
+msgstr ""
+
msgid "This job could not start because it could not retrieve the needed artifacts%{punctuation}%{invalid_dependencies}"
msgstr ""
@@ -55274,7 +55280,7 @@ msgstr ""
msgid "vulnerability|dismissed"
msgstr ""
-msgid "was scheduled to merge after pipeline succeeds by"
+msgid "was set to auto-merge by"
msgstr ""
msgid "weekly"
diff --git a/package.json b/package.json
index 71c2c49000c..f02d0a1f864 100644
--- a/package.json
+++ b/package.json
@@ -169,6 +169,7 @@
"monaco-editor-webpack-plugin": "^6.0.0",
"monaco-yaml": "4.0.0",
"mousetrap": "1.6.5",
+ "orderedmap": "^2.1.1",
"papaparse": "^5.3.1",
"patch-package": "^6.4.7",
"pdfjs-dist": "^2.16.105",
diff --git a/spec/factories/deployment_clusters.rb b/spec/factories/deployment_clusters.rb
index 1bdfff79aaf..cfc40b85d26 100644
--- a/spec/factories/deployment_clusters.rb
+++ b/spec/factories/deployment_clusters.rb
@@ -6,4 +6,12 @@ FactoryBot.define do
deployment
kubernetes_namespace { 'the-namespace' }
end
+
+ trait :provided_by_gcp do
+ cluster factory: %i[cluster provided_by_gcp]
+ end
+
+ trait :not_managed do
+ cluster factory: %i[cluster not_managed]
+ end
end
diff --git a/spec/factories/deployments.rb b/spec/factories/deployments.rb
index 204b917fa4a..cbecaadff77 100644
--- a/spec/factories/deployments.rb
+++ b/spec/factories/deployments.rb
@@ -29,7 +29,11 @@ FactoryBot.define do
end
trait :on_cluster do
- cluster factory: %i(cluster provided_by_gcp)
+ deployment_cluster factory: %i(deployment_cluster provided_by_gcp)
+ end
+
+ trait :on_cluster_not_managed do
+ deployment_cluster factory: %i(deployment_cluster not_managed)
end
trait :running do
diff --git a/spec/features/projects/jobs_spec.rb b/spec/features/projects/jobs_spec.rb
index a16db71354c..fcd07d33535 100644
--- a/spec/features/projects/jobs_spec.rb
+++ b/spec/features/projects/jobs_spec.rb
@@ -548,24 +548,24 @@ RSpec.describe 'Jobs', :clean_gitlab_redis_shared_state, feature_category: :grou
end
context 'when there is a cluster used for the deployment' do
- let(:cluster) { create(:cluster, name: 'the-cluster') }
- let(:deployment) { create(:deployment, :success, cluster: cluster, environment: environment, project: environment.project) }
+ let(:deployment) { create(:deployment, :success, :on_cluster, environment: environment) }
let(:user_access_level) { :maintainer }
+ let(:cluster) { deployment.cluster }
it 'shows a link to the cluster' do
- expect(page).to have_link 'the-cluster'
+ expect(page).to have_link cluster.name
end
it 'shows the name of the cluster' do
- expect(page).to have_content 'using cluster the-cluster'
+ expect(page).to have_content "using cluster #{cluster.name}"
end
context 'when the user is not able to view the cluster' do
let(:user_access_level) { :reporter }
it 'includes only the name of the cluster without a link' do
- expect(page).to have_content 'using cluster the-cluster'
- expect(page).not_to have_link 'the-cluster'
+ expect(page).to have_content "using cluster #{cluster.name}"
+ expect(page).not_to have_link cluster.name
end
end
end
diff --git a/spec/finders/clusters/knative_services_finder_spec.rb b/spec/finders/clusters/knative_services_finder_spec.rb
index 6f5a4db10e8..7a60364c873 100644
--- a/spec/finders/clusters/knative_services_finder_spec.rb
+++ b/spec/finders/clusters/knative_services_finder_spec.rb
@@ -7,10 +7,10 @@ RSpec.describe Clusters::KnativeServicesFinder do
include ReactiveCachingHelpers
let(:project) { create(:project, :repository) }
- let(:cluster) { create(:cluster, :project, :provided_by_gcp, projects: [project]) }
+ let(:cluster) { deployment.cluster }
let(:service) { environment.deployment_platform }
let(:environment) { create(:environment, project: project) }
- let!(:deployment) { create(:deployment, :success, environment: environment, cluster: cluster) }
+ let!(:deployment) { create(:deployment, :success, :on_cluster, environment: environment) }
let(:namespace) do
create(:cluster_kubernetes_namespace,
cluster: cluster,
diff --git a/spec/fixtures/lib/gitlab/import_export/complex/project.json b/spec/fixtures/lib/gitlab/import_export/complex/project.json
deleted file mode 100644
index 8a307af1ca7..00000000000
--- a/spec/fixtures/lib/gitlab/import_export/complex/project.json
+++ /dev/null
@@ -1,8352 +0,0 @@
-{
- "description": "Nisi et repellendus ut enim quo accusamus vel magnam.",
- "import_type": "gitlab_project",
- "creator_id": 123,
- "visibility_level": 10,
- "archived": false,
- "ci_config_path": "config/path",
- "allow_merge_on_skipped_pipeline": true,
- "squash_option": 3,
- "labels": [
- {
- "id": 2,
- "title": "test2",
- "color": "#428bca",
- "project_id": 8,
- "created_at": "2016-07-22T08:55:44.161Z",
- "updated_at": "2016-07-22T08:55:44.161Z",
- "template": false,
- "description": "",
- "type": "ProjectLabel",
- "priorities": [
-
- ]
- },
- {
- "id": 3,
- "title": "test3",
- "color": "#428bca",
- "group_id": 8,
- "created_at": "2016-07-22T08:55:44.161Z",
- "updated_at": "2016-07-22T08:55:44.161Z",
- "template": false,
- "description": "",
- "project_id": null,
- "type": "GroupLabel",
- "priorities": [
- {
- "id": 1,
- "project_id": 5,
- "label_id": 1,
- "priority": 1,
- "created_at": "2016-10-18T09:35:43.338Z",
- "updated_at": "2016-10-18T09:35:43.338Z"
- }
- ]
- }
- ],
- "design_management_repository": {
- "id": 500,
- "project_id": 30,
- "created_at": "2019-08-07T03:57:55.007Z",
- "updated_at": "2019-08-07T03:57:55.007Z"
- },
- "issues": [
- {
- "id": 40,
- "title": "Voluptatem",
- "author_id": 22,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:08.340Z",
- "updated_at": "2016-06-14T15:02:47.967Z",
- "position": 0,
- "branch_name": null,
- "description": "Aliquam enim illo et possimus.",
- "state": "opened",
- "iid": 10,
- "updated_by_id": null,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "test_ee_field": "test",
- "issue_assignees": [
- {
- "user_id": 1,
- "issue_id": 40
- },
- {
- "user_id": 15,
- "issue_id": 40
- },
- {
- "user_id": 16,
- "issue_id": 40
- },
- {
- "user_id": 16,
- "issue_id": 40
- },
- {
- "user_id": 6,
- "issue_id": 40
- }
- ],
- "award_emoji": [
- {
- "id": 1,
- "name": "musical_keyboard",
- "user_id": 1,
- "awardable_type": "Issue",
- "awardable_id": 40,
- "created_at": "2020-01-07T11:55:22.234Z",
- "updated_at": "2020-01-07T11:55:22.234Z"
- }
- ],
- "zoom_meetings": [
- {
- "id": 1,
- "project_id": 5,
- "issue_id": 40,
- "url": "https://zoom.us/j/123456789",
- "issue_status": 1,
- "created_at": "2016-06-14T15:02:04.418Z",
- "updated_at": "2016-06-14T15:02:04.418Z"
- }
- ],
- "milestone": {
- "id": 1,
- "title": "test milestone",
- "project_id": 8,
- "description": "test milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "events": [
- {
- "id": 487,
- "target_type": "Milestone",
- "target_id": 1,
- "project_id": 46,
- "created_at": "2016-06-14T15:02:04.418Z",
- "updated_at": "2016-06-14T15:02:04.418Z",
- "action": 1,
- "author_id": 18
- }
- ]
- },
- "label_links": [
- {
- "id": 2,
- "label_id": 2,
- "target_id": 40,
- "target_type": "Issue",
- "created_at": "2016-07-22T08:57:02.840Z",
- "updated_at": "2016-07-22T08:57:02.840Z",
- "label": {
- "id": 2,
- "title": "test2",
- "color": "#428bca",
- "project_id": 8,
- "created_at": "2016-07-22T08:55:44.161Z",
- "updated_at": "2016-07-22T08:55:44.161Z",
- "template": false,
- "description": "",
- "type": "ProjectLabel"
- }
- },
- {
- "id": 3,
- "label_id": 3,
- "target_id": 40,
- "target_type": "Issue",
- "created_at": "2016-07-22T08:57:02.841Z",
- "updated_at": "2016-07-22T08:57:02.841Z",
- "label": {
- "id": 3,
- "title": "test3",
- "color": "#428bca",
- "group_id": 8,
- "created_at": "2016-07-22T08:55:44.161Z",
- "updated_at": "2016-07-22T08:55:44.161Z",
- "template": false,
- "description": "",
- "project_id": null,
- "type": "GroupLabel",
- "priorities": [
- {
- "id": 1,
- "project_id": 5,
- "label_id": 1,
- "priority": 1,
- "created_at": "2016-10-18T09:35:43.338Z",
- "updated_at": "2016-10-18T09:35:43.338Z"
- }
- ]
- }
- }
- ],
- "notes": [
- {
- "id": 351,
- "note": "Quo reprehenderit aliquam qui dicta impedit cupiditate eligendi.",
- "note_html": "<p>something else entirely</p>",
- "cached_markdown_version": 917504,
- "noteable_type": "Issue",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:47.770Z",
- "updated_at": "2016-06-14T15:02:47.770Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 40,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ],
- "award_emoji": [
- {
- "id": 1,
- "name": "clapper",
- "user_id": 1,
- "awardable_type": "Note",
- "awardable_id": 351,
- "created_at": "2020-01-07T11:55:22.234Z",
- "updated_at": "2020-01-07T11:55:22.234Z"
- }
- ]
- },
- {
- "id": 352,
- "note": "Est reprehenderit quas aut aspernatur autem recusandae voluptatem.",
- "noteable_type": "Issue",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:47.795Z",
- "updated_at": "2016-06-14T15:02:47.795Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 40,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 353,
- "note": "Perspiciatis suscipit voluptates in eius nihil.",
- "noteable_type": "Issue",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:47.823Z",
- "updated_at": "2016-06-14T15:02:47.823Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 40,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 354,
- "note": "Aut vel voluptas corrupti nisi provident laboriosam magnam aut.",
- "noteable_type": "Issue",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:47.850Z",
- "updated_at": "2016-06-14T15:02:47.850Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 40,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 355,
- "note": "Officia dolore consequatur in saepe cum magni.",
- "noteable_type": "Issue",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:47.876Z",
- "updated_at": "2016-06-14T15:02:47.876Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 40,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 356,
- "note": "Cum ipsum rem voluptas eaque et ea.",
- "noteable_type": "Issue",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:47.908Z",
- "updated_at": "2016-06-14T15:02:47.908Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 40,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 357,
- "note": "Recusandae excepturi asperiores suscipit autem nostrum.",
- "noteable_type": "Issue",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:47.937Z",
- "updated_at": "2016-06-14T15:02:47.937Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 40,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 358,
- "note": "Et hic est id similique et non nesciunt voluptate.",
- "noteable_type": "Issue",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:47.965Z",
- "updated_at": "2016-06-14T15:02:47.965Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 40,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ],
- "resource_label_events": [
- {
- "id": 244,
- "action": "remove",
- "issue_id": 40,
- "merge_request_id": null,
- "label_id": 2,
- "user_id": 1,
- "created_at": "2018-08-28T08:24:00.494Z",
- "label": {
- "id": 2,
- "title": "test2",
- "color": "#428bca",
- "project_id": 8,
- "created_at": "2016-07-22T08:55:44.161Z",
- "updated_at": "2016-07-22T08:55:44.161Z",
- "template": false,
- "description": "",
- "type": "ProjectLabel"
- }
- }
- ],
- "sentry_issue": {
- "id": 1,
- "issue_id": 40,
- "sentry_issue_identifier": 1234567891
- },
- "resource_milestone_events": [
- {
- "user_id": 1,
- "action": "add",
- "state": "opened",
- "created_at": "2022-08-17T13:06:53.547Z",
- "milestone": {
- "title": "v4.0",
- "description": "Totam quam laborum id magnam natus eaque aspernatur.",
- "created_at": "2016-06-14T15:02:04.590Z",
- "updated_at": "2016-06-14T15:02:04.590Z",
- "state": "active",
- "iid": 5
- }
- }
- ],
- "resource_state_events": [
- {
- "user_id": 1,
- "created_at": "2022-08-17T13:08:16.838Z",
- "state": "closed",
- "source_commit": null,
- "close_after_error_tracking_resolve": false,
- "close_auto_resolve_prometheus_alert": false
- },
- {
- "user_id": 1,
- "created_at": "2022-08-17T13:08:17.702Z",
- "state": "reopened",
- "source_commit": null,
- "close_after_error_tracking_resolve": false,
- "close_auto_resolve_prometheus_alert": false
- }
- ]
- },
- {
- "id": 39,
- "title": "Issue without assignees",
- "author_id": 22,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:08.233Z",
- "updated_at": "2016-06-14T15:02:48.194Z",
- "position": 0,
- "branch_name": null,
- "description": "Voluptate vel reprehenderit facilis omnis voluptas magnam tenetur.",
- "state": "opened",
- "iid": 9,
- "updated_by_id": null,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "issue_assignees": [
-
- ],
- "milestone": {
- "id": 1,
- "title": "test milestone",
- "project_id": 8,
- "description": "test milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "events": [
- {
- "id": 487,
- "target_type": "Milestone",
- "target_id": 1,
- "project_id": 46,
- "created_at": "2016-06-14T15:02:04.418Z",
- "updated_at": "2016-06-14T15:02:04.418Z",
- "action": 1,
- "author_id": 18
- }
- ]
- },
- "notes": [
- {
- "id": 359,
- "note": "Quo eius velit quia et id quam.",
- "noteable_type": "Issue",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:48.009Z",
- "updated_at": "2016-06-14T15:02:48.009Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 39,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 360,
- "note": "Nulla commodi ratione cumque id autem.",
- "noteable_type": "Issue",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:48.032Z",
- "updated_at": "2016-06-14T15:02:48.032Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 39,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 361,
- "note": "Illum non ea sed dolores corrupti.",
- "noteable_type": "Issue",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:48.056Z",
- "updated_at": "2016-06-14T15:02:48.056Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 39,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 362,
- "note": "Facere dolores ipsum dolorum maiores omnis occaecati ab.",
- "noteable_type": "Issue",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:48.082Z",
- "updated_at": "2016-06-14T15:02:48.082Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 39,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 363,
- "note": "Quod laudantium similique sint aut est ducimus.",
- "noteable_type": "Issue",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:48.113Z",
- "updated_at": "2016-06-14T15:02:48.113Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 39,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 364,
- "note": "Aut omnis eos esse incidunt vero reiciendis.",
- "noteable_type": "Issue",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:48.139Z",
- "updated_at": "2016-06-14T15:02:48.139Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 39,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 365,
- "note": "Beatae dolore et doloremque asperiores sunt.",
- "noteable_type": "Issue",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:48.162Z",
- "updated_at": "2016-06-14T15:02:48.162Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 39,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 366,
- "note": "Doloribus ipsam ex delectus rerum libero recusandae modi repellendus.",
- "noteable_type": "Issue",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:48.192Z",
- "updated_at": "2016-06-14T15:02:48.192Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 39,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ]
- },
- {
- "id": 38,
- "title": "Quasi adipisci non cupiditate dolorem quo qui earum sed.",
- "author_id": 6,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:08.154Z",
- "updated_at": "2016-06-14T15:02:48.614Z",
- "position": 0,
- "branch_name": null,
- "description": "Ea recusandae neque autem tempora.",
- "state": "closed",
- "iid": 8,
- "updated_by_id": null,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "label_links": [
- {
- "id": 99,
- "label_id": 2,
- "target_id": 38,
- "target_type": "Issue",
- "created_at": "2016-07-22T08:57:02.840Z",
- "updated_at": "2016-07-22T08:57:02.840Z",
- "label": {
- "id": 2,
- "title": "test2",
- "color": "#428bca",
- "project_id": 8,
- "created_at": "2016-07-22T08:55:44.161Z",
- "updated_at": "2016-07-22T08:55:44.161Z",
- "template": false,
- "description": "",
- "type": "ProjectLabel"
- }
- }
- ],
- "notes": [
- {
- "id": 367,
- "note": "Accusantium fugiat et eaque quisquam esse corporis.",
- "noteable_type": "Issue",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:48.235Z",
- "updated_at": "2016-06-14T15:02:48.235Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 38,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 368,
- "note": "Ea labore eum nam qui laboriosam.",
- "noteable_type": "Issue",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:48.261Z",
- "updated_at": "2016-06-14T15:02:48.261Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 38,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 369,
- "note": "Accusantium quis sed molestiae et.",
- "noteable_type": "Issue",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:48.294Z",
- "updated_at": "2016-06-14T15:02:48.294Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 38,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 370,
- "note": "Corporis numquam a voluptatem pariatur asperiores dolorem delectus autem.",
- "noteable_type": "Issue",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:48.523Z",
- "updated_at": "2016-06-14T15:02:48.523Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 38,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 371,
- "note": "Ea accusantium maxime voluptas rerum.",
- "noteable_type": "Issue",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:48.546Z",
- "updated_at": "2016-06-14T15:02:48.546Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 38,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 372,
- "note": "Pariatur iusto et et excepturi similique ipsam eum.",
- "noteable_type": "Issue",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:48.569Z",
- "updated_at": "2016-06-14T15:02:48.569Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 38,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 373,
- "note": "Aliquam et culpa officia iste eius.",
- "noteable_type": "Issue",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:48.591Z",
- "updated_at": "2016-06-14T15:02:48.591Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 38,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 374,
- "note": "Ab id velit id unde laborum.",
- "noteable_type": "Issue",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:48.613Z",
- "updated_at": "2016-06-14T15:02:48.613Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 38,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ]
- },
- {
- "id": 37,
- "title": "Cupiditate quo aut ducimus minima molestiae vero numquam possimus.",
- "author_id": 20,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:08.051Z",
- "updated_at": "2016-06-14T15:02:48.854Z",
- "position": 0,
- "branch_name": null,
- "description": "Maiores architecto quos in dolorem.",
- "state": "opened",
- "iid": 7,
- "updated_by_id": null,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "notes": [
- {
- "id": 375,
- "note": "Quasi fugit qui sed eligendi aut quia.",
- "noteable_type": "Issue",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:48.647Z",
- "updated_at": "2016-06-14T15:02:48.647Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 37,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 376,
- "note": "Esse nesciunt voluptatem ex vero est consequatur.",
- "noteable_type": "Issue",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:48.674Z",
- "updated_at": "2016-06-14T15:02:48.674Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 37,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 377,
- "note": "Similique qui quas non aut et velit sequi in.",
- "noteable_type": "Issue",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:48.696Z",
- "updated_at": "2016-06-14T15:02:48.696Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 37,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 378,
- "note": "Eveniet ut cupiditate repellendus numquam in esse eius.",
- "noteable_type": "Issue",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:48.720Z",
- "updated_at": "2016-06-14T15:02:48.720Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 37,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 379,
- "note": "Velit est dolorem adipisci rerum sed iure.",
- "noteable_type": "Issue",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:48.755Z",
- "updated_at": "2016-06-14T15:02:48.755Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 37,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 380,
- "note": "Voluptatem ullam ab ut illo ut quo.",
- "noteable_type": "Issue",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:48.793Z",
- "updated_at": "2016-06-14T15:02:48.793Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 37,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 381,
- "note": "Voluptatem impedit beatae quasi ipsa earum consectetur.",
- "noteable_type": "Issue",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:48.823Z",
- "updated_at": "2016-06-14T15:02:48.823Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 37,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 382,
- "note": "Nihil officiis eaque incidunt sunt voluptatum excepturi.",
- "noteable_type": "Issue",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:48.852Z",
- "updated_at": "2016-06-14T15:02:48.852Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 37,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ]
- },
- {
- "id": 36,
- "title": "Necessitatibus dolor est enim quia rem suscipit quidem voluptas ullam.",
- "author_id": 16,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:07.958Z",
- "updated_at": "2016-06-14T15:02:49.044Z",
- "position": 0,
- "branch_name": null,
- "description": "Ut aut ut et tenetur velit aut id modi.",
- "state": "opened",
- "iid": 6,
- "updated_by_id": null,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "notes": [
- {
- "id": 383,
- "note": "Excepturi deleniti sunt rerum nesciunt vero fugiat possimus.",
- "noteable_type": "Issue",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:48.885Z",
- "updated_at": "2016-06-14T15:02:48.885Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 36,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 384,
- "note": "Et est nemo sed nam sed.",
- "noteable_type": "Issue",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:48.910Z",
- "updated_at": "2016-06-14T15:02:48.910Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 36,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 385,
- "note": "Animi mollitia nulla facere amet aut quaerat.",
- "noteable_type": "Issue",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:48.934Z",
- "updated_at": "2016-06-14T15:02:48.934Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 36,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 386,
- "note": "Excepturi id voluptas ut odio officiis omnis.",
- "noteable_type": "Issue",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:48.955Z",
- "updated_at": "2016-06-14T15:02:48.955Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 36,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 387,
- "note": "Molestiae labore officiis magni et eligendi quasi maxime.",
- "noteable_type": "Issue",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:48.978Z",
- "updated_at": "2016-06-14T15:02:48.978Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 36,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 388,
- "note": "Officia tenetur praesentium rem nam non.",
- "noteable_type": "Issue",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:49.001Z",
- "updated_at": "2016-06-14T15:02:49.001Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 36,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 389,
- "note": "Et et et molestiae reprehenderit.",
- "noteable_type": "Issue",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:49.022Z",
- "updated_at": "2016-06-14T15:02:49.022Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 36,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 390,
- "note": "Aperiam in consequatur est sunt cum quia.",
- "noteable_type": "Issue",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:49.043Z",
- "updated_at": "2016-06-14T15:02:49.043Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 36,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ]
- },
- {
- "id": 35,
- "title": "Repellat praesentium deserunt maxime incidunt harum porro qui.",
- "author_id": 20,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:07.832Z",
- "updated_at": "2016-06-14T15:02:49.226Z",
- "position": 0,
- "branch_name": null,
- "description": "Dicta nisi nihil non ipsa velit.",
- "state": "closed",
- "iid": 5,
- "updated_by_id": null,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "notes": [
- {
- "id": 391,
- "note": "Qui magnam et assumenda quod id dicta necessitatibus.",
- "noteable_type": "Issue",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:49.075Z",
- "updated_at": "2016-06-14T15:02:49.075Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 35,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 392,
- "note": "Consectetur deserunt possimus dolor est odio.",
- "noteable_type": "Issue",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:49.095Z",
- "updated_at": "2016-06-14T15:02:49.095Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 35,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 393,
- "note": "Labore nisi quo cumque voluptas consequatur aut qui.",
- "noteable_type": "Issue",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:49.117Z",
- "updated_at": "2016-06-14T15:02:49.117Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 35,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 394,
- "note": "Et totam facilis voluptas et enim.",
- "noteable_type": "Issue",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:49.138Z",
- "updated_at": "2016-06-14T15:02:49.138Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 35,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 395,
- "note": "Ratione sint pariatur sed omnis eligendi quo libero exercitationem.",
- "noteable_type": "Issue",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:49.160Z",
- "updated_at": "2016-06-14T15:02:49.160Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 35,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 396,
- "note": "Iure hic autem id voluptatem.",
- "noteable_type": "Issue",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:49.182Z",
- "updated_at": "2016-06-14T15:02:49.182Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 35,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 397,
- "note": "Excepturi eum laboriosam delectus repellendus odio nisi et voluptatem.",
- "noteable_type": "Issue",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:49.205Z",
- "updated_at": "2016-06-14T15:02:49.205Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 35,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 398,
- "note": "Ut quis ex soluta consequatur et blanditiis.",
- "noteable_type": "Issue",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:49.225Z",
- "updated_at": "2016-06-14T15:02:49.225Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 35,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ]
- },
- {
- "id": 34,
- "title": "Ullam expedita deserunt libero consequatur quia dolor harum perferendis facere quidem.",
- "author_id": 1,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:07.717Z",
- "updated_at": "2016-06-14T15:02:49.416Z",
- "position": 0,
- "branch_name": null,
- "description": "Ut et explicabo vel voluptatem consequuntur ut sed.",
- "state": "closed",
- "iid": 4,
- "updated_by_id": null,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "notes": [
- {
- "id": 399,
- "note": "Dolor iste tempora tenetur non vitae maiores voluptatibus.",
- "noteable_type": "Issue",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:49.256Z",
- "updated_at": "2016-06-14T15:02:49.256Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 34,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 400,
- "note": "Aut sit quidem qui adipisci maxime excepturi iusto.",
- "noteable_type": "Issue",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:49.284Z",
- "updated_at": "2016-06-14T15:02:49.284Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 34,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 401,
- "note": "Et a necessitatibus autem quidem animi sunt voluptatum rerum.",
- "noteable_type": "Issue",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:49.305Z",
- "updated_at": "2016-06-14T15:02:49.305Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 34,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 402,
- "note": "Esse laboriosam quo voluptatem quis molestiae.",
- "noteable_type": "Issue",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:49.328Z",
- "updated_at": "2016-06-14T15:02:49.328Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 34,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 403,
- "note": "Nemo magnam distinctio est ut voluptate ea.",
- "noteable_type": "Issue",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:49.350Z",
- "updated_at": "2016-06-14T15:02:49.350Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 34,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 404,
- "note": "Omnis sed rerum neque rerum quae quam nulla officiis.",
- "noteable_type": "Issue",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:49.372Z",
- "updated_at": "2016-06-14T15:02:49.372Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 34,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 405,
- "note": "Quo soluta dolorem vitae ad consequatur qui aut dicta.",
- "noteable_type": "Issue",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:49.394Z",
- "updated_at": "2016-06-14T15:02:49.394Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 34,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 406,
- "note": "Magni minus est aut aut totam ut.",
- "noteable_type": "Issue",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:49.414Z",
- "updated_at": "2016-06-14T15:02:49.414Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 34,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ]
- },
- {
- "id": 33,
- "title": "Numquam accusamus eos iste exercitationem magni non inventore.",
- "author_id": 26,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:07.611Z",
- "updated_at": "2016-06-14T15:02:49.661Z",
- "position": 0,
- "branch_name": null,
- "description": "Non asperiores velit accusantium voluptate.",
- "state": "closed",
- "iid": 3,
- "updated_by_id": null,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "notes": [
- {
- "id": 407,
- "note": "Quod ea et possimus architecto.",
- "noteable_type": "Issue",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:49.450Z",
- "updated_at": "2016-06-14T15:02:49.450Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 33,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 408,
- "note": "Reiciendis est et unde perferendis dicta ut praesentium quasi.",
- "noteable_type": "Issue",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:49.503Z",
- "updated_at": "2016-06-14T15:02:49.503Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 33,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 409,
- "note": "Magni quia odio blanditiis pariatur voluptas.",
- "noteable_type": "Issue",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:49.527Z",
- "updated_at": "2016-06-14T15:02:49.527Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 33,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 410,
- "note": "Enim quam ut et et et.",
- "noteable_type": "Issue",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:49.551Z",
- "updated_at": "2016-06-14T15:02:49.551Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 33,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 411,
- "note": "Fugit voluptatem ratione maxime expedita.",
- "noteable_type": "Issue",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:49.578Z",
- "updated_at": "2016-06-14T15:02:49.578Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 33,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 412,
- "note": "Voluptatem enim aut ipsa et et ducimus.",
- "noteable_type": "Issue",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:49.604Z",
- "updated_at": "2016-06-14T15:02:49.604Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 33,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 413,
- "note": "Quia repellat fugiat consectetur quidem.",
- "noteable_type": "Issue",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:49.631Z",
- "updated_at": "2016-06-14T15:02:49.631Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 33,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 414,
- "note": "Corporis ipsum et ea necessitatibus quod assumenda repudiandae quam.",
- "noteable_type": "Issue",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:49.659Z",
- "updated_at": "2016-06-14T15:02:49.659Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 33,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ]
- },
- {
- "id": 32,
- "title": "Necessitatibus magnam qui at velit consequatur perspiciatis.",
- "author_id": 15,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:07.431Z",
- "updated_at": "2016-06-14T15:02:49.884Z",
- "position": 0,
- "branch_name": null,
- "description": "Molestiae corporis magnam et fugit aliquid nulla quia.",
- "state": "closed",
- "iid": 2,
- "updated_by_id": null,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "notes": [
- {
- "id": 415,
- "note": "Nemo consequatur sed blanditiis qui id iure dolores.",
- "noteable_type": "Issue",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:49.694Z",
- "updated_at": "2016-06-14T15:02:49.694Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 32,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 416,
- "note": "Voluptas ab accusantium dicta in.",
- "noteable_type": "Issue",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:49.718Z",
- "updated_at": "2016-06-14T15:02:49.718Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 32,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 417,
- "note": "Esse odit qui a et eum ducimus.",
- "noteable_type": "Issue",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:49.741Z",
- "updated_at": "2016-06-14T15:02:49.741Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 32,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 418,
- "note": "Sequi dolor doloribus ratione placeat repellendus.",
- "noteable_type": "Issue",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:49.767Z",
- "updated_at": "2016-06-14T15:02:49.767Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 32,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 419,
- "note": "Quae aspernatur rem est similique.",
- "noteable_type": "Issue",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:49.796Z",
- "updated_at": "2016-06-14T15:02:49.796Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 32,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 420,
- "note": "Voluptate omnis et id rerum non nesciunt laudantium assumenda.",
- "noteable_type": "Issue",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:49.825Z",
- "updated_at": "2016-06-14T15:02:49.825Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 32,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 421,
- "note": "Quia enim ab et eligendi.",
- "noteable_type": "Issue",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:49.853Z",
- "updated_at": "2016-06-14T15:02:49.853Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 32,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 422,
- "note": "In fugiat rerum voluptas quas officia.",
- "noteable_type": "Issue",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:49.881Z",
- "updated_at": "2016-06-14T15:02:49.881Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 32,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ]
- },
- {
- "id": 31,
- "title": "issue_with_timelogs",
- "author_id": 16,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:07.280Z",
- "updated_at": "2016-06-14T15:02:50.134Z",
- "position": 0,
- "branch_name": null,
- "description": "Quod ad architecto qui est sed quia.",
- "state": "closed",
- "iid": 1,
- "updated_by_id": null,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "timelogs": [
- {
- "id": 1,
- "time_spent": 72000,
- "user_id": 1,
- "created_at": "2019-12-27T09:15:22.302Z",
- "updated_at": "2019-12-27T09:15:22.302Z",
- "spent_at": "2019-12-27T00:00:00.000Z"
- }
- ],
- "notes": [
- {
- "id": 423,
- "note": "A mollitia qui iste consequatur eaque iure omnis sunt.",
- "noteable_type": "Issue",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:49.933Z",
- "updated_at": "2016-06-14T15:02:49.933Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 31,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 424,
- "note": "Eveniet est et blanditiis sequi alias.",
- "noteable_type": "Issue",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:49.965Z",
- "updated_at": "2016-06-14T15:02:49.965Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 31,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 425,
- "note": "Commodi tempore voluptas doloremque est.",
- "noteable_type": "Issue",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:49.996Z",
- "updated_at": "2016-06-14T15:02:49.996Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 31,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 426,
- "note": "Quo libero impedit odio debitis rerum aspernatur.",
- "noteable_type": "Issue",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:50.024Z",
- "updated_at": "2016-06-14T15:02:50.024Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 31,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 427,
- "note": "Dolorem voluptatem qui labore deserunt.",
- "noteable_type": "Issue",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:50.049Z",
- "updated_at": "2016-06-14T15:02:50.049Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 31,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 428,
- "note": "Est blanditiis laboriosam enim ipsam.",
- "noteable_type": "Issue",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:50.077Z",
- "updated_at": "2016-06-14T15:02:50.077Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 31,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 429,
- "note": "Et in voluptatem animi dolorem eos.",
- "noteable_type": "Issue",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:50.107Z",
- "updated_at": "2016-06-14T15:02:50.107Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 31,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 430,
- "note": "Unde culpa voluptate qui sint quos.",
- "noteable_type": "Issue",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:50.132Z",
- "updated_at": "2016-06-14T15:02:50.132Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 31,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ]
- }
- ],
- "milestones": [
- {
- "id": 1,
- "title": "test milestone",
- "project_id": 8,
- "description": "test milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "events": [
- {
- "id": 487,
- "target_type": "Milestone",
- "target_id": 1,
- "project_id": 46,
- "created_at": "2016-06-14T15:02:04.418Z",
- "updated_at": "2016-06-14T15:02:04.418Z",
- "action": 1,
- "author_id": 18
- }
- ]
- },
- {
- "id": 20,
- "title": "v4.0",
- "project_id": 5,
- "description": "Totam quam laborum id magnam natus eaque aspernatur.",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.590Z",
- "updated_at": "2016-06-14T15:02:04.590Z",
- "state": "active",
- "iid": 5,
- "events": [
- {
- "id": 240,
- "target_type": "Milestone",
- "target_id": 20,
- "project_id": 36,
- "created_at": "2016-06-14T15:02:04.593Z",
- "updated_at": "2016-06-14T15:02:04.593Z",
- "action": 1,
- "author_id": 1
- },
- {
- "id": 60,
- "target_type": "Milestone",
- "target_id": 20,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:04.593Z",
- "updated_at": "2016-06-14T15:02:04.593Z",
- "action": 1,
- "author_id": 20
- }
- ]
- },
- {
- "id": 19,
- "title": "v3.0",
- "project_id": 5,
- "description": "Rerum at autem exercitationem ea voluptates harum quam placeat.",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.583Z",
- "updated_at": "2016-06-14T15:02:04.583Z",
- "state": "active",
- "iid": 4,
- "events": [
- {
- "id": 241,
- "target_type": "Milestone",
- "target_id": 19,
- "project_id": 36,
- "created_at": "2016-06-14T15:02:04.585Z",
- "updated_at": "2016-06-14T15:02:04.585Z",
- "action": 1,
- "author_id": 1
- },
- {
- "id": 59,
- "target_type": "Milestone",
- "target_id": 19,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:04.585Z",
- "updated_at": "2016-06-14T15:02:04.585Z",
- "action": 1,
- "author_id": 25
- }
- ]
- }
- ],
- "snippets": [
- {
- "id": 1,
- "title": "Test snippet title",
- "content": "x = 1",
- "author_id": 1,
- "project_id": 1,
- "created_at": "2019-11-05T15:06:06.579Z",
- "updated_at": "2019-11-05T15:06:06.579Z",
- "file_name": "",
- "visibility_level": 20,
- "description": "Test snippet description",
- "award_emoji": [
- {
- "id": 1,
- "name": "thumbsup",
- "user_id": 1,
- "awardable_type": "Snippet",
- "awardable_id": 1,
- "created_at": "2019-11-05T15:37:21.287Z",
- "updated_at": "2019-11-05T15:37:21.287Z"
- },
- {
- "id": 2,
- "name": "coffee",
- "user_id": 1,
- "awardable_type": "Snippet",
- "awardable_id": 1,
- "created_at": "2019-11-05T15:37:24.645Z",
- "updated_at": "2019-11-05T15:37:24.645Z"
- }
- ],
- "notes": [
- {
- "id": 872,
- "note": "This is a test note",
- "noteable_type": "Snippet",
- "author_id": 1,
- "created_at": "2019-11-05T15:37:24.645Z",
- "updated_at": "2019-11-05T15:37:24.645Z",
- "noteable_id": 1,
- "author": {
- "name": "Random name"
- },
- "events": [
-
- ],
- "award_emoji": [
- {
- "id": 12,
- "name": "thumbsup",
- "user_id": 1,
- "awardable_type": "Note",
- "awardable_id": 872,
- "created_at": "2019-11-05T15:37:21.287Z",
- "updated_at": "2019-11-05T15:37:21.287Z"
- }
- ]
- }
- ]
- }
- ],
- "releases": [
- {
- "id": 1,
- "tag": "release-1.0",
- "description": "Some release notes",
- "project_id": 5,
- "created_at": "2019-12-25T10:17:14.621Z",
- "updated_at": "2019-12-25T10:17:14.621Z",
- "author_id": null,
- "name": "release-1.0",
- "sha": "902de3a8bd5573f4a049b1457d28bc1592baaa2e",
- "released_at": "2019-12-25T10:17:14.615Z",
- "links": [
- {
- "id": 1,
- "release_id": 1,
- "url": "http://localhost/namespace6/project6/-/jobs/140463678/artifacts/download",
- "name": "release-1.0.dmg",
- "created_at": "2019-12-25T10:17:14.621Z",
- "updated_at": "2019-12-25T10:17:14.621Z"
- }
- ],
- "milestone_releases": [
- {
- "milestone_id": 1349,
- "release_id": 9172,
- "milestone": {
- "id": 1,
- "title": "test milestone",
- "project_id": 8,
- "description": "test milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1
- }
- }
- ]
- },
- {
- "id": 2,
- "tag": "release-1.1",
- "description": "Some release notes",
- "project_id": 5,
- "created_at": "2019-12-26T10:17:14.621Z",
- "updated_at": "2019-12-26T10:17:14.621Z",
- "author_id": 16,
- "name": "release-1.1",
- "sha": "902de3a8bd5573f4a049b1457d28bc1592ba6bg9",
- "released_at": "2019-12-26T10:17:14.615Z",
- "links": [
- {
- "id": 1,
- "release_id": 1,
- "url": "http://localhost/namespace6/project6/-/jobs/140463678/artifacts/download",
- "name": "release-1.1.dmg",
- "created_at": "2019-12-26T10:17:14.621Z",
- "updated_at": "2019-12-26T10:17:14.621Z"
- }
- ],
- "milestone_releases": [
- {
- "milestone_id": 1349,
- "release_id": 9172,
- "milestone": {
- "id": 1,
- "title": "test milestone",
- "project_id": 8,
- "description": "test milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1
- }
- }
- ]
- },
- {
- "id": 3,
- "tag": "release-1.2",
- "description": "Some release notes",
- "project_id": 5,
- "created_at": "2019-12-27T10:17:14.621Z",
- "updated_at": "2019-12-27T10:17:14.621Z",
- "author_id": 1,
- "name": "release-1.2",
- "sha": "903de3a8bd5573f4a049b1457d28bc1592ba6bf9",
- "released_at": "2019-12-27T10:17:14.615Z",
- "links": [
- {
- "id": 1,
- "release_id": 1,
- "url": "http://localhost/namespace6/project6/-/jobs/140463678/artifacts/download",
- "name": "release-1.2.dmg",
- "created_at": "2019-12-27T10:17:14.621Z",
- "updated_at": "2019-12-27T10:17:14.621Z"
- }
- ],
- "milestone_releases": [
- {
- "milestone_id": 1349,
- "release_id": 9172,
- "milestone": {
- "id": 1,
- "title": "test milestone",
- "project_id": 8,
- "description": "test milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1
- }
- }
- ]
- }
- ],
- "project_members": [
- {
- "id": 36,
- "access_level": 40,
- "source_id": 5,
- "source_type": "Project",
- "user_id": 16,
- "notification_level": 3,
- "created_at": "2016-06-14T15:02:03.834Z",
- "updated_at": "2016-06-14T15:02:03.834Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "user": {
- "id": 16,
- "public_email": "bernard_willms@gitlabexample.com",
- "username": "bernard_willms"
- }
- },
- {
- "id": 35,
- "access_level": 10,
- "source_id": 5,
- "source_type": "Project",
- "user_id": 6,
- "notification_level": 3,
- "created_at": "2016-06-14T15:02:03.811Z",
- "updated_at": "2016-06-14T15:02:03.811Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "user": {
- "id": 6,
- "public_email": "saul_will@gitlabexample.com",
- "username": "saul_will"
- }
- },
- {
- "id": 34,
- "access_level": 20,
- "source_id": 5,
- "source_type": "Project",
- "user_id": 15,
- "notification_level": 3,
- "created_at": "2016-06-14T15:02:03.776Z",
- "updated_at": "2016-06-14T15:02:03.776Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "user": {
- "id": 15,
- "public_email": "breanna_sanford@wolf.com",
- "username": "emmet.schamberger"
- }
- },
- {
- "id": 33,
- "access_level": 20,
- "source_id": 5,
- "source_type": "Project",
- "user_id": 26,
- "notification_level": 3,
- "created_at": "2016-06-14T15:02:03.742Z",
- "updated_at": "2016-06-14T15:02:03.742Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "user": {
- "id": 26,
- "public_email": "user4@example.com",
- "username": "user4"
- }
- }
- ],
- "merge_requests": [
- {
- "id": 27,
- "target_branch": "feature",
- "source_branch": "feature_conflict",
- "source_project_id": 2147483547,
- "author_id": 1,
- "assignee_id": null,
- "title": "MR1",
- "created_at": "2016-06-14T15:02:36.568Z",
- "updated_at": "2016-06-14T15:02:56.815Z",
- "state": "opened",
- "merge_status": "unchecked",
- "target_project_id": 5,
- "iid": 9,
- "description": null,
- "position": 0,
- "updated_by_id": null,
- "merge_error": null,
- "diff_head_sha": "HEAD",
- "source_branch_sha": "ABCD",
- "target_branch_sha": "DCBA",
- "merge_params": {
- "force_remove_source_branch": null
- },
- "merge_when_pipeline_succeeds": true,
- "merge_user_id": null,
- "merge_commit_sha": null,
- "notes": [
- {
- "id": 669,
- "note": "added 3 commits\n\n<ul><li>16ea4e20...074a2a32 - 2 commits from branch <code>master</code></li><li>ca223a02 - readme: fix typos</li></ul>\n\n[Compare with previous version](/group/project/merge_requests/1/diffs?diff_id=1189&start_sha=16ea4e207fb258fe4e9c73185a725207c9a4f3e1)",
- "noteable_type": "MergeRequest",
- "author_id": 26,
- "created_at": "2020-03-28T12:47:33.461Z",
- "updated_at": "2020-03-28T12:47:33.461Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": null,
- "change_position": null,
- "resolved_by_push": null,
- "confidential": null,
- "type": null,
- "author": {
- "name": "User 4"
- },
- "award_emoji": [
-
- ],
- "system_note_metadata": {
- "id": 4789,
- "commit_count": 3,
- "action": "commit",
- "created_at": "2020-03-28T12:47:33.461Z",
- "updated_at": "2020-03-28T12:47:33.461Z"
- },
- "events": [
-
- ],
- "suggestions": [
-
- ]
- },
- {
- "id": 670,
- "note": "unmarked as a **Work In Progress**",
- "noteable_type": "MergeRequest",
- "author_id": 26,
- "created_at": "2020-03-28T12:48:36.951Z",
- "updated_at": "2020-03-28T12:48:36.951Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": null,
- "change_position": null,
- "resolved_by_push": null,
- "confidential": null,
- "type": null,
- "author": {
- "name": "User 4"
- },
- "award_emoji": [
-
- ],
- "system_note_metadata": {
- "id": 4790,
- "commit_count": null,
- "action": "title",
- "created_at": "2020-03-28T12:48:36.951Z",
- "updated_at": "2020-03-28T12:48:36.951Z"
- },
- "events": [
-
- ],
- "suggestions": [
-
- ]
- },
- {
- "id": 671,
- "note": "Sit voluptatibus eveniet architecto quidem.",
- "note_html": "<p>something else entirely</p>",
- "cached_markdown_version": 917504,
- "noteable_type": "MergeRequest",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:56.632Z",
- "updated_at": "2016-06-14T15:02:56.632Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 27,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ],
- "award_emoji": [
- {
- "id": 1,
- "name": "tada",
- "user_id": 1,
- "awardable_type": "Note",
- "awardable_id": 1,
- "created_at": "2019-11-05T15:37:21.287Z",
- "updated_at": "2019-11-05T15:37:21.287Z"
- }
- ]
- },
- {
- "id": 672,
- "note": "Odio maxime ratione voluptatibus sed.",
- "noteable_type": "MergeRequest",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:56.656Z",
- "updated_at": "2016-06-14T15:02:56.656Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 27,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 673,
- "note": "Et deserunt et omnis nihil excepturi accusantium.",
- "noteable_type": "MergeRequest",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:56.679Z",
- "updated_at": "2016-06-14T15:02:56.679Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 27,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 674,
- "note": "Saepe asperiores exercitationem non dignissimos laborum reiciendis et ipsum.",
- "noteable_type": "MergeRequest",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:56.700Z",
- "updated_at": "2016-06-14T15:02:56.700Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 27,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ],
- "suggestions": [
- {
- "id": 1,
- "note_id": 674,
- "relative_order": 0,
- "applied": false,
- "commit_id": null,
- "from_content": "Original line\n",
- "to_content": "New line\n",
- "lines_above": 0,
- "lines_below": 0,
- "outdated": false
- }
- ]
- },
- {
- "id": 675,
- "note": "Numquam est at dolor quo et sed eligendi similique.",
- "noteable_type": "MergeRequest",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:56.720Z",
- "updated_at": "2016-06-14T15:02:56.720Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 27,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 676,
- "note": "Et perferendis aliquam sunt nisi labore delectus.",
- "noteable_type": "MergeRequest",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:56.742Z",
- "updated_at": "2016-06-14T15:02:56.742Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 27,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 677,
- "note": "Aut ex rerum et in.",
- "noteable_type": "MergeRequest",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:56.791Z",
- "updated_at": "2016-06-14T15:02:56.791Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 27,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 678,
- "note": "Dolor laborum earum ut exercitationem.",
- "noteable_type": "MergeRequest",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:56.814Z",
- "updated_at": "2016-06-14T15:02:56.814Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 27,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ],
- "resource_label_events": [
- {
- "id": 243,
- "action": "add",
- "issue_id": null,
- "merge_request_id": 27,
- "label_id": null,
- "user_id": 1,
- "created_at": "2018-08-28T08:24:00.494Z"
- }
- ],
- "merge_request_diff": {
- "id": 27,
- "state": "collected",
- "merge_request_diff_commits": [
- {
- "merge_request_diff_id": 27,
- "relative_order": 0,
- "sha": "bb5206fee213d983da88c47f9cf4cc6caf9c66dc",
- "message": "Feature conflict added\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-08-06T08:35:52.000+02:00",
- "committed_date": "2014-08-06T08:35:52.000+02:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 27,
- "relative_order": 1,
- "sha": "5937ac0a7beb003549fc5fd26fc247adbce4a52e",
- "message": "Add submodule from gitlab.com\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T10:01:38.000+01:00",
- "committed_date": "2014-02-27T10:01:38.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 27,
- "relative_order": 2,
- "sha": "570e7b2abdd848b95f2f578043fc23bd6f6fd24d",
- "message": "Change some files\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T09:57:31.000+01:00",
- "committed_date": "2014-02-27T09:57:31.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 27,
- "relative_order": 3,
- "sha": "6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9",
- "message": "More submodules\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T09:54:21.000+01:00",
- "committed_date": "2014-02-27T09:54:21.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 27,
- "relative_order": 4,
- "sha": "d14d6c0abdd253381df51a723d58691b2ee1ab08",
- "message": "Remove ds_store files\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T09:49:50.000+01:00",
- "committed_date": "2014-02-27T09:49:50.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 27,
- "relative_order": 5,
- "sha": "c1acaa58bbcbc3eafe538cb8274ba387047b69f8",
- "message": "Ignore DS files\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T09:48:32.000+01:00",
- "committed_date": "2014-02-27T09:48:32.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- }
- ],
- "merge_request_diff_files": [
- {
- "merge_request_diff_id": 27,
- "relative_order": 0,
- "utf8_diff": "Binary files a/.DS_Store and /dev/null differ\n",
- "new_path": ".DS_Store",
- "old_path": ".DS_Store",
- "a_mode": "100644",
- "b_mode": "0",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": true,
- "too_large": false
- },
- {
- "merge_request_diff_id": 27,
- "relative_order": 1,
- "utf8_diff": "--- a/.gitignore\n+++ b/.gitignore\n@@ -17,3 +17,4 @@ rerun.txt\n pickle-email-*.html\n .project\n config/initializers/secret_token.rb\n+.DS_Store\n",
- "new_path": ".gitignore",
- "old_path": ".gitignore",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 27,
- "relative_order": 2,
- "utf8_diff": "--- a/.gitmodules\n+++ b/.gitmodules\n@@ -1,3 +1,9 @@\n [submodule \"six\"]\n \tpath = six\n \turl = git://github.com/randx/six.git\n+[submodule \"gitlab-shell\"]\n+\tpath = gitlab-shell\n+\turl = https://github.com/gitlabhq/gitlab-shell.git\n+[submodule \"gitlab-grack\"]\n+\tpath = gitlab-grack\n+\turl = https://gitlab.com/gitlab-org/gitlab-grack.git\n",
- "new_path": ".gitmodules",
- "old_path": ".gitmodules",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 27,
- "relative_order": 3,
- "utf8_diff": "Binary files a/files/.DS_Store and /dev/null differ\n",
- "new_path": "files/.DS_Store",
- "old_path": "files/.DS_Store",
- "a_mode": "100644",
- "b_mode": "0",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": true,
- "too_large": false
- },
- {
- "merge_request_diff_id": 27,
- "relative_order": 4,
- "utf8_diff": "--- /dev/null\n+++ b/files/ruby/feature.rb\n@@ -0,0 +1,4 @@\n+# This file was changed in feature branch\n+# We put different code here to make merge conflict\n+class Conflict\n+end\n",
- "new_path": "files/ruby/feature.rb",
- "old_path": "files/ruby/feature.rb",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 27,
- "relative_order": 5,
- "utf8_diff": "--- a/files/ruby/popen.rb\n+++ b/files/ruby/popen.rb\n@@ -6,12 +6,18 @@ module Popen\n \n def popen(cmd, path=nil)\n unless cmd.is_a?(Array)\n- raise \"System commands must be given as an array of strings\"\n+ raise RuntimeError, \"System commands must be given as an array of strings\"\n end\n \n path ||= Dir.pwd\n- vars = { \"PWD\" => path }\n- options = { chdir: path }\n+\n+ vars = {\n+ \"PWD\" => path\n+ }\n+\n+ options = {\n+ chdir: path\n+ }\n \n unless File.directory?(path)\n FileUtils.mkdir_p(path)\n@@ -19,6 +25,7 @@ module Popen\n \n @cmd_output = \"\"\n @cmd_status = 0\n+\n Open3.popen3(vars, *cmd, options) do |stdin, stdout, stderr, wait_thr|\n @cmd_output << stdout.read\n @cmd_output << stderr.read\n",
- "new_path": "files/ruby/popen.rb",
- "old_path": "files/ruby/popen.rb",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 27,
- "relative_order": 6,
- "utf8_diff": "--- a/files/ruby/regex.rb\n+++ b/files/ruby/regex.rb\n@@ -19,14 +19,12 @@ module Gitlab\n end\n \n def archive_formats_regex\n- #|zip|tar| tar.gz | tar.bz2 |\n- /(zip|tar|tar\\.gz|tgz|gz|tar\\.bz2|tbz|tbz2|tb2|bz2)/\n+ /(zip|tar|7z|tar\\.gz|tgz|gz|tar\\.bz2|tbz|tbz2|tb2|bz2)/\n end\n \n def git_reference_regex\n # Valid git ref regex, see:\n # https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html\n-\n %r{\n (?!\n (?# doesn't begins with)\n",
- "new_path": "files/ruby/regex.rb",
- "old_path": "files/ruby/regex.rb",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 27,
- "relative_order": 7,
- "utf8_diff": "--- /dev/null\n+++ b/gitlab-grack\n@@ -0,0 +1 @@\n+Subproject commit 645f6c4c82fd3f5e06f67134450a570b795e55a6\n",
- "new_path": "gitlab-grack",
- "old_path": "gitlab-grack",
- "a_mode": "0",
- "b_mode": "160000",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 27,
- "relative_order": 8,
- "utf8_diff": "--- /dev/null\n+++ b/gitlab-shell\n@@ -0,0 +1 @@\n+Subproject commit 79bceae69cb5750d6567b223597999bfa91cb3b9\n",
- "new_path": "gitlab-shell",
- "old_path": "gitlab-shell",
- "a_mode": "0",
- "b_mode": "160000",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- }
- ],
- "merge_request_id": 27,
- "created_at": "2016-06-14T15:02:36.572Z",
- "updated_at": "2016-06-14T15:02:36.658Z",
- "base_commit_sha": "ae73cb07c9eeaf35924a10f713b364d32b2dd34f",
- "real_size": "9"
- },
- "events": [
- {
- "id": 221,
- "target_type": "MergeRequest",
- "target_id": 27,
- "project_id": 36,
- "created_at": "2016-06-14T15:02:36.703Z",
- "updated_at": "2016-06-14T15:02:36.703Z",
- "action": 1,
- "author_id": 1
- },
- {
- "id": 187,
- "target_type": "MergeRequest",
- "target_id": 27,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:36.703Z",
- "updated_at": "2016-06-14T15:02:36.703Z",
- "action": 1,
- "author_id": 1
- }
- ],
- "approvals_before_merge": 1,
- "award_emoji": [
- {
- "id": 1,
- "name": "thumbsup",
- "user_id": 1,
- "awardable_type": "MergeRequest",
- "awardable_id": 27,
- "created_at": "2020-01-07T11:21:21.235Z",
- "updated_at": "2020-01-07T11:21:21.235Z"
- },
- {
- "id": 2,
- "name": "drum",
- "user_id": 1,
- "awardable_type": "MergeRequest",
- "awardable_id": 27,
- "created_at": "2020-01-07T11:21:21.235Z",
- "updated_at": "2020-01-07T11:21:21.235Z"
- }
- ],
- "merge_request_assignees": [
- {
- "user_id": 1,
- "created_at": "2020-01-07T11:21:21.235Z",
- "state": "unreviewed"
- },
- {
- "user_id": 15,
- "created_at": "2020-01-08T11:21:21.235Z",
- "state": "reviewed"
- },
- {
- "user_id": 16,
- "created_at": "2020-01-09T11:21:21.235Z",
- "state": "reviewed"
- },
- {
- "user_id": 6,
- "created_at": "2020-01-10T11:21:21.235Z",
- "state": "unreviewed"
- }
- ],
- "merge_request_reviewers": [
- {
- "user_id": 1,
- "created_at": "2020-01-07T11:21:21.235Z",
- "state": "unreviewed"
- },
- {
- "user_id": 15,
- "created_at": "2020-01-08T11:21:21.235Z",
- "state": "reviewed"
- },
- {
- "user_id": 16,
- "created_at": "2020-01-09T11:21:21.235Z",
- "state": "reviewed"
- },
- {
- "user_id": 6,
- "created_at": "2020-01-10T11:21:21.235Z",
- "state": "unreviewed"
- }
- ],
- "approvals": [
- {
- "user_id": 1,
- "created_at": "2020-01-07T11:21:21.235Z",
- "updated_at": "2020-01-08T11:21:21.235Z"
- },
- {
- "user_id": 15,
- "created_at": "2020-01-07T11:21:21.235Z",
- "updated_at": "2020-01-08T11:21:21.235Z"
- },
- {
- "user_id": 16,
- "created_at": "2020-01-07T11:21:21.235Z",
- "updated_at": "2020-01-08T11:21:21.235Z"
- },
- {
- "user_id": 6,
- "created_at": "2020-01-07T11:21:21.235Z",
- "updated_at": "2020-01-08T11:21:21.235Z"
- }
- ],
- "resource_milestone_events": [
- {
- "user_id": 1,
- "action": "add",
- "state": "opened",
- "created_at": "2022-08-17T13:06:53.547Z",
- "milestone": {
- "title": "v4.0",
- "description": "Totam quam laborum id magnam natus eaque aspernatur.",
- "created_at": "2016-06-14T15:02:04.590Z",
- "updated_at": "2016-06-14T15:02:04.590Z",
- "state": "active",
- "iid": 5
- }
- }
- ],
- "resource_state_events": [
- {
- "user_id": 1,
- "created_at": "2022-08-17T13:08:16.838Z",
- "state": "closed",
- "source_commit": null,
- "close_after_error_tracking_resolve": false,
- "close_auto_resolve_prometheus_alert": false
- },
- {
- "user_id": 1,
- "created_at": "2022-08-17T13:08:17.702Z",
- "state": "reopened",
- "source_commit": null,
- "close_after_error_tracking_resolve": false,
- "close_auto_resolve_prometheus_alert": false
- }
- ]
- },
- {
- "id": 26,
- "target_branch": "master",
- "source_branch": "feature",
- "source_project_id": 4,
- "author_id": 1,
- "assignee_id": null,
- "title": "MR2",
- "created_at": "2016-06-14T15:02:36.418Z",
- "updated_at": "2016-06-14T15:02:57.013Z",
- "state": "opened",
- "merge_status": "unchecked",
- "target_project_id": 5,
- "iid": 8,
- "description": null,
- "position": 0,
- "updated_by_id": null,
- "merge_error": null,
- "merge_params": {
- "force_remove_source_branch": null
- },
- "merge_when_pipeline_succeeds": false,
- "merge_user_id": null,
- "merge_commit_sha": null,
- "notes": [
- {
- "id": 679,
- "note": "Qui rerum totam nisi est.",
- "noteable_type": "MergeRequest",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:56.848Z",
- "updated_at": "2016-06-14T15:02:56.848Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 26,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 680,
- "note": "Pariatur magni corrupti consequatur debitis minima error beatae voluptatem.",
- "noteable_type": "MergeRequest",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:56.871Z",
- "updated_at": "2016-06-14T15:02:56.871Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 26,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 681,
- "note": "Qui quis ut modi eos rerum ratione.",
- "noteable_type": "MergeRequest",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:56.895Z",
- "updated_at": "2016-06-14T15:02:56.895Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 26,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 682,
- "note": "Illum quidem expedita mollitia fugit.",
- "noteable_type": "MergeRequest",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:56.918Z",
- "updated_at": "2016-06-14T15:02:56.918Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 26,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 683,
- "note": "Consectetur voluptate sit sint possimus veritatis quod.",
- "noteable_type": "MergeRequest",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:56.942Z",
- "updated_at": "2016-06-14T15:02:56.942Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 26,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 684,
- "note": "Natus libero quibusdam rem assumenda deleniti accusamus sed earum.",
- "noteable_type": "MergeRequest",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:56.966Z",
- "updated_at": "2016-06-14T15:02:56.966Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 26,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 685,
- "note": "Tenetur autem nihil rerum odit.",
- "noteable_type": "MergeRequest",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:56.989Z",
- "updated_at": "2016-06-14T15:02:56.989Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 26,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 686,
- "note": "Quia maiores et odio sed.",
- "noteable_type": "MergeRequest",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:57.012Z",
- "updated_at": "2016-06-14T15:02:57.012Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 26,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ],
- "merge_request_diff": {
- "id": 26,
- "state": "collected",
- "merge_request_diff_commits": [
- {
- "merge_request_diff_id": 26,
- "sha": "0b4bc9a49b562e85de7cc9e834518ea6828729b9",
- "relative_order": 0,
- "message": "Feature added\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T09:26:01.000+01:00",
- "committed_date": "2014-02-27T09:26:01.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- }
- ],
- "merge_request_diff_files": [
- {
- "merge_request_diff_id": 26,
- "relative_order": 0,
- "utf8_diff": "--- /dev/null\n+++ b/files/ruby/feature.rb\n@@ -0,0 +1,5 @@\n+class Feature\n+ def foo\n+ puts 'bar'\n+ end\n+end\n",
- "new_path": "files/ruby/feature.rb",
- "old_path": "files/ruby/feature.rb",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- }
- ],
- "merge_request_id": 26,
- "created_at": "2016-06-14T15:02:36.421Z",
- "updated_at": "2016-06-14T15:02:36.474Z",
- "base_commit_sha": "ae73cb07c9eeaf35924a10f713b364d32b2dd34f",
- "real_size": "1"
- },
- "events": [
- {
- "id": 222,
- "target_type": "MergeRequest",
- "target_id": 26,
- "project_id": 36,
- "created_at": "2016-06-14T15:02:36.496Z",
- "updated_at": "2016-06-14T15:02:36.496Z",
- "action": 1,
- "author_id": 1
- },
- {
- "id": 186,
- "target_type": "MergeRequest",
- "target_id": 26,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:36.496Z",
- "updated_at": "2016-06-14T15:02:36.496Z",
- "action": 1,
- "author_id": 1
- }
- ],
- "merge_request_assignees": [
-
- ],
- "merge_request_reviewers": [
-
- ],
- "approvals": [
-
- ]
- },
- {
- "id": 15,
- "target_branch": "test-7",
- "source_branch": "test-1",
- "source_project_id": 5,
- "author_id": 22,
- "assignee_id": 16,
- "title": "Qui accusantium et inventore facilis doloribus occaecati officiis.",
- "created_at": "2016-06-14T15:02:25.168Z",
- "updated_at": "2016-06-14T15:02:59.521Z",
- "state": "opened",
- "merge_status": "unchecked",
- "target_project_id": 5,
- "iid": 7,
- "description": "Et commodi deserunt aspernatur vero rerum. Ut non dolorum alias in odit est libero. Voluptatibus eos in et vitae repudiandae facilis ex mollitia.",
- "position": 0,
- "updated_by_id": null,
- "merge_error": null,
- "merge_params": {
- "force_remove_source_branch": null
- },
- "merge_when_pipeline_succeeds": false,
- "merge_user_id": null,
- "merge_commit_sha": null,
- "notes": [
- {
- "id": 777,
- "note": "Pariatur voluptas placeat aspernatur culpa suscipit soluta.",
- "noteable_type": "MergeRequest",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:59.348Z",
- "updated_at": "2016-06-14T15:02:59.348Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 15,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 778,
- "note": "Alias et iure mollitia suscipit molestiae voluptatum nostrum asperiores.",
- "noteable_type": "MergeRequest",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:59.372Z",
- "updated_at": "2016-06-14T15:02:59.372Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 15,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 779,
- "note": "Laudantium qui eum qui sunt.",
- "noteable_type": "MergeRequest",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:59.395Z",
- "updated_at": "2016-06-14T15:02:59.395Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 15,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 780,
- "note": "Quas rem est iusto ut delectus fugiat recusandae mollitia.",
- "noteable_type": "MergeRequest",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:59.418Z",
- "updated_at": "2016-06-14T15:02:59.418Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 15,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 781,
- "note": "Repellendus ab et qui nesciunt.",
- "noteable_type": "MergeRequest",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:59.444Z",
- "updated_at": "2016-06-14T15:02:59.444Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 15,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 782,
- "note": "Non possimus voluptatum odio qui ut.",
- "noteable_type": "MergeRequest",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:59.469Z",
- "updated_at": "2016-06-14T15:02:59.469Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 15,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 783,
- "note": "Dolores repellendus eum ducimus quam ab dolorem quia.",
- "noteable_type": "MergeRequest",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:59.494Z",
- "updated_at": "2016-06-14T15:02:59.494Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 15,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 784,
- "note": "Facilis dolorem aut corrupti id ratione occaecati.",
- "noteable_type": "MergeRequest",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:59.520Z",
- "updated_at": "2016-06-14T15:02:59.520Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 15,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ],
- "merge_request_diff": {
- "id": 15,
- "state": "collected",
- "merge_request_diff_commits": [
- {
- "merge_request_diff_id": 15,
- "relative_order": 0,
- "sha": "94b8d581c48d894b86661718582fecbc5e3ed2eb",
- "message": "fixes #10\n",
- "authored_date": "2016-01-19T13:22:56.000+01:00",
- "committed_date": "2016-01-19T13:22:56.000+01:00",
- "commit_author": {
- "name": "James Lopez",
- "email": "james@jameslopez.es"
- },
- "committer": {
- "name": "James Lopez",
- "email": "james@jameslopez.es"
- }
- }
- ],
- "merge_request_diff_files": [
- {
- "merge_request_diff_id": 15,
- "relative_order": 0,
- "utf8_diff": "--- /dev/null\n+++ b/test\n",
- "new_path": "test",
- "old_path": "test",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- }
- ],
- "merge_request_id": 15,
- "created_at": "2016-06-14T15:02:25.171Z",
- "updated_at": "2016-06-14T15:02:25.230Z",
- "base_commit_sha": "be93687618e4b132087f430a4d8fc3a609c9b77c",
- "real_size": "1"
- },
- "events": [
- {
- "id": 223,
- "target_type": "MergeRequest",
- "target_id": 15,
- "project_id": 36,
- "created_at": "2016-06-14T15:02:25.262Z",
- "updated_at": "2016-06-14T15:02:25.262Z",
- "action": 1,
- "author_id": 1
- },
- {
- "id": 175,
- "target_type": "MergeRequest",
- "target_id": 15,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:25.262Z",
- "updated_at": "2016-06-14T15:02:25.262Z",
- "action": 1,
- "author_id": 22
- }
- ]
- },
- {
- "id": 14,
- "target_branch": "fix",
- "source_branch": "test-3",
- "source_project_id": 5,
- "author_id": 20,
- "assignee_id": 20,
- "title": "In voluptas aut sequi voluptatem ullam vel corporis illum consequatur.",
- "created_at": "2016-06-14T15:02:24.760Z",
- "updated_at": "2016-06-14T15:02:59.749Z",
- "state": "opened",
- "merge_status": "unchecked",
- "target_project_id": 5,
- "iid": 6,
- "description": "Dicta magnam non voluptates nam dignissimos nostrum deserunt. Dolorum et suscipit iure quae doloremque. Necessitatibus saepe aut labore sed.",
- "position": 0,
- "updated_by_id": null,
- "merge_error": null,
- "merge_params": {
- "force_remove_source_branch": null
- },
- "merge_when_pipeline_succeeds": false,
- "merge_user_id": null,
- "merge_commit_sha": null,
- "notes": [
- {
- "id": 785,
- "note": "Atque cupiditate necessitatibus deserunt minus natus odit.",
- "noteable_type": "MergeRequest",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:59.559Z",
- "updated_at": "2016-06-14T15:02:59.559Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 14,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 786,
- "note": "Non dolorem provident mollitia nesciunt optio ex eveniet.",
- "noteable_type": "MergeRequest",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:59.587Z",
- "updated_at": "2016-06-14T15:02:59.587Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 14,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 787,
- "note": "Similique officia nemo quasi commodi accusantium quae qui.",
- "noteable_type": "MergeRequest",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:59.621Z",
- "updated_at": "2016-06-14T15:02:59.621Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 14,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 788,
- "note": "Et est et alias ad dolor qui.",
- "noteable_type": "MergeRequest",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:59.650Z",
- "updated_at": "2016-06-14T15:02:59.650Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 14,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 789,
- "note": "Numquam temporibus ratione voluptatibus aliquid.",
- "noteable_type": "MergeRequest",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:59.675Z",
- "updated_at": "2016-06-14T15:02:59.675Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 14,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 790,
- "note": "Ut ex aliquam consectetur perferendis est hic aut quia.",
- "noteable_type": "MergeRequest",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:59.703Z",
- "updated_at": "2016-06-14T15:02:59.703Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 14,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 791,
- "note": "Esse eos quam quaerat aut ut asperiores officiis.",
- "noteable_type": "MergeRequest",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:59.726Z",
- "updated_at": "2016-06-14T15:02:59.726Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 14,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 792,
- "note": "Sint facilis accusantium iure blanditiis.",
- "noteable_type": "MergeRequest",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:59.748Z",
- "updated_at": "2016-06-14T15:02:59.748Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 14,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ],
- "merge_request_diff": {
- "id": 14,
- "state": "collected",
- "merge_request_diff_commits": [
- {
- "merge_request_diff_id": 14,
- "relative_order": 0,
- "sha": "ddd4ff416a931589c695eb4f5b23f844426f6928",
- "message": "fixes #10\n",
- "authored_date": "2016-01-19T14:14:43.000+01:00",
- "committed_date": "2016-01-19T14:14:43.000+01:00",
- "commit_author": {
- "name": "James Lopez",
- "email": "james@jameslopez.es"
- },
- "committer": {
- "name": "James Lopez",
- "email": "james@jameslopez.es"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 1,
- "sha": "be93687618e4b132087f430a4d8fc3a609c9b77c",
- "message": "Merge branch 'master' into 'master'\r\n\r\nLFS object pointer.\r\n\r\n\r\n\r\nSee merge request !6",
- "authored_date": "2015-12-07T12:52:12.000+01:00",
- "committed_date": "2015-12-07T12:52:12.000+01:00",
- "commit_author": {
- "name": "Marin Jankovski",
- "email": "marin@gitlab.com"
- },
- "committer": {
- "name": "Marin Jankovski",
- "email": "marin@gitlab.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 2,
- "sha": "048721d90c449b244b7b4c53a9186b04330174ec",
- "message": "LFS object pointer.\n",
- "authored_date": "2015-12-07T11:54:28.000+01:00",
- "committed_date": "2015-12-07T11:54:28.000+01:00",
- "commit_author": {
- "name": "Marin Jankovski",
- "email": "maxlazio@gmail.com"
- },
- "committer": {
- "name": "Marin Jankovski",
- "email": "maxlazio@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 3,
- "sha": "5f923865dde3436854e9ceb9cdb7815618d4e849",
- "message": "GitLab currently doesn't support patches that involve a merge commit: add a commit here\n",
- "authored_date": "2015-11-13T16:27:12.000+01:00",
- "committed_date": "2015-11-13T16:27:12.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 4,
- "sha": "d2d430676773caa88cdaf7c55944073b2fd5561a",
- "message": "Merge branch 'add-svg' into 'master'\r\n\r\nAdd GitLab SVG\r\n\r\nAdded to test preview of sanitized SVG images\r\n\r\nSee merge request !5",
- "authored_date": "2015-11-13T08:50:17.000+01:00",
- "committed_date": "2015-11-13T08:50:17.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 5,
- "sha": "2ea1f3dec713d940208fb5ce4a38765ecb5d3f73",
- "message": "Add GitLab SVG\n",
- "authored_date": "2015-11-13T08:39:43.000+01:00",
- "committed_date": "2015-11-13T08:39:43.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 6,
- "sha": "59e29889be61e6e0e5e223bfa9ac2721d31605b8",
- "message": "Merge branch 'whitespace' into 'master'\r\n\r\nadd whitespace test file\r\n\r\nSorry, I did a mistake.\r\nGit ignore empty files.\r\nSo I add a new whitespace test file.\r\n\r\nSee merge request !4",
- "authored_date": "2015-11-13T07:21:40.000+01:00",
- "committed_date": "2015-11-13T07:21:40.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 7,
- "sha": "66eceea0db202bb39c4e445e8ca28689645366c5",
- "message": "add spaces in whitespace file\n",
- "authored_date": "2015-11-13T06:01:27.000+01:00",
- "committed_date": "2015-11-13T06:01:27.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 8,
- "sha": "08f22f255f082689c0d7d39d19205085311542bc",
- "message": "remove empty file.(beacase git ignore empty file)\nadd whitespace test file.\n",
- "authored_date": "2015-11-13T06:00:16.000+01:00",
- "committed_date": "2015-11-13T06:00:16.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 9,
- "sha": "19e2e9b4ef76b422ce1154af39a91323ccc57434",
- "message": "Merge branch 'whitespace' into 'master'\r\n\r\nadd spaces\r\n\r\nTo test this pull request.(https://github.com/gitlabhq/gitlabhq/pull/9757)\r\nJust add whitespaces.\r\n\r\nSee merge request !3",
- "authored_date": "2015-11-13T05:23:14.000+01:00",
- "committed_date": "2015-11-13T05:23:14.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 10,
- "sha": "c642fe9b8b9f28f9225d7ea953fe14e74748d53b",
- "message": "add whitespace in empty\n",
- "authored_date": "2015-11-13T05:08:45.000+01:00",
- "committed_date": "2015-11-13T05:08:45.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 11,
- "sha": "9a944d90955aaf45f6d0c88f30e27f8d2c41cec0",
- "message": "add empty file\n",
- "authored_date": "2015-11-13T05:08:04.000+01:00",
- "committed_date": "2015-11-13T05:08:04.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 12,
- "sha": "c7fbe50c7c7419d9701eebe64b1fdacc3df5b9dd",
- "message": "Add ISO-8859 test file\n",
- "authored_date": "2015-08-25T17:53:12.000+02:00",
- "committed_date": "2015-08-25T17:53:12.000+02:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@packetzoom.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@packetzoom.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 13,
- "sha": "e56497bb5f03a90a51293fc6d516788730953899",
- "message": "Merge branch 'tree_helper_spec' into 'master'\n\nAdd directory structure for tree_helper spec\n\nThis directory structure is needed for a testing the method flatten_tree(tree) in the TreeHelper module\n\nSee [merge request #275](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/275#note_732774)\n\nSee merge request !2\n",
- "authored_date": "2015-01-10T22:23:29.000+01:00",
- "committed_date": "2015-01-10T22:23:29.000+01:00",
- "commit_author": {
- "name": "Sytse Sijbrandij",
- "email": "sytse@gitlab.com"
- },
- "committer": {
- "name": "Sytse Sijbrandij",
- "email": "sytse@gitlab.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 14,
- "sha": "4cd80ccab63c82b4bad16faa5193fbd2aa06df40",
- "message": "add directory structure for tree_helper spec\n",
- "authored_date": "2015-01-10T21:28:18.000+01:00",
- "committed_date": "2015-01-10T21:28:18.000+01:00",
- "commit_author": {
- "name": "marmis85",
- "email": "marmis85@gmail.com"
- },
- "committer": {
- "name": "marmis85",
- "email": "marmis85@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 15,
- "sha": "5937ac0a7beb003549fc5fd26fc247adbce4a52e",
- "message": "Add submodule from gitlab.com\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T10:01:38.000+01:00",
- "committed_date": "2014-02-27T10:01:38.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 16,
- "sha": "570e7b2abdd848b95f2f578043fc23bd6f6fd24d",
- "message": "Change some files\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T09:57:31.000+01:00",
- "committed_date": "2014-02-27T09:57:31.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 17,
- "sha": "6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9",
- "message": "More submodules\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T09:54:21.000+01:00",
- "committed_date": "2014-02-27T09:54:21.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 18,
- "sha": "d14d6c0abdd253381df51a723d58691b2ee1ab08",
- "message": "Remove ds_store files\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T09:49:50.000+01:00",
- "committed_date": "2014-02-27T09:49:50.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 19,
- "sha": "c1acaa58bbcbc3eafe538cb8274ba387047b69f8",
- "message": "Ignore DS files\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T09:48:32.000+01:00",
- "committed_date": "2014-02-27T09:48:32.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- }
- ],
- "merge_request_diff_files": [
- {
- "merge_request_diff_id": 14,
- "relative_order": 0,
- "utf8_diff": "Binary files a/.DS_Store and /dev/null differ\n",
- "new_path": ".DS_Store",
- "old_path": ".DS_Store",
- "a_mode": "100644",
- "b_mode": "0",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": true,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 1,
- "utf8_diff": "--- a/.gitignore\n+++ b/.gitignore\n@@ -17,3 +17,4 @@ rerun.txt\n pickle-email-*.html\n .project\n config/initializers/secret_token.rb\n+.DS_Store\n",
- "new_path": ".gitignore",
- "old_path": ".gitignore",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 2,
- "utf8_diff": "--- a/.gitmodules\n+++ b/.gitmodules\n@@ -1,3 +1,9 @@\n [submodule \"six\"]\n \tpath = six\n \turl = git://github.com/randx/six.git\n+[submodule \"gitlab-shell\"]\n+\tpath = gitlab-shell\n+\turl = https://github.com/gitlabhq/gitlab-shell.git\n+[submodule \"gitlab-grack\"]\n+\tpath = gitlab-grack\n+\turl = https://gitlab.com/gitlab-org/gitlab-grack.git\n",
- "new_path": ".gitmodules",
- "old_path": ".gitmodules",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 3,
- "utf8_diff": "--- a/CHANGELOG\n+++ b/CHANGELOG\n@@ -1,4 +1,6 @@\n-v 6.7.0\n+v6.8.0\n+\n+v6.7.0\n - Add support for Gemnasium as a Project Service (Olivier Gonzalez)\n - Add edit file button to MergeRequest diff\n - Public groups (Jason Hollingsworth)\n",
- "new_path": "CHANGELOG",
- "old_path": "CHANGELOG",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 4,
- "utf8_diff": "--- /dev/null\n+++ b/encoding/iso8859.txt\n@@ -0,0 +1 @@\n+Äü\n",
- "new_path": "encoding/iso8859.txt",
- "old_path": "encoding/iso8859.txt",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 5,
- "utf8_diff": "Binary files a/files/.DS_Store and /dev/null differ\n",
- "new_path": "files/.DS_Store",
- "old_path": "files/.DS_Store",
- "a_mode": "100644",
- "b_mode": "0",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": true,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 6,
- "utf8_diff": "--- /dev/null\n+++ b/files/images/wm.svg\n@@ -0,0 +1,78 @@\n+<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n+<svg width=\"1300px\" height=\"680px\" viewBox=\"0 0 1300 680\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n+ <!-- Generator: Sketch 3.2.2 (9983) - http://www.bohemiancoding.com/sketch -->\n+ <title>wm</title>\n+ <desc>Created with Sketch.</desc>\n+ <defs>\n+ <path id=\"path-1\" d=\"M-69.8,1023.54607 L1675.19996,1023.54607 L1675.19996,0 L-69.8,0 L-69.8,1023.54607 L-69.8,1023.54607 Z\"></path>\n+ </defs>\n+ <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n+ <path d=\"M1300,680 L0,680 L0,0 L1300,0 L1300,680 L1300,680 Z\" id=\"bg\" fill=\"#30353E\" sketch:type=\"MSShapeGroup\"></path>\n+ <g id=\"gitlab_logo\" sketch:type=\"MSLayerGroup\" transform=\"translate(-262.000000, -172.000000)\">\n+ <g id=\"g10\" transform=\"translate(872.500000, 512.354581) scale(1, -1) translate(-872.500000, -512.354581) translate(0.000000, 0.290751)\">\n+ <g id=\"g12\" transform=\"translate(1218.022652, 440.744871)\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\">\n+ <path d=\"M-50.0233338,141.900706 L-69.07059,141.900706 L-69.0100967,0.155858152 L8.04444805,0.155858152 L8.04444805,17.6840847 L-49.9628405,17.6840847 L-50.0233338,141.900706 L-50.0233338,141.900706 Z\" id=\"path14\"></path>\n+ </g>\n+ <g id=\"g16\">\n+ <g id=\"g18-Clipped\">\n+ <mask id=\"mask-2\" sketch:name=\"path22\" fill=\"white\">\n+ <use xlink:href=\"#path-1\"></use>\n+ </mask>\n+ <g id=\"path22\"></g>\n+ <g id=\"g18\" mask=\"url(#mask-2)\">\n+ <g transform=\"translate(382.736659, 312.879425)\">\n+ <g id=\"g24\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(852.718192, 124.992771)\">\n+ <path d=\"M63.9833317,27.9148929 C59.2218085,22.9379001 51.2134221,17.9597442 40.3909323,17.9597442 C25.8888194,17.9597442 20.0453962,25.1013043 20.0453962,34.4074318 C20.0453962,48.4730484 29.7848226,55.1819277 50.5642821,55.1819277 C54.4602853,55.1819277 60.7364685,54.7492469 63.9833317,54.1002256 L63.9833317,27.9148929 L63.9833317,27.9148929 Z M44.2869356,113.827628 C28.9053426,113.827628 14.7975996,108.376082 3.78897657,99.301416 L10.5211864,87.6422957 C18.3131929,92.1866076 27.8374026,96.7320827 41.4728323,96.7320827 C57.0568452,96.7320827 63.9833317,88.7239978 63.9833317,75.3074024 L63.9833317,68.3821827 C60.9528485,69.0312039 54.6766653,69.4650479 50.7806621,69.4650479 C17.4476729,69.4650479 0.565379986,57.7791759 0.565379986,33.3245665 C0.565379986,11.4683685 13.9844297,0.43151772 34.3299658,0.43151772 C48.0351955,0.43151772 61.1692285,6.70771614 65.7143717,16.8780421 L69.1776149,3.02876588 L82.5978279,3.02876588 L82.5978279,75.5237428 C82.5978279,98.462806 72.6408582,113.827628 44.2869356,113.827628 L44.2869356,113.827628 Z\" id=\"path26\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g28\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(959.546624, 124.857151)\">\n+ <path d=\"M37.2266657,17.4468081 C30.0837992,17.4468081 23.8064527,18.3121698 19.0449295,20.4767371 L19.0449295,79.2306079 L19.0449295,86.0464943 C25.538656,91.457331 33.5470425,95.3526217 43.7203922,95.3526217 C62.1173451,95.3526217 69.2602116,82.3687072 69.2602116,61.3767077 C69.2602116,31.5135879 57.7885819,17.4468081 37.2266657,17.4468081 M45.2315622,113.963713 C28.208506,113.963713 19.0449295,102.384849 19.0449295,102.384849 L19.0449295,120.67143 L18.9844362,144.908535 L10.3967097,144.908535 L0.371103324,144.908535 L0.431596656,6.62629771 C9.73826309,2.73100702 22.5081728,0.567602823 36.3611458,0.567602823 C71.8579349,0.567602823 88.9566078,23.2891625 88.9566078,62.4584098 C88.9566078,93.4043948 73.1527248,113.963713 45.2315622,113.963713\" id=\"path30\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g32\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(509.576747, 125.294950)\">\n+ <path d=\"M68.636665,129.10638 C85.5189579,129.10638 96.3414476,123.480366 103.484314,117.853189 L111.669527,132.029302 C100.513161,141.811145 85.5073245,147.06845 69.5021849,147.06845 C29.0274926,147.06845 0.673569983,122.3975 0.673569983,72.6252464 C0.673569983,20.4709215 31.2622559,0.12910638 66.2553217,0.12910638 C83.7879179,0.12910638 98.7227909,4.24073748 108.462217,8.35236859 L108.063194,64.0763105 L108.063194,70.6502677 L108.063194,81.6057001 L56.1168719,81.6057001 L56.1168719,64.0763105 L89.2323178,64.0763105 L89.6313411,21.7701271 C85.3025779,19.6055598 77.7269514,17.8748364 67.554765,17.8748364 C39.4172223,17.8748364 20.5863462,35.5717154 20.5863462,72.8415868 C20.5863462,110.711628 40.0663623,129.10638 68.636665,129.10638\" id=\"path34\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g36\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(692.388992, 124.376085)\">\n+ <path d=\"M19.7766662,145.390067 L1.16216997,145.390067 L1.2226633,121.585642 L1.2226633,111.846834 L1.2226633,106.170806 L1.2226633,96.2656714 L1.2226633,39.5681976 L1.2226633,39.3518572 C1.2226633,16.4127939 11.1796331,1.04797161 39.5335557,1.04797161 C43.4504989,1.04797161 47.2836822,1.40388649 51.0051854,2.07965952 L51.0051854,18.7925385 C48.3109055,18.3796307 45.4351455,18.1446804 42.3476589,18.1446804 C26.763646,18.1446804 19.8371595,26.1516022 19.8371595,39.5681976 L19.8371595,96.2656714 L51.0051854,96.2656714 L51.0051854,111.846834 L19.8371595,111.846834 L19.7766662,145.390067 L19.7766662,145.390067 Z\" id=\"path38\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <path d=\"M646.318899,128.021188 L664.933395,128.021188 L664.933395,236.223966 L646.318899,236.223966 L646.318899,128.021188 L646.318899,128.021188 Z\" id=\"path40\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ <path d=\"M646.318899,251.154944 L664.933395,251.154944 L664.933395,269.766036 L646.318899,269.766036 L646.318899,251.154944 L646.318899,251.154944 Z\" id=\"path42\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ <g id=\"g44\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(0.464170, 0.676006)\">\n+ <path d=\"M429.269989,169.815599 L405.225053,243.802859 L357.571431,390.440955 C355.120288,397.984955 344.444378,397.984955 341.992071,390.440955 L294.337286,243.802859 L136.094873,243.802859 L88.4389245,390.440955 C85.9877812,397.984955 75.3118715,397.984955 72.8595648,390.440955 L25.2059427,243.802859 L1.16216997,169.815599 C-1.03187664,163.067173 1.37156997,155.674379 7.11261982,151.503429 L215.215498,0.336141836 L423.319539,151.503429 C429.060589,155.674379 431.462873,163.067173 429.269989,169.815599\" id=\"path46\" fill=\"#FC6D26\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g48\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(135.410135, 1.012147)\">\n+ <path d=\"M80.269998,0 L80.269998,0 L159.391786,243.466717 L1.14820997,243.466717 L80.269998,0 L80.269998,0 Z\" id=\"path50\" fill=\"#E24329\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g52\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012147)\">\n+ <g id=\"path54\"></g>\n+ </g>\n+ <g id=\"g56\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(24.893471, 1.012613)\">\n+ <path d=\"M190.786662,0 L111.664874,243.465554 L0.777106647,243.465554 L190.786662,0 L190.786662,0 Z\" id=\"path58\" fill=\"#FC6D26\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g60\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012613)\">\n+ <g id=\"path62\"></g>\n+ </g>\n+ <g id=\"g64\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(0.077245, 0.223203)\">\n+ <path d=\"M25.5933327,244.255313 L25.5933327,244.255313 L1.54839663,170.268052 C-0.644486651,163.519627 1.75779662,156.126833 7.50000981,151.957046 L215.602888,0.789758846 L25.5933327,244.255313 L25.5933327,244.255313 Z\" id=\"path66\" fill=\"#FCA326\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g68\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012147)\">\n+ <g id=\"path70\"></g>\n+ </g>\n+ <g id=\"g72\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(25.670578, 244.478283)\">\n+ <path d=\"M0,0 L110.887767,0 L63.2329818,146.638096 C60.7806751,154.183259 50.1047654,154.183259 47.6536221,146.638096 L0,0 L0,0 Z\" id=\"path74\" fill=\"#E24329\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g76\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012613)\">\n+ <path d=\"M0,0 L79.121788,243.465554 L190.009555,243.465554 L0,0 L0,0 Z\" id=\"path78\" fill=\"#FC6D26\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g80\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(214.902910, 0.223203)\">\n+ <path d=\"M190.786662,244.255313 L190.786662,244.255313 L214.831598,170.268052 C217.024481,163.519627 214.622198,156.126833 208.879985,151.957046 L0.777106647,0.789758846 L190.786662,244.255313 L190.786662,244.255313 Z\" id=\"path82\" fill=\"#FCA326\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g84\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(294.009575, 244.478283)\">\n+ <path d=\"M111.679997,0 L0.79222998,0 L48.4470155,146.638096 C50.8993221,154.183259 61.5752318,154.183259 64.0263751,146.638096 L111.679997,0 L111.679997,0 Z\" id=\"path86\" fill=\"#E24329\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+</svg>\n\\ No newline at end of file\n",
- "new_path": "files/images/wm.svg",
- "old_path": "files/images/wm.svg",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 7,
- "utf8_diff": "--- /dev/null\n+++ b/files/lfs/lfs_object.iso\n@@ -0,0 +1,4 @@\n+version https://git-lfs.github.com/spec/v1\n+oid sha256:91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897\n+size 1575078\n+\n",
- "new_path": "files/lfs/lfs_object.iso",
- "old_path": "files/lfs/lfs_object.iso",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 8,
- "utf8_diff": "--- a/files/ruby/popen.rb\n+++ b/files/ruby/popen.rb\n@@ -6,12 +6,18 @@ module Popen\n \n def popen(cmd, path=nil)\n unless cmd.is_a?(Array)\n- raise \"System commands must be given as an array of strings\"\n+ raise RuntimeError, \"System commands must be given as an array of strings\"\n end\n \n path ||= Dir.pwd\n- vars = { \"PWD\" => path }\n- options = { chdir: path }\n+\n+ vars = {\n+ \"PWD\" => path\n+ }\n+\n+ options = {\n+ chdir: path\n+ }\n \n unless File.directory?(path)\n FileUtils.mkdir_p(path)\n@@ -19,6 +25,7 @@ module Popen\n \n @cmd_output = \"\"\n @cmd_status = 0\n+\n Open3.popen3(vars, *cmd, options) do |stdin, stdout, stderr, wait_thr|\n @cmd_output << stdout.read\n @cmd_output << stderr.read\n",
- "new_path": "files/ruby/popen.rb",
- "old_path": "files/ruby/popen.rb",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 9,
- "utf8_diff": "--- a/files/ruby/regex.rb\n+++ b/files/ruby/regex.rb\n@@ -19,14 +19,12 @@ module Gitlab\n end\n \n def archive_formats_regex\n- #|zip|tar| tar.gz | tar.bz2 |\n- /(zip|tar|tar\\.gz|tgz|gz|tar\\.bz2|tbz|tbz2|tb2|bz2)/\n+ /(zip|tar|7z|tar\\.gz|tgz|gz|tar\\.bz2|tbz|tbz2|tb2|bz2)/\n end\n \n def git_reference_regex\n # Valid git ref regex, see:\n # https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html\n-\n %r{\n (?!\n (?# doesn't begins with)\n",
- "new_path": "files/ruby/regex.rb",
- "old_path": "files/ruby/regex.rb",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 10,
- "utf8_diff": "--- /dev/null\n+++ b/files/whitespace\n@@ -0,0 +1 @@\n+test \n",
- "new_path": "files/whitespace",
- "old_path": "files/whitespace",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 11,
- "utf8_diff": "--- /dev/null\n+++ b/foo/bar/.gitkeep\n",
- "new_path": "foo/bar/.gitkeep",
- "old_path": "foo/bar/.gitkeep",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 12,
- "utf8_diff": "--- /dev/null\n+++ b/gitlab-grack\n@@ -0,0 +1 @@\n+Subproject commit 645f6c4c82fd3f5e06f67134450a570b795e55a6\n",
- "new_path": "gitlab-grack",
- "old_path": "gitlab-grack",
- "a_mode": "0",
- "b_mode": "160000",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 13,
- "utf8_diff": "--- /dev/null\n+++ b/gitlab-shell\n@@ -0,0 +1 @@\n+Subproject commit 79bceae69cb5750d6567b223597999bfa91cb3b9\n",
- "new_path": "gitlab-shell",
- "old_path": "gitlab-shell",
- "a_mode": "0",
- "b_mode": "160000",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 14,
- "relative_order": 14,
- "utf8_diff": "--- /dev/null\n+++ b/test\n",
- "new_path": "test",
- "old_path": "test",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- }
- ],
- "merge_request_id": 14,
- "created_at": "2016-06-14T15:02:24.770Z",
- "updated_at": "2016-06-14T15:02:25.007Z",
- "base_commit_sha": "ae73cb07c9eeaf35924a10f713b364d32b2dd34f",
- "real_size": "15"
- },
- "events": [
- {
- "id": 224,
- "target_type": "MergeRequest",
- "target_id": 14,
- "project_id": 36,
- "created_at": "2016-06-14T15:02:25.113Z",
- "updated_at": "2016-06-14T15:02:25.113Z",
- "action": 1,
- "author_id": 1
- },
- {
- "id": 174,
- "target_type": "MergeRequest",
- "target_id": 14,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:25.113Z",
- "updated_at": "2016-06-14T15:02:25.113Z",
- "action": 1,
- "author_id": 20
- }
- ]
- },
- {
- "id": 13,
- "target_branch": "improve/awesome",
- "source_branch": "test-8",
- "source_project_id": 5,
- "author_id": 16,
- "assignee_id": 25,
- "title": "Voluptates consequatur eius nemo amet libero animi illum delectus tempore.",
- "created_at": "2016-06-14T15:02:24.415Z",
- "updated_at": "2016-06-14T15:02:59.958Z",
- "state": "opened",
- "merge_status": "unchecked",
- "target_project_id": 5,
- "iid": 5,
- "description": "Est eaque quasi qui qui. Similique voluptatem impedit iusto ratione reprehenderit. Itaque est illum ut nulla aut.",
- "position": 0,
- "updated_by_id": null,
- "merge_error": null,
- "merge_params": {
- "force_remove_source_branch": null
- },
- "merge_when_pipeline_succeeds": false,
- "merge_user_id": null,
- "merge_commit_sha": null,
- "notes": [
- {
- "id": 793,
- "note": "In illum maxime aperiam nulla est aspernatur.",
- "noteable_type": "MergeRequest",
- "author_id": 26,
- "created_at": "2016-06-14T15:02:59.782Z",
- "updated_at": "2016-06-14T15:02:59.782Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
- {
- "merge_request_diff_id": 14,
- "id": 529,
- "target_type": "Note",
- "target_id": 793,
- "project_id": 4,
- "created_at": "2016-07-07T14:35:12.128Z",
- "updated_at": "2016-07-07T14:35:12.128Z",
- "action": 6,
- "author_id": 1
- }
- ]
- },
- {
- "id": 794,
- "note": "Enim quia perferendis cum distinctio tenetur optio voluptas veniam.",
- "noteable_type": "MergeRequest",
- "author_id": 25,
- "created_at": "2016-06-14T15:02:59.807Z",
- "updated_at": "2016-06-14T15:02:59.807Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 795,
- "note": "Dolor ad quia quis pariatur ducimus.",
- "noteable_type": "MergeRequest",
- "author_id": 22,
- "created_at": "2016-06-14T15:02:59.831Z",
- "updated_at": "2016-06-14T15:02:59.831Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 796,
- "note": "Et a odio voluptate aut.",
- "noteable_type": "MergeRequest",
- "author_id": 20,
- "created_at": "2016-06-14T15:02:59.854Z",
- "updated_at": "2016-06-14T15:02:59.854Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 797,
- "note": "Quis nihil temporibus voluptatum modi minima a ut.",
- "noteable_type": "MergeRequest",
- "author_id": 16,
- "created_at": "2016-06-14T15:02:59.879Z",
- "updated_at": "2016-06-14T15:02:59.879Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 798,
- "note": "Ut alias consequatur in nostrum.",
- "noteable_type": "MergeRequest",
- "author_id": 15,
- "created_at": "2016-06-14T15:02:59.904Z",
- "updated_at": "2016-06-14T15:02:59.904Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 799,
- "note": "Voluptatibus aperiam assumenda et neque sint libero.",
- "noteable_type": "MergeRequest",
- "author_id": 6,
- "created_at": "2016-06-14T15:02:59.926Z",
- "updated_at": "2016-06-14T15:02:59.926Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 800,
- "note": "Veritatis voluptatem dolor dolores magni quo ut ipsa fuga.",
- "noteable_type": "MergeRequest",
- "author_id": 1,
- "created_at": "2016-06-14T15:02:59.956Z",
- "updated_at": "2016-06-14T15:02:59.956Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ],
- "merge_request_diff": {
- "id": 13,
- "state": "collected",
- "merge_request_diff_commits": [
- {
- "merge_request_diff_id": 13,
- "relative_order": 0,
- "sha": "0bfedc29d30280c7e8564e19f654584b459e5868",
- "message": "fixes #10\n",
- "authored_date": "2016-01-19T15:25:23.000+01:00",
- "committed_date": "2016-01-19T15:25:23.000+01:00",
- "commit_author": {
- "name": "James Lopez",
- "email": "james@jameslopez.es"
- },
- "committer": {
- "name": "James Lopez",
- "email": "james@jameslopez.es"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 1,
- "sha": "be93687618e4b132087f430a4d8fc3a609c9b77c",
- "message": "Merge branch 'master' into 'master'\r\n\r\nLFS object pointer.\r\n\r\n\r\n\r\nSee merge request !6",
- "authored_date": "2015-12-07T12:52:12.000+01:00",
- "committed_date": "2015-12-07T12:52:12.000+01:00",
- "commit_author": {
- "name": "Marin Jankovski",
- "email": "marin@gitlab.com"
- },
- "committer": {
- "name": "Marin Jankovski",
- "email": "marin@gitlab.com"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 2,
- "sha": "048721d90c449b244b7b4c53a9186b04330174ec",
- "message": "LFS object pointer.\n",
- "authored_date": "2015-12-07T11:54:28.000+01:00",
- "committed_date": "2015-12-07T11:54:28.000+01:00",
- "commit_author": {
- "name": "Marin Jankovski",
- "email": "maxlazio@gmail.com"
- },
- "committer": {
- "name": "Marin Jankovski",
- "email": "maxlazio@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 3,
- "sha": "5f923865dde3436854e9ceb9cdb7815618d4e849",
- "message": "GitLab currently doesn't support patches that involve a merge commit: add a commit here\n",
- "authored_date": "2015-11-13T16:27:12.000+01:00",
- "committed_date": "2015-11-13T16:27:12.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 4,
- "sha": "d2d430676773caa88cdaf7c55944073b2fd5561a",
- "message": "Merge branch 'add-svg' into 'master'\r\n\r\nAdd GitLab SVG\r\n\r\nAdded to test preview of sanitized SVG images\r\n\r\nSee merge request !5",
- "authored_date": "2015-11-13T08:50:17.000+01:00",
- "committed_date": "2015-11-13T08:50:17.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 5,
- "sha": "2ea1f3dec713d940208fb5ce4a38765ecb5d3f73",
- "message": "Add GitLab SVG\n",
- "authored_date": "2015-11-13T08:39:43.000+01:00",
- "committed_date": "2015-11-13T08:39:43.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 6,
- "sha": "59e29889be61e6e0e5e223bfa9ac2721d31605b8",
- "message": "Merge branch 'whitespace' into 'master'\r\n\r\nadd whitespace test file\r\n\r\nSorry, I did a mistake.\r\nGit ignore empty files.\r\nSo I add a new whitespace test file.\r\n\r\nSee merge request !4",
- "authored_date": "2015-11-13T07:21:40.000+01:00",
- "committed_date": "2015-11-13T07:21:40.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 7,
- "sha": "66eceea0db202bb39c4e445e8ca28689645366c5",
- "message": "add spaces in whitespace file\n",
- "authored_date": "2015-11-13T06:01:27.000+01:00",
- "committed_date": "2015-11-13T06:01:27.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 8,
- "sha": "08f22f255f082689c0d7d39d19205085311542bc",
- "message": "remove empty file.(beacase git ignore empty file)\nadd whitespace test file.\n",
- "authored_date": "2015-11-13T06:00:16.000+01:00",
- "committed_date": "2015-11-13T06:00:16.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 9,
- "sha": "19e2e9b4ef76b422ce1154af39a91323ccc57434",
- "message": "Merge branch 'whitespace' into 'master'\r\n\r\nadd spaces\r\n\r\nTo test this pull request.(https://github.com/gitlabhq/gitlabhq/pull/9757)\r\nJust add whitespaces.\r\n\r\nSee merge request !3",
- "authored_date": "2015-11-13T05:23:14.000+01:00",
- "committed_date": "2015-11-13T05:23:14.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 10,
- "sha": "c642fe9b8b9f28f9225d7ea953fe14e74748d53b",
- "message": "add whitespace in empty\n",
- "authored_date": "2015-11-13T05:08:45.000+01:00",
- "committed_date": "2015-11-13T05:08:45.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 11,
- "sha": "9a944d90955aaf45f6d0c88f30e27f8d2c41cec0",
- "message": "add empty file\n",
- "authored_date": "2015-11-13T05:08:04.000+01:00",
- "committed_date": "2015-11-13T05:08:04.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 12,
- "sha": "c7fbe50c7c7419d9701eebe64b1fdacc3df5b9dd",
- "message": "Add ISO-8859 test file\n",
- "authored_date": "2015-08-25T17:53:12.000+02:00",
- "committed_date": "2015-08-25T17:53:12.000+02:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@packetzoom.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@packetzoom.com"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 13,
- "sha": "e56497bb5f03a90a51293fc6d516788730953899",
- "message": "Merge branch 'tree_helper_spec' into 'master'\n\nAdd directory structure for tree_helper spec\n\nThis directory structure is needed for a testing the method flatten_tree(tree) in the TreeHelper module\n\nSee [merge request #275](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/275#note_732774)\n\nSee merge request !2\n",
- "authored_date": "2015-01-10T22:23:29.000+01:00",
- "committed_date": "2015-01-10T22:23:29.000+01:00",
- "commit_author": {
- "name": "Sytse Sijbrandij",
- "email": "sytse@gitlab.com"
- },
- "committer": {
- "name": "Sytse Sijbrandij",
- "email": "sytse@gitlab.com"
- }
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 14,
- "sha": "4cd80ccab63c82b4bad16faa5193fbd2aa06df40",
- "message": "add directory structure for tree_helper spec\n",
- "authored_date": "2015-01-10T21:28:18.000+01:00",
- "committed_date": "2015-01-10T21:28:18.000+01:00",
- "commit_author": {
- "name": "marmis85",
- "email": "marmis85@gmail.com"
- },
- "committer": {
- "name": "marmis85",
- "email": "marmis85@gmail.com"
- }
- }
- ],
- "merge_request_diff_files": [
- {
- "merge_request_diff_id": 13,
- "relative_order": 0,
- "utf8_diff": "--- a/CHANGELOG\n+++ b/CHANGELOG\n@@ -1,4 +1,6 @@\n-v 6.7.0\n+v6.8.0\n+\n+v6.7.0\n - Add support for Gemnasium as a Project Service (Olivier Gonzalez)\n - Add edit file button to MergeRequest diff\n - Public groups (Jason Hollingsworth)\n",
- "new_path": "CHANGELOG",
- "old_path": "CHANGELOG",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 1,
- "utf8_diff": "--- /dev/null\n+++ b/encoding/iso8859.txt\n@@ -0,0 +1 @@\n+Äü\n",
- "new_path": "encoding/iso8859.txt",
- "old_path": "encoding/iso8859.txt",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 2,
- "utf8_diff": "--- /dev/null\n+++ b/files/images/wm.svg\n@@ -0,0 +1,78 @@\n+<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n+<svg width=\"1300px\" height=\"680px\" viewBox=\"0 0 1300 680\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n+ <!-- Generator: Sketch 3.2.2 (9983) - http://www.bohemiancoding.com/sketch -->\n+ <title>wm</title>\n+ <desc>Created with Sketch.</desc>\n+ <defs>\n+ <path id=\"path-1\" d=\"M-69.8,1023.54607 L1675.19996,1023.54607 L1675.19996,0 L-69.8,0 L-69.8,1023.54607 L-69.8,1023.54607 Z\"></path>\n+ </defs>\n+ <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n+ <path d=\"M1300,680 L0,680 L0,0 L1300,0 L1300,680 L1300,680 Z\" id=\"bg\" fill=\"#30353E\" sketch:type=\"MSShapeGroup\"></path>\n+ <g id=\"gitlab_logo\" sketch:type=\"MSLayerGroup\" transform=\"translate(-262.000000, -172.000000)\">\n+ <g id=\"g10\" transform=\"translate(872.500000, 512.354581) scale(1, -1) translate(-872.500000, -512.354581) translate(0.000000, 0.290751)\">\n+ <g id=\"g12\" transform=\"translate(1218.022652, 440.744871)\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\">\n+ <path d=\"M-50.0233338,141.900706 L-69.07059,141.900706 L-69.0100967,0.155858152 L8.04444805,0.155858152 L8.04444805,17.6840847 L-49.9628405,17.6840847 L-50.0233338,141.900706 L-50.0233338,141.900706 Z\" id=\"path14\"></path>\n+ </g>\n+ <g id=\"g16\">\n+ <g id=\"g18-Clipped\">\n+ <mask id=\"mask-2\" sketch:name=\"path22\" fill=\"white\">\n+ <use xlink:href=\"#path-1\"></use>\n+ </mask>\n+ <g id=\"path22\"></g>\n+ <g id=\"g18\" mask=\"url(#mask-2)\">\n+ <g transform=\"translate(382.736659, 312.879425)\">\n+ <g id=\"g24\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(852.718192, 124.992771)\">\n+ <path d=\"M63.9833317,27.9148929 C59.2218085,22.9379001 51.2134221,17.9597442 40.3909323,17.9597442 C25.8888194,17.9597442 20.0453962,25.1013043 20.0453962,34.4074318 C20.0453962,48.4730484 29.7848226,55.1819277 50.5642821,55.1819277 C54.4602853,55.1819277 60.7364685,54.7492469 63.9833317,54.1002256 L63.9833317,27.9148929 L63.9833317,27.9148929 Z M44.2869356,113.827628 C28.9053426,113.827628 14.7975996,108.376082 3.78897657,99.301416 L10.5211864,87.6422957 C18.3131929,92.1866076 27.8374026,96.7320827 41.4728323,96.7320827 C57.0568452,96.7320827 63.9833317,88.7239978 63.9833317,75.3074024 L63.9833317,68.3821827 C60.9528485,69.0312039 54.6766653,69.4650479 50.7806621,69.4650479 C17.4476729,69.4650479 0.565379986,57.7791759 0.565379986,33.3245665 C0.565379986,11.4683685 13.9844297,0.43151772 34.3299658,0.43151772 C48.0351955,0.43151772 61.1692285,6.70771614 65.7143717,16.8780421 L69.1776149,3.02876588 L82.5978279,3.02876588 L82.5978279,75.5237428 C82.5978279,98.462806 72.6408582,113.827628 44.2869356,113.827628 L44.2869356,113.827628 Z\" id=\"path26\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g28\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(959.546624, 124.857151)\">\n+ <path d=\"M37.2266657,17.4468081 C30.0837992,17.4468081 23.8064527,18.3121698 19.0449295,20.4767371 L19.0449295,79.2306079 L19.0449295,86.0464943 C25.538656,91.457331 33.5470425,95.3526217 43.7203922,95.3526217 C62.1173451,95.3526217 69.2602116,82.3687072 69.2602116,61.3767077 C69.2602116,31.5135879 57.7885819,17.4468081 37.2266657,17.4468081 M45.2315622,113.963713 C28.208506,113.963713 19.0449295,102.384849 19.0449295,102.384849 L19.0449295,120.67143 L18.9844362,144.908535 L10.3967097,144.908535 L0.371103324,144.908535 L0.431596656,6.62629771 C9.73826309,2.73100702 22.5081728,0.567602823 36.3611458,0.567602823 C71.8579349,0.567602823 88.9566078,23.2891625 88.9566078,62.4584098 C88.9566078,93.4043948 73.1527248,113.963713 45.2315622,113.963713\" id=\"path30\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g32\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(509.576747, 125.294950)\">\n+ <path d=\"M68.636665,129.10638 C85.5189579,129.10638 96.3414476,123.480366 103.484314,117.853189 L111.669527,132.029302 C100.513161,141.811145 85.5073245,147.06845 69.5021849,147.06845 C29.0274926,147.06845 0.673569983,122.3975 0.673569983,72.6252464 C0.673569983,20.4709215 31.2622559,0.12910638 66.2553217,0.12910638 C83.7879179,0.12910638 98.7227909,4.24073748 108.462217,8.35236859 L108.063194,64.0763105 L108.063194,70.6502677 L108.063194,81.6057001 L56.1168719,81.6057001 L56.1168719,64.0763105 L89.2323178,64.0763105 L89.6313411,21.7701271 C85.3025779,19.6055598 77.7269514,17.8748364 67.554765,17.8748364 C39.4172223,17.8748364 20.5863462,35.5717154 20.5863462,72.8415868 C20.5863462,110.711628 40.0663623,129.10638 68.636665,129.10638\" id=\"path34\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g36\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(692.388992, 124.376085)\">\n+ <path d=\"M19.7766662,145.390067 L1.16216997,145.390067 L1.2226633,121.585642 L1.2226633,111.846834 L1.2226633,106.170806 L1.2226633,96.2656714 L1.2226633,39.5681976 L1.2226633,39.3518572 C1.2226633,16.4127939 11.1796331,1.04797161 39.5335557,1.04797161 C43.4504989,1.04797161 47.2836822,1.40388649 51.0051854,2.07965952 L51.0051854,18.7925385 C48.3109055,18.3796307 45.4351455,18.1446804 42.3476589,18.1446804 C26.763646,18.1446804 19.8371595,26.1516022 19.8371595,39.5681976 L19.8371595,96.2656714 L51.0051854,96.2656714 L51.0051854,111.846834 L19.8371595,111.846834 L19.7766662,145.390067 L19.7766662,145.390067 Z\" id=\"path38\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <path d=\"M646.318899,128.021188 L664.933395,128.021188 L664.933395,236.223966 L646.318899,236.223966 L646.318899,128.021188 L646.318899,128.021188 Z\" id=\"path40\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ <path d=\"M646.318899,251.154944 L664.933395,251.154944 L664.933395,269.766036 L646.318899,269.766036 L646.318899,251.154944 L646.318899,251.154944 Z\" id=\"path42\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ <g id=\"g44\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(0.464170, 0.676006)\">\n+ <path d=\"M429.269989,169.815599 L405.225053,243.802859 L357.571431,390.440955 C355.120288,397.984955 344.444378,397.984955 341.992071,390.440955 L294.337286,243.802859 L136.094873,243.802859 L88.4389245,390.440955 C85.9877812,397.984955 75.3118715,397.984955 72.8595648,390.440955 L25.2059427,243.802859 L1.16216997,169.815599 C-1.03187664,163.067173 1.37156997,155.674379 7.11261982,151.503429 L215.215498,0.336141836 L423.319539,151.503429 C429.060589,155.674379 431.462873,163.067173 429.269989,169.815599\" id=\"path46\" fill=\"#FC6D26\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g48\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(135.410135, 1.012147)\">\n+ <path d=\"M80.269998,0 L80.269998,0 L159.391786,243.466717 L1.14820997,243.466717 L80.269998,0 L80.269998,0 Z\" id=\"path50\" fill=\"#E24329\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g52\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012147)\">\n+ <g id=\"path54\"></g>\n+ </g>\n+ <g id=\"g56\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(24.893471, 1.012613)\">\n+ <path d=\"M190.786662,0 L111.664874,243.465554 L0.777106647,243.465554 L190.786662,0 L190.786662,0 Z\" id=\"path58\" fill=\"#FC6D26\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g60\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012613)\">\n+ <g id=\"path62\"></g>\n+ </g>\n+ <g id=\"g64\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(0.077245, 0.223203)\">\n+ <path d=\"M25.5933327,244.255313 L25.5933327,244.255313 L1.54839663,170.268052 C-0.644486651,163.519627 1.75779662,156.126833 7.50000981,151.957046 L215.602888,0.789758846 L25.5933327,244.255313 L25.5933327,244.255313 Z\" id=\"path66\" fill=\"#FCA326\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g68\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012147)\">\n+ <g id=\"path70\"></g>\n+ </g>\n+ <g id=\"g72\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(25.670578, 244.478283)\">\n+ <path d=\"M0,0 L110.887767,0 L63.2329818,146.638096 C60.7806751,154.183259 50.1047654,154.183259 47.6536221,146.638096 L0,0 L0,0 Z\" id=\"path74\" fill=\"#E24329\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g76\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012613)\">\n+ <path d=\"M0,0 L79.121788,243.465554 L190.009555,243.465554 L0,0 L0,0 Z\" id=\"path78\" fill=\"#FC6D26\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g80\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(214.902910, 0.223203)\">\n+ <path d=\"M190.786662,244.255313 L190.786662,244.255313 L214.831598,170.268052 C217.024481,163.519627 214.622198,156.126833 208.879985,151.957046 L0.777106647,0.789758846 L190.786662,244.255313 L190.786662,244.255313 Z\" id=\"path82\" fill=\"#FCA326\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g84\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(294.009575, 244.478283)\">\n+ <path d=\"M111.679997,0 L0.79222998,0 L48.4470155,146.638096 C50.8993221,154.183259 61.5752318,154.183259 64.0263751,146.638096 L111.679997,0 L111.679997,0 Z\" id=\"path86\" fill=\"#E24329\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+</svg>\n\\ No newline at end of file\n",
- "new_path": "files/images/wm.svg",
- "old_path": "files/images/wm.svg",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 3,
- "utf8_diff": "--- /dev/null\n+++ b/files/lfs/lfs_object.iso\n@@ -0,0 +1,4 @@\n+version https://git-lfs.github.com/spec/v1\n+oid sha256:91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897\n+size 1575078\n+\n",
- "new_path": "files/lfs/lfs_object.iso",
- "old_path": "files/lfs/lfs_object.iso",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 4,
- "utf8_diff": "--- /dev/null\n+++ b/files/whitespace\n@@ -0,0 +1 @@\n+test \n",
- "new_path": "files/whitespace",
- "old_path": "files/whitespace",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 5,
- "utf8_diff": "--- /dev/null\n+++ b/foo/bar/.gitkeep\n",
- "new_path": "foo/bar/.gitkeep",
- "old_path": "foo/bar/.gitkeep",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 13,
- "relative_order": 6,
- "utf8_diff": "--- /dev/null\n+++ b/test\n",
- "new_path": "test",
- "old_path": "test",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- }
- ],
- "merge_request_id": 13,
- "created_at": "2016-06-14T15:02:24.420Z",
- "updated_at": "2016-06-14T15:02:24.561Z",
- "base_commit_sha": "5937ac0a7beb003549fc5fd26fc247adbce4a52e",
- "real_size": "7"
- },
- "events": [
- {
- "id": 225,
- "target_type": "MergeRequest",
- "target_id": 13,
- "project_id": 36,
- "created_at": "2016-06-14T15:02:24.636Z",
- "updated_at": "2016-06-14T15:02:24.636Z",
- "action": 1,
- "author_id": 16
- },
- {
- "id": 173,
- "target_type": "MergeRequest",
- "target_id": 13,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:24.636Z",
- "updated_at": "2016-06-14T15:02:24.636Z",
- "action": 1,
- "author_id": 16
- }
- ]
- },
- {
- "id": 12,
- "target_branch": "flatten-dirs",
- "source_branch": "test-2",
- "source_project_id": 5,
- "author_id": 1,
- "assignee_id": 22,
- "title": "In a rerum harum nihil accusamus aut quia nobis non.",
- "created_at": "2016-06-14T15:02:24.000Z",
- "updated_at": "2016-06-14T15:03:00.225Z",
- "state": "opened",
- "merge_status": "unchecked",
- "target_project_id": 5,
- "iid": 4,
- "description": "Nam magnam odit velit rerum. Sapiente dolore sunt saepe debitis. Culpa maiores ut ad dolores dolorem et.",
- "position": 0,
- "updated_by_id": null,
- "merge_error": null,
- "merge_params": {
- "force_remove_source_branch": null
- },
- "merge_when_pipeline_succeeds": false,
- "merge_user_id": null,
- "merge_commit_sha": null,
- "notes": [
- {
- "id": 801,
- "note": "Nihil dicta molestias expedita atque.",
- "noteable_type": "MergeRequest",
- "author_id": 26,
- "created_at": "2016-06-14T15:03:00.001Z",
- "updated_at": "2016-06-14T15:03:00.001Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 12,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 802,
- "note": "Illum culpa voluptas enim accusantium deserunt.",
- "noteable_type": "MergeRequest",
- "author_id": 25,
- "created_at": "2016-06-14T15:03:00.034Z",
- "updated_at": "2016-06-14T15:03:00.034Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 12,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 803,
- "note": "Dicta esse aliquam laboriosam unde alias.",
- "noteable_type": "MergeRequest",
- "author_id": 22,
- "created_at": "2016-06-14T15:03:00.065Z",
- "updated_at": "2016-06-14T15:03:00.065Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 12,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 804,
- "note": "Dicta autem et sed molestiae ut quae.",
- "noteable_type": "MergeRequest",
- "author_id": 20,
- "created_at": "2016-06-14T15:03:00.097Z",
- "updated_at": "2016-06-14T15:03:00.097Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 12,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 805,
- "note": "Ut ut temporibus voluptas dolore quia velit.",
- "noteable_type": "MergeRequest",
- "author_id": 16,
- "created_at": "2016-06-14T15:03:00.129Z",
- "updated_at": "2016-06-14T15:03:00.129Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 12,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 806,
- "note": "Dolores similique sint pariatur error id quia fugit aut.",
- "noteable_type": "MergeRequest",
- "author_id": 15,
- "created_at": "2016-06-14T15:03:00.162Z",
- "updated_at": "2016-06-14T15:03:00.162Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 12,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 807,
- "note": "Quisquam provident nihil aperiam voluptatem.",
- "noteable_type": "MergeRequest",
- "author_id": 6,
- "created_at": "2016-06-14T15:03:00.193Z",
- "updated_at": "2016-06-14T15:03:00.193Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 12,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 808,
- "note": "Similique quo vero expedita deserunt ipsam earum.",
- "noteable_type": "MergeRequest",
- "author_id": 1,
- "created_at": "2016-06-14T15:03:00.224Z",
- "updated_at": "2016-06-14T15:03:00.224Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 12,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ],
- "merge_request_diff": {
- "id": 12,
- "state": "collected",
- "merge_request_diff_commits": [
- {
- "merge_request_diff_id": 12,
- "relative_order": 0,
- "sha": "97a0df9696e2aebf10c31b3016f40214e0e8f243",
- "message": "fixes #10\n",
- "authored_date": "2016-01-19T14:08:21.000+01:00",
- "committed_date": "2016-01-19T14:08:21.000+01:00",
- "commit_author": {
- "name": "James Lopez",
- "email": "james@jameslopez.es"
- },
- "committer": {
- "name": "James Lopez",
- "email": "james@jameslopez.es"
- }
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 1,
- "sha": "be93687618e4b132087f430a4d8fc3a609c9b77c",
- "message": "Merge branch 'master' into 'master'\r\n\r\nLFS object pointer.\r\n\r\n\r\n\r\nSee merge request !6",
- "authored_date": "2015-12-07T12:52:12.000+01:00",
- "committed_date": "2015-12-07T12:52:12.000+01:00",
- "commit_author": {
- "name": "Marin Jankovski",
- "email": "marin@gitlab.com"
- },
- "committer": {
- "name": "Marin Jankovski",
- "email": "marin@gitlab.com"
- }
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 2,
- "sha": "048721d90c449b244b7b4c53a9186b04330174ec",
- "message": "LFS object pointer.\n",
- "authored_date": "2015-12-07T11:54:28.000+01:00",
- "committed_date": "2015-12-07T11:54:28.000+01:00",
- "commit_author": {
- "name": "Marin Jankovski",
- "email": "maxlazio@gmail.com"
- },
- "committer": {
- "name": "Marin Jankovski",
- "email": "maxlazio@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 3,
- "sha": "5f923865dde3436854e9ceb9cdb7815618d4e849",
- "message": "GitLab currently doesn't support patches that involve a merge commit: add a commit here\n",
- "authored_date": "2015-11-13T16:27:12.000+01:00",
- "committed_date": "2015-11-13T16:27:12.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 4,
- "sha": "d2d430676773caa88cdaf7c55944073b2fd5561a",
- "message": "Merge branch 'add-svg' into 'master'\r\n\r\nAdd GitLab SVG\r\n\r\nAdded to test preview of sanitized SVG images\r\n\r\nSee merge request !5",
- "authored_date": "2015-11-13T08:50:17.000+01:00",
- "committed_date": "2015-11-13T08:50:17.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 5,
- "sha": "2ea1f3dec713d940208fb5ce4a38765ecb5d3f73",
- "message": "Add GitLab SVG\n",
- "authored_date": "2015-11-13T08:39:43.000+01:00",
- "committed_date": "2015-11-13T08:39:43.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 6,
- "sha": "59e29889be61e6e0e5e223bfa9ac2721d31605b8",
- "message": "Merge branch 'whitespace' into 'master'\r\n\r\nadd whitespace test file\r\n\r\nSorry, I did a mistake.\r\nGit ignore empty files.\r\nSo I add a new whitespace test file.\r\n\r\nSee merge request !4",
- "authored_date": "2015-11-13T07:21:40.000+01:00",
- "committed_date": "2015-11-13T07:21:40.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 7,
- "sha": "66eceea0db202bb39c4e445e8ca28689645366c5",
- "message": "add spaces in whitespace file\n",
- "authored_date": "2015-11-13T06:01:27.000+01:00",
- "committed_date": "2015-11-13T06:01:27.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 8,
- "sha": "08f22f255f082689c0d7d39d19205085311542bc",
- "message": "remove empty file.(beacase git ignore empty file)\nadd whitespace test file.\n",
- "authored_date": "2015-11-13T06:00:16.000+01:00",
- "committed_date": "2015-11-13T06:00:16.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 9,
- "sha": "19e2e9b4ef76b422ce1154af39a91323ccc57434",
- "message": "Merge branch 'whitespace' into 'master'\r\n\r\nadd spaces\r\n\r\nTo test this pull request.(https://github.com/gitlabhq/gitlabhq/pull/9757)\r\nJust add whitespaces.\r\n\r\nSee merge request !3",
- "authored_date": "2015-11-13T05:23:14.000+01:00",
- "committed_date": "2015-11-13T05:23:14.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 10,
- "sha": "c642fe9b8b9f28f9225d7ea953fe14e74748d53b",
- "message": "add whitespace in empty\n",
- "authored_date": "2015-11-13T05:08:45.000+01:00",
- "committed_date": "2015-11-13T05:08:45.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 11,
- "sha": "9a944d90955aaf45f6d0c88f30e27f8d2c41cec0",
- "message": "add empty file\n",
- "authored_date": "2015-11-13T05:08:04.000+01:00",
- "committed_date": "2015-11-13T05:08:04.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 12,
- "sha": "c7fbe50c7c7419d9701eebe64b1fdacc3df5b9dd",
- "message": "Add ISO-8859 test file\n",
- "authored_date": "2015-08-25T17:53:12.000+02:00",
- "committed_date": "2015-08-25T17:53:12.000+02:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@packetzoom.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@packetzoom.com"
- }
- }
- ],
- "merge_request_diff_files": [
- {
- "merge_request_diff_id": 12,
- "relative_order": 0,
- "utf8_diff": "--- a/CHANGELOG\n+++ b/CHANGELOG\n@@ -1,4 +1,6 @@\n-v 6.7.0\n+v6.8.0\n+\n+v6.7.0\n - Add support for Gemnasium as a Project Service (Olivier Gonzalez)\n - Add edit file button to MergeRequest diff\n - Public groups (Jason Hollingsworth)\n",
- "new_path": "CHANGELOG",
- "old_path": "CHANGELOG",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 1,
- "utf8_diff": "--- /dev/null\n+++ b/encoding/iso8859.txt\n@@ -0,0 +1 @@\n+Äü\n",
- "new_path": "encoding/iso8859.txt",
- "old_path": "encoding/iso8859.txt",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 2,
- "utf8_diff": "--- /dev/null\n+++ b/files/images/wm.svg\n@@ -0,0 +1,78 @@\n+<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n+<svg width=\"1300px\" height=\"680px\" viewBox=\"0 0 1300 680\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n+ <!-- Generator: Sketch 3.2.2 (9983) - http://www.bohemiancoding.com/sketch -->\n+ <title>wm</title>\n+ <desc>Created with Sketch.</desc>\n+ <defs>\n+ <path id=\"path-1\" d=\"M-69.8,1023.54607 L1675.19996,1023.54607 L1675.19996,0 L-69.8,0 L-69.8,1023.54607 L-69.8,1023.54607 Z\"></path>\n+ </defs>\n+ <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n+ <path d=\"M1300,680 L0,680 L0,0 L1300,0 L1300,680 L1300,680 Z\" id=\"bg\" fill=\"#30353E\" sketch:type=\"MSShapeGroup\"></path>\n+ <g id=\"gitlab_logo\" sketch:type=\"MSLayerGroup\" transform=\"translate(-262.000000, -172.000000)\">\n+ <g id=\"g10\" transform=\"translate(872.500000, 512.354581) scale(1, -1) translate(-872.500000, -512.354581) translate(0.000000, 0.290751)\">\n+ <g id=\"g12\" transform=\"translate(1218.022652, 440.744871)\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\">\n+ <path d=\"M-50.0233338,141.900706 L-69.07059,141.900706 L-69.0100967,0.155858152 L8.04444805,0.155858152 L8.04444805,17.6840847 L-49.9628405,17.6840847 L-50.0233338,141.900706 L-50.0233338,141.900706 Z\" id=\"path14\"></path>\n+ </g>\n+ <g id=\"g16\">\n+ <g id=\"g18-Clipped\">\n+ <mask id=\"mask-2\" sketch:name=\"path22\" fill=\"white\">\n+ <use xlink:href=\"#path-1\"></use>\n+ </mask>\n+ <g id=\"path22\"></g>\n+ <g id=\"g18\" mask=\"url(#mask-2)\">\n+ <g transform=\"translate(382.736659, 312.879425)\">\n+ <g id=\"g24\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(852.718192, 124.992771)\">\n+ <path d=\"M63.9833317,27.9148929 C59.2218085,22.9379001 51.2134221,17.9597442 40.3909323,17.9597442 C25.8888194,17.9597442 20.0453962,25.1013043 20.0453962,34.4074318 C20.0453962,48.4730484 29.7848226,55.1819277 50.5642821,55.1819277 C54.4602853,55.1819277 60.7364685,54.7492469 63.9833317,54.1002256 L63.9833317,27.9148929 L63.9833317,27.9148929 Z M44.2869356,113.827628 C28.9053426,113.827628 14.7975996,108.376082 3.78897657,99.301416 L10.5211864,87.6422957 C18.3131929,92.1866076 27.8374026,96.7320827 41.4728323,96.7320827 C57.0568452,96.7320827 63.9833317,88.7239978 63.9833317,75.3074024 L63.9833317,68.3821827 C60.9528485,69.0312039 54.6766653,69.4650479 50.7806621,69.4650479 C17.4476729,69.4650479 0.565379986,57.7791759 0.565379986,33.3245665 C0.565379986,11.4683685 13.9844297,0.43151772 34.3299658,0.43151772 C48.0351955,0.43151772 61.1692285,6.70771614 65.7143717,16.8780421 L69.1776149,3.02876588 L82.5978279,3.02876588 L82.5978279,75.5237428 C82.5978279,98.462806 72.6408582,113.827628 44.2869356,113.827628 L44.2869356,113.827628 Z\" id=\"path26\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g28\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(959.546624, 124.857151)\">\n+ <path d=\"M37.2266657,17.4468081 C30.0837992,17.4468081 23.8064527,18.3121698 19.0449295,20.4767371 L19.0449295,79.2306079 L19.0449295,86.0464943 C25.538656,91.457331 33.5470425,95.3526217 43.7203922,95.3526217 C62.1173451,95.3526217 69.2602116,82.3687072 69.2602116,61.3767077 C69.2602116,31.5135879 57.7885819,17.4468081 37.2266657,17.4468081 M45.2315622,113.963713 C28.208506,113.963713 19.0449295,102.384849 19.0449295,102.384849 L19.0449295,120.67143 L18.9844362,144.908535 L10.3967097,144.908535 L0.371103324,144.908535 L0.431596656,6.62629771 C9.73826309,2.73100702 22.5081728,0.567602823 36.3611458,0.567602823 C71.8579349,0.567602823 88.9566078,23.2891625 88.9566078,62.4584098 C88.9566078,93.4043948 73.1527248,113.963713 45.2315622,113.963713\" id=\"path30\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g32\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(509.576747, 125.294950)\">\n+ <path d=\"M68.636665,129.10638 C85.5189579,129.10638 96.3414476,123.480366 103.484314,117.853189 L111.669527,132.029302 C100.513161,141.811145 85.5073245,147.06845 69.5021849,147.06845 C29.0274926,147.06845 0.673569983,122.3975 0.673569983,72.6252464 C0.673569983,20.4709215 31.2622559,0.12910638 66.2553217,0.12910638 C83.7879179,0.12910638 98.7227909,4.24073748 108.462217,8.35236859 L108.063194,64.0763105 L108.063194,70.6502677 L108.063194,81.6057001 L56.1168719,81.6057001 L56.1168719,64.0763105 L89.2323178,64.0763105 L89.6313411,21.7701271 C85.3025779,19.6055598 77.7269514,17.8748364 67.554765,17.8748364 C39.4172223,17.8748364 20.5863462,35.5717154 20.5863462,72.8415868 C20.5863462,110.711628 40.0663623,129.10638 68.636665,129.10638\" id=\"path34\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g36\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(692.388992, 124.376085)\">\n+ <path d=\"M19.7766662,145.390067 L1.16216997,145.390067 L1.2226633,121.585642 L1.2226633,111.846834 L1.2226633,106.170806 L1.2226633,96.2656714 L1.2226633,39.5681976 L1.2226633,39.3518572 C1.2226633,16.4127939 11.1796331,1.04797161 39.5335557,1.04797161 C43.4504989,1.04797161 47.2836822,1.40388649 51.0051854,2.07965952 L51.0051854,18.7925385 C48.3109055,18.3796307 45.4351455,18.1446804 42.3476589,18.1446804 C26.763646,18.1446804 19.8371595,26.1516022 19.8371595,39.5681976 L19.8371595,96.2656714 L51.0051854,96.2656714 L51.0051854,111.846834 L19.8371595,111.846834 L19.7766662,145.390067 L19.7766662,145.390067 Z\" id=\"path38\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <path d=\"M646.318899,128.021188 L664.933395,128.021188 L664.933395,236.223966 L646.318899,236.223966 L646.318899,128.021188 L646.318899,128.021188 Z\" id=\"path40\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ <path d=\"M646.318899,251.154944 L664.933395,251.154944 L664.933395,269.766036 L646.318899,269.766036 L646.318899,251.154944 L646.318899,251.154944 Z\" id=\"path42\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ <g id=\"g44\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(0.464170, 0.676006)\">\n+ <path d=\"M429.269989,169.815599 L405.225053,243.802859 L357.571431,390.440955 C355.120288,397.984955 344.444378,397.984955 341.992071,390.440955 L294.337286,243.802859 L136.094873,243.802859 L88.4389245,390.440955 C85.9877812,397.984955 75.3118715,397.984955 72.8595648,390.440955 L25.2059427,243.802859 L1.16216997,169.815599 C-1.03187664,163.067173 1.37156997,155.674379 7.11261982,151.503429 L215.215498,0.336141836 L423.319539,151.503429 C429.060589,155.674379 431.462873,163.067173 429.269989,169.815599\" id=\"path46\" fill=\"#FC6D26\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g48\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(135.410135, 1.012147)\">\n+ <path d=\"M80.269998,0 L80.269998,0 L159.391786,243.466717 L1.14820997,243.466717 L80.269998,0 L80.269998,0 Z\" id=\"path50\" fill=\"#E24329\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g52\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012147)\">\n+ <g id=\"path54\"></g>\n+ </g>\n+ <g id=\"g56\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(24.893471, 1.012613)\">\n+ <path d=\"M190.786662,0 L111.664874,243.465554 L0.777106647,243.465554 L190.786662,0 L190.786662,0 Z\" id=\"path58\" fill=\"#FC6D26\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g60\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012613)\">\n+ <g id=\"path62\"></g>\n+ </g>\n+ <g id=\"g64\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(0.077245, 0.223203)\">\n+ <path d=\"M25.5933327,244.255313 L25.5933327,244.255313 L1.54839663,170.268052 C-0.644486651,163.519627 1.75779662,156.126833 7.50000981,151.957046 L215.602888,0.789758846 L25.5933327,244.255313 L25.5933327,244.255313 Z\" id=\"path66\" fill=\"#FCA326\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g68\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012147)\">\n+ <g id=\"path70\"></g>\n+ </g>\n+ <g id=\"g72\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(25.670578, 244.478283)\">\n+ <path d=\"M0,0 L110.887767,0 L63.2329818,146.638096 C60.7806751,154.183259 50.1047654,154.183259 47.6536221,146.638096 L0,0 L0,0 Z\" id=\"path74\" fill=\"#E24329\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g76\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012613)\">\n+ <path d=\"M0,0 L79.121788,243.465554 L190.009555,243.465554 L0,0 L0,0 Z\" id=\"path78\" fill=\"#FC6D26\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g80\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(214.902910, 0.223203)\">\n+ <path d=\"M190.786662,244.255313 L190.786662,244.255313 L214.831598,170.268052 C217.024481,163.519627 214.622198,156.126833 208.879985,151.957046 L0.777106647,0.789758846 L190.786662,244.255313 L190.786662,244.255313 Z\" id=\"path82\" fill=\"#FCA326\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g84\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(294.009575, 244.478283)\">\n+ <path d=\"M111.679997,0 L0.79222998,0 L48.4470155,146.638096 C50.8993221,154.183259 61.5752318,154.183259 64.0263751,146.638096 L111.679997,0 L111.679997,0 Z\" id=\"path86\" fill=\"#E24329\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+</svg>\n\\ No newline at end of file\n",
- "new_path": "files/images/wm.svg",
- "old_path": "files/images/wm.svg",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 3,
- "utf8_diff": "--- /dev/null\n+++ b/files/lfs/lfs_object.iso\n@@ -0,0 +1,4 @@\n+version https://git-lfs.github.com/spec/v1\n+oid sha256:91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897\n+size 1575078\n+\n",
- "new_path": "files/lfs/lfs_object.iso",
- "old_path": "files/lfs/lfs_object.iso",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 4,
- "utf8_diff": "--- /dev/null\n+++ b/files/whitespace\n@@ -0,0 +1 @@\n+test \n",
- "new_path": "files/whitespace",
- "old_path": "files/whitespace",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 12,
- "relative_order": 5,
- "utf8_diff": "--- /dev/null\n+++ b/test\n",
- "new_path": "test",
- "old_path": "test",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- }
- ],
- "merge_request_id": 12,
- "created_at": "2016-06-14T15:02:24.006Z",
- "updated_at": "2016-06-14T15:02:24.169Z",
- "base_commit_sha": "e56497bb5f03a90a51293fc6d516788730953899",
- "real_size": "6"
- },
- "events": [
- {
- "id": 226,
- "target_type": "MergeRequest",
- "target_id": 12,
- "project_id": 36,
- "created_at": "2016-06-14T15:02:24.253Z",
- "updated_at": "2016-06-14T15:02:24.253Z",
- "action": 1,
- "author_id": 1
- },
- {
- "id": 172,
- "target_type": "MergeRequest",
- "target_id": 12,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:24.253Z",
- "updated_at": "2016-06-14T15:02:24.253Z",
- "action": 1,
- "author_id": 1
- }
- ]
- },
- {
- "id": 11,
- "target_branch": "test-15",
- "source_branch": "'test'",
- "source_project_id": 5,
- "author_id": 16,
- "assignee_id": 16,
- "title": "Corporis provident similique perspiciatis dolores eos animi.",
- "created_at": "2016-06-14T15:02:23.767Z",
- "updated_at": "2016-06-14T15:03:00.475Z",
- "state": "opened",
- "merge_status": "unchecked",
- "target_project_id": 5,
- "iid": 3,
- "description": "Libero nesciunt mollitia quis odit eos vero quasi. Iure voluptatem ut sint pariatur voluptates ut aut. Laborum possimus unde illum ipsum eum.",
- "position": 0,
- "updated_by_id": null,
- "merge_error": null,
- "merge_params": {
- "force_remove_source_branch": null
- },
- "merge_when_pipeline_succeeds": false,
- "merge_user_id": null,
- "merge_commit_sha": null,
- "notes": [
- {
- "id": 809,
- "note": "Omnis ratione laboriosam dolores qui.",
- "noteable_type": "MergeRequest",
- "author_id": 26,
- "created_at": "2016-06-14T15:03:00.260Z",
- "updated_at": "2016-06-14T15:03:00.260Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 11,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 810,
- "note": "Voluptas voluptates pariatur dolores maxime est voluptas.",
- "noteable_type": "MergeRequest",
- "author_id": 25,
- "created_at": "2016-06-14T15:03:00.290Z",
- "updated_at": "2016-06-14T15:03:00.290Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 11,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 811,
- "note": "Sit perspiciatis facilis ipsum consequatur.",
- "noteable_type": "MergeRequest",
- "author_id": 22,
- "created_at": "2016-06-14T15:03:00.323Z",
- "updated_at": "2016-06-14T15:03:00.323Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 11,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 812,
- "note": "Ut neque aliquam nam et est.",
- "noteable_type": "MergeRequest",
- "author_id": 20,
- "created_at": "2016-06-14T15:03:00.349Z",
- "updated_at": "2016-06-14T15:03:00.349Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 11,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 813,
- "note": "Et debitis rerum minima sit aut dolorem.",
- "noteable_type": "MergeRequest",
- "author_id": 16,
- "created_at": "2016-06-14T15:03:00.374Z",
- "updated_at": "2016-06-14T15:03:00.374Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 11,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 814,
- "note": "Ea nisi earum fugit iste aperiam consequatur.",
- "noteable_type": "MergeRequest",
- "author_id": 15,
- "created_at": "2016-06-14T15:03:00.397Z",
- "updated_at": "2016-06-14T15:03:00.397Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 11,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 815,
- "note": "Amet ratione consequatur laudantium rerum voluptas est nobis.",
- "noteable_type": "MergeRequest",
- "author_id": 6,
- "created_at": "2016-06-14T15:03:00.450Z",
- "updated_at": "2016-06-14T15:03:00.450Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 11,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 816,
- "note": "Ab ducimus cumque quia dolorem vitae sint beatae rerum.",
- "noteable_type": "MergeRequest",
- "author_id": 1,
- "created_at": "2016-06-14T15:03:00.474Z",
- "updated_at": "2016-06-14T15:03:00.474Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 11,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ],
- "merge_request_diff": {
- "id": 11,
- "state": "empty",
- "merge_request_diff_commits": [
-
- ],
- "merge_request_diff_files": [
-
- ],
- "merge_request_id": 11,
- "created_at": "2016-06-14T15:02:23.772Z",
- "updated_at": "2016-06-14T15:02:23.833Z",
- "base_commit_sha": "e56497bb5f03a90a51293fc6d516788730953899",
- "real_size": null
- },
- "events": [
- {
- "id": 227,
- "target_type": "MergeRequest",
- "target_id": 11,
- "project_id": 36,
- "created_at": "2016-06-14T15:02:23.865Z",
- "updated_at": "2016-06-14T15:02:23.865Z",
- "action": 1,
- "author_id": 16
- },
- {
- "id": 171,
- "target_type": "MergeRequest",
- "target_id": 11,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:23.865Z",
- "updated_at": "2016-06-14T15:02:23.865Z",
- "action": 1,
- "author_id": 16
- }
- ]
- },
- {
- "id": 10,
- "target_branch": "feature",
- "source_branch": "test-5",
- "source_project_id": 5,
- "author_id": 20,
- "assignee_id": 25,
- "title": "Eligendi reprehenderit doloribus quia et sit id.",
- "created_at": "2016-06-14T15:02:23.014Z",
- "updated_at": "2016-06-14T15:03:00.685Z",
- "state": "opened",
- "merge_status": "unchecked",
- "target_project_id": 5,
- "iid": 2,
- "description": "Ut dolor quia aliquid dolore et nisi. Est minus suscipit enim quaerat sapiente consequatur rerum. Eveniet provident consequatur dolor accusantium reiciendis.",
- "position": 0,
- "updated_by_id": null,
- "merge_error": null,
- "merge_params": {
- "force_remove_source_branch": null
- },
- "merge_when_pipeline_succeeds": false,
- "merge_user_id": null,
- "merge_commit_sha": null,
- "notes": [
- {
- "id": 817,
- "note": "Recusandae et voluptas enim qui et.",
- "noteable_type": "MergeRequest",
- "author_id": 26,
- "created_at": "2016-06-14T15:03:00.510Z",
- "updated_at": "2016-06-14T15:03:00.510Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 10,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 818,
- "note": "Asperiores dolorem rerum ipsum totam.",
- "noteable_type": "MergeRequest",
- "author_id": 25,
- "created_at": "2016-06-14T15:03:00.538Z",
- "updated_at": "2016-06-14T15:03:00.538Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 10,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 819,
- "note": "Qui quam et iure quasi provident cumque itaque sequi.",
- "noteable_type": "MergeRequest",
- "author_id": 22,
- "created_at": "2016-06-14T15:03:00.562Z",
- "updated_at": "2016-06-14T15:03:00.562Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 10,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 820,
- "note": "Sint accusantium aliquid iste qui iusto minus vel.",
- "noteable_type": "MergeRequest",
- "author_id": 20,
- "created_at": "2016-06-14T15:03:00.585Z",
- "updated_at": "2016-06-14T15:03:00.585Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 10,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 821,
- "note": "Dolor corrupti dolorem blanditiis voluptas.",
- "noteable_type": "MergeRequest",
- "author_id": 16,
- "created_at": "2016-06-14T15:03:00.610Z",
- "updated_at": "2016-06-14T15:03:00.610Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 10,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 822,
- "note": "Est perferendis assumenda aliquam aliquid sit ipsum ullam aut.",
- "noteable_type": "MergeRequest",
- "author_id": 15,
- "created_at": "2016-06-14T15:03:00.635Z",
- "updated_at": "2016-06-14T15:03:00.635Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 10,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 823,
- "note": "Hic neque reiciendis quaerat maiores.",
- "noteable_type": "MergeRequest",
- "author_id": 6,
- "created_at": "2016-06-14T15:03:00.659Z",
- "updated_at": "2016-06-14T15:03:00.659Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 10,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 824,
- "note": "Sequi architecto doloribus ut vel autem.",
- "noteable_type": "MergeRequest",
- "author_id": 1,
- "created_at": "2016-06-14T15:03:00.683Z",
- "updated_at": "2016-06-14T15:03:00.683Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 10,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ],
- "merge_request_diff": {
- "id": 10,
- "state": "collected",
- "merge_request_diff_commits": [
- {
- "merge_request_diff_id": 10,
- "relative_order": 0,
- "sha": "f998ac87ac9244f15e9c15109a6f4e62a54b779d",
- "message": "fixes #10\n",
- "authored_date": "2016-01-19T14:43:23.000+01:00",
- "committed_date": "2016-01-19T14:43:23.000+01:00",
- "commit_author": {
- "name": "James Lopez",
- "email": "james@jameslopez.es"
- },
- "committer": {
- "name": "James Lopez",
- "email": "james@jameslopez.es"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 1,
- "sha": "be93687618e4b132087f430a4d8fc3a609c9b77c",
- "message": "Merge branch 'master' into 'master'\r\n\r\nLFS object pointer.\r\n\r\n\r\n\r\nSee merge request !6",
- "authored_date": "2015-12-07T12:52:12.000+01:00",
- "committed_date": "2015-12-07T12:52:12.000+01:00",
- "commit_author": {
- "name": "Marin Jankovski",
- "email": "marin@gitlab.com"
- },
- "committer": {
- "name": "Marin Jankovski",
- "email": "marin@gitlab.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 2,
- "sha": "048721d90c449b244b7b4c53a9186b04330174ec",
- "message": "LFS object pointer.\n",
- "authored_date": "2015-12-07T11:54:28.000+01:00",
- "committed_date": "2015-12-07T11:54:28.000+01:00",
- "commit_author": {
- "name": "Marin Jankovski",
- "email": "maxlazio@gmail.com"
- },
- "committer": {
- "name": "Marin Jankovski",
- "email": "maxlazio@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 3,
- "sha": "5f923865dde3436854e9ceb9cdb7815618d4e849",
- "message": "GitLab currently doesn't support patches that involve a merge commit: add a commit here\n",
- "authored_date": "2015-11-13T16:27:12.000+01:00",
- "committed_date": "2015-11-13T16:27:12.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 4,
- "sha": "d2d430676773caa88cdaf7c55944073b2fd5561a",
- "message": "Merge branch 'add-svg' into 'master'\r\n\r\nAdd GitLab SVG\r\n\r\nAdded to test preview of sanitized SVG images\r\n\r\nSee merge request !5",
- "authored_date": "2015-11-13T08:50:17.000+01:00",
- "committed_date": "2015-11-13T08:50:17.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 5,
- "sha": "2ea1f3dec713d940208fb5ce4a38765ecb5d3f73",
- "message": "Add GitLab SVG\n",
- "authored_date": "2015-11-13T08:39:43.000+01:00",
- "committed_date": "2015-11-13T08:39:43.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 6,
- "sha": "59e29889be61e6e0e5e223bfa9ac2721d31605b8",
- "message": "Merge branch 'whitespace' into 'master'\r\n\r\nadd whitespace test file\r\n\r\nSorry, I did a mistake.\r\nGit ignore empty files.\r\nSo I add a new whitespace test file.\r\n\r\nSee merge request !4",
- "authored_date": "2015-11-13T07:21:40.000+01:00",
- "committed_date": "2015-11-13T07:21:40.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 7,
- "sha": "66eceea0db202bb39c4e445e8ca28689645366c5",
- "message": "add spaces in whitespace file\n",
- "authored_date": "2015-11-13T06:01:27.000+01:00",
- "committed_date": "2015-11-13T06:01:27.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 8,
- "sha": "08f22f255f082689c0d7d39d19205085311542bc",
- "message": "remove empty file.(beacase git ignore empty file)\nadd whitespace test file.\n",
- "authored_date": "2015-11-13T06:00:16.000+01:00",
- "committed_date": "2015-11-13T06:00:16.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 9,
- "sha": "19e2e9b4ef76b422ce1154af39a91323ccc57434",
- "message": "Merge branch 'whitespace' into 'master'\r\n\r\nadd spaces\r\n\r\nTo test this pull request.(https://github.com/gitlabhq/gitlabhq/pull/9757)\r\nJust add whitespaces.\r\n\r\nSee merge request !3",
- "authored_date": "2015-11-13T05:23:14.000+01:00",
- "committed_date": "2015-11-13T05:23:14.000+01:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 10,
- "sha": "c642fe9b8b9f28f9225d7ea953fe14e74748d53b",
- "message": "add whitespace in empty\n",
- "authored_date": "2015-11-13T05:08:45.000+01:00",
- "committed_date": "2015-11-13T05:08:45.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 11,
- "sha": "9a944d90955aaf45f6d0c88f30e27f8d2c41cec0",
- "message": "add empty file\n",
- "authored_date": "2015-11-13T05:08:04.000+01:00",
- "committed_date": "2015-11-13T05:08:04.000+01:00",
- "commit_author": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- },
- "committer": {
- "name": "윤민식",
- "email": "minsik.yoon@samsung.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 12,
- "sha": "c7fbe50c7c7419d9701eebe64b1fdacc3df5b9dd",
- "message": "Add ISO-8859 test file\n",
- "authored_date": "2015-08-25T17:53:12.000+02:00",
- "committed_date": "2015-08-25T17:53:12.000+02:00",
- "commit_author": {
- "name": "Stan Hu",
- "email": "stanhu@packetzoom.com"
- },
- "committer": {
- "name": "Stan Hu",
- "email": "stanhu@packetzoom.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 13,
- "sha": "e56497bb5f03a90a51293fc6d516788730953899",
- "message": "Merge branch 'tree_helper_spec' into 'master'\n\nAdd directory structure for tree_helper spec\n\nThis directory structure is needed for a testing the method flatten_tree(tree) in the TreeHelper module\n\nSee [merge request #275](https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/275#note_732774)\n\nSee merge request !2\n",
- "authored_date": "2015-01-10T22:23:29.000+01:00",
- "committed_date": "2015-01-10T22:23:29.000+01:00",
- "commit_author": {
- "name": "Sytse Sijbrandij",
- "email": "sytse@gitlab.com"
- },
- "committer": {
- "name": "Sytse Sijbrandij",
- "email": "sytse@gitlab.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 14,
- "sha": "4cd80ccab63c82b4bad16faa5193fbd2aa06df40",
- "message": "add directory structure for tree_helper spec\n",
- "authored_date": "2015-01-10T21:28:18.000+01:00",
- "committed_date": "2015-01-10T21:28:18.000+01:00",
- "commit_author": {
- "name": "marmis85",
- "email": "marmis85@gmail.com"
- },
- "committer": {
- "name": "marmis85",
- "email": "marmis85@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 16,
- "sha": "5937ac0a7beb003549fc5fd26fc247adbce4a52e",
- "message": "Add submodule from gitlab.com\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T10:01:38.000+01:00",
- "committed_date": "2014-02-27T10:01:38.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 17,
- "sha": "570e7b2abdd848b95f2f578043fc23bd6f6fd24d",
- "message": "Change some files\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T09:57:31.000+01:00",
- "committed_date": "2014-02-27T09:57:31.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 18,
- "sha": "6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9",
- "message": "More submodules\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T09:54:21.000+01:00",
- "committed_date": "2014-02-27T09:54:21.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 19,
- "sha": "d14d6c0abdd253381df51a723d58691b2ee1ab08",
- "message": "Remove ds_store files\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T09:49:50.000+01:00",
- "committed_date": "2014-02-27T09:49:50.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 20,
- "sha": "c1acaa58bbcbc3eafe538cb8274ba387047b69f8",
- "message": "Ignore DS files\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
- "authored_date": "2014-02-27T09:48:32.000+01:00",
- "committed_date": "2014-02-27T09:48:32.000+01:00",
- "commit_author": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- },
- "committer": {
- "name": "Dmitriy Zaporozhets",
- "email": "dmitriy.zaporozhets@gmail.com"
- }
- }
- ],
- "merge_request_diff_files": [
- {
- "merge_request_diff_id": 10,
- "relative_order": 0,
- "utf8_diff": "Binary files a/.DS_Store and /dev/null differ\n",
- "new_path": ".DS_Store",
- "old_path": ".DS_Store",
- "a_mode": "100644",
- "b_mode": "0",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": true,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 1,
- "utf8_diff": "--- a/.gitignore\n+++ b/.gitignore\n@@ -17,3 +17,4 @@ rerun.txt\n pickle-email-*.html\n .project\n config/initializers/secret_token.rb\n+.DS_Store\n",
- "new_path": ".gitignore",
- "old_path": ".gitignore",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 2,
- "utf8_diff": "--- a/.gitmodules\n+++ b/.gitmodules\n@@ -1,3 +1,9 @@\n [submodule \"six\"]\n \tpath = six\n \turl = git://github.com/randx/six.git\n+[submodule \"gitlab-shell\"]\n+\tpath = gitlab-shell\n+\turl = https://github.com/gitlabhq/gitlab-shell.git\n+[submodule \"gitlab-grack\"]\n+\tpath = gitlab-grack\n+\turl = https://gitlab.com/gitlab-org/gitlab-grack.git\n",
- "new_path": ".gitmodules",
- "old_path": ".gitmodules",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 3,
- "utf8_diff": "--- a/CHANGELOG\n+++ b/CHANGELOG\n@@ -1,4 +1,6 @@\n-v 6.7.0\n+v6.8.0\n+\n+v6.7.0\n - Add support for Gemnasium as a Project Service (Olivier Gonzalez)\n - Add edit file button to MergeRequest diff\n - Public groups (Jason Hollingsworth)\n",
- "new_path": "CHANGELOG",
- "old_path": "CHANGELOG",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 4,
- "utf8_diff": "--- /dev/null\n+++ b/encoding/iso8859.txt\n@@ -0,0 +1 @@\n+Äü\n",
- "new_path": "encoding/iso8859.txt",
- "old_path": "encoding/iso8859.txt",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 5,
- "utf8_diff": "Binary files a/files/.DS_Store and /dev/null differ\n",
- "new_path": "files/.DS_Store",
- "old_path": "files/.DS_Store",
- "a_mode": "100644",
- "b_mode": "0",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": true,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 6,
- "utf8_diff": "--- /dev/null\n+++ b/files/images/wm.svg\n@@ -0,0 +1,78 @@\n+<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n+<svg width=\"1300px\" height=\"680px\" viewBox=\"0 0 1300 680\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n+ <!-- Generator: Sketch 3.2.2 (9983) - http://www.bohemiancoding.com/sketch -->\n+ <title>wm</title>\n+ <desc>Created with Sketch.</desc>\n+ <defs>\n+ <path id=\"path-1\" d=\"M-69.8,1023.54607 L1675.19996,1023.54607 L1675.19996,0 L-69.8,0 L-69.8,1023.54607 L-69.8,1023.54607 Z\"></path>\n+ </defs>\n+ <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n+ <path d=\"M1300,680 L0,680 L0,0 L1300,0 L1300,680 L1300,680 Z\" id=\"bg\" fill=\"#30353E\" sketch:type=\"MSShapeGroup\"></path>\n+ <g id=\"gitlab_logo\" sketch:type=\"MSLayerGroup\" transform=\"translate(-262.000000, -172.000000)\">\n+ <g id=\"g10\" transform=\"translate(872.500000, 512.354581) scale(1, -1) translate(-872.500000, -512.354581) translate(0.000000, 0.290751)\">\n+ <g id=\"g12\" transform=\"translate(1218.022652, 440.744871)\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\">\n+ <path d=\"M-50.0233338,141.900706 L-69.07059,141.900706 L-69.0100967,0.155858152 L8.04444805,0.155858152 L8.04444805,17.6840847 L-49.9628405,17.6840847 L-50.0233338,141.900706 L-50.0233338,141.900706 Z\" id=\"path14\"></path>\n+ </g>\n+ <g id=\"g16\">\n+ <g id=\"g18-Clipped\">\n+ <mask id=\"mask-2\" sketch:name=\"path22\" fill=\"white\">\n+ <use xlink:href=\"#path-1\"></use>\n+ </mask>\n+ <g id=\"path22\"></g>\n+ <g id=\"g18\" mask=\"url(#mask-2)\">\n+ <g transform=\"translate(382.736659, 312.879425)\">\n+ <g id=\"g24\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(852.718192, 124.992771)\">\n+ <path d=\"M63.9833317,27.9148929 C59.2218085,22.9379001 51.2134221,17.9597442 40.3909323,17.9597442 C25.8888194,17.9597442 20.0453962,25.1013043 20.0453962,34.4074318 C20.0453962,48.4730484 29.7848226,55.1819277 50.5642821,55.1819277 C54.4602853,55.1819277 60.7364685,54.7492469 63.9833317,54.1002256 L63.9833317,27.9148929 L63.9833317,27.9148929 Z M44.2869356,113.827628 C28.9053426,113.827628 14.7975996,108.376082 3.78897657,99.301416 L10.5211864,87.6422957 C18.3131929,92.1866076 27.8374026,96.7320827 41.4728323,96.7320827 C57.0568452,96.7320827 63.9833317,88.7239978 63.9833317,75.3074024 L63.9833317,68.3821827 C60.9528485,69.0312039 54.6766653,69.4650479 50.7806621,69.4650479 C17.4476729,69.4650479 0.565379986,57.7791759 0.565379986,33.3245665 C0.565379986,11.4683685 13.9844297,0.43151772 34.3299658,0.43151772 C48.0351955,0.43151772 61.1692285,6.70771614 65.7143717,16.8780421 L69.1776149,3.02876588 L82.5978279,3.02876588 L82.5978279,75.5237428 C82.5978279,98.462806 72.6408582,113.827628 44.2869356,113.827628 L44.2869356,113.827628 Z\" id=\"path26\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g28\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(959.546624, 124.857151)\">\n+ <path d=\"M37.2266657,17.4468081 C30.0837992,17.4468081 23.8064527,18.3121698 19.0449295,20.4767371 L19.0449295,79.2306079 L19.0449295,86.0464943 C25.538656,91.457331 33.5470425,95.3526217 43.7203922,95.3526217 C62.1173451,95.3526217 69.2602116,82.3687072 69.2602116,61.3767077 C69.2602116,31.5135879 57.7885819,17.4468081 37.2266657,17.4468081 M45.2315622,113.963713 C28.208506,113.963713 19.0449295,102.384849 19.0449295,102.384849 L19.0449295,120.67143 L18.9844362,144.908535 L10.3967097,144.908535 L0.371103324,144.908535 L0.431596656,6.62629771 C9.73826309,2.73100702 22.5081728,0.567602823 36.3611458,0.567602823 C71.8579349,0.567602823 88.9566078,23.2891625 88.9566078,62.4584098 C88.9566078,93.4043948 73.1527248,113.963713 45.2315622,113.963713\" id=\"path30\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g32\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(509.576747, 125.294950)\">\n+ <path d=\"M68.636665,129.10638 C85.5189579,129.10638 96.3414476,123.480366 103.484314,117.853189 L111.669527,132.029302 C100.513161,141.811145 85.5073245,147.06845 69.5021849,147.06845 C29.0274926,147.06845 0.673569983,122.3975 0.673569983,72.6252464 C0.673569983,20.4709215 31.2622559,0.12910638 66.2553217,0.12910638 C83.7879179,0.12910638 98.7227909,4.24073748 108.462217,8.35236859 L108.063194,64.0763105 L108.063194,70.6502677 L108.063194,81.6057001 L56.1168719,81.6057001 L56.1168719,64.0763105 L89.2323178,64.0763105 L89.6313411,21.7701271 C85.3025779,19.6055598 77.7269514,17.8748364 67.554765,17.8748364 C39.4172223,17.8748364 20.5863462,35.5717154 20.5863462,72.8415868 C20.5863462,110.711628 40.0663623,129.10638 68.636665,129.10638\" id=\"path34\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g36\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(692.388992, 124.376085)\">\n+ <path d=\"M19.7766662,145.390067 L1.16216997,145.390067 L1.2226633,121.585642 L1.2226633,111.846834 L1.2226633,106.170806 L1.2226633,96.2656714 L1.2226633,39.5681976 L1.2226633,39.3518572 C1.2226633,16.4127939 11.1796331,1.04797161 39.5335557,1.04797161 C43.4504989,1.04797161 47.2836822,1.40388649 51.0051854,2.07965952 L51.0051854,18.7925385 C48.3109055,18.3796307 45.4351455,18.1446804 42.3476589,18.1446804 C26.763646,18.1446804 19.8371595,26.1516022 19.8371595,39.5681976 L19.8371595,96.2656714 L51.0051854,96.2656714 L51.0051854,111.846834 L19.8371595,111.846834 L19.7766662,145.390067 L19.7766662,145.390067 Z\" id=\"path38\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <path d=\"M646.318899,128.021188 L664.933395,128.021188 L664.933395,236.223966 L646.318899,236.223966 L646.318899,128.021188 L646.318899,128.021188 Z\" id=\"path40\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ <path d=\"M646.318899,251.154944 L664.933395,251.154944 L664.933395,269.766036 L646.318899,269.766036 L646.318899,251.154944 L646.318899,251.154944 Z\" id=\"path42\" fill=\"#8C929D\" sketch:type=\"MSShapeGroup\"></path>\n+ <g id=\"g44\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(0.464170, 0.676006)\">\n+ <path d=\"M429.269989,169.815599 L405.225053,243.802859 L357.571431,390.440955 C355.120288,397.984955 344.444378,397.984955 341.992071,390.440955 L294.337286,243.802859 L136.094873,243.802859 L88.4389245,390.440955 C85.9877812,397.984955 75.3118715,397.984955 72.8595648,390.440955 L25.2059427,243.802859 L1.16216997,169.815599 C-1.03187664,163.067173 1.37156997,155.674379 7.11261982,151.503429 L215.215498,0.336141836 L423.319539,151.503429 C429.060589,155.674379 431.462873,163.067173 429.269989,169.815599\" id=\"path46\" fill=\"#FC6D26\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g48\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(135.410135, 1.012147)\">\n+ <path d=\"M80.269998,0 L80.269998,0 L159.391786,243.466717 L1.14820997,243.466717 L80.269998,0 L80.269998,0 Z\" id=\"path50\" fill=\"#E24329\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g52\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012147)\">\n+ <g id=\"path54\"></g>\n+ </g>\n+ <g id=\"g56\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(24.893471, 1.012613)\">\n+ <path d=\"M190.786662,0 L111.664874,243.465554 L0.777106647,243.465554 L190.786662,0 L190.786662,0 Z\" id=\"path58\" fill=\"#FC6D26\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g60\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012613)\">\n+ <g id=\"path62\"></g>\n+ </g>\n+ <g id=\"g64\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(0.077245, 0.223203)\">\n+ <path d=\"M25.5933327,244.255313 L25.5933327,244.255313 L1.54839663,170.268052 C-0.644486651,163.519627 1.75779662,156.126833 7.50000981,151.957046 L215.602888,0.789758846 L25.5933327,244.255313 L25.5933327,244.255313 Z\" id=\"path66\" fill=\"#FCA326\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g68\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012147)\">\n+ <g id=\"path70\"></g>\n+ </g>\n+ <g id=\"g72\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(25.670578, 244.478283)\">\n+ <path d=\"M0,0 L110.887767,0 L63.2329818,146.638096 C60.7806751,154.183259 50.1047654,154.183259 47.6536221,146.638096 L0,0 L0,0 Z\" id=\"path74\" fill=\"#E24329\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g76\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(215.680133, 1.012613)\">\n+ <path d=\"M0,0 L79.121788,243.465554 L190.009555,243.465554 L0,0 L0,0 Z\" id=\"path78\" fill=\"#FC6D26\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g80\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(214.902910, 0.223203)\">\n+ <path d=\"M190.786662,244.255313 L190.786662,244.255313 L214.831598,170.268052 C217.024481,163.519627 214.622198,156.126833 208.879985,151.957046 L0.777106647,0.789758846 L190.786662,244.255313 L190.786662,244.255313 Z\" id=\"path82\" fill=\"#FCA326\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ <g id=\"g84\" stroke-width=\"1\" fill=\"none\" sketch:type=\"MSLayerGroup\" transform=\"translate(294.009575, 244.478283)\">\n+ <path d=\"M111.679997,0 L0.79222998,0 L48.4470155,146.638096 C50.8993221,154.183259 61.5752318,154.183259 64.0263751,146.638096 L111.679997,0 L111.679997,0 Z\" id=\"path86\" fill=\"#E24329\" sketch:type=\"MSShapeGroup\"></path>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+ </g>\n+</svg>\n\\ No newline at end of file\n",
- "new_path": "files/images/wm.svg",
- "old_path": "files/images/wm.svg",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 7,
- "utf8_diff": "--- /dev/null\n+++ b/files/lfs/lfs_object.iso\n@@ -0,0 +1,4 @@\n+version https://git-lfs.github.com/spec/v1\n+oid sha256:91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897\n+size 1575078\n+\n",
- "new_path": "files/lfs/lfs_object.iso",
- "old_path": "files/lfs/lfs_object.iso",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 8,
- "utf8_diff": "--- a/files/ruby/popen.rb\n+++ b/files/ruby/popen.rb\n@@ -6,12 +6,18 @@ module Popen\n \n def popen(cmd, path=nil)\n unless cmd.is_a?(Array)\n- raise \"System commands must be given as an array of strings\"\n+ raise RuntimeError, \"System commands must be given as an array of strings\"\n end\n \n path ||= Dir.pwd\n- vars = { \"PWD\" => path }\n- options = { chdir: path }\n+\n+ vars = {\n+ \"PWD\" => path\n+ }\n+\n+ options = {\n+ chdir: path\n+ }\n \n unless File.directory?(path)\n FileUtils.mkdir_p(path)\n@@ -19,6 +25,7 @@ module Popen\n \n @cmd_output = \"\"\n @cmd_status = 0\n+\n Open3.popen3(vars, *cmd, options) do |stdin, stdout, stderr, wait_thr|\n @cmd_output << stdout.read\n @cmd_output << stderr.read\n",
- "new_path": "files/ruby/popen.rb",
- "old_path": "files/ruby/popen.rb",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 9,
- "utf8_diff": "--- a/files/ruby/regex.rb\n+++ b/files/ruby/regex.rb\n@@ -19,14 +19,12 @@ module Gitlab\n end\n \n def archive_formats_regex\n- #|zip|tar| tar.gz | tar.bz2 |\n- /(zip|tar|tar\\.gz|tgz|gz|tar\\.bz2|tbz|tbz2|tb2|bz2)/\n+ /(zip|tar|7z|tar\\.gz|tgz|gz|tar\\.bz2|tbz|tbz2|tb2|bz2)/\n end\n \n def git_reference_regex\n # Valid git ref regex, see:\n # https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html\n-\n %r{\n (?!\n (?# doesn't begins with)\n",
- "new_path": "files/ruby/regex.rb",
- "old_path": "files/ruby/regex.rb",
- "a_mode": "100644",
- "b_mode": "100644",
- "new_file": false,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 10,
- "utf8_diff": "--- /dev/null\n+++ b/files/whitespace\n@@ -0,0 +1 @@\n+test \n",
- "new_path": "files/whitespace",
- "old_path": "files/whitespace",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 11,
- "utf8_diff": "--- /dev/null\n+++ b/foo/bar/.gitkeep\n",
- "new_path": "foo/bar/.gitkeep",
- "old_path": "foo/bar/.gitkeep",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 12,
- "utf8_diff": "--- /dev/null\n+++ b/gitlab-grack\n@@ -0,0 +1 @@\n+Subproject commit 645f6c4c82fd3f5e06f67134450a570b795e55a6\n",
- "new_path": "gitlab-grack",
- "old_path": "gitlab-grack",
- "a_mode": "0",
- "b_mode": "160000",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 13,
- "utf8_diff": "--- /dev/null\n+++ b/gitlab-shell\n@@ -0,0 +1 @@\n+Subproject commit 79bceae69cb5750d6567b223597999bfa91cb3b9\n",
- "new_path": "gitlab-shell",
- "old_path": "gitlab-shell",
- "a_mode": "0",
- "b_mode": "160000",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- },
- {
- "merge_request_diff_id": 10,
- "relative_order": 14,
- "utf8_diff": "--- /dev/null\n+++ b/test\n",
- "new_path": "test",
- "old_path": "test",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- }
- ],
- "merge_request_id": 10,
- "created_at": "2016-06-14T15:02:23.019Z",
- "updated_at": "2016-06-14T15:02:23.493Z",
- "base_commit_sha": "ae73cb07c9eeaf35924a10f713b364d32b2dd34f",
- "real_size": "15"
- },
- "events": [
- {
- "id": 228,
- "target_type": "MergeRequest",
- "target_id": 10,
- "project_id": 36,
- "created_at": "2016-06-14T15:02:23.660Z",
- "updated_at": "2016-06-14T15:02:23.660Z",
- "action": 1,
- "author_id": 1
- },
- {
- "id": 170,
- "target_type": "MergeRequest",
- "target_id": 10,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:23.660Z",
- "updated_at": "2016-06-14T15:02:23.660Z",
- "action": 1,
- "author_id": 20
- }
- ]
- },
- {
- "id": 9,
- "target_branch": "test-6",
- "source_branch": "test-12",
- "source_project_id": 5,
- "author_id": 16,
- "assignee_id": 6,
- "title": "Et ipsam voluptas velit sequi illum ut.",
- "created_at": "2016-06-14T15:02:22.825Z",
- "updated_at": "2016-06-14T15:03:00.904Z",
- "state": "opened",
- "merge_status": "unchecked",
- "target_project_id": 5,
- "iid": 1,
- "description": "Eveniet nihil ratione veniam similique qui aut sapiente tempora. Sed praesentium iusto dignissimos possimus id repudiandae quo nihil. Qui doloremque autem et iure fugit.",
- "position": 0,
- "updated_by_id": null,
- "merge_error": null,
- "merge_params": {
- "force_remove_source_branch": null
- },
- "merge_when_pipeline_succeeds": false,
- "merge_user_id": null,
- "merge_commit_sha": null,
- "notes": [
- {
- "id": 825,
- "note": "Aliquid voluptatem consequatur voluptas ex perspiciatis.",
- "noteable_type": "MergeRequest",
- "author_id": 26,
- "created_at": "2016-06-14T15:03:00.722Z",
- "updated_at": "2016-06-14T15:03:00.722Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 9,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 4"
- },
- "events": [
-
- ]
- },
- {
- "id": 826,
- "note": "Itaque optio voluptatem praesentium voluptas.",
- "noteable_type": "MergeRequest",
- "author_id": 25,
- "created_at": "2016-06-14T15:03:00.745Z",
- "updated_at": "2016-06-14T15:03:00.745Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 9,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 3"
- },
- "events": [
-
- ]
- },
- {
- "id": 827,
- "note": "Ut est corporis fuga asperiores delectus excepturi aperiam.",
- "noteable_type": "MergeRequest",
- "author_id": 22,
- "created_at": "2016-06-14T15:03:00.771Z",
- "updated_at": "2016-06-14T15:03:00.771Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 9,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "User 0"
- },
- "events": [
-
- ]
- },
- {
- "id": 828,
- "note": "Similique ea dolore officiis temporibus.",
- "noteable_type": "MergeRequest",
- "author_id": 20,
- "created_at": "2016-06-14T15:03:00.798Z",
- "updated_at": "2016-06-14T15:03:00.798Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 9,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ottis Schuster II"
- },
- "events": [
-
- ]
- },
- {
- "id": 829,
- "note": "Qui laudantium qui quae quis.",
- "noteable_type": "MergeRequest",
- "author_id": 16,
- "created_at": "2016-06-14T15:03:00.828Z",
- "updated_at": "2016-06-14T15:03:00.828Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 9,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Rhett Emmerich IV"
- },
- "events": [
-
- ]
- },
- {
- "id": 830,
- "note": "Et vel voluptas amet laborum qui soluta.",
- "noteable_type": "MergeRequest",
- "author_id": 15,
- "created_at": "2016-06-14T15:03:00.850Z",
- "updated_at": "2016-06-14T15:03:00.850Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 9,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Burdette Bernier"
- },
- "events": [
-
- ]
- },
- {
- "id": 831,
- "note": "Enim ad consequuntur assumenda provident voluptatem similique deleniti.",
- "noteable_type": "MergeRequest",
- "author_id": 6,
- "created_at": "2016-06-14T15:03:00.876Z",
- "updated_at": "2016-06-14T15:03:00.876Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 9,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Ari Wintheiser"
- },
- "events": [
-
- ]
- },
- {
- "id": 832,
- "note": "Officiis sequi commodi pariatur totam fugiat voluptas corporis dignissimos.",
- "noteable_type": "MergeRequest",
- "author_id": 1,
- "created_at": "2016-06-14T15:03:00.902Z",
- "updated_at": "2016-06-14T15:03:00.902Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 9,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- },
- "events": [
-
- ]
- }
- ],
- "merge_request_diff": {
- "id": 9,
- "state": "collected",
- "merge_request_diff_commits": [
- {
- "merge_request_diff_id": 9,
- "relative_order": 0,
- "sha": "a4e5dfebf42e34596526acb8611bc7ed80e4eb3f",
- "message": "fixes #10\n",
- "authored_date": "2016-01-19T15:44:02.000+01:00",
- "committed_date": "2016-01-19T15:44:02.000+01:00",
- "commit_author": {
- "name": "James Lopez",
- "email": "james@jameslopez.es"
- },
- "committer": {
- "name": "James Lopez",
- "email": "james@jameslopez.es"
- }
- }
- ],
- "merge_request_diff_files": [
- {
- "merge_request_diff_id": 9,
- "relative_order": 0,
- "utf8_diff": "--- /dev/null\n+++ b/test\n",
- "new_path": "test",
- "old_path": "test",
- "a_mode": "0",
- "b_mode": "100644",
- "new_file": true,
- "renamed_file": false,
- "deleted_file": false,
- "too_large": false
- }
- ],
- "merge_request_id": 9,
- "created_at": "2016-06-14T15:02:22.829Z",
- "updated_at": "2016-06-14T15:02:22.900Z",
- "base_commit_sha": "be93687618e4b132087f430a4d8fc3a609c9b77c",
- "real_size": "1"
- },
- "events": [
- {
- "id": 229,
- "target_type": "MergeRequest",
- "target_id": 9,
- "project_id": 36,
- "created_at": "2016-06-14T15:02:22.927Z",
- "updated_at": "2016-06-14T15:02:22.927Z",
- "action": 1,
- "author_id": 16
- },
- {
- "id": 169,
- "target_type": "MergeRequest",
- "target_id": 9,
- "project_id": 5,
- "created_at": "2016-06-14T15:02:22.927Z",
- "updated_at": "2016-06-14T15:02:22.927Z",
- "action": 1,
- "author_id": 16
- }
- ]
- }
- ],
- "ci_pipelines": [
- {
- "id": 36,
- "project_id": 5,
- "ref": null,
- "sha": "sha-notes",
- "before_sha": null,
- "push_data": null,
- "created_at": "2016-03-22T15:20:35.755Z",
- "updated_at": "2016-03-22T15:20:35.755Z",
- "tag": null,
- "yaml_errors": null,
- "committed_at": null,
- "status": "failed",
- "started_at": null,
- "finished_at": null,
- "user_id": 2147483547,
- "duration": null,
- "source": "push",
- "merge_request_id": null,
- "pipeline_metadata": {
- "id": 2,
- "pipeline_id": 36,
- "project_id": 5,
- "name": "Build pipeline"
- },
- "notes": [
- {
- "id": 2147483547,
- "note": "Natus rerum qui dolorem dolorum voluptas.",
- "noteable_type": "Commit",
- "author_id": 1,
- "created_at": "2016-03-22T15:19:59.469Z",
- "updated_at": "2016-03-22T15:19:59.469Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": "be93687618e4b132087f430a4d8fc3a609c9b77c",
- "noteable_id": 36,
- "system": false,
- "st_diff": null,
- "updated_by_id": null,
- "author": {
- "name": "Administrator"
- }
- }
- ],
- "stages": [
- {
- "id": 11,
- "project_id": 5,
- "pipeline_id": 36,
- "name": "test",
- "status": 1,
- "created_at": "2016-03-22T15:44:44.772Z",
- "updated_at": "2016-03-29T06:44:44.634Z",
- "builds": [
- {
- "id": 71,
- "project_id": 5,
- "status": "failed",
- "finished_at": "2016-03-29T06:28:12.630Z",
- "trace": null,
- "created_at": "2016-03-22T15:20:35.772Z",
- "updated_at": "2016-03-29T06:28:12.634Z",
- "started_at": null,
- "runner_id": null,
- "coverage": null,
- "commit_id": 36,
- "commands": "$ build command",
- "job_id": null,
- "name": "test build 1",
- "deploy": false,
- "options": {
- "image": "busybox:latest"
- },
- "allow_failure": false,
- "stage": "test",
- "trigger_request_id": null,
- "stage_idx": 1,
- "stage_id": 11,
- "tag": null,
- "ref": "master",
- "user_id": null,
- "target_url": null,
- "description": null,
- "erased_by_id": null,
- "erased_at": null,
- "type": "Ci::Build",
- "token": "abcd",
- "artifacts_file_store": 1,
- "artifacts_metadata_store": 1,
- "artifacts_size": 10
- }
- ],
- "bridges": [
- {
- "id": 72,
- "project_id": 5,
- "status": "success",
- "finished_at": null,
- "trace": "Porro ea qui ut dolores. Labore ab nemo explicabo aspernatur quis voluptates corporis. Et quasi delectus est sit aperiam perspiciatis asperiores. Repudiandae cum aut consectetur accusantium officia sunt.\n\nQuidem dolore iusto quaerat ut aut inventore et molestiae. Libero voluptates atque nemo qui. Nulla temporibus ipsa similique facere.\n\nAliquam ipsam perferendis qui fugit accusantium omnis id voluptatum. Dignissimos aliquid dicta eos voluptatem assumenda quia. Sed autem natus unde dolor et non nisi et. Consequuntur nihil consequatur rerum est.\n\nSimilique neque est iste ducimus qui fuga cupiditate. Libero autem est aut fuga. Consectetur natus quis non ducimus ut dolore. Magni voluptatibus eius et maxime aut.\n\nAd officiis tempore voluptate vitae corrupti explicabo labore est. Consequatur expedita et sunt nihil aut. Deleniti porro iusto molestiae et beatae.\n\nDeleniti modi nulla qui et labore sequi corrupti. Qui voluptatem assumenda eum cupiditate et. Nesciunt ipsam ut ea possimus eum. Consectetur quidem suscipit atque dolore itaque voluptatibus et cupiditate.",
- "created_at": "2016-03-22T15:20:35.777Z",
- "updated_at": "2016-03-22T15:20:35.777Z",
- "started_at": null,
- "runner_id": null,
- "coverage": null,
- "commit_id": 36,
- "commands": "$ deploy command",
- "job_id": null,
- "name": "test build 2",
- "deploy": false,
- "options": null,
- "allow_failure": false,
- "stage": "deploy",
- "trigger_request_id": null,
- "stage_idx": 1,
- "stage_id": 12,
- "tag": null,
- "ref": "master",
- "user_id": null,
- "target_url": null,
- "description": null,
- "erased_by_id": null,
- "erased_at": null
- }
- ],
- "generic_commit_statuses": [
- {
- "id": 72,
- "project_id": 5,
- "status": "success",
- "finished_at": null,
- "trace": "Porro ea qui ut dolores. Labore ab nemo explicabo aspernatur quis voluptates corporis. Et quasi delectus est sit aperiam perspiciatis asperiores. Repudiandae cum aut consectetur accusantium officia sunt.\n\nQuidem dolore iusto quaerat ut aut inventore et molestiae. Libero voluptates atque nemo qui. Nulla temporibus ipsa similique facere.\n\nAliquam ipsam perferendis qui fugit accusantium omnis id voluptatum. Dignissimos aliquid dicta eos voluptatem assumenda quia. Sed autem natus unde dolor et non nisi et. Consequuntur nihil consequatur rerum est.\n\nSimilique neque est iste ducimus qui fuga cupiditate. Libero autem est aut fuga. Consectetur natus quis non ducimus ut dolore. Magni voluptatibus eius et maxime aut.\n\nAd officiis tempore voluptate vitae corrupti explicabo labore est. Consequatur expedita et sunt nihil aut. Deleniti porro iusto molestiae et beatae.\n\nDeleniti modi nulla qui et labore sequi corrupti. Qui voluptatem assumenda eum cupiditate et. Nesciunt ipsam ut ea possimus eum. Consectetur quidem suscipit atque dolore itaque voluptatibus et cupiditate.",
- "created_at": "2016-03-22T15:20:35.777Z",
- "updated_at": "2016-03-22T15:20:35.777Z",
- "started_at": null,
- "runner_id": null,
- "coverage": null,
- "commit_id": 36,
- "commands": "$ deploy command",
- "job_id": null,
- "name": "test build 2",
- "deploy": false,
- "options": null,
- "allow_failure": false,
- "stage": "deploy",
- "trigger_request_id": null,
- "stage_idx": 1,
- "stage_id": 12,
- "tag": null,
- "ref": "master",
- "user_id": null,
- "target_url": null,
- "description": null,
- "erased_by_id": null,
- "erased_at": null
- }
- ]
- },
- {
- "id": 12,
- "project_id": 5,
- "pipeline_id": 36,
- "name": "deploy",
- "status": 2,
- "created_at": "2016-03-22T15:45:45.772Z",
- "updated_at": "2016-03-29T06:45:45.634Z"
- }
- ]
- },
- {
- "id": 26,
- "project_id": 5,
- "ref": "master",
- "sha": "048721d90c449b244b7b4c53a9186b04330174ec",
- "before_sha": null,
- "push_data": null,
- "created_at": "2016-03-22T15:20:35.757Z",
- "updated_at": "2016-03-22T15:20:35.757Z",
- "tag": false,
- "yaml_errors": null,
- "committed_at": null,
- "status": "failed",
- "started_at": null,
- "finished_at": null,
- "duration": null,
- "source": "merge_request_event",
- "merge_request_id": 27,
- "stages": [
- {
- "id": 21,
- "project_id": 5,
- "pipeline_id": 37,
- "name": "test",
- "status": 1,
- "created_at": "2016-03-22T15:44:44.772Z",
- "updated_at": "2016-03-29T06:44:44.634Z",
- "builds": [
- {
- "id": 74,
- "project_id": 5,
- "status": "success",
- "finished_at": null,
- "trace": "Ad ut quod repudiandae iste dolor doloribus. Adipisci consequuntur deserunt omnis quasi eveniet et sed fugit. Aut nemo omnis molestiae impedit ex consequatur ducimus. Voluptatum exercitationem quia aut est et hic dolorem.\n\nQuasi repellendus et eaque magni eum facilis. Dolorem aperiam nam nihil pariatur praesentium ad aliquam. Commodi enim et eos tenetur. Odio voluptatibus laboriosam mollitia rerum exercitationem magnam consequuntur. Tenetur ea vel eum corporis.\n\nVoluptatibus optio in aliquid est voluptates. Ad a ut ab placeat vero blanditiis. Earum aspernatur quia beatae expedita voluptatem dignissimos provident. Quis minima id nemo ut aut est veritatis provident.\n\nRerum voluptatem quidem eius maiores magnam veniam. Voluptatem aperiam aut voluptate et nulla deserunt voluptas. Quaerat aut accusantium laborum est dolorem architecto reiciendis. Aliquam asperiores doloribus omnis maxime enim nesciunt. Eum aut rerum repellendus debitis et ut eius.\n\nQuaerat assumenda ea sit consequatur autem in. Cum eligendi voluptatem quo sed. Ut fuga iusto cupiditate autem sint.\n\nOfficia totam officiis architecto corporis molestiae amet ut. Tempora sed dolorum rerum omnis voluptatem accusantium sit eum. Quia debitis ipsum quidem aliquam inventore sunt consequatur qui.",
- "created_at": "2016-03-22T15:20:35.846Z",
- "updated_at": "2016-03-22T15:20:35.846Z",
- "started_at": null,
- "runner_id": null,
- "coverage": null,
- "commit_id": 37,
- "commands": "$ build command",
- "job_id": null,
- "name": "test build 2",
- "deploy": false,
- "options": null,
- "allow_failure": false,
- "stage": "test",
- "trigger_request_id": null,
- "stage_idx": 1,
- "tag": null,
- "ref": "master",
- "user_id": null,
- "target_url": null,
- "description": null,
- "erased_by_id": null,
- "erased_at": null
- },
- {
- "id": 73,
- "project_id": 5,
- "status": "canceled",
- "finished_at": null,
- "trace": null,
- "created_at": "2016-03-22T15:20:35.842Z",
- "updated_at": "2016-03-22T15:20:35.842Z",
- "started_at": null,
- "runner_id": null,
- "coverage": null,
- "commit_id": 37,
- "commands": "$ build command",
- "job_id": null,
- "name": "test build 1",
- "deploy": false,
- "options": null,
- "allow_failure": false,
- "stage": "test",
- "trigger_request_id": null,
- "stage_idx": 1,
- "tag": null,
- "ref": "master",
- "user_id": null,
- "target_url": null,
- "description": null,
- "erased_by_id": null,
- "erased_at": null
- }
- ]
- }
- ],
- "merge_request": {
- "id": 27,
- "target_branch": "feature",
- "source_branch": "feature_conflict",
- "source_project_id": 2147483547,
- "author_id": 1,
- "assignee_id": null,
- "title": "MR1",
- "created_at": "2016-06-14T15:02:36.568Z",
- "updated_at": "2016-06-14T15:02:56.815Z",
- "state": "opened",
- "merge_status": "unchecked",
- "target_project_id": 5,
- "iid": 9,
- "description": null,
- "position": 0,
- "updated_by_id": null,
- "merge_error": null,
- "diff_head_sha": "HEAD",
- "source_branch_sha": "ABCD",
- "target_branch_sha": "DCBA",
- "merge_params": {
- "force_remove_source_branch": null
- }
- }
- },
- {
- "id": 38,
- "iid": 1,
- "project_id": 5,
- "ref": "master",
- "sha": "5f923865dde3436854e9ceb9cdb7815618d4e849",
- "before_sha": null,
- "push_data": null,
- "created_at": "2016-03-22T15:20:35.759Z",
- "updated_at": "2016-03-22T15:20:35.759Z",
- "tag": null,
- "yaml_errors": null,
- "committed_at": null,
- "status": "failed",
- "started_at": null,
- "finished_at": null,
- "duration": null,
- "stages": [
- {
- "id": 22,
- "project_id": 5,
- "pipeline_id": 38,
- "name": "test",
- "status": 1,
- "created_at": "2016-03-22T15:44:44.772Z",
- "updated_at": "2016-03-29T06:44:44.634Z",
- "builds": [
- {
- "id": 76,
- "project_id": 5,
- "status": "success",
- "finished_at": null,
- "trace": "Et rerum quia ea cumque ut modi non. Libero eaque ipsam architecto maiores expedita deleniti. Ratione quia qui est id.\n\nQuod sit officiis sed unde inventore veniam quisquam velit. Ea harum cum quibusdam quisquam minima quo possimus non. Temporibus itaque aliquam aut rerum veritatis at.\n\nMagnam ipsum eius recusandae qui quis sit maiores eum. Et animi iusto aut itaque. Doloribus harum deleniti nobis accusantium et libero.\n\nRerum fuga perferendis magni commodi officiis id repudiandae. Consequatur ratione consequatur suscipit facilis sunt iure est dicta. Qui unde quasi facilis et quae nesciunt. Magnam iste et nobis officiis tenetur. Aspernatur quo et temporibus non in.\n\nNisi rerum velit est ad enim sint molestiae consequuntur. Quaerat nisi nesciunt quasi officiis. Possimus non blanditiis laborum quos.\n\nRerum laudantium facere animi qui. Ipsa est iusto magnam nihil. Enim omnis occaecati non dignissimos ut recusandae eum quasi. Qui maxime dolor et nemo voluptates incidunt quia.",
- "created_at": "2016-03-22T15:20:35.882Z",
- "updated_at": "2016-03-22T15:20:35.882Z",
- "started_at": null,
- "runner_id": null,
- "coverage": null,
- "commit_id": 38,
- "commands": "$ build command",
- "job_id": null,
- "name": "test build 2",
- "deploy": false,
- "options": null,
- "allow_failure": false,
- "stage": "test",
- "trigger_request_id": null,
- "stage_idx": 1,
- "tag": null,
- "ref": "master",
- "user_id": null,
- "target_url": null,
- "description": null,
- "erased_by_id": null,
- "erased_at": null
- },
- {
- "id": 75,
- "project_id": 5,
- "status": "failed",
- "finished_at": null,
- "trace": "Sed et iste recusandae dicta corporis. Sunt alias porro fugit sunt. Fugiat omnis nihil dignissimos aperiam explicabo doloremque sit aut. Harum fugit expedita quia rerum ut consequatur laboriosam aliquam.\n\nNatus libero ut ut tenetur earum. Tempora omnis autem omnis et libero dolores illum autem. Deleniti eos sunt mollitia ipsam. Cum dolor repellendus dolorum sequi officia. Ullam sunt in aut pariatur excepturi.\n\nDolor nihil debitis et est eos. Cumque eos eum saepe ducimus autem. Alias architecto consequatur aut pariatur possimus. Aut quos aut incidunt quam velit et. Quas voluptatum ad dolorum dignissimos.\n\nUt voluptates consectetur illo et. Est commodi accusantium vel quo. Eos qui fugiat soluta porro.\n\nRatione possimus alias vel maxime sint totam est repellat. Ipsum corporis eos sint voluptatem eos odit. Temporibus libero nulla harum eligendi labore similique ratione magnam. Suscipit sequi in omnis neque.\n\nLaudantium dolor amet omnis placeat mollitia aut molestiae. Aut rerum similique ipsum quod illo quas unde. Sunt aut veritatis eos omnis porro. Rem veritatis mollitia praesentium dolorem. Consequatur sequi ad cumque earum omnis quia necessitatibus.",
- "created_at": "2016-03-22T15:20:35.864Z",
- "updated_at": "2016-03-22T15:20:35.864Z",
- "started_at": null,
- "runner_id": null,
- "coverage": null,
- "commit_id": 38,
- "commands": "$ build command",
- "job_id": null,
- "name": "test build 1",
- "deploy": false,
- "options": null,
- "allow_failure": false,
- "stage": "test",
- "trigger_request_id": null,
- "stage_idx": 1,
- "tag": null,
- "ref": "master",
- "user_id": null,
- "target_url": null,
- "description": null,
- "erased_by_id": null,
- "erased_at": null
- }
- ]
- }
- ]
- },
- {
- "id": 39,
- "project_id": 5,
- "ref": "master",
- "sha": "d2d430676773caa88cdaf7c55944073b2fd5561a",
- "before_sha": null,
- "push_data": null,
- "created_at": "2016-03-22T15:20:35.761Z",
- "updated_at": "2016-03-22T15:20:35.761Z",
- "tag": null,
- "yaml_errors": null,
- "committed_at": null,
- "status": "failed",
- "started_at": null,
- "finished_at": null,
- "duration": null,
- "stages": [
- {
- "id": 23,
- "project_id": 5,
- "pipeline_id": 39,
- "name": "test",
- "status": 1,
- "created_at": "2016-03-22T15:44:44.772Z",
- "updated_at": "2016-03-29T06:44:44.634Z",
- "builds": [
- {
- "id": 78,
- "project_id": 5,
- "status": "success",
- "finished_at": null,
- "trace": "Dolorem deserunt quas quia error hic quo cum vel. Natus voluptatem cumque expedita numquam odit. Eos expedita nostrum corporis consequatur est recusandae.\n\nCulpa blanditiis rerum repudiandae alias voluptatem. Velit iusto est ullam consequatur doloribus porro. Corporis voluptas consectetur est veniam et quia quae.\n\nEt aut magni fuga nesciunt officiis molestias. Quaerat et nam necessitatibus qui rerum. Architecto quia officiis voluptatem laborum est recusandae. Quasi ducimus soluta odit necessitatibus labore numquam dignissimos. Quia facere sint temporibus inventore sunt nihil saepe dolorum.\n\nFacere dolores quis dolores a. Est minus nostrum nihil harum. Earum laborum et ipsum unde neque sit nemo. Corrupti est consequatur minima fugit. Illum voluptatem illo error ducimus officia qui debitis.\n\nDignissimos porro a autem harum aut. Aut id reprehenderit et exercitationem. Est et quisquam ipsa temporibus molestiae. Architecto natus dolore qui fugiat incidunt. Autem odit veniam excepturi et voluptatibus culpa ipsum eos.\n\nAmet quo quisquam dignissimos soluta modi dolores. Sint omnis eius optio corporis dolor. Eligendi animi porro quia placeat ut.",
- "created_at": "2016-03-22T15:20:35.927Z",
- "updated_at": "2016-03-22T15:20:35.927Z",
- "started_at": null,
- "runner_id": null,
- "coverage": null,
- "commit_id": 39,
- "commands": "$ build command",
- "job_id": null,
- "name": "test build 2",
- "deploy": false,
- "options": null,
- "allow_failure": false,
- "stage": "test",
- "trigger_request_id": null,
- "stage_idx": 1,
- "tag": null,
- "ref": "master",
- "user_id": null,
- "target_url": null,
- "description": null,
- "erased_by_id": null,
- "erased_at": null
- },
- {
- "id": 77,
- "project_id": 5,
- "status": "failed",
- "finished_at": null,
- "trace": "Rerum ut et suscipit est perspiciatis. Inventore debitis cum eius vitae. Ex incidunt id velit aut quo nisi. Laboriosam repellat deserunt eius reiciendis architecto et. Est harum quos nesciunt nisi consectetur.\n\nAlias esse omnis sint officia est consequatur in nobis. Dignissimos dolorum vel eligendi nesciunt dolores sit. Veniam mollitia ducimus et exercitationem molestiae libero sed. Atque omnis debitis laudantium voluptatibus qui. Repellendus tempore est commodi pariatur.\n\nExpedita voluptate illum est alias non. Modi nesciunt ab assumenda laborum nulla consequatur molestias doloremque. Magnam quod officia vel explicabo accusamus ut voluptatem incidunt. Rerum ut aliquid ullam saepe. Est eligendi debitis beatae blanditiis reiciendis.\n\nQui fuga sit dolores libero maiores et suscipit. Consectetur asperiores omnis minima impedit eos fugiat. Similique omnis nisi sed vero inventore ipsum aliquam exercitationem.\n\nBlanditiis magni iure dolorum omnis ratione delectus molestiae. Atque officia dolor voluptatem culpa quod. Incidunt suscipit quidem possimus veritatis non vel. Iusto aliquid et id quia quasi.\n\nVel facere velit blanditiis incidunt cupiditate sed maiores consequuntur. Quasi quia dicta consequuntur et quia voluptatem iste id. Incidunt et rerum fuga esse sint.",
- "created_at": "2016-03-22T15:20:35.905Z",
- "updated_at": "2016-03-22T15:20:35.905Z",
- "started_at": null,
- "runner_id": null,
- "coverage": null,
- "commit_id": 39,
- "commands": "$ build command",
- "job_id": null,
- "name": "test build 1",
- "deploy": false,
- "options": null,
- "allow_failure": false,
- "stage": "test",
- "trigger_request_id": null,
- "stage_idx": 1,
- "tag": null,
- "ref": "master",
- "user_id": null,
- "target_url": null,
- "description": null,
- "erased_by_id": null,
- "erased_at": null
- }
- ]
- }
- ]
- },
- {
- "id": 19,
- "project_id": 5,
- "ref": "master",
- "sha": "2ea1f3dec713d940208fb5ce4a38765ecb5d3f73",
- "before_sha": null,
- "push_data": null,
- "created_at": "2016-03-22T15:20:35.763Z",
- "updated_at": "2016-03-22T15:20:35.763Z",
- "tag": null,
- "yaml_errors": null,
- "committed_at": null,
- "status": "failed",
- "started_at": null,
- "finished_at": null,
- "duration": null,
- "stages": [
- {
- "id": 24,
- "project_id": 5,
- "pipeline_id": 40,
- "name": "test",
- "status": 1,
- "created_at": "2016-03-22T15:44:44.772Z",
- "updated_at": "2016-03-29T06:44:44.634Z",
- "statuses": [
- {
- "id": 79,
- "project_id": 5,
- "status": "failed",
- "finished_at": "2016-03-29T06:28:12.695Z",
- "trace": "Sed culpa est et facere saepe vel id ab. Quas temporibus aut similique dolorem consequatur corporis aut praesentium. Cum officia molestiae sit earum excepturi.\n\nSint possimus aut ratione quia. Quis nesciunt ratione itaque illo. Tenetur est dolor assumenda possimus voluptatem quia minima. Accusamus reprehenderit ut et itaque non reiciendis incidunt.\n\nRerum suscipit quibusdam dolore nam omnis. Consequatur ipsa nihil ut enim blanditiis delectus. Nulla quis hic occaecati mollitia qui placeat. Quo rerum sed perferendis a accusantium consequatur commodi ut. Sit quae et cumque vel eius tempora nostrum.\n\nUllam dolorem et itaque sint est. Ea molestias quia provident dolorem vitae error et et. Ea expedita officiis iste non. Qui vitae odit saepe illum. Dolores enim ratione deserunt tempore expedita amet non neque.\n\nEligendi asperiores voluptatibus omnis repudiandae expedita distinctio qui aliquid. Autem aut doloremque distinctio ab. Nostrum sapiente repudiandae aspernatur ea et quae voluptas. Officiis perspiciatis nisi laudantium asperiores error eligendi ab. Eius quia amet magni omnis exercitationem voluptatum et.\n\nVoluptatem ullam labore quas dicta est ex voluptas. Pariatur ea modi voluptas consequatur dolores perspiciatis similique. Numquam in distinctio perspiciatis ut qui earum. Quidem omnis mollitia facere aut beatae. Ea est iure et voluptatem.",
- "created_at": "2016-03-22T15:20:35.950Z",
- "updated_at": "2016-03-29T06:28:12.696Z",
- "started_at": null,
- "runner_id": null,
- "coverage": null,
- "commit_id": 40,
- "commands": "$ build command",
- "job_id": null,
- "name": "test build 1",
- "deploy": false,
- "options": null,
- "allow_failure": false,
- "stage": "test",
- "trigger_request_id": null,
- "stage_idx": 1,
- "tag": null,
- "ref": "master",
- "user_id": null,
- "target_url": null,
- "description": null,
- "erased_by_id": null,
- "erased_at": null
- },
- {
- "id": 80,
- "project_id": 5,
- "status": "success",
- "finished_at": null,
- "trace": "Impedit et optio nemo ipsa. Non ad non quis ut sequi laudantium omnis velit. Corporis a enim illo eos. Quia totam tempore inventore ad est.\n\nNihil recusandae cupiditate eaque voluptatem molestias sint. Consequatur id voluptatem cupiditate harum. Consequuntur iusto quaerat reiciendis aut autem libero est. Quisquam dolores veritatis rerum et sint maxime ullam libero. Id quas porro ut perspiciatis rem amet vitae.\n\nNemo inventore minus blanditiis magnam. Modi consequuntur nostrum aut voluptatem ex. Sunt rerum rem optio mollitia qui aliquam officiis officia. Aliquid eos et id aut minus beatae reiciendis.\n\nDolores non in temporibus dicta. Fugiat voluptatem est aspernatur expedita voluptatum nam qui. Quia et eligendi sit quae sint tempore exercitationem eos. Est sapiente corrupti quidem at. Qui magni odio repudiandae saepe tenetur optio dolore.\n\nEos placeat soluta at dolorem adipisci provident. Quo commodi id reprehenderit possimus quo tenetur. Ipsum et quae eligendi laborum. Et qui nesciunt at quasi quidem voluptatem cum rerum. Excepturi non facilis aut sunt vero sed.\n\nQui explicabo ratione ut eligendi recusandae. Quis quasi quas molestiae consequatur voluptatem et voluptatem. Ex repellat saepe occaecati aperiam ea eveniet dignissimos facilis.",
- "created_at": "2016-03-22T15:20:35.966Z",
- "updated_at": "2016-03-22T15:20:35.966Z",
- "started_at": null,
- "runner_id": null,
- "coverage": null,
- "commit_id": 40,
- "commands": "$ build command",
- "job_id": null,
- "name": "test build 2",
- "deploy": false,
- "options": null,
- "allow_failure": false,
- "stage": "test",
- "trigger_request_id": null,
- "stage_idx": 1,
- "tag": null,
- "ref": "master",
- "user_id": null,
- "target_url": null,
- "description": null,
- "erased_by_id": null,
- "erased_at": null
- }
- ]
- }
- ]
- },
- {
- "id": 41,
- "project_id": 5,
- "ref": "master",
- "sha": "2ea1f3dec713d940208fb5ce4a38765ecb5d3f73",
- "before_sha": null,
- "push_data": null,
- "created_at": "2016-03-22T15:20:35.763Z",
- "updated_at": "2016-03-22T15:20:35.763Z",
- "tag": null,
- "yaml_errors": null,
- "committed_at": null,
- "status": "failed",
- "started_at": null,
- "finished_at": null,
- "duration": null,
- "stages": [
-
- ]
- },
- {
- "id": 20,
- "project_id": 5,
- "ref": "master",
- "sha": "ce84140e8b878ce6e7c4d298c7202ff38170e3ac",
- "before_sha": null,
- "push_data": null,
- "created_at": "2016-03-22T15:20:35.763Z",
- "updated_at": "2016-03-22T15:20:35.763Z",
- "tag": false,
- "yaml_errors": null,
- "committed_at": null,
- "status": "failed",
- "started_at": null,
- "finished_at": null,
- "duration": null,
- "stages": [
-
- ],
- "source": "external_pull_request_event",
- "external_pull_request": {
- "id": 3,
- "pull_request_iid": 4,
- "source_branch": "feature",
- "target_branch": "master",
- "source_repository": "the-repository",
- "target_repository": "the-repository",
- "source_sha": "ce84140e8b878ce6e7c4d298c7202ff38170e3ac",
- "target_sha": "a09386439ca39abe575675ffd4b89ae824fec22f",
- "status": "open",
- "created_at": "2016-03-22T15:20:35.763Z",
- "updated_at": "2016-03-22T15:20:35.763Z"
- }
- }
- ],
- "commit_notes": [
- {
- "note": "Commit note 1",
- "noteable_type": "Commit",
- "author_id": 1,
- "created_at": "2023-01-30T19:27:36.585Z",
- "updated_at": "2023-02-10T14:43:01.308Z",
- "project_id": 5,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": "sha-notes",
- "system": false,
- "st_diff": null,
- "updated_by_id": 1,
- "type": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "e3fde7d585c6467a7a5147e83617eb6daa61aaf4",
- "change_position": null,
- "resolved_by_push": null,
- "confidential": null,
- "last_edited_at": "2023-02-10T14:43:01.306Z",
- "author": {
- "name": "Administrator"
- },
- "events": [
- {
- "project_id": 1,
- "author_id": 1,
- "created_at": "2023-01-30T19:27:36.815Z",
- "updated_at": "2023-01-30T19:27:36.815Z",
- "action": "commented",
- "target_type": "Note",
- "fingerprint": null,
- "push_event_payload": {
- "commit_count": 1,
- "action": "pushed",
- "ref_type": "branch",
- "commit_to": "sha-notes",
- "ref": "master"
- }
- }
- ]
- },
- {
- "note": "Commit note 2",
- "noteable_type": "Commit",
- "author_id": 1,
- "created_at": "2023-02-10T14:44:08.138Z",
- "updated_at": "2023-02-10T14:54:42.828Z",
- "project_id": 1,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": "sha-notes",
- "system": false,
- "st_diff": null,
- "updated_by_id": 1,
- "type": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "53ca55a01732aff4f17daecdf076853f4ab152eb",
- "change_position": null,
- "resolved_by_push": null,
- "confidential": null,
- "last_edited_at": "2023-02-10T14:54:42.827Z",
- "author": {
- "name": "Administrator"
- },
- "events": [
- {
- "project_id": 1,
- "author_id": 1,
- "created_at": "2023-02-10T16:37:16.659Z",
- "updated_at": "2023-02-10T16:37:16.659Z",
- "action": "commented",
- "target_type": "Note",
- "fingerprint": null
- }
- ]
- }
- ],
- "pipeline_schedules": [
- {
- "id": 1,
- "description": "Schedule Description",
- "ref": "master",
- "cron": "0 4 * * 0",
- "cron_timezone": "UTC",
- "next_run_at": "2019-12-29T04:19:00.000Z",
- "project_id": 5,
- "owner_id": 1,
- "active": true,
- "created_at": "2019-12-26T10:14:57.778Z",
- "updated_at": "2019-12-26T10:14:57.778Z"
- }
- ],
- "container_expiration_policy": {
- "created_at": "2019-12-13 13:45:04 UTC",
- "updated_at": "2019-12-13 13:45:04 UTC",
- "next_run_at": null,
- "project_id": 5,
- "name_regex": null,
- "cadence": "3month",
- "older_than": null,
- "keep_n": 100,
- "enabled": false
- },
- "deploy_keys": [
-
- ],
- "hooks": [
-
- ],
- "protected_branches": [
- {
- "id": 1,
- "project_id": 9,
- "name": "master",
- "created_at": "2016-08-30T07:32:52.426Z",
- "updated_at": "2016-08-30T07:32:52.426Z",
- "merge_access_levels": [
- {
- "id": 1,
- "protected_branch_id": 1,
- "access_level": 40,
- "created_at": "2016-08-30T07:32:52.458Z",
- "updated_at": "2016-08-30T07:32:52.458Z"
- }
- ],
- "push_access_levels": [
- {
- "id": 1,
- "protected_branch_id": 1,
- "access_level": 40,
- "created_at": "2016-08-30T07:32:52.490Z",
- "updated_at": "2016-08-30T07:32:52.490Z"
- }
- ],
- "allow_force_push": false
- }
- ],
- "protected_environments": [
- {
- "id": 1,
- "project_id": 9,
- "created_at": "2017-10-19T15:36:23.466Z",
- "updated_at": "2017-10-19T15:36:23.466Z",
- "name": "production",
- "deploy_access_levels": [
- {
- "id": 1,
- "protected_environment_id": 1,
- "created_at": "2017-10-19T15:36:23.466Z",
- "updated_at": "2017-10-19T15:36:23.466Z",
- "access_level": 40,
- "user_id": 1,
- "group_id": null
- }
- ]
- }
- ],
- "protected_tags": [
- {
- "id": 1,
- "project_id": 9,
- "name": "v*",
- "created_at": "2017-04-04T13:48:13.426Z",
- "updated_at": "2017-04-04T13:48:13.426Z",
- "create_access_levels": [
- {
- "id": 1,
- "protected_tag_id": 1,
- "access_level": 40,
- "created_at": "2017-04-04T13:48:13.458Z",
- "updated_at": "2017-04-04T13:48:13.458Z"
- }
- ]
- }
- ],
- "project_feature": {
- "builds_access_level": 10,
- "created_at": "2014-12-26T09:26:45.000Z",
- "id": 2,
- "issues_access_level": 10,
- "merge_requests_access_level": 10,
- "project_id": 4,
- "snippets_access_level": 10,
- "updated_at": "2016-09-23T11:58:28.000Z",
- "wiki_access_level": 10
- },
- "custom_attributes": [
- {
- "id": 1,
- "created_at": "2017-10-19T15:36:23.466Z",
- "updated_at": "2017-10-19T15:36:23.466Z",
- "project_id": 5,
- "key": "foo",
- "value": "foo"
- },
- {
- "id": 2,
- "created_at": "2017-10-19T15:37:21.904Z",
- "updated_at": "2017-10-19T15:37:21.904Z",
- "project_id": 5,
- "key": "bar",
- "value": "bar"
- }
- ],
- "project_badges": [
- {
- "id": 1,
- "created_at": "2017-10-19T15:36:23.466Z",
- "updated_at": "2017-10-19T15:36:23.466Z",
- "project_id": 5,
- "type": "ProjectBadge",
- "link_url": "http://www.example.com",
- "image_url": "http://www.example.com"
- },
- {
- "id": 2,
- "created_at": "2017-10-19T15:36:23.466Z",
- "updated_at": "2017-10-19T15:36:23.466Z",
- "project_id": 5,
- "type": "ProjectBadge",
- "link_url": "http://www.example.com",
- "image_url": "http://www.example.com"
- }
- ],
- "ci_cd_settings": {
- "group_runners_enabled": false
- },
- "auto_devops": {
- "id": 1,
- "created_at": "2017-10-19T15:36:23.466Z",
- "updated_at": "2017-10-19T15:36:23.466Z",
- "enabled": null,
- "deploy_strategy": "continuous"
- },
- "error_tracking_setting": {
- "api_url": "https://gitlab.example.com/api/0/projects/sentry-org/sentry-project",
- "project_name": "Sentry Project",
- "organization_name": "Sentry Org"
- },
- "external_pull_requests": [
- {
- "id": 3,
- "pull_request_iid": 4,
- "source_branch": "feature",
- "target_branch": "master",
- "source_repository": "the-repository",
- "target_repository": "the-repository",
- "source_sha": "ce84140e8b878ce6e7c4d298c7202ff38170e3ac",
- "target_sha": "a09386439ca39abe575675ffd4b89ae824fec22f",
- "status": "open",
- "created_at": "2019-12-24T14:04:50.053Z",
- "updated_at": "2019-12-24T14:05:18.138Z"
- }
- ],
- "boards": [
- {
- "id": 29,
- "project_id": 49,
- "created_at": "2019-06-06T14:01:06.204Z",
- "updated_at": "2019-06-06T14:22:37.045Z",
- "name": "TestBoardABC",
- "milestone": {
- "id": 1,
- "title": "test milestone",
- "project_id": 8,
- "description": "test milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "events": [
- {
- "id": 487,
- "target_type": "Milestone",
- "target_id": 1,
- "project_id": 46,
- "created_at": "2016-06-14T15:02:04.418Z",
- "updated_at": "2016-06-14T15:02:04.418Z",
- "action": 1,
- "author_id": 18
- }
- ]
- },
- "group_id": null,
- "weight": null,
- "lists": [
- {
- "id": 59,
- "board_id": 29,
- "label_id": null,
- "list_type": "backlog",
- "position": null,
- "created_at": "2019-06-06T14:01:06.214Z",
- "updated_at": "2019-06-06T14:01:06.214Z",
- "user_id": null,
- "milestone": {
- "id": 1,
- "title": "test milestone",
- "project_id": 8,
- "description": "test milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "events": [
- {
- "id": 487,
- "target_type": "Milestone",
- "target_id": 1,
- "project_id": 46,
- "created_at": "2016-06-14T15:02:04.418Z",
- "updated_at": "2016-06-14T15:02:04.418Z",
- "action": 1,
- "author_id": 18
- }
- ]
- }
- },
- {
- "id": 61,
- "board_id": 29,
- "label_id": 20,
- "list_type": "label",
- "position": 0,
- "created_at": "2019-06-06T14:01:43.197Z",
- "updated_at": "2019-06-06T14:01:43.197Z",
- "user_id": null,
- "milestone": {
- "id": 1,
- "title": "test milestone",
- "project_id": 8,
- "description": "test milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "events": [
- {
- "id": 487,
- "target_type": "Milestone",
- "target_id": 1,
- "project_id": 46,
- "created_at": "2016-06-14T15:02:04.418Z",
- "updated_at": "2016-06-14T15:02:04.418Z",
- "action": 1,
- "author_id": 18
- }
- ]
- },
- "label": {
- "id": 20,
- "title": "testlabel",
- "color": "#0033CC",
- "project_id": 49,
- "created_at": "2019-06-06T14:01:19.698Z",
- "updated_at": "2019-06-06T14:01:19.698Z",
- "template": false,
- "description": null,
- "group_id": null,
- "type": "ProjectLabel",
- "priorities": [
-
- ]
- }
- },
- {
- "id": 60,
- "board_id": 29,
- "label_id": null,
- "list_type": "closed",
- "position": null,
- "created_at": "2019-06-06T14:01:06.221Z",
- "updated_at": "2019-06-06T14:01:06.221Z",
- "user_id": null,
- "milestone": {
- "id": 1,
- "title": "test milestone",
- "project_id": 8,
- "description": "test milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "events": [
- {
- "id": 487,
- "target_type": "Milestone",
- "target_id": 1,
- "project_id": 46,
- "created_at": "2016-06-14T15:02:04.418Z",
- "updated_at": "2016-06-14T15:02:04.418Z",
- "action": 1,
- "author_id": 18
- }
- ]
- }
- }
- ]
- }
- ],
- "push_rule": {
- "force_push_regex": "MustContain",
- "delete_branch_regex": "MustContain",
- "commit_message_regex": "MustContain",
- "author_email_regex": "MustContain",
- "file_name_regex": "MustContain",
- "branch_name_regex": "MustContain",
- "commit_message_negative_regex": "MustNotContain",
- "max_file_size": 1,
- "deny_delete_tag": true,
- "member_check": true,
- "is_sample": true,
- "prevent_secrets": true,
- "reject_unsigned_commits": true,
- "commit_committer_check": true,
- "regexp_uses_re2": true
- },
- "approval_rules": [
- {
- "approvals_required": 1,
- "name": "MustContain",
- "rule_type": "regular",
- "scanners": [
-
- ],
- "vulnerabilities_allowed": 0,
- "severity_levels": [
- "unknown",
- "high",
- "critical"
- ],
- "report_type": null,
- "vulnerability_states": [
- "newly_detected"
- ],
- "orchestration_policy_idx": null,
- "applies_to_all_protected_branches": false,
- "approval_project_rules_protected_branches": [
- {
- "protected_branch_id": 1,
- "branch_name": "master"
- }
- ],
- "approval_project_rules_users": [
- {
- "user_id": 35
- }
- ]
- }
- ]
-}
diff --git a/spec/fixtures/lib/gitlab/import_export/designs/project.json b/spec/fixtures/lib/gitlab/import_export/designs/project.json
deleted file mode 100644
index 6720139adeb..00000000000
--- a/spec/fixtures/lib/gitlab/import_export/designs/project.json
+++ /dev/null
@@ -1,507 +0,0 @@
-{
- "description":"",
- "visibility_level":0,
- "archived":false,
- "merge_requests_template":null,
- "merge_requests_rebase_enabled":false,
- "approvals_before_merge":0,
- "reset_approvals_on_push":true,
- "merge_requests_ff_only_enabled":false,
- "issues_template":null,
- "shared_runners_enabled":true,
- "build_allow_git_fetch":true,
- "build_timeout":3600,
- "pending_delete":false,
- "public_builds":true,
- "last_repository_check_failed":null,
- "container_registry_enabled":true,
- "only_allow_merge_if_pipeline_succeeds":false,
- "has_external_issue_tracker":false,
- "request_access_enabled":false,
- "has_external_wiki":false,
- "ci_config_path":null,
- "only_allow_merge_if_all_discussions_are_resolved":false,
- "repository_size_limit":null,
- "printing_merge_request_link_enabled":true,
- "auto_cancel_pending_pipelines":"enabled",
- "service_desk_enabled":null,
- "delete_error":null,
- "disable_overriding_approvers_per_merge_request":null,
- "resolve_outdated_diff_discussions":false,
- "jobs_cache_index":null,
- "external_authorization_classification_label":null,
- "pages_https_only":false,
- "external_webhook_token":null,
- "merge_requests_author_approval":null,
- "merge_requests_disable_committers_approval":null,
- "require_password_to_approve":null,
- "labels":[
-
- ],
- "milestones":[
-
- ],
- "issues":[
- {
- "id":469,
- "title":"issue 1",
- "author_id":1,
- "project_id":30,
- "created_at":"2019-08-07T03:57:55.007Z",
- "updated_at":"2019-08-07T03:57:55.007Z",
- "description":"",
- "state":"opened",
- "iid":1,
- "updated_by_id":null,
- "weight":null,
- "confidential":false,
- "due_date":null,
- "moved_to_id":null,
- "lock_version":0,
- "time_estimate":0,
- "relative_position":1073742323,
- "external_author":null,
- "last_edited_at":null,
- "last_edited_by_id":null,
- "discussion_locked":null,
- "closed_at":null,
- "closed_by_id":null,
- "state_id":1,
- "events":[
- {
- "id":1775,
- "project_id":30,
- "author_id":1,
- "target_id":469,
- "created_at":"2019-08-07T03:57:55.158Z",
- "updated_at":"2019-08-07T03:57:55.158Z",
- "target_type":"Issue",
- "action":1
- }
- ],
- "timelogs":[
-
- ],
- "notes":[
-
- ],
- "label_links":[
-
- ],
- "resource_label_events":[
-
- ],
- "issue_assignees":[
-
- ],
- "designs":[
- {
- "id":38,
- "iid": 1,
- "project_id":30,
- "issue_id":469,
- "filename":"chirrido3.jpg",
- "notes":[
-
- ]
- },
- {
- "id":39,
- "iid": 2,
- "project_id":30,
- "issue_id":469,
- "filename":"jonathan_richman.jpg",
- "notes":[
-
- ]
- },
- {
- "id":40,
- "iid": 3,
- "project_id":30,
- "issue_id":469,
- "filename":"mariavontrap.jpeg",
- "notes":[
-
- ]
- }
- ],
- "design_versions":[
- {
- "id":24,
- "sha":"9358d1bac8ff300d3d2597adaa2572a20f7f8703",
- "issue_id":469,
- "author_id":1,
- "actions":[
- {
- "design_id":38,
- "version_id":24,
- "event":0,
- "design":{
- "id":38,
- "iid": 1,
- "project_id":30,
- "issue_id":469,
- "filename":"chirrido3.jpg"
- }
- }
- ]
- },
- {
- "id":25,
- "sha":"e1a4a501bcb42f291f84e5d04c8f927821542fb6",
- "issue_id":469,
- "author_id":2,
- "actions":[
- {
- "design_id":38,
- "version_id":25,
- "event":1,
- "design":{
- "id":38,
- "iid": 1,
- "project_id":30,
- "issue_id":469,
- "filename":"chirrido3.jpg"
- }
- },
- {
- "design_id":39,
- "version_id":25,
- "event":0,
- "design":{
- "id":39,
- "iid": 2,
- "project_id":30,
- "issue_id":469,
- "filename":"jonathan_richman.jpg"
- }
- }
- ]
- },
- {
- "id":26,
- "sha":"27702d08f5ee021ae938737f84e8fe7c38599e85",
- "issue_id":469,
- "author_id":1,
- "actions":[
- {
- "design_id":38,
- "version_id":26,
- "event":1,
- "design":{
- "id":38,
- "iid": 1,
- "project_id":30,
- "issue_id":469,
- "filename":"chirrido3.jpg"
- }
- },
- {
- "design_id":39,
- "version_id":26,
- "event":2,
- "design":{
- "id":39,
- "iid": 2,
- "project_id":30,
- "issue_id":469,
- "filename":"jonathan_richman.jpg"
- }
- },
- {
- "design_id":40,
- "version_id":26,
- "event":0,
- "design":{
- "id":40,
- "iid": 3,
- "project_id":30,
- "issue_id":469,
- "filename":"mariavontrap.jpeg"
- }
- }
- ]
- }
- ]
- },
- {
- "id":470,
- "title":"issue 2",
- "author_id":1,
- "project_id":30,
- "created_at":"2019-08-07T04:15:57.607Z",
- "updated_at":"2019-08-07T04:15:57.607Z",
- "description":"",
- "state":"opened",
- "iid":2,
- "updated_by_id":null,
- "weight":null,
- "confidential":false,
- "due_date":null,
- "moved_to_id":null,
- "lock_version":0,
- "time_estimate":0,
- "relative_position":1073742823,
- "external_author":null,
- "last_edited_at":null,
- "last_edited_by_id":null,
- "discussion_locked":null,
- "closed_at":null,
- "closed_by_id":null,
- "state_id":1,
- "events":[
- {
- "id":1776,
- "project_id":30,
- "author_id":1,
- "target_id":470,
- "created_at":"2019-08-07T04:15:57.789Z",
- "updated_at":"2019-08-07T04:15:57.789Z",
- "target_type":"Issue",
- "action":1
- }
- ],
- "timelogs":[
-
- ],
- "notes":[
-
- ],
- "label_links":[
-
- ],
- "resource_label_events":[
-
- ],
- "issue_assignees":[
-
- ],
- "designs":[
- {
- "id":42,
- "project_id":30,
- "issue_id":470,
- "filename":"1 (1).jpeg",
- "notes":[
-
- ]
- },
- {
- "id":43,
- "project_id":30,
- "issue_id":470,
- "filename":"2099743.jpg",
- "notes":[
-
- ]
- },
- {
- "id":44,
- "project_id":30,
- "issue_id":470,
- "filename":"a screenshot (1).jpg",
- "notes":[
-
- ]
- },
- {
- "id":41,
- "project_id":30,
- "issue_id":470,
- "filename":"chirrido3.jpg",
- "notes":[
-
- ]
- }
- ],
- "design_versions":[
- {
- "id":27,
- "sha":"8587e78ab6bda3bc820a9f014c3be4a21ad4fcc8",
- "issue_id":470,
- "author_id":1,
- "actions":[
- {
- "design_id":41,
- "version_id":27,
- "event":0,
- "design":{
- "id":41,
- "project_id":30,
- "issue_id":470,
- "filename":"chirrido3.jpg"
- }
- }
- ]
- },
- {
- "id":28,
- "sha":"73f871b4c8c1d65c62c460635e023179fb53abc4",
- "issue_id":470,
- "author_id":2,
- "actions":[
- {
- "design_id":42,
- "version_id":28,
- "event":0,
- "design":{
- "id":42,
- "project_id":30,
- "issue_id":470,
- "filename":"1 (1).jpeg"
- }
- },
- {
- "design_id":43,
- "version_id":28,
- "event":0,
- "design":{
- "id":43,
- "project_id":30,
- "issue_id":470,
- "filename":"2099743.jpg"
- }
- }
- ]
- },
- {
- "id":29,
- "sha":"c9b5f067f3e892122a4b12b0a25a8089192f3ac8",
- "issue_id":470,
- "author_id":2,
- "actions":[
- {
- "design_id":42,
- "version_id":29,
- "event":1,
- "design":{
- "id":42,
- "project_id":30,
- "issue_id":470,
- "filename":"1 (1).jpeg"
- }
- },
- {
- "design_id":44,
- "version_id":29,
- "event":0,
- "design":{
- "id":44,
- "project_id":30,
- "issue_id":470,
- "filename":"a screenshot (1).jpg"
- }
- }
- ]
- }
- ]
- }
- ],
- "snippets":[
-
- ],
- "releases":[
-
- ],
- "project_members":[
- {
- "id":95,
- "access_level":40,
- "source_id":30,
- "source_type":"Project",
- "user_id":1,
- "notification_level":3,
- "created_at":"2019-08-07T03:57:32.825Z",
- "updated_at":"2019-08-07T03:57:32.825Z",
- "created_by_id":1,
- "invite_email":null,
- "invite_token":null,
- "invite_accepted_at":null,
- "requested_at":null,
- "expires_at":null,
- "ldap":false,
- "override":false,
- "user":{
- "id":1,
- "public_email":"admin@example.com",
- "username":"root"
- }
- },
- {
- "id":96,
- "access_level":40,
- "source_id":30,
- "source_type":"Project",
- "user_id":2,
- "notification_level":3,
- "created_at":"2019-08-07T03:57:32.825Z",
- "updated_at":"2019-08-07T03:57:32.825Z",
- "created_by_id":null,
- "invite_email":null,
- "invite_token":null,
- "invite_accepted_at":null,
- "requested_at":null,
- "expires_at":null,
- "ldap":false,
- "override":false,
- "user":{
- "id":2,
- "public_email":"user_2@gitlabexample.com",
- "username":"user_2"
- }
- }
- ],
- "merge_requests":[
-
- ],
- "ci_pipelines":[
-
- ],
- "triggers":[
-
- ],
- "pipeline_schedules":[
-
- ],
- "protected_branches":[
-
- ],
- "protected_environments": [
-
- ],
- "protected_tags":[
-
- ],
- "project_feature":{
- "id":30,
- "project_id":30,
- "merge_requests_access_level":20,
- "issues_access_level":20,
- "wiki_access_level":20,
- "snippets_access_level":20,
- "builds_access_level":20,
- "created_at":"2019-08-07T03:57:32.485Z",
- "updated_at":"2019-08-07T03:57:32.485Z",
- "repository_access_level":20,
- "pages_access_level":10
- },
- "custom_attributes":[
-
- ],
- "prometheus_metrics":[
-
- ],
- "project_badges":[
-
- ],
- "ci_cd_settings":{
- "group_runners_enabled":true
- },
- "boards":[
-
- ],
- "pipelines":[
-
- ]
-}
diff --git a/spec/fixtures/lib/gitlab/import_export/group/project.json b/spec/fixtures/lib/gitlab/import_export/group/project.json
deleted file mode 100644
index 671ff92087b..00000000000
--- a/spec/fixtures/lib/gitlab/import_export/group/project.json
+++ /dev/null
@@ -1,282 +0,0 @@
-{
- "description": "Nisi et repellendus ut enim quo accusamus vel magnam.",
- "visibility_level": 10,
- "archived": false,
- "milestones": [
- {
- "id": 1,
- "title": "Project milestone",
- "project_id": 8,
- "description": "Project-level milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "group_id": null
- }
- ],
- "labels": [
- {
- "id": 2,
- "title": "A project label",
- "color": "#428bca",
- "project_id": 8,
- "created_at": "2016-07-22T08:55:44.161Z",
- "updated_at": "2016-07-22T08:55:44.161Z",
- "template": false,
- "description": "",
- "type": "ProjectLabel",
- "priorities": [
- {
- "id": 1,
- "project_id": 5,
- "label_id": 1,
- "priority": 1,
- "created_at": "2016-10-18T09:35:43.338Z",
- "updated_at": "2016-10-18T09:35:43.338Z"
- }
- ]
- }
- ],
- "issues": [
- {
- "id": 1,
- "title": "Fugiat est minima quae maxime non similique.",
- "assignee_id": null,
- "project_id": 8,
- "author_id": 1,
- "created_at": "2017-07-07T18:13:01.138Z",
- "updated_at": "2017-08-15T18:37:40.807Z",
- "branch_name": null,
- "description": "Quam totam fuga numquam in eveniet.",
- "state": "opened",
- "iid": 1,
- "updated_by_id": 1,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "lock_version": null,
- "time_estimate": 0,
- "closed_at": null,
- "last_edited_at": null,
- "last_edited_by_id": null,
- "group_milestone_id": null,
- "milestone": {
- "id": 1,
- "title": "Project milestone",
- "project_id": 8,
- "description": "Project-level milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "group_id": null
- },
- "label_links": [
- {
- "id": 11,
- "label_id": 6,
- "target_id": 1,
- "target_type": "Issue",
- "created_at": "2017-08-15T18:37:40.795Z",
- "updated_at": "2017-08-15T18:37:40.795Z",
- "label": {
- "id": 6,
- "title": "group label",
- "color": "#A8D695",
- "project_id": null,
- "created_at": "2017-08-15T18:37:19.698Z",
- "updated_at": "2017-08-15T18:37:19.698Z",
- "template": false,
- "description": "",
- "group_id": 5,
- "type": "GroupLabel",
- "priorities": []
- }
- },
- {
- "id": 11,
- "label_id": 2,
- "target_id": 1,
- "target_type": "Issue",
- "created_at": "2017-08-15T18:37:40.795Z",
- "updated_at": "2017-08-15T18:37:40.795Z",
- "label": {
- "id": 6,
- "title": "A project label",
- "color": "#A8D695",
- "project_id": null,
- "created_at": "2017-08-15T18:37:19.698Z",
- "updated_at": "2017-08-15T18:37:19.698Z",
- "template": false,
- "description": "",
- "group_id": 5,
- "type": "ProjectLabel",
- "priorities": []
- }
- }
- ]
- },
- {
- "id": 2,
- "title": "Fugiat est minima quae maxime non similique.",
- "assignee_id": null,
- "project_id": 8,
- "author_id": 1,
- "created_at": "2017-07-07T18:13:01.138Z",
- "updated_at": "2017-08-15T18:37:40.807Z",
- "branch_name": null,
- "description": "Quam totam fuga numquam in eveniet.",
- "state": "closed",
- "iid": 2,
- "updated_by_id": 1,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "lock_version": null,
- "time_estimate": 0,
- "closed_at": null,
- "last_edited_at": null,
- "last_edited_by_id": null,
- "group_milestone_id": null,
- "milestone": {
- "id": 2,
- "title": "A group milestone",
- "description": "Group-level milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "group_id": 100
- },
- "label_links": [
- {
- "id": 11,
- "label_id": 2,
- "target_id": 1,
- "target_type": "Issue",
- "created_at": "2017-08-15T18:37:40.795Z",
- "updated_at": "2017-08-15T18:37:40.795Z",
- "label": {
- "id": 2,
- "title": "A project label",
- "color": "#A8D695",
- "project_id": null,
- "created_at": "2017-08-15T18:37:19.698Z",
- "updated_at": "2017-08-15T18:37:19.698Z",
- "template": false,
- "description": "",
- "group_id": 5,
- "type": "ProjectLabel",
- "priorities": []
- }
- }
- ]
- },
- {
- "id": 3,
- "title": "Issue with Epic",
- "author_id": 1,
- "project_id": 8,
- "created_at": "2019-12-08T19:41:11.233Z",
- "updated_at": "2019-12-08T19:41:53.194Z",
- "position": 0,
- "branch_name": null,
- "description": "Donec at nulla vitae sem molestie rutrum ut at sem.",
- "state": "opened",
- "iid": 3,
- "updated_by_id": null,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "issue_assignees": [],
- "notes": [],
- "milestone": {
- "id": 2,
- "title": "A group milestone",
- "description": "Group-level milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "group_id": 100
- },
- "iteration": {
- "created_at": "2022-08-15T12:55:42.607Z",
- "updated_at": "2022-08-15T12:56:19.269Z",
- "start_date": "2022-08-15",
- "due_date": "2022-08-21",
- "group_id": 260,
- "iid": 5,
- "description": "iteration description",
- "iterations_cadence": {
- "title": "iterations cadence"
- }
- },
- "epic_issue": {
- "id": 78,
- "relative_position": 1073740323,
- "epic": {
- "id": 1,
- "group_id": 5,
- "author_id": 1,
- "assignee_id": null,
- "iid": 1,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-12-08T19:37:07.098Z",
- "updated_at": "2019-12-08T19:43:11.568Z",
- "title": "An epic",
- "description": null,
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "milestone_id": null
- }
- },
- "resource_iteration_events": [
- {
- "user_id": 1,
- "created_at": "2022-08-17T13:04:02.495Z",
- "action": "add",
- "iteration": {
- "created_at": "2022-08-15T12:55:42.607Z",
- "updated_at": "2022-08-15T12:56:19.269Z",
- "start_date": "2022-08-15",
- "due_date": "2022-08-21",
- "group_id": 260,
- "iid": 5,
- "description": "iteration description",
- "iterations_cadence": {
- "title": "iterations cadence"
- }
- }
- }
- ]
- }
- ],
- "snippets": [
-
- ],
- "hooks": [
-
- ]
-}
diff --git a/spec/fixtures/lib/gitlab/import_export/group_exports/complex/group.json b/spec/fixtures/lib/gitlab/import_export/group_exports/complex/group.json
deleted file mode 100644
index 1719e744d04..00000000000
--- a/spec/fixtures/lib/gitlab/import_export/group_exports/complex/group.json
+++ /dev/null
@@ -1,2197 +0,0 @@
-{
- "name": "ymg09t5704clnxnqfgaj2h098gz4r7gyx4wc3fzmlqj1en24zf",
- "path": "ymg09t5704clnxnqfgaj2h098gz4r7gyx4wc3fzmlqj1en24zf",
- "owner_id": 2147483547,
- "created_at": "2019-11-20 17:01:53 UTC",
- "updated_at": "2019-11-20 17:05:44 UTC",
- "description": "Group Description",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 0,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": 7,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "saml_discovery_token": "rBKx3ioz",
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "runners_token": "token",
- "runners_token_encrypted": "encrypted",
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "milestones": [
- {
- "id": 7642,
- "title": "v4.0",
- "project_id": null,
- "description": "Et laudantium enim omnis ea reprehenderit iure.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.336Z",
- "updated_at": "2019-11-20T17:02:14.336Z",
- "state": "closed",
- "iid": 5,
- "start_date": null,
- "group_id": 4351
- },
- {
- "id": 7641,
- "title": "v3.0",
- "project_id": null,
- "description": "Et repellat culpa nemo consequatur ut reprehenderit.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.323Z",
- "updated_at": "2019-11-20T17:02:14.323Z",
- "state": "active",
- "iid": 4,
- "start_date": null,
- "group_id": 4351
- },
- {
- "id": 7640,
- "title": "v2.0",
- "project_id": null,
- "description": "Velit cupiditate est neque voluptates iste rem sunt.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.309Z",
- "updated_at": "2019-11-20T17:02:14.309Z",
- "state": "active",
- "iid": 3,
- "start_date": null,
- "group_id": 4351
- },
- {
- "id": 7639,
- "title": "v1.0",
- "project_id": null,
- "description": "Amet velit repellat ut rerum aut cum.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.296Z",
- "updated_at": "2019-11-20T17:02:14.296Z",
- "state": "active",
- "iid": 2,
- "start_date": null,
- "group_id": 4351
- },
- {
- "id": 7638,
- "title": "v0.0",
- "project_id": null,
- "description": "Ea quia asperiores ut modi dolorem sunt non numquam.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.282Z",
- "updated_at": "2019-11-20T17:02:14.282Z",
- "state": "active",
- "iid": 1,
- "start_date": null,
- "group_id": 4351
- }
- ],
- "badges": [
- {
- "id": 10,
- "link_url": "https://localhost:3443/%{default_branch}",
- "image_url": "https://badge_image.png",
- "project_id": null,
- "group_id": 4351,
- "created_at": "2019-11-20T17:27:02.047Z",
- "updated_at": "2019-11-20T17:27:02.047Z",
- "type": "GroupBadge"
- }
- ],
- "labels": [
- {
- "id": 23452,
- "title": "Bruffefunc",
- "color": "#1d2da4",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.546Z",
- "updated_at": "2019-11-20T17:02:20.546Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23446,
- "title": "Cafunc",
- "color": "#73ed5b",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.526Z",
- "updated_at": "2019-11-20T17:02:20.526Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23451,
- "title": "Casche",
- "color": "#649a75",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.544Z",
- "updated_at": "2019-11-20T17:02:20.544Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23444,
- "title": "Cocell",
- "color": "#1b365c",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.521Z",
- "updated_at": "2019-11-20T17:02:20.521Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23449,
- "title": "Packfunc",
- "color": "#e33bba",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.537Z",
- "updated_at": "2019-11-20T17:02:20.537Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23443,
- "title": "Panabalt",
- "color": "#84f708",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.518Z",
- "updated_at": "2019-11-20T17:02:20.518Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23447,
- "title": "Phierefunc",
- "color": "#4ab4a8",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.530Z",
- "updated_at": "2019-11-20T17:02:20.530Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23445,
- "title": "Pons",
- "color": "#47f440",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.523Z",
- "updated_at": "2019-11-20T17:02:20.523Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23448,
- "title": "Sosync",
- "color": "#110320",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.532Z",
- "updated_at": "2019-11-20T17:02:20.532Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23450,
- "title": "TSL",
- "color": "#58796f",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.541Z",
- "updated_at": "2019-11-20T17:02:20.541Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- }
- ],
- "boards": [
- {
- "id": 173,
- "project_id": null,
- "created_at": "2020-02-11T14:35:51.561Z",
- "updated_at": "2020-02-11T14:35:51.561Z",
- "name": "first board",
- "milestone_id": null,
- "group_id": 4351,
- "weight": null,
- "lists": [
- {
- "id": 189,
- "board_id": 173,
- "label_id": 271,
- "list_type": "label",
- "position": 0,
- "created_at": "2020-02-11T14:35:57.131Z",
- "updated_at": "2020-02-11T14:35:57.131Z",
- "user_id": null,
- "milestone_id": null,
- "max_issue_count": 0,
- "max_issue_weight": 0,
- "label": {
- "id": 271,
- "title": "TSL",
- "color": "#58796f",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.541Z",
- "updated_at": "2020-02-06T15:44:52.048Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": []
- },
- "board": {
- "id": 173,
- "project_id": null,
- "created_at": "2020-02-11T14:35:51.561Z",
- "updated_at": "2020-02-11T14:35:51.561Z",
- "name": "hi",
- "milestone_id": null,
- "group_id": 4351,
- "weight": null
- }
- },
- {
- "id": 190,
- "board_id": 173,
- "label_id": 272,
- "list_type": "label",
- "position": 1,
- "created_at": "2020-02-11T14:35:57.868Z",
- "updated_at": "2020-02-11T14:35:57.868Z",
- "user_id": null,
- "milestone_id": null,
- "max_issue_count": 0,
- "max_issue_weight": 0,
- "label": {
- "id": 272,
- "title": "Sosync",
- "color": "#110320",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.532Z",
- "updated_at": "2020-02-06T15:44:52.057Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": []
- },
- "board": {
- "id": 173,
- "project_id": null,
- "created_at": "2020-02-11T14:35:51.561Z",
- "updated_at": "2020-02-11T14:35:51.561Z",
- "name": "hi",
- "milestone_id": null,
- "group_id": 4351,
- "weight": null
- }
- },
- {
- "id": 188,
- "board_id": 173,
- "label_id": null,
- "list_type": "closed",
- "position": null,
- "created_at": "2020-02-11T14:35:51.593Z",
- "updated_at": "2020-02-11T14:35:51.593Z",
- "user_id": null,
- "milestone_id": null,
- "max_issue_count": 0,
- "max_issue_weight": 0
- }
- ],
- "labels": []
- }
- ],
- "members": [
- {
- "id": 13766,
- "access_level": 30,
- "source_id": 4351,
- "source_type": "Namespace",
- "user_id": 42,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:36.184Z",
- "updated_at": "2019-11-20T17:04:36.184Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 42,
- "public_email": "moriah@collinsmurphy.com",
- "username": "reported_user_15"
- }
- },
- {
- "id": 13765,
- "access_level": 40,
- "source_id": 4351,
- "source_type": "Namespace",
- "user_id": 271,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:36.044Z",
- "updated_at": "2019-11-20T17:04:36.044Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 271,
- "public_email": "garret@connellystark.ca",
- "username": "charlesetta"
- }
- },
- {
- "id": 13764,
- "access_level": 30,
- "source_id": 4351,
- "source_type": "Namespace",
- "user_id": 206,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:35.840Z",
- "updated_at": "2019-11-20T17:04:35.840Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 206,
- "public_email": "gwendolyn_robel@gitlabexample.com",
- "username": "gwendolyn_robel"
- }
- },
- {
- "id": 13763,
- "access_level": 10,
- "source_id": 4351,
- "source_type": "Namespace",
- "user_id": 39,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:35.704Z",
- "updated_at": "2019-11-20T17:04:35.704Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 39,
- "public_email": "alexis_berge@kerlukeklein.us",
- "username": "reported_user_12"
- }
- },
- {
- "id": 13762,
- "access_level": 20,
- "source_id": 4351,
- "source_type": "Namespace",
- "user_id": 1624,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:35.566Z",
- "updated_at": "2019-11-20T17:04:35.566Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 1624,
- "public_email": "adriene.mcclure@gitlabexample.com",
- "username": "adriene.mcclure"
- }
- },
- {
- "id": 12920,
- "access_level": 50,
- "source_id": 4351,
- "source_type": "Namespace",
- "user_id": 1,
- "notification_level": 3,
- "created_at": "2019-11-20T17:01:53.505Z",
- "updated_at": "2019-11-20T17:01:53.505Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 1,
- "public_email": "admin@example.com",
- "username": "root"
- }
- }
- ],
- "epics": [
- {
- "id": 13622,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 1,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.754Z",
- "updated_at": "2019-11-20T18:38:40.054Z",
- "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
- "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "notes": [
- {
- "id": 44170,
- "note": "added epic \u00265 as child epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:40.031Z",
- "updated_at": "2019-11-20T18:38:40.035Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13622,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "ba005d8dd59cd37a4f32406d46e759b08fd15510",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- },
- "award_emoji": [
- {
- "id": 12,
- "name": "drum",
- "user_id": 1,
- "awardable_type": "Note",
- "awardable_id": 44170,
- "created_at": "2019-11-05T15:32:21.287Z",
- "updated_at": "2019-11-05T15:32:21.287Z"
- }
- ]
- },
- {
- "id": 44168,
- "note": "added epic \u00264 as child epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:35.669Z",
- "updated_at": "2019-11-20T18:38:35.673Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13622,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "9b49d3b017aadc1876d477b960e6f8efb99ce29f",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- },
- {
- "id": 44166,
- "note": "added epic \u00263 as child epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:30.944Z",
- "updated_at": "2019-11-20T18:38:30.948Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13622,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "cccfe967f48e699a466c87a55a9f8acb00fec1a1",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- },
- {
- "id": 44164,
- "note": "added epic \u00262 as child epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:26.689Z",
- "updated_at": "2019-11-20T18:38:26.724Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13622,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "133f0c3001860fa8d2031e398a65db74477378c4",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- }
- ],
- "award_emoji": [
- {
- "id": 12,
- "name": "thumbsup",
- "user_id": 1,
- "awardable_type": "Epic",
- "awardable_id": 13622,
- "created_at": "2019-11-05T15:37:21.287Z",
- "updated_at": "2019-11-05T15:37:21.287Z"
- }
- ]
- },
- {
- "id": 13623,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 2,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.769Z",
- "updated_at": "2019-11-20T18:38:26.851Z",
- "title": "Omnis accusantium commodi voluptas odio illo eum ut.",
- "description": "Eius vero et iste amet est voluptatem modi. Doloribus ipsam beatae et ut autem ut animi. Dolor culpa dolor omnis delectus est tempora inventore ab. Optio labore tenetur libero quia provident et quis. Blanditiis architecto sint possimus cum aut adipisci.\n\nDolores quisquam sunt cupiditate unde qui vitae nemo. Odio quas omnis ut nobis. Possimus fugit deserunt quia sed ab numquam veritatis nihil.\n\nQui nemo adipisci magnam perferendis voluptatem modi. Eius enim iure dolores consequuntur eum nobis adipisci. Consequatur architecto et quas deleniti hic id laborum officiis. Enim perferendis quis quasi totam delectus rerum deleniti.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": 13622,
- "relative_position": 1073741323,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "parent": {
- "id": 13622,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 1,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.754Z",
- "updated_at": "2019-11-20T18:38:40.054Z",
- "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
- "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null
- },
- "notes": [
- {
- "id": 44165,
- "note": "added epic \u00261 as parent epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:26.822Z",
- "updated_at": "2019-11-20T18:38:26.826Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13623,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "15f0a7f4ed16a07bc78841e122524bb867edcf86",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- }
- ]
- },
- {
- "id": 13624,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 3,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.783Z",
- "updated_at": "2019-11-20T18:38:31.018Z",
- "title": "Quis dolore velit possimus eaque aut amet esse voluptate aliquam.",
- "description": "Ab veritatis reprehenderit nulla laboriosam et sed asperiores corporis. Est accusantium maxime perferendis et. Omnis a qui voluptates non excepturi.\n\nAdipisci labore maiores dicta sed magnam aut. Veritatis delectus dolorum qui id. Dolorum tenetur quo iure amet. Eveniet reprehenderit dolor ipsam quia ratione quo. Facilis voluptatem vel repellat id illum.\n\nAut et magnam aut minus aspernatur. Fuga quo necessitatibus mollitia maxime quasi. Qui aspernatur quia accusamus est quod. Qui assumenda veritatis dolor non eveniet quibusdam quos qui.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": 13622,
- "relative_position": 1073740823,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "parent": {
- "id": 13622,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 1,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.754Z",
- "updated_at": "2019-11-20T18:38:40.054Z",
- "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
- "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null
- },
- "notes": [
- {
- "id": 44167,
- "note": "added epic \u00261 as parent epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:30.989Z",
- "updated_at": "2019-11-20T18:38:30.993Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13624,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "423ffec14a3ce148c11a802eb1f2613fa8ca9a94",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- }
- ]
- },
- {
- "id": 13625,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 4,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.798Z",
- "updated_at": "2019-11-20T18:38:35.765Z",
- "title": "Possimus et ut iste temporibus earum cupiditate voluptatem esse assumenda amet.",
- "description": "Et at corporis sed id rerum ullam dolore. Odio magnam corporis excepturi neque est. Est accusamus nostrum qui rerum.\n\nEt aut dolores eaque quibusdam aut quas explicabo id. Est necessitatibus praesentium omnis et vero laboriosam et. Sunt in saepe qui laudantium et voluptas.\n\nVelit sunt odit eum omnis beatae eius aut. Dolores commodi qui impedit deleniti et magnam pariatur. Aut odit amet ipsum ea atque. Itaque est ut sunt ullam eum nam.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": 13622,
- "relative_position": 1073740323,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "parent": {
- "id": 13622,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 1,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.754Z",
- "updated_at": "2019-11-20T18:38:40.054Z",
- "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
- "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null
- },
- "notes": [
- {
- "id": 44169,
- "note": "added epic \u00261 as parent epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:35.737Z",
- "updated_at": "2019-11-20T18:38:35.741Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13625,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "5bc3e30d508affafc61de2b4e1d9f21039505cc3",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- }
- ]
- },
- {
- "id": 13626,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 5,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.812Z",
- "updated_at": "2019-11-20T18:38:40.101Z",
- "title": "Ab deleniti ipsum voluptatem dolor qui quos saepe repellat quo.",
- "description": "Sunt minus sunt reiciendis culpa sed excepturi. Aperiam sed quod nemo nesciunt et quia molestias incidunt. Ipsum nam magnam labore eos a molestiae rerum possimus. Sequi autem asperiores voluptas assumenda.\n\nRerum ipsa quia cum ab corrupti omnis. Velit libero et nihil ipsa aut quo rem ipsam. Architecto omnis distinctio sed doloribus perspiciatis consequatur aut et. Fugit consequuntur est minima reiciendis reprehenderit et.\n\nConsequatur distinctio et ut blanditiis perferendis officiis inventore. Alias aut voluptatem in facere. Ut perferendis dolorum hic dolores. Ipsa dolorem soluta at mollitia. Placeat et ea numquam dicta molestias.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": 13622,
- "relative_position": 1073739823,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "parent": {
- "id": 13622,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 1,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.754Z",
- "updated_at": "2019-11-20T18:38:40.054Z",
- "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
- "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null
- },
- "notes": [
- {
- "id": 44171,
- "note": "added epic \u00261 as parent epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:40.074Z",
- "updated_at": "2019-11-20T18:38:40.077Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13626,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "a6231acdaef5f4d2e569dfb604f1baf85c49e1a0",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- }
- ]
- }
- ],
- "children": [
- {
- "name": "pwip17beq7vl4nuwz9ie7bk8navpxj1w04zylmmjveab5bargr",
- "path": "pwip17beq7vl4nuwz9ie7bk8navpxj1w04zylmmjveab5bargr",
- "owner_id": null,
- "created_at": "2019-11-20 17:01:53 UTC",
- "updated_at": "2019-11-20 17:05:44 UTC",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 0,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": 4351,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "saml_discovery_token": "ki3Xnjw3",
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "milestones": [
- {
- "id": 7647,
- "title": "v4.0",
- "project_id": null,
- "description": "Magnam accusantium fuga quo dolorum.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.511Z",
- "updated_at": "2019-11-20T17:02:14.511Z",
- "state": "active",
- "iid": 5,
- "start_date": null,
- "group_id": 4352
- },
- {
- "id": 7646,
- "title": "v3.0",
- "project_id": null,
- "description": "Quasi ut beatae quo vel.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.392Z",
- "updated_at": "2019-11-20T17:02:14.392Z",
- "state": "active",
- "iid": 4,
- "start_date": null,
- "group_id": 4352
- },
- {
- "id": 7645,
- "title": "v2.0",
- "project_id": null,
- "description": "Voluptates et rerum maxime sint cum.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.380Z",
- "updated_at": "2019-11-20T17:02:14.380Z",
- "state": "closed",
- "iid": 3,
- "start_date": null,
- "group_id": 4352
- },
- {
- "id": 7644,
- "title": "v1.0",
- "project_id": null,
- "description": "Qui dolores et facilis corporis dolores.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.364Z",
- "updated_at": "2019-11-20T17:02:14.364Z",
- "state": "active",
- "iid": 2,
- "start_date": null,
- "group_id": 4352
- },
- {
- "id": 7643,
- "title": "v0.0",
- "project_id": null,
- "description": "Et dolor nam rerum culpa nisi doloremque ex.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.351Z",
- "updated_at": "2019-11-20T17:02:14.351Z",
- "state": "active",
- "iid": 1,
- "start_date": null,
- "group_id": 4352
- }
- ],
- "badges": [
- {
- "id": 14,
- "link_url": "https://localhost:3443/%{default_branch}",
- "image_url": "https://badge_image.png",
- "project_id": null,
- "group_id": 4352,
- "created_at": "2019-11-20T17:29:36.656Z",
- "updated_at": "2019-11-20T17:29:36.656Z",
- "type": "GroupBadge"
- }
- ],
- "labels": [
- {
- "id": 23453,
- "title": "Brire",
- "color": "#d68d9d",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.549Z",
- "updated_at": "2019-11-20T17:02:20.549Z",
- "template": false,
- "description": null,
- "group_id": 4352,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#333333"
- },
- {
- "id": 23461,
- "title": "Cygfunc",
- "color": "#a0695d",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.575Z",
- "updated_at": "2019-11-20T17:02:20.575Z",
- "template": false,
- "description": null,
- "group_id": 4352,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23459,
- "title": "Cygnix",
- "color": "#691678",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.569Z",
- "updated_at": "2019-11-20T17:02:20.569Z",
- "template": false,
- "description": null,
- "group_id": 4352,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23456,
- "title": "Genbalt",
- "color": "#7f800c",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.560Z",
- "updated_at": "2019-11-20T17:02:20.560Z",
- "template": false,
- "description": null,
- "group_id": 4352,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23457,
- "title": "NBP",
- "color": "#e19356",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.564Z",
- "updated_at": "2019-11-20T17:02:20.564Z",
- "template": false,
- "description": null,
- "group_id": 4352,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23455,
- "title": "Pionce",
- "color": "#65c1b1",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.555Z",
- "updated_at": "2019-11-20T17:02:20.555Z",
- "template": false,
- "description": null,
- "group_id": 4352,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23458,
- "title": "Pist",
- "color": "#f62da4",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.566Z",
- "updated_at": "2019-11-20T17:02:20.566Z",
- "template": false,
- "description": null,
- "group_id": 4352,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23454,
- "title": "Poffe",
- "color": "#4f03bc",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.552Z",
- "updated_at": "2019-11-20T17:02:20.552Z",
- "template": false,
- "description": null,
- "group_id": 4352,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23460,
- "title": "Poune",
- "color": "#036637",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.572Z",
- "updated_at": "2019-11-20T17:02:20.572Z",
- "template": false,
- "description": null,
- "group_id": 4352,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- }
- ],
- "boards": [
- {
- "id": 64,
- "project_id": null,
- "created_at": "2019-11-20T17:29:39.872Z",
- "updated_at": "2019-11-20T17:29:39.872Z",
- "name": "Development",
- "milestone_id": null,
- "group_id": 4352,
- "weight": null,
- "labels": []
- },
- {
- "id": 65,
- "project_id": null,
- "created_at": "2019-11-20T17:29:47.304Z",
- "updated_at": "2019-11-20T17:29:47.304Z",
- "name": "Sub Board 4",
- "milestone_id": null,
- "group_id": 4352,
- "weight": null,
- "labels": []
- }
- ],
- "members": [
- {
- "id": 13771,
- "access_level": 30,
- "source_id": 4352,
- "source_type": "Namespace",
- "user_id": 1087,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:36.968Z",
- "updated_at": "2019-11-20T17:04:36.968Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 1087,
- "public_email": "paige@blanda.info",
- "username": "billi_auer"
- }
- },
- {
- "id": 13770,
- "access_level": 20,
- "source_id": 4352,
- "source_type": "Namespace",
- "user_id": 171,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:36.821Z",
- "updated_at": "2019-11-20T17:04:36.821Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 171,
- "public_email": "heidi@bosco.co.uk",
- "username": "gerard.cruickshank"
- }
- },
- {
- "id": 13769,
- "access_level": 30,
- "source_id": 4352,
- "source_type": "Namespace",
- "user_id": 1157,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:36.606Z",
- "updated_at": "2019-11-20T17:04:36.606Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 1157,
- "public_email": "larisa.bruen@carroll.biz",
- "username": "milagros.reynolds"
- }
- },
- {
- "id": 13768,
- "access_level": 40,
- "source_id": 4352,
- "source_type": "Namespace",
- "user_id": 14,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:36.465Z",
- "updated_at": "2019-11-20T17:04:36.465Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 14,
- "public_email": "madlyn_kovacek@wiza.ca",
- "username": "monique.gusikowski"
- }
- },
- {
- "id": 13767,
- "access_level": 10,
- "source_id": 4352,
- "source_type": "Namespace",
- "user_id": 1167,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:36.324Z",
- "updated_at": "2019-11-20T17:04:36.324Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 1167,
- "public_email": "mirella@koepp.ca",
- "username": "eileen"
- }
- },
- {
- "id": 12921,
- "access_level": 50,
- "source_id": 4352,
- "source_type": "Namespace",
- "user_id": 1,
- "notification_level": 3,
- "created_at": "2019-11-20T17:01:53.953Z",
- "updated_at": "2019-11-20T17:01:53.953Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 1,
- "public_email": "admin@example.com",
- "username": "root"
- }
- }
- ],
- "epics": [
- {
- "id": 13627,
- "milestone_id": null,
- "group_id": 4352,
- "author_id": 1,
- "assignee_id": null,
- "iid": 1,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.848Z",
- "updated_at": "2019-11-20T17:02:09.848Z",
- "title": "Nobis omnis occaecati veritatis quia eveniet sed ut cupiditate ut a.",
- "description": "Provident iusto ipsam fuga vero. Aut mollitia earum iusto doloremque recusandae enim nam et. Quas maxime sint libero dolorum aut cumque molestias quam. Iure voluptas voluptatum similique voluptatem dolorem.\n\nAnimi aliquid praesentium sint voluptatum fuga voluptates molestias. Non hic sit modi minus a. Illum asperiores sed eius dolor impedit animi. Dolor vel fugit voluptas quia voluptatem aut minus.\n\nVelit voluptatum deleniti illo quos omnis deserunt. Omnis consequatur omnis nulla et et. Praesentium dolores rem consequatur laboriosam harum quae. Aut id aliquam nihil consequuntur.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "notes": []
- },
- {
- "id": 13628,
- "milestone_id": null,
- "group_id": 4352,
- "author_id": 1,
- "assignee_id": null,
- "iid": 2,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.863Z",
- "updated_at": "2019-11-20T17:02:09.863Z",
- "title": "Assumenda possimus sed nostrum consequatur ut sint nihil fugiat.",
- "description": "Culpa fugiat voluptas ut voluptas quo laborum eius. Earum qui dolore temporibus consequatur ratione minima architecto accusantium. Corporis accusantium et consequatur est mollitia sint fugiat aliquam. Est aut quia blanditiis et sint reiciendis. Eveniet accusamus quod molestiae vero hic a ipsum.\n\nNon numquam eum repellendus ipsa tempore necessitatibus. Delectus aut doloremque quis saepe nam ut aut a. Qui corrupti eum animi ipsam. Voluptatem distinctio consequatur accusantium blanditiis.\n\nQuis voluptatum facere inventore itaque quae. Quis quae dolorum autem qui labore. Laboriosam asperiores laborum aperiam voluptatibus error ut quos similique. Deleniti fugit ut eveniet ab quae.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state": "closed",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "notes": []
- },
- {
- "id": 13629,
- "milestone_id": null,
- "group_id": 4352,
- "author_id": 1,
- "assignee_id": null,
- "iid": 3,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.879Z",
- "updated_at": "2019-11-20T17:02:09.879Z",
- "title": "Ut dolore eos molestiae perferendis quibusdam accusamus.",
- "description": "Possimus vel adipisci consequatur asperiores. Et aspernatur quis ipsum aut natus tempora. Recusandae voluptatibus officiis praesentium et. Nostrum beatae laboriosam dolor nihil ut deserunt ad. Exercitationem iure hic minus deleniti assumenda quis rem.\n\nVoluptate optio et impedit sapiente dignissimos deleniti sit ea. Neque modi voluptates accusamus non non officia sit quis. Qui nihil dolores aut nostrum quia sed dolore perspiciatis. Vero necessitatibus inventore eligendi est aliquid dolorum.\n\nNulla et autem aut fugit aut aut expedita. Molestiae beatae eligendi reiciendis temporibus mollitia aut reprehenderit. Autem maiores rerum dolorum cupiditate. Cum est quasi ab et. Ratione doloribus quas perspiciatis alias voluptates et.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "notes": []
- },
- {
- "id": 13630,
- "milestone_id": null,
- "group_id": 4352,
- "author_id": 1,
- "assignee_id": null,
- "iid": 4,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.894Z",
- "updated_at": "2019-11-20T17:02:09.894Z",
- "title": "Molestias numquam ut veritatis suscipit eum vitae minima et consequatur sit.",
- "description": "Ad omnis tempore blanditiis vero possimus. Quis quidem et quo cumque pariatur. Nihil eaque inventore natus delectus est qui voluptate. Officiis illo voluptatum aut modi. Inventore voluptate est voluptatem deserunt aut esse.\n\nOdit deserunt ut expedita sit ut. Nam est aut alias quibusdam. Est delectus ratione expedita hic eaque est. Delectus est voluptatibus quo aut dolorem. Libero saepe alias aspernatur itaque et qui.\n\nOmnis voluptas nemo nostrum accusantium. Perspiciatis cupiditate quia quo asperiores. Voluptas perspiciatis nihil officia consectetur recusandae. Libero sed eum laborum expedita quisquam soluta incidunt odit.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state": "closed",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "notes": []
- },
- {
- "id": 13631,
- "milestone_id": null,
- "group_id": 4352,
- "author_id": 1,
- "assignee_id": null,
- "iid": 5,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.908Z",
- "updated_at": "2019-11-20T17:02:09.908Z",
- "title": "Labore quas voluptas delectus fugiat aut nihil vero.",
- "description": "Necessitatibus aspernatur sunt repellat non animi reprehenderit. Dolor harum ad tempore nesciunt aperiam tenetur. Tempore in est sed quo. Aliquam eaque ullam est consequuntur porro rerum minima aspernatur. Ullam cupiditate illum dicta praesentium assumenda.\n\nEnim impedit ab dolorem libero maiores. Non consectetur ut molestiae quo atque quae necessitatibus. Placeat eveniet minus occaecati magni.\n\nConsequuntur laboriosam quisquam quo eligendi et quia. Sunt ipsam unde adipisci ad praesentium. Odit quia eius quia harum dolor nobis.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "notes": []
- }
- ],
- "children": []
- },
- {
- "name": "4n1db5ghlicx3ioddnwftxygq65nxb96dafkf89qp7p9sjqi3p",
- "path": "4n1db5ghlicx3ioddnwftxygq65nxb96dafkf89qp7p9sjqi3p",
- "owner_id": null,
- "created_at": "2019-11-20 17:01:54 UTC",
- "updated_at": "2019-11-20 17:05:44 UTC",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 0,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": 4351,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "saml_discovery_token": "m7cx4AZi",
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "milestones": [
- {
- "id": 7662,
- "title": "v4.0",
- "project_id": null,
- "description": "Consequatur quaerat aut voluptas repudiandae.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.746Z",
- "updated_at": "2019-11-20T17:02:14.746Z",
- "state": "active",
- "iid": 5,
- "start_date": null,
- "group_id": 4355
- },
- {
- "id": 7661,
- "title": "v3.0",
- "project_id": null,
- "description": "In cupiditate aspernatur non ipsa enim consequatur.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.731Z",
- "updated_at": "2019-11-20T17:02:14.731Z",
- "state": "active",
- "iid": 4,
- "start_date": null,
- "group_id": 4355
- },
- {
- "id": 7660,
- "title": "v2.0",
- "project_id": null,
- "description": "Dolor non rem omnis atque.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.716Z",
- "updated_at": "2019-11-20T17:02:14.716Z",
- "state": "closed",
- "iid": 3,
- "start_date": null,
- "group_id": 4355
- },
- {
- "id": 7659,
- "title": "v1.0",
- "project_id": null,
- "description": "Nihil consectetur et quibusdam esse quae.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.701Z",
- "updated_at": "2019-11-20T17:02:14.701Z",
- "state": "closed",
- "iid": 2,
- "start_date": null,
- "group_id": 4355
- },
- {
- "id": 7658,
- "title": "v0.0",
- "project_id": null,
- "description": "Suscipit dolor id magnam reprehenderit.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.686Z",
- "updated_at": "2019-11-20T17:02:14.686Z",
- "state": "active",
- "iid": 1,
- "start_date": null,
- "group_id": 4355
- }
- ],
- "badges": [
- {
- "id": 11,
- "link_url": "https://localhost:3443/%{default_branch}",
- "image_url": "https://badge_image.png",
- "project_id": null,
- "group_id": 4355,
- "created_at": "2019-11-20T17:28:11.883Z",
- "updated_at": "2019-11-20T17:28:11.883Z",
- "type": "GroupBadge"
- }
- ],
- "labels": [
- {
- "id": 23488,
- "title": "Brisync",
- "color": "#66ac54",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.654Z",
- "updated_at": "2019-11-20T17:02:20.654Z",
- "template": false,
- "description": null,
- "group_id": 4355,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23486,
- "title": "Casync",
- "color": "#2f494d",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.648Z",
- "updated_at": "2019-11-20T17:02:20.648Z",
- "template": false,
- "description": null,
- "group_id": 4355,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23485,
- "title": "Cygnix",
- "color": "#691678",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.646Z",
- "updated_at": "2019-11-20T17:02:20.646Z",
- "template": false,
- "description": null,
- "group_id": 4355,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23484,
- "title": "Pynce",
- "color": "#117075",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.643Z",
- "updated_at": "2019-11-20T17:02:20.643Z",
- "template": false,
- "description": null,
- "group_id": 4355,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23490,
- "title": "Pynswood",
- "color": "#67314e",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.663Z",
- "updated_at": "2019-11-20T17:02:20.663Z",
- "template": false,
- "description": null,
- "group_id": 4355,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23483,
- "title": "Triffe",
- "color": "#3bf49a",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.640Z",
- "updated_at": "2019-11-20T17:02:20.640Z",
- "template": false,
- "description": null,
- "group_id": 4355,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23489,
- "title": "Trintforge",
- "color": "#cdab1a",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.657Z",
- "updated_at": "2019-11-20T17:02:20.657Z",
- "template": false,
- "description": null,
- "group_id": 4355,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23482,
- "title": "Trouffeforge",
- "color": "#db06cb",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.637Z",
- "updated_at": "2019-11-20T17:02:20.637Z",
- "template": false,
- "description": null,
- "group_id": 4355,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23487,
- "title": "Tryre",
- "color": "#d00c41",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.651Z",
- "updated_at": "2019-11-20T17:02:20.651Z",
- "template": false,
- "description": null,
- "group_id": 4355,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- }
- ],
- "boards": [
- {
- "id": 58,
- "project_id": null,
- "created_at": "2019-11-20T17:28:15.616Z",
- "updated_at": "2019-11-20T17:28:15.616Z",
- "name": "Development",
- "milestone_id": null,
- "group_id": 4355,
- "weight": null,
- "labels": []
- },
- {
- "id": 59,
- "project_id": null,
- "created_at": "2019-11-20T17:28:25.289Z",
- "updated_at": "2019-11-20T17:28:25.289Z",
- "name": "Sub Board 1",
- "milestone_id": null,
- "group_id": 4355,
- "weight": null,
- "labels": []
- }
- ],
- "members": [
- {
- "id": 13786,
- "access_level": 30,
- "source_id": 4355,
- "source_type": "Namespace",
- "user_id": 1533,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:39.405Z",
- "updated_at": "2019-11-20T17:04:39.405Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 1533,
- "public_email": "jose@cassin.ca",
- "username": "buster"
- }
- },
- {
- "id": 13785,
- "access_level": 10,
- "source_id": 4355,
- "source_type": "Namespace",
- "user_id": 1586,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:39.269Z",
- "updated_at": "2019-11-20T17:04:39.269Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 1586,
- "public_email": "carie@gleichner.us",
- "username": "dominque"
- }
- },
- {
- "id": 13784,
- "access_level": 30,
- "source_id": 4355,
- "source_type": "Namespace",
- "user_id": 190,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:39.127Z",
- "updated_at": "2019-11-20T17:04:39.127Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 190,
- "public_email": "delois@funk.biz",
- "username": "kittie"
- }
- },
- {
- "id": 13783,
- "access_level": 20,
- "source_id": 4355,
- "source_type": "Namespace",
- "user_id": 254,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:38.971Z",
- "updated_at": "2019-11-20T17:04:38.971Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 254,
- "public_email": "tyra.lowe@whitemckenzie.co.uk",
- "username": "kassie"
- }
- },
- {
- "id": 13782,
- "access_level": 40,
- "source_id": 4355,
- "source_type": "Namespace",
- "user_id": 503,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:38.743Z",
- "updated_at": "2019-11-20T17:04:38.743Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 503,
- "public_email": "tyesha.brakus@bruen.ca",
- "username": "charise"
- }
- },
- {
- "id": 12924,
- "access_level": 50,
- "source_id": 4355,
- "source_type": "Namespace",
- "user_id": 1,
- "notification_level": 3,
- "created_at": "2019-11-20T17:01:54.145Z",
- "updated_at": "2019-11-20T17:01:54.145Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 1,
- "public_email": "admin@example.com",
- "username": "root"
- }
- }
- ],
- "epics": [
- {
- "id": 13642,
- "milestone_id": null,
- "group_id": 4355,
- "author_id": 1,
- "assignee_id": null,
- "iid": 1,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:10.151Z",
- "updated_at": "2019-11-20T17:02:10.151Z",
- "title": "Iste qui ratione dolores nisi vel dolor ea totam omnis aut.",
- "description": "Voluptas dolore tenetur repudiandae repellendus maiores beatae quia et. Nisi mollitia exercitationem ut dolores tempore repellat similique. Nesciunt sit occaecati fugiat voluptates qui. Provident quod qui nulla atque dignissimos.\n\nAd veritatis nihil illum nisi est accusamus recusandae. Eos dolore autem ab corporis consectetur officiis ipsum. Consequatur non quis dolor rerum et hic consectetur dicta. Sed aut consectetur mollitia est.\n\nQuia sed dolore culpa error omnis quae quaerat. Magni quos quod illo tempore et eligendi enim. Autem reprehenderit esse vitae aut ipsum consectetur quis.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "notes": []
- },
- {
- "id": 13643,
- "milestone_id": null,
- "group_id": 4355,
- "author_id": 1,
- "assignee_id": null,
- "iid": 2,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:10.166Z",
- "updated_at": "2019-11-20T17:02:10.166Z",
- "title": "Corporis placeat ut totam impedit ex qui debitis atque et provident.",
- "description": "Quam aut in distinctio ut accusamus aliquam dolor sit. Aliquid quod corporis voluptas aliquam voluptate blanditiis distinctio dolore. Qui quis et qui non sunt deleniti iusto consequatur. Quasi quos omnis nobis et tenetur.\n\nCorrupti eius quod molestias et magnam laboriosam quia quis. Architecto aut eius est voluptas mollitia. Suscipit amet consequatur recusandae natus. Consectetur error quisquam est quas et qui.\n\nRerum earum fugit dolore sunt inventore. Vitae odit tempore autem adipisci voluptate esse placeat nobis. Debitis necessitatibus harum molestiae ex minima tempore consequuntur nihil.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "notes": []
- },
- {
- "id": 13644,
- "milestone_id": null,
- "group_id": 4355,
- "author_id": 1,
- "assignee_id": null,
- "iid": 3,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:10.180Z",
- "updated_at": "2019-11-20T17:02:10.180Z",
- "title": "Voluptatem incidunt soluta fuga doloribus dolores nisi reiciendis impedit.",
- "description": "Ipsa qui enim deleniti voluptas. Quasi nihil est blanditiis voluptas laudantium cum sequi consequatur. Id quo et atque error et possimus.\n\nUllam ea soluta ipsam sunt veritatis. Et incidunt natus consequatur repellat. Quam molestias magni consequatur soluta aut nobis. Maxime natus aperiam unde recusandae. A in dolorum facilis veniam est.\n\nEx repellendus tempore rem voluptatibus ad culpa consequatur. Consequatur quo quo dolore dicta nostrum necessitatibus tenetur. A voluptatem harum corporis qui quod molestiae culpa.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "notes": []
- },
- {
- "id": 13645,
- "milestone_id": null,
- "group_id": 4355,
- "author_id": 1,
- "assignee_id": null,
- "iid": 4,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:10.194Z",
- "updated_at": "2019-11-20T17:02:10.194Z",
- "title": "Aut quo veniam soluta veritatis autem doloremque totam qui quia.",
- "description": "Dolor itaque sunt perspiciatis quas natus et praesentium. A sit sapiente dolores ut et dolorum nihil omnis. Dolor quis dolores aut et perferendis.\n\nConsequatur molestiae laboriosam eum consequatur recusandae maxime deleniti commodi. Voluptas voluptatem eaque dicta animi aliquam rerum veritatis. Fugiat consequatur est sit et voluptatem.\n\nSequi tenetur itaque est vero eligendi quia laudantium et. Modi assumenda odio explicabo est non et. Voluptatem et enim minus sit at dicta est.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "notes": []
- },
- {
- "id": 13646,
- "milestone_id": null,
- "group_id": 4355,
- "author_id": 1,
- "assignee_id": null,
- "iid": 5,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:10.208Z",
- "updated_at": "2019-11-20T17:02:10.208Z",
- "title": "Reprehenderit molestias incidunt non odio laudantium minima eum debitis ipsum.",
- "description": "Quas velit omnis architecto quis eius. Vitae unde velit veniam dolor. Dolores facilis vel repellat et placeat ea rerum ratione. Rem fugit ab assumenda provident vel voluptas harum.\n\nQuia molestias similique illum delectus modi officiis. Aut modi sit ut qui. Est sequi corrupti laudantium ut optio eveniet ut. Corrupti quo provident natus aut omnis nam.\n\nVoluptas facilis repudiandae est quam. Mollitia fugit sint voluptatem aut. Quam quo eligendi id ad perferendis quis magnam. Corrupti sequi vel deleniti odit qui fugit.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "notes": []
- }
- ],
- "children": []
- }
- ]
-}
diff --git a/spec/fixtures/lib/gitlab/import_export/group_exports/no_children/group.json b/spec/fixtures/lib/gitlab/import_export/group_exports/no_children/group.json
deleted file mode 100644
index 2751f9ab8f2..00000000000
--- a/spec/fixtures/lib/gitlab/import_export/group_exports/no_children/group.json
+++ /dev/null
@@ -1,954 +0,0 @@
-{
- "name": "group",
- "path": "group",
- "owner_id": null,
- "created_at": "2019-11-20 17:01:53 UTC",
- "updated_at": "2019-11-20 17:05:44 UTC",
- "description": "Group Description",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 0,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": null,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "saml_discovery_token": "rBKx3ioz",
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "milestones": [
- {
- "id": 7642,
- "title": "v4.0",
- "project_id": null,
- "description": "Et laudantium enim omnis ea reprehenderit iure.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.336Z",
- "updated_at": "2019-11-20T17:02:14.336Z",
- "state": "closed",
- "iid": 5,
- "start_date": null,
- "group_id": 4351
- },
- {
- "id": 7641,
- "title": "v3.0",
- "project_id": null,
- "description": "Et repellat culpa nemo consequatur ut reprehenderit.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.323Z",
- "updated_at": "2019-11-20T17:02:14.323Z",
- "state": "active",
- "iid": 4,
- "start_date": null,
- "group_id": 4351
- },
- {
- "id": 7640,
- "title": "v2.0",
- "project_id": null,
- "description": "Velit cupiditate est neque voluptates iste rem sunt.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.309Z",
- "updated_at": "2019-11-20T17:02:14.309Z",
- "state": "active",
- "iid": 3,
- "start_date": null,
- "group_id": 4351
- },
- {
- "id": 7639,
- "title": "v1.0",
- "project_id": null,
- "description": "Amet velit repellat ut rerum aut cum.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.296Z",
- "updated_at": "2019-11-20T17:02:14.296Z",
- "state": "active",
- "iid": 2,
- "start_date": null,
- "group_id": 4351
- },
- {
- "id": 7638,
- "title": "v0.0",
- "project_id": null,
- "description": "Ea quia asperiores ut modi dolorem sunt non numquam.",
- "due_date": null,
- "created_at": "2019-11-20T17:02:14.282Z",
- "updated_at": "2019-11-20T17:02:14.282Z",
- "state": "active",
- "iid": 1,
- "start_date": null,
- "group_id": 4351
- }
- ],
- "badges": [
- {
- "id": 10,
- "link_url": "https://localhost:3443/%{default_branch}",
- "image_url": "https://badge_image.png",
- "project_id": null,
- "group_id": 4351,
- "created_at": "2019-11-20T17:27:02.047Z",
- "updated_at": "2019-11-20T17:27:02.047Z",
- "type": "GroupBadge"
- }
- ],
- "labels": [
- {
- "id": 23452,
- "title": "Bruffefunc",
- "color": "#1d2da4",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.546Z",
- "updated_at": "2019-11-20T17:02:20.546Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23446,
- "title": "Cafunc",
- "color": "#73ed5b",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.526Z",
- "updated_at": "2019-11-20T17:02:20.526Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23451,
- "title": "Casche",
- "color": "#649a75",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.544Z",
- "updated_at": "2019-11-20T17:02:20.544Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23444,
- "title": "Cocell",
- "color": "#1b365c",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.521Z",
- "updated_at": "2019-11-20T17:02:20.521Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23449,
- "title": "Packfunc",
- "color": "#e33bba",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.537Z",
- "updated_at": "2019-11-20T17:02:20.537Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23443,
- "title": "Panabalt",
- "color": "#84f708",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.518Z",
- "updated_at": "2019-11-20T17:02:20.518Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23447,
- "title": "Phierefunc",
- "color": "#4ab4a8",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.530Z",
- "updated_at": "2019-11-20T17:02:20.530Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23445,
- "title": "Pons",
- "color": "#47f440",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.523Z",
- "updated_at": "2019-11-20T17:02:20.523Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23448,
- "title": "Sosync",
- "color": "#110320",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.532Z",
- "updated_at": "2019-11-20T17:02:20.532Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- },
- {
- "id": 23450,
- "title": "TSL",
- "color": "#58796f",
- "project_id": null,
- "created_at": "2019-11-20T17:02:20.541Z",
- "updated_at": "2019-11-20T17:02:20.541Z",
- "template": false,
- "description": null,
- "group_id": 4351,
- "type": "GroupLabel",
- "priorities": [],
- "textColor": "#FFFFFF"
- }
- ],
- "boards": [
- {
- "id": 56,
- "project_id": null,
- "created_at": "2019-11-20T17:27:16.808Z",
- "updated_at": "2019-11-20T17:27:16.808Z",
- "name": "Development",
- "milestone_id": null,
- "group_id": 4351,
- "weight": null,
- "labels": []
- },
- {
- "id": 57,
- "project_id": null,
- "created_at": "2019-11-20T17:27:41.118Z",
- "updated_at": "2019-11-20T17:27:41.118Z",
- "name": "Board!",
- "milestone_id": 7638,
- "group_id": 4351,
- "weight": null,
- "labels": []
- }
- ],
- "members": [
- {
- "id": 13766,
- "access_level": 30,
- "source_id": 4351,
- "source_type": "Namespace",
- "user_id": 42,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:36.184Z",
- "updated_at": "2019-11-20T17:04:36.184Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 42,
- "public_email": "moriah@collinsmurphy.com",
- "username": "reported_user_15"
- }
- },
- {
- "id": 13765,
- "access_level": 40,
- "source_id": 4351,
- "source_type": "Namespace",
- "user_id": 271,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:36.044Z",
- "updated_at": "2019-11-20T17:04:36.044Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 271,
- "public_email": "garret@connellystark.ca",
- "username": "charlesetta"
- }
- },
- {
- "id": 13764,
- "access_level": 30,
- "source_id": 4351,
- "source_type": "Namespace",
- "user_id": 206,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:35.840Z",
- "updated_at": "2019-11-20T17:04:35.840Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 206,
- "public_email": "margaret.bergnaum@reynolds.us",
- "username": "gwendolyn_robel"
- }
- },
- {
- "id": 13763,
- "access_level": 10,
- "source_id": 4351,
- "source_type": "Namespace",
- "user_id": 39,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:35.704Z",
- "updated_at": "2019-11-20T17:04:35.704Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 39,
- "public_email": "alexis_berge@kerlukeklein.us",
- "username": "reported_user_12"
- }
- },
- {
- "id": 13762,
- "access_level": 20,
- "source_id": 4351,
- "source_type": "Namespace",
- "user_id": 1624,
- "notification_level": 3,
- "created_at": "2019-11-20T17:04:35.566Z",
- "updated_at": "2019-11-20T17:04:35.566Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 1624,
- "public_email": "nakesha.herzog@powlowski.com",
- "username": "adriene.mcclure"
- }
- },
- {
- "id": 12920,
- "access_level": 50,
- "source_id": 4351,
- "source_type": "Namespace",
- "user_id": 1,
- "notification_level": 3,
- "created_at": "2019-11-20T17:01:53.505Z",
- "updated_at": "2019-11-20T17:01:53.505Z",
- "created_by_id": null,
- "invite_email": null,
- "invite_token": null,
- "invite_accepted_at": null,
- "requested_at": null,
- "expires_at": null,
- "ldap": false,
- "override": false,
- "user": {
- "id": 1,
- "public_email": "admin@example.com",
- "username": "root"
- }
- }
- ],
- "epics": [
- {
- "id": 13622,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 1,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.754Z",
- "updated_at": "2019-11-20T18:38:40.054Z",
- "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
- "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "notes": [
- {
- "id": 44170,
- "note": "added epic \u00265 as child epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:40.031Z",
- "updated_at": "2019-11-20T18:38:40.035Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13622,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "ba005d8dd59cd37a4f32406d46e759b08fd15510",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- },
- {
- "id": 44168,
- "note": "added epic \u00264 as child epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:35.669Z",
- "updated_at": "2019-11-20T18:38:35.673Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13622,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "9b49d3b017aadc1876d477b960e6f8efb99ce29f",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- },
- {
- "id": 44166,
- "note": "added epic \u00263 as child epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:30.944Z",
- "updated_at": "2019-11-20T18:38:30.948Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13622,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "cccfe967f48e699a466c87a55a9f8acb00fec1a1",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- },
- {
- "id": 44164,
- "note": "added epic \u00262 as child epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:26.689Z",
- "updated_at": "2019-11-20T18:38:26.724Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13622,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "133f0c3001860fa8d2031e398a65db74477378c4",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- }
- ]
- },
- {
- "id": 13623,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 2,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.769Z",
- "updated_at": "2019-11-20T18:38:26.851Z",
- "title": "Omnis accusantium commodi voluptas odio illo eum ut.",
- "description": "Eius vero et iste amet est voluptatem modi. Doloribus ipsam beatae et ut autem ut animi. Dolor culpa dolor omnis delectus est tempora inventore ab. Optio labore tenetur libero quia provident et quis. Blanditiis architecto sint possimus cum aut adipisci.\n\nDolores quisquam sunt cupiditate unde qui vitae nemo. Odio quas omnis ut nobis. Possimus fugit deserunt quia sed ab numquam veritatis nihil.\n\nQui nemo adipisci magnam perferendis voluptatem modi. Eius enim iure dolores consequuntur eum nobis adipisci. Consequatur architecto et quas deleniti hic id laborum officiis. Enim perferendis quis quasi totam delectus rerum deleniti.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": 13622,
- "relative_position": 1073741323,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "parent": {
- "id": 13622,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 1,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.754Z",
- "updated_at": "2019-11-20T18:38:40.054Z",
- "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
- "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null
- },
- "notes": [
- {
- "id": 44165,
- "note": "added epic \u00261 as parent epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:26.822Z",
- "updated_at": "2019-11-20T18:38:26.826Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13623,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "15f0a7f4ed16a07bc78841e122524bb867edcf86",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- }
- ]
- },
- {
- "id": 13624,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 3,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.783Z",
- "updated_at": "2019-11-20T18:38:31.018Z",
- "title": "Quis dolore velit possimus eaque aut amet esse voluptate aliquam.",
- "description": "Ab veritatis reprehenderit nulla laboriosam et sed asperiores corporis. Est accusantium maxime perferendis et. Omnis a qui voluptates non excepturi.\n\nAdipisci labore maiores dicta sed magnam aut. Veritatis delectus dolorum qui id. Dolorum tenetur quo iure amet. Eveniet reprehenderit dolor ipsam quia ratione quo. Facilis voluptatem vel repellat id illum.\n\nAut et magnam aut minus aspernatur. Fuga quo necessitatibus mollitia maxime quasi. Qui aspernatur quia accusamus est quod. Qui assumenda veritatis dolor non eveniet quibusdam quos qui.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": 13622,
- "relative_position": 1073740823,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "parent": {
- "id": 13622,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 1,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.754Z",
- "updated_at": "2019-11-20T18:38:40.054Z",
- "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
- "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null
- },
- "notes": [
- {
- "id": 44167,
- "note": "added epic \u00261 as parent epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:30.989Z",
- "updated_at": "2019-11-20T18:38:30.993Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13624,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "423ffec14a3ce148c11a802eb1f2613fa8ca9a94",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- }
- ]
- },
- {
- "id": 13625,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 4,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.798Z",
- "updated_at": "2019-11-20T18:38:35.765Z",
- "title": "Possimus et ut iste temporibus earum cupiditate voluptatem esse assumenda amet.",
- "description": "Et at corporis sed id rerum ullam dolore. Odio magnam corporis excepturi neque est. Est accusamus nostrum qui rerum.\n\nEt aut dolores eaque quibusdam aut quas explicabo id. Est necessitatibus praesentium omnis et vero laboriosam et. Sunt in saepe qui laudantium et voluptas.\n\nVelit sunt odit eum omnis beatae eius aut. Dolores commodi qui impedit deleniti et magnam pariatur. Aut odit amet ipsum ea atque. Itaque est ut sunt ullam eum nam.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": 13622,
- "relative_position": 1073740323,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "parent": {
- "id": 13622,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 1,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.754Z",
- "updated_at": "2019-11-20T18:38:40.054Z",
- "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
- "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null
- },
- "notes": [
- {
- "id": 44169,
- "note": "added epic \u00261 as parent epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:35.737Z",
- "updated_at": "2019-11-20T18:38:35.741Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13625,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "5bc3e30d508affafc61de2b4e1d9f21039505cc3",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- }
- ]
- },
- {
- "id": 13626,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 5,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.812Z",
- "updated_at": "2019-11-20T18:38:40.101Z",
- "title": "Ab deleniti ipsum voluptatem dolor qui quos saepe repellat quo.",
- "description": "Sunt minus sunt reiciendis culpa sed excepturi. Aperiam sed quod nemo nesciunt et quia molestias incidunt. Ipsum nam magnam labore eos a molestiae rerum possimus. Sequi autem asperiores voluptas assumenda.\n\nRerum ipsa quia cum ab corrupti omnis. Velit libero et nihil ipsa aut quo rem ipsam. Architecto omnis distinctio sed doloribus perspiciatis consequatur aut et. Fugit consequuntur est minima reiciendis reprehenderit et.\n\nConsequatur distinctio et ut blanditiis perferendis officiis inventore. Alias aut voluptatem in facere. Ut perferendis dolorum hic dolores. Ipsa dolorem soluta at mollitia. Placeat et ea numquam dicta molestias.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": 13622,
- "relative_position": 1073739823,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null,
- "parent": {
- "id": 13622,
- "milestone_id": null,
- "group_id": 4351,
- "author_id": 1,
- "assignee_id": null,
- "iid": 1,
- "updated_by_id": null,
- "last_edited_by_id": null,
- "lock_version": 0,
- "start_date": null,
- "end_date": null,
- "last_edited_at": null,
- "created_at": "2019-11-20T17:02:09.754Z",
- "updated_at": "2019-11-20T18:38:40.054Z",
- "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.",
- "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.",
- "start_date_sourcing_milestone_id": null,
- "due_date_sourcing_milestone_id": null,
- "start_date_fixed": null,
- "due_date_fixed": null,
- "start_date_is_fixed": null,
- "due_date_is_fixed": null,
- "closed_by_id": null,
- "closed_at": null,
- "parent_id": null,
- "relative_position": null,
- "state_id": "opened",
- "start_date_sourcing_epic_id": null,
- "due_date_sourcing_epic_id": null
- },
- "notes": [
- {
- "id": 44171,
- "note": "added epic \u00261 as parent epic",
- "noteable_type": "Epic",
- "author_id": 1,
- "created_at": "2019-11-20T18:38:40.074Z",
- "updated_at": "2019-11-20T18:38:40.077Z",
- "project_id": null,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "noteable_id": 13626,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": "a6231acdaef5f4d2e569dfb604f1baf85c49e1a0",
- "change_position": null,
- "resolved_by_push": null,
- "review_id": null,
- "type": null,
- "author": {
- "name": "Administrator"
- }
- }
- ]
- }
- ],
- "children": []
-}
diff --git a/spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/internal/group.json b/spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/internal/group.json
deleted file mode 100644
index 01dc44a28d5..00000000000
--- a/spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/internal/group.json
+++ /dev/null
@@ -1,154 +0,0 @@
-{
- "id": 283,
- "name": "internal",
- "path": "internal",
- "owner_id": null,
- "created_at": "2020-02-12T16:56:34.924Z",
- "updated_at": "2020-02-12T16:56:38.710Z",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 10,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": null,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "mentions_disabled": null,
- "children": [
- {
- "id": 284,
- "name": "public",
- "path": "public",
- "owner_id": null,
- "created_at": "2020-02-12T17:33:00.575Z",
- "updated_at": "2020-02-12T17:33:00.575Z",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 20,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": 283,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "mentions_disabled": null
- },
- {
- "id": 285,
- "name": "internal",
- "path": "internal",
- "owner_id": null,
- "created_at": "2020-02-12T17:33:00.575Z",
- "updated_at": "2020-02-12T17:33:00.575Z",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 10,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": 283,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "mentions_disabled": null
- },
- {
- "id": 286,
- "name": "private",
- "path": "private",
- "owner_id": null,
- "created_at": "2020-02-12T17:33:00.575Z",
- "updated_at": "2020-02-12T17:33:00.575Z",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 0,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": 283,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "mentions_disabled": null
- }
- ]
-}
diff --git a/spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/private/group.json b/spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/private/group.json
deleted file mode 100644
index c9323f27770..00000000000
--- a/spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/private/group.json
+++ /dev/null
@@ -1,154 +0,0 @@
-{
- "id": 283,
- "name": "private",
- "path": "private",
- "owner_id": null,
- "created_at": "2020-02-12T16:56:34.924Z",
- "updated_at": "2020-02-12T16:56:38.710Z",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 0,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": null,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "mentions_disabled": null,
- "children": [
- {
- "id": 284,
- "name": "public",
- "path": "public",
- "owner_id": null,
- "created_at": "2020-02-12T17:33:00.575Z",
- "updated_at": "2020-02-12T17:33:00.575Z",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 20,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": 283,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "mentions_disabled": null
- },
- {
- "id": 285,
- "name": "internal",
- "path": "internal",
- "owner_id": null,
- "created_at": "2020-02-12T17:33:00.575Z",
- "updated_at": "2020-02-12T17:33:00.575Z",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 10,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": 283,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "mentions_disabled": null
- },
- {
- "id": 286,
- "name": "private",
- "path": "private",
- "owner_id": null,
- "created_at": "2020-02-12T17:33:00.575Z",
- "updated_at": "2020-02-12T17:33:00.575Z",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 0,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": 283,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "mentions_disabled": null
- }
- ]
-}
diff --git a/spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/public/group.json b/spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/public/group.json
deleted file mode 100644
index b4f746b28e2..00000000000
--- a/spec/fixtures/lib/gitlab/import_export/group_exports/visibility_levels/public/group.json
+++ /dev/null
@@ -1,154 +0,0 @@
-{
- "id": 283,
- "name": "public",
- "path": "public",
- "owner_id": null,
- "created_at": "2020-02-12T16:56:34.924Z",
- "updated_at": "2020-02-12T16:56:38.710Z",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 20,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": null,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "mentions_disabled": null,
- "children": [
- {
- "id": 284,
- "name": "public",
- "path": "public",
- "owner_id": null,
- "created_at": "2020-02-12T17:33:00.575Z",
- "updated_at": "2020-02-12T17:33:00.575Z",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 20,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": 283,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "mentions_disabled": null
- },
- {
- "id": 285,
- "name": "internal",
- "path": "internal",
- "owner_id": null,
- "created_at": "2020-02-12T17:33:00.575Z",
- "updated_at": "2020-02-12T17:33:00.575Z",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 10,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": 283,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "mentions_disabled": null
- },
- {
- "id": 286,
- "name": "private",
- "path": "private",
- "owner_id": null,
- "created_at": "2020-02-12T17:33:00.575Z",
- "updated_at": "2020-02-12T17:33:00.575Z",
- "description": "",
- "avatar": {
- "url": null
- },
- "membership_lock": false,
- "share_with_group_lock": false,
- "visibility_level": 0,
- "request_access_enabled": true,
- "ldap_sync_status": "ready",
- "ldap_sync_error": null,
- "ldap_sync_last_update_at": null,
- "ldap_sync_last_successful_update_at": null,
- "ldap_sync_last_sync_at": null,
- "lfs_enabled": null,
- "parent_id": 283,
- "repository_size_limit": null,
- "require_two_factor_authentication": false,
- "two_factor_grace_period": 48,
- "plan_id": null,
- "project_creation_level": 2,
- "file_template_project_id": null,
- "custom_project_templates_group_id": null,
- "auto_devops_enabled": null,
- "last_ci_minutes_notification_at": null,
- "last_ci_minutes_usage_notification_level": null,
- "subgroup_creation_level": 1,
- "emails_disabled": null,
- "max_pages_size": null,
- "max_artifacts_size": null,
- "mentions_disabled": null
- }
- ]
-}
diff --git a/spec/fixtures/lib/gitlab/import_export/invalid_json/project.json b/spec/fixtures/lib/gitlab/import_export/invalid_json/project.json
deleted file mode 100644
index 83cb34eea91..00000000000
--- a/spec/fixtures/lib/gitlab/import_export/invalid_json/project.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "invalid" json
-}
diff --git a/spec/fixtures/lib/gitlab/import_export/light/project.json b/spec/fixtures/lib/gitlab/import_export/light/project.json
deleted file mode 100644
index 963cdb342b5..00000000000
--- a/spec/fixtures/lib/gitlab/import_export/light/project.json
+++ /dev/null
@@ -1,164 +0,0 @@
-{
- "description": "Nisi et repellendus ut enim quo accusamus vel magnam.",
- "import_type": "gitlab_project",
- "creator_id": 2147483547,
- "visibility_level": 10,
- "archived": false,
- "milestones": [
- {
- "id": 1,
- "title": "A milestone",
- "project_id": 8,
- "description": "Project-level milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "group_id": null
- }
- ],
- "labels": [
- {
- "id": 2,
- "title": "A project label",
- "color": "#428bca",
- "project_id": 8,
- "created_at": "2016-07-22T08:55:44.161Z",
- "updated_at": "2016-07-22T08:55:44.161Z",
- "template": false,
- "description": "",
- "type": "ProjectLabel",
- "priorities": [
- {
- "id": 1,
- "project_id": 5,
- "label_id": 1,
- "priority": 1,
- "created_at": "2016-10-18T09:35:43.338Z",
- "updated_at": "2016-10-18T09:35:43.338Z"
- }
- ]
- }
- ],
- "issues": [
- {
- "id": 1,
- "title": "Fugiat est minima quae maxime non similique.",
- "assignee_id": null,
- "project_id": 8,
- "author_id": 1,
- "created_at": "2017-07-07T18:13:01.138Z",
- "updated_at": "2017-08-15T18:37:40.807Z",
- "branch_name": null,
- "description": "Quam totam fuga numquam in eveniet.",
- "state": "opened",
- "iid": 20,
- "updated_by_id": 1,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "lock_version": null,
- "time_estimate": 0,
- "closed_at": null,
- "last_edited_at": null,
- "last_edited_by_id": null,
- "group_milestone_id": null,
- "milestone": {
- "id": 1,
- "title": "A milestone",
- "group_id": 8,
- "description": "Project-level milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "group_id": null
- },
- "label_links": [
- {
- "id": 11,
- "label_id": 2,
- "target_id": 1,
- "target_type": "Issue",
- "created_at": "2017-08-15T18:37:40.795Z",
- "updated_at": "2017-08-15T18:37:40.795Z",
- "label": {
- "id": 6,
- "title": "Another label",
- "color": "#A8D695",
- "project_id": null,
- "created_at": "2017-08-15T18:37:19.698Z",
- "updated_at": "2017-08-15T18:37:19.698Z",
- "template": false,
- "description": "",
- "group_id": null,
- "type": "ProjectLabel",
- "priorities": []
- }
- }
- ],
- "notes": [
- {
- "id": 20,
- "note": "created merge request !1 to address this issue",
- "noteable_type": "Issue",
- "author_id": 1,
- "created_at": "2020-03-28T01:37:42.307Z",
- "updated_at": "2020-03-28T01:37:42.307Z",
- "project_id": 8,
- "attachment": {
- "url": null
- },
- "line_code": null,
- "commit_id": null,
- "system": true,
- "st_diff": null,
- "updated_by_id": null,
- "position": null,
- "original_position": null,
- "resolved_at": null,
- "resolved_by_id": null,
- "discussion_id": null,
- "change_position": null,
- "resolved_by_push": null,
- "confidential": null,
- "type": null,
- "author": {
- "name": "Author"
- },
- "award_emoji": [],
- "system_note_metadata": {
- "id": 21,
- "commit_count": null,
- "action": "merge",
- "created_at": "2020-03-28T01:37:42.307Z",
- "updated_at": "2020-03-28T01:37:42.307Z"
- },
- "events": []
- }
- ]
- }
- ],
- "snippets": [],
- "hooks": [],
- "custom_attributes": [
- {
- "id": 201,
- "project_id": 5,
- "created_at": "2016-06-14T15:01:51.315Z",
- "updated_at": "2016-06-14T15:01:51.315Z",
- "key": "color",
- "value": "red"
- },
- {
- "id": 202,
- "project_id": 5,
- "created_at": "2016-06-14T15:01:51.315Z",
- "updated_at": "2016-06-14T15:01:51.315Z",
- "key": "size",
- "value": "small"
- }
- ]
-}
diff --git a/spec/fixtures/lib/gitlab/import_export/milestone-iid/project.json b/spec/fixtures/lib/gitlab/import_export/milestone-iid/project.json
deleted file mode 100644
index 24bfb8836d7..00000000000
--- a/spec/fixtures/lib/gitlab/import_export/milestone-iid/project.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "description": "Nisi et repellendus ut enim quo accusamus vel magnam.",
- "import_type": "gitlab_project",
- "creator_id": 2147483547,
- "visibility_level": 10,
- "archived": false,
- "issues": [
- {
- "id": 1,
- "title": "Fugiat est minima quae maxime non similique.",
- "assignee_id": null,
- "project_id": 8,
- "author_id": 1,
- "created_at": "2017-07-07T18:13:01.138Z",
- "updated_at": "2017-08-15T18:37:40.807Z",
- "branch_name": null,
- "description": "Quam totam fuga numquam in eveniet.",
- "state": "opened",
- "iid": 20,
- "updated_by_id": 1,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "lock_version": null,
- "time_estimate": 0,
- "closed_at": null,
- "last_edited_at": null,
- "last_edited_by_id": null,
- "group_milestone_id": null,
- "milestone": {
- "id": 1,
- "title": "Group-level milestone",
- "description": "Group-level milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "group_id": 8
- }
- },
- {
- "id": 2,
- "title": "est minima quae maxime non similique.",
- "assignee_id": null,
- "project_id": 8,
- "author_id": 1,
- "created_at": "2017-07-07T18:13:01.138Z",
- "updated_at": "2017-08-15T18:37:40.807Z",
- "branch_name": null,
- "description": "Quam totam fuga numquam in eveniet.",
- "state": "opened",
- "iid": 21,
- "updated_by_id": 1,
- "confidential": false,
- "due_date": null,
- "moved_to_id": null,
- "lock_version": null,
- "time_estimate": 0,
- "closed_at": null,
- "last_edited_at": null,
- "last_edited_by_id": null,
- "group_milestone_id": null,
- "milestone": {
- "id": 2,
- "title": "Another milestone",
- "project_id": 8,
- "description": "milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "group_id": null
- }
- }
- ],
- "snippets": [],
- "hooks": []
-}
diff --git a/spec/fixtures/lib/gitlab/import_export/multi_pipeline_ref_one_external_pr/project.json b/spec/fixtures/lib/gitlab/import_export/multi_pipeline_ref_one_external_pr/project.json
deleted file mode 100644
index d25371e10dd..00000000000
--- a/spec/fixtures/lib/gitlab/import_export/multi_pipeline_ref_one_external_pr/project.json
+++ /dev/null
@@ -1,143 +0,0 @@
-{
- "approvals_before_merge": 0,
- "archived": false,
- "auto_cancel_pending_pipelines": "enabled",
- "autoclose_referenced_issues": true,
- "boards": [],
- "build_allow_git_fetch": true,
- "build_timeout": 3600,
- "ci_cd_settings": {
- "group_runners_enabled": true
- },
- "ci_config_path": null,
- "ci_pipelines": [
- {
- "before_sha": "0000000000000000000000000000000000000000",
- "committed_at": null,
- "config_source": "repository_source",
- "created_at": "2020-02-25T12:08:40.615Z",
- "duration": 61,
- "external_pull_request": {
- "created_at": "2020-02-25T12:08:40.478Z",
- "id": 59023,
- "project_id": 17121868,
- "pull_request_iid": 4,
- "source_branch": "new-branch",
- "source_repository": "liptonshmidt/dotfiles",
- "source_sha": "122bc4bbad5b6448089cacbe16d0bdc3534e7eda",
- "status": "open",
- "target_branch": "master",
- "target_repository": "liptonshmidt/dotfiles",
- "target_sha": "86ebe754fa12216e5c0d9d95890936e2fcc62392",
- "updated_at": "2020-02-25T12:08:40.478Z"
- },
- "failure_reason": null,
- "finished_at": "2020-02-25T12:09:44.464Z",
- "id": 120842687,
- "iid": 8,
- "lock_version": 3,
- "notes": [],
- "project_id": 17121868,
- "protected": false,
- "ref": "new-branch",
- "sha": "122bc4bbad5b6448089cacbe16d0bdc3534e7eda",
- "source": "external_pull_request_event",
- "source_sha": "122bc4bbad5b6448089cacbe16d0bdc3534e7eda",
- "stages": [],
- "started_at": "2020-02-25T12:08:42.511Z",
- "status": "success",
- "tag": false,
- "target_sha": "86ebe754fa12216e5c0d9d95890936e2fcc62392",
- "updated_at": "2020-02-25T12:09:44.473Z",
- "user_id": 4087087,
- "yaml_errors": null
- },
- {
- "before_sha": "86ebe754fa12216e5c0d9d95890936e2fcc62392",
- "committed_at": null,
- "config_source": "repository_source",
- "created_at": "2020-02-25T12:08:37.434Z",
- "duration": 57,
- "external_pull_request": {
- "created_at": "2020-02-25T12:08:40.478Z",
- "id": 59023,
- "project_id": 17121868,
- "pull_request_iid": 4,
- "source_branch": "new-branch",
- "source_repository": "liptonshmidt/dotfiles",
- "source_sha": "122bc4bbad5b6448089cacbe16d0bdc3534e7eda",
- "status": "open",
- "target_branch": "master",
- "target_repository": "liptonshmidt/dotfiles",
- "target_sha": "86ebe754fa12216e5c0d9d95890936e2fcc62392",
- "updated_at": "2020-02-25T12:08:40.478Z"
- },
- "failure_reason": null,
- "finished_at": "2020-02-25T12:09:36.557Z",
- "id": 120842675,
- "iid": 7,
- "lock_version": 3,
- "notes": [],
- "project_id": 17121868,
- "protected": false,
- "ref": "new-branch",
- "sha": "122bc4bbad5b6448089cacbe16d0bdc3534e7eda",
- "source": "external_pull_request_event",
- "source_sha": "122bc4bbad5b6448089cacbe16d0bdc3534e7eda",
- "stages": [],
- "started_at": "2020-02-25T12:08:38.682Z",
- "status": "success",
- "tag": false,
- "target_sha": "86ebe754fa12216e5c0d9d95890936e2fcc62392",
- "updated_at": "2020-02-25T12:09:36.565Z",
- "user_id": 4087087,
- "yaml_errors": null
- }
- ],
- "custom_attributes": [],
- "delete_error": null,
- "description": "Vim, Tmux and others",
- "disable_overriding_approvers_per_merge_request": null,
- "external_authorization_classification_label": "",
- "external_pull_requests": [
- {
- "created_at": "2020-02-25T12:08:40.478Z",
- "id": 59023,
- "project_id": 17121868,
- "pull_request_iid": 4,
- "source_branch": "new-branch",
- "source_repository": "liptonshmidt/dotfiles",
- "source_sha": "122bc4bbad5b6448089cacbe16d0bdc3534e7eda",
- "status": "open",
- "target_branch": "master",
- "target_repository": "liptonshmidt/dotfiles",
- "target_sha": "86ebe754fa12216e5c0d9d95890936e2fcc62392",
- "updated_at": "2020-02-25T12:08:40.478Z"
- }
- ],
- "external_webhook_token": "D3mVYFzZkgZ5kMfcW_wx",
- "issues": [],
- "labels": [],
- "milestones": [],
- "pipeline_schedules": [],
- "project_feature": {
- "builds_access_level": 20,
- "created_at": "2020-02-25T11:20:09.925Z",
- "forking_access_level": 20,
- "id": 17494715,
- "issues_access_level": 0,
- "merge_requests_access_level": 0,
- "pages_access_level": 20,
- "project_id": 17121868,
- "repository_access_level": 20,
- "snippets_access_level": 0,
- "updated_at": "2020-02-25T11:20:10.376Z",
- "wiki_access_level": 0
- },
- "public_builds": true,
- "releases": [],
- "shared_runners_enabled": true,
- "snippets": [],
- "triggers": [],
- "visibility_level": 20
-}
diff --git a/spec/fixtures/lib/gitlab/import_export/with_invalid_records/project.json b/spec/fixtures/lib/gitlab/import_export/with_invalid_records/project.json
deleted file mode 100644
index b9e791ee85a..00000000000
--- a/spec/fixtures/lib/gitlab/import_export/with_invalid_records/project.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "description": "Nisi et repellendus ut enim quo accusamus vel magnam.",
- "import_type": "gitlab_project",
- "creator_id": 2147483547,
- "visibility_level": 10,
- "archived": false,
- "milestones": [
- {
- "id": 1,
- "title": null,
- "project_id": 8,
- "description": 123,
- "due_date": null,
- "created_at": "NOT A DATE",
- "updated_at": "NOT A DATE",
- "state": "active",
- "iid": 1,
- "group_id": null
- },
- {
- "id": 42,
- "title": "A valid milestone",
- "project_id": 8,
- "description": "Project-level milestone",
- "due_date": null,
- "created_at": "2016-06-14T15:02:04.415Z",
- "updated_at": "2016-06-14T15:02:04.415Z",
- "state": "active",
- "iid": 1,
- "group_id": null
- }
- ],
- "labels": [],
- "issues": [],
- "snippets": [],
- "hooks": []
-}
diff --git a/spec/frontend/content_editor/extensions/paste_markdown_spec.js b/spec/frontend/content_editor/extensions/paste_markdown_spec.js
index c9997e3c58f..baf0919fec8 100644
--- a/spec/frontend/content_editor/extensions/paste_markdown_spec.js
+++ b/spec/frontend/content_editor/extensions/paste_markdown_spec.js
@@ -4,24 +4,28 @@ import Diagram from '~/content_editor/extensions/diagram';
import Frontmatter from '~/content_editor/extensions/frontmatter';
import Heading from '~/content_editor/extensions/heading';
import Bold from '~/content_editor/extensions/bold';
+import Italic from '~/content_editor/extensions/italic';
import { VARIANT_DANGER } from '~/alert';
import eventHubFactory from '~/helpers/event_hub_factory';
import { ALERT_EVENT } from '~/content_editor/constants';
import waitForPromises from 'helpers/wait_for_promises';
+import MarkdownSerializer from '~/content_editor/services/markdown_serializer';
import { createTestEditor, createDocBuilder, waitUntilNextDocTransaction } from '../test_utils';
const CODE_BLOCK_HTML = '<pre class="js-syntax-highlight" lang="javascript">var a = 2;</pre>';
const DIAGRAM_HTML =
'<img data-diagram="nomnoml" data-diagram-src="data:text/plain;base64,WzxmcmFtZT5EZWNvcmF0b3IgcGF0dGVybl0=">';
const FRONTMATTER_HTML = '<pre lang="yaml" data-lang-params="frontmatter">key: value</pre>';
-const PARAGRAPH_HTML = '<p>Just a regular paragraph</p>';
+const PARAGRAPH_HTML = '<p>Some text with <strong>bold</strong> and <em>italic</em> text.</p>';
describe('content_editor/extensions/paste_markdown', () => {
let tiptapEditor;
let doc;
let p;
let bold;
+ let italic;
let heading;
+ let codeBlock;
let renderMarkdown;
let eventHub;
const defaultData = { 'text/plain': '**bold text**' };
@@ -35,28 +39,36 @@ describe('content_editor/extensions/paste_markdown', () => {
tiptapEditor = createTestEditor({
extensions: [
Bold,
+ Italic,
CodeBlockHighlight,
Diagram,
Frontmatter,
Heading,
- PasteMarkdown.configure({ renderMarkdown, eventHub }),
+ PasteMarkdown.configure({ renderMarkdown, eventHub, serializer: new MarkdownSerializer() }),
],
});
({
- builders: { doc, p, bold, heading },
+ builders: { doc, p, bold, italic, heading, codeBlock },
} = createDocBuilder({
tiptapEditor,
names: {
bold: { markType: Bold.name },
+ italic: { markType: Italic.name },
heading: { nodeType: Heading.name },
+ codeBlock: { nodeType: CodeBlockHighlight.name },
},
}));
});
- const buildClipboardEvent = ({ data = {}, types = ['text/plain'] } = {}) => {
- return Object.assign(new Event('paste'), {
- clipboardData: { types, getData: jest.fn((type) => data[type] || defaultData[type]) },
+ const buildClipboardEvent = ({ eventName = 'paste', data = {}, types = ['text/plain'] } = {}) => {
+ return Object.assign(new Event(eventName), {
+ clipboardData: {
+ types,
+ getData: jest.fn((type) => data[type] || defaultData[type]),
+ setData: jest.fn(),
+ clearData: jest.fn(),
+ },
});
};
@@ -80,13 +92,13 @@ describe('content_editor/extensions/paste_markdown', () => {
};
it.each`
- types | data | handled | desc
- ${['text/plain']} | ${{}} | ${true} | ${'handles plain text'}
- ${['text/plain', 'text/html']} | ${{}} | ${false} | ${'doesn’t handle html format'}
- ${['text/plain', 'text/html', 'vscode-editor-data']} | ${{ 'vscode-editor-data': '{ "mode": "markdown" }' }} | ${true} | ${'handles vscode markdown'}
- ${['text/plain', 'text/html', 'vscode-editor-data']} | ${{ 'vscode-editor-data': '{ "mode": "ruby" }' }} | ${false} | ${'doesn’t vscode code snippet'}
- `('$desc', async ({ types, handled, data }) => {
- expect(await triggerPasteEventHandler(buildClipboardEvent({ types, data }))).toBe(handled);
+ types | data | formatDesc
+ ${['text/plain']} | ${{}} | ${'plain text'}
+ ${['text/plain', 'text/html']} | ${{}} | ${'html format'}
+ ${['text/plain', 'text/html', 'vscode-editor-data']} | ${{ 'vscode-editor-data': '{ "mode": "markdown" }' }} | ${'vscode markdown'}
+ ${['text/plain', 'text/html', 'vscode-editor-data']} | ${{ 'vscode-editor-data': '{ "mode": "ruby" }' }} | ${'vscode snippet'}
+ `('handles $formatDesc', async ({ types, data }) => {
+ expect(await triggerPasteEventHandler(buildClipboardEvent({ types, data }))).toBe(true);
});
it.each`
@@ -101,6 +113,45 @@ describe('content_editor/extensions/paste_markdown', () => {
expect(await triggerPasteEventHandler(buildClipboardEvent())).toBe(handled);
});
+ describe.each`
+ eventName | expectedDoc
+ ${'cut'} | ${() => doc(p())}
+ ${'copy'} | ${() => doc(p('Some text with ', bold('bold'), ' and ', italic('italic'), ' text.'))}
+ `('when $eventName event is triggered', ({ eventName, expectedDoc }) => {
+ let event;
+ beforeEach(() => {
+ event = buildClipboardEvent({ eventName });
+
+ jest.spyOn(event, 'preventDefault');
+ jest.spyOn(event, 'stopPropagation');
+
+ tiptapEditor.commands.insertContent(PARAGRAPH_HTML);
+ tiptapEditor.commands.selectAll();
+ tiptapEditor.view.dispatchEvent(event);
+ });
+
+ it('prevents default', () => {
+ expect(event.preventDefault).toHaveBeenCalled();
+ expect(event.stopPropagation).toHaveBeenCalled();
+ });
+
+ it('sets the clipboard data', () => {
+ expect(event.clipboardData.setData).toHaveBeenCalledWith(
+ 'text/plain',
+ 'Some text with bold and italic text.',
+ );
+ expect(event.clipboardData.setData).toHaveBeenCalledWith('text/html', PARAGRAPH_HTML);
+ expect(event.clipboardData.setData).toHaveBeenCalledWith(
+ 'text/x-gfm',
+ 'Some text with **bold** and _italic_ text.',
+ );
+ });
+
+ it('modifies the document', () => {
+ expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc().toJSON());
+ });
+ });
+
describe('when pasting raw markdown source', () => {
describe('when rendering markdown succeeds', () => {
beforeEach(() => {
@@ -162,6 +213,97 @@ describe('content_editor/extensions/paste_markdown', () => {
});
});
+ describe('when pasting html content', () => {
+ it('strips out any stray div, pre, span tags', async () => {
+ renderMarkdown.mockResolvedValueOnce(
+ '<div><span dir="auto"><strong>bold text</strong></span></div><pre><code>some code</code></pre>',
+ );
+
+ const expectedDoc = doc(p(bold('bold text')), p('some code'));
+
+ await triggerPasteEventHandlerAndWaitForTransaction(
+ buildClipboardEvent({
+ types: ['text/html'],
+ data: {
+ 'text/html':
+ '<div><span dir="auto"><strong>bold text</strong></span></div><pre><code>some code</code></pre>',
+ },
+ }),
+ );
+
+ expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
+ });
+ });
+
+ describe('when pasting text/x-gfm', () => {
+ it('processes the content as markdown, even if html content exists', async () => {
+ renderMarkdown.mockResolvedValueOnce('<strong>bold text</strong>');
+
+ const expectedDoc = doc(p(bold('bold text')));
+
+ await triggerPasteEventHandlerAndWaitForTransaction(
+ buildClipboardEvent({
+ types: ['text/x-gfm'],
+ data: {
+ 'text/x-gfm': '**bold text**',
+ 'text/plain': 'irrelevant text',
+ 'text/html': '<div>some random irrelevant html</div>',
+ },
+ }),
+ );
+
+ expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
+ });
+ });
+
+ describe('when pasting vscode-editor-data', () => {
+ it('pastes the content as a code block', async () => {
+ renderMarkdown.mockResolvedValueOnce(
+ '<div class="gl-relative markdown-code-block js-markdown-code">&#x000A;<pre data-sourcepos="1:1-3:3" data-canonical-lang="ruby" class="code highlight js-syntax-highlight language-ruby" lang="ruby" v-pre="true"><code><span id="LC1" class="line" lang="ruby"><span class="nb">puts</span> <span class="s2">"Hello World"</span></span></code></pre>&#x000A;<copy-code></copy-code>&#x000A;</div>',
+ );
+
+ const expectedDoc = doc(
+ codeBlock(
+ { language: 'ruby', class: 'code highlight js-syntax-highlight language-ruby' },
+ 'puts "Hello World"',
+ ),
+ );
+
+ await triggerPasteEventHandlerAndWaitForTransaction(
+ buildClipboardEvent({
+ types: ['vscode-editor-data', 'text/plain', 'text/html'],
+ data: {
+ 'vscode-editor-data': '{ "version": 1, "mode": "ruby" }',
+ 'text/plain': 'puts "Hello World"',
+ 'text/html':
+ '<meta charset=\'utf-8\'><div style="color: #d4d4d4;background-color: #1e1e1e;font-family: \'Fira Code\', Menlo, Monaco, \'Courier New\', monospace, Menlo, Monaco, \'Courier New\', monospace;font-weight: normal;font-size: 14px;line-height: 21px;white-space: pre;"><div><span style="color: #dcdcaa;">puts</span><span style="color: #d4d4d4;"> </span><span style="color: #ce9178;">"Hello world"</span></div></div>',
+ },
+ }),
+ );
+
+ expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
+ });
+
+ it('pastes as regular markdown if language is markdown', async () => {
+ renderMarkdown.mockResolvedValueOnce('<p><strong>bold text</strong></p>');
+
+ const expectedDoc = doc(p(bold('bold text')));
+
+ await triggerPasteEventHandlerAndWaitForTransaction(
+ buildClipboardEvent({
+ types: ['vscode-editor-data', 'text/plain', 'text/html'],
+ data: {
+ 'vscode-editor-data': '{ "version": 1, "mode": "markdown" }',
+ 'text/plain': '**bold text**',
+ 'text/html': '<p><strong>bold text</strong></p>',
+ },
+ }),
+ );
+
+ expect(tiptapEditor.state.doc.toJSON()).toEqual(expectedDoc.toJSON());
+ });
+ });
+
describe('when rendering markdown fails', () => {
beforeEach(() => {
renderMarkdown.mockRejectedValueOnce();
diff --git a/spec/frontend/content_editor/remark_markdown_processing_spec.js b/spec/frontend/content_editor/remark_markdown_processing_spec.js
index 359e69c083a..927a7d59899 100644
--- a/spec/frontend/content_editor/remark_markdown_processing_spec.js
+++ b/spec/frontend/content_editor/remark_markdown_processing_spec.js
@@ -30,7 +30,7 @@ import TaskList from '~/content_editor/extensions/task_list';
import TaskItem from '~/content_editor/extensions/task_item';
import Video from '~/content_editor/extensions/video';
import remarkMarkdownDeserializer from '~/content_editor/services/remark_markdown_deserializer';
-import markdownSerializer from '~/content_editor/services/markdown_serializer';
+import MarkdownSerializer from '~/content_editor/services/markdown_serializer';
import { SAFE_VIDEO_EXT, SAFE_AUDIO_EXT, DIAGRAM_LANGUAGES } from '~/content_editor/constants';
import { createTestEditor, createDocBuilder } from './test_utils';
@@ -158,7 +158,7 @@ describe('Client side Markdown processing', () => {
};
const serialize = (document) =>
- markdownSerializer({}).serialize({
+ new MarkdownSerializer().serialize({
doc: document,
pristineDoc: document,
});
diff --git a/spec/frontend/content_editor/services/markdown_serializer_spec.js b/spec/frontend/content_editor/services/markdown_serializer_spec.js
index 71885003b6c..0771eab2012 100644
--- a/spec/frontend/content_editor/services/markdown_serializer_spec.js
+++ b/spec/frontend/content_editor/services/markdown_serializer_spec.js
@@ -26,6 +26,8 @@ import Link from '~/content_editor/extensions/link';
import ListItem from '~/content_editor/extensions/list_item';
import OrderedList from '~/content_editor/extensions/ordered_list';
import Paragraph from '~/content_editor/extensions/paragraph';
+import Reference from '~/content_editor/extensions/reference';
+import ReferenceLabel from '~/content_editor/extensions/reference_label';
import ReferenceDefinition from '~/content_editor/extensions/reference_definition';
import Sourcemap from '~/content_editor/extensions/sourcemap';
import Strike from '~/content_editor/extensions/strike';
@@ -35,7 +37,7 @@ import TableHeader from '~/content_editor/extensions/table_header';
import TableRow from '~/content_editor/extensions/table_row';
import TaskItem from '~/content_editor/extensions/task_item';
import TaskList from '~/content_editor/extensions/task_list';
-import markdownSerializer from '~/content_editor/services/markdown_serializer';
+import MarkdownSerializer from '~/content_editor/services/markdown_serializer';
import remarkMarkdownDeserializer from '~/content_editor/services/remark_markdown_deserializer';
import { createTiptapEditor, createDocBuilder } from '../test_utils';
@@ -76,6 +78,8 @@ const {
orderedList,
paragraph,
referenceDefinition,
+ reference,
+ referenceLabel,
strike,
table,
tableCell,
@@ -116,6 +120,8 @@ const {
orderedList: { nodeType: OrderedList.name },
paragraph: { nodeType: Paragraph.name },
referenceDefinition: { nodeType: ReferenceDefinition.name },
+ reference: { nodeType: Reference.name },
+ referenceLabel: { nodeType: ReferenceLabel.name },
strike: { markType: Strike.name },
table: { nodeType: Table.name },
tableCell: { nodeType: TableCell.name },
@@ -134,7 +140,7 @@ const {
});
const serialize = (...content) =>
- markdownSerializer({}).serialize({
+ new MarkdownSerializer().serialize({
doc: doc(...content),
});
@@ -281,6 +287,77 @@ hi
).toBe('![GitLab][gitlab-url]');
});
+ it('correctly serializes references', () => {
+ expect(
+ serialize(
+ paragraph(
+ reference({
+ referenceType: 'issue',
+ originalText: '#123',
+ href: '/gitlab-org/gitlab-test/-/issues/123',
+ text: '#123',
+ }),
+ ),
+ ),
+ ).toBe('#123');
+ });
+
+ it('correctly renders a reference label', () => {
+ expect(
+ serialize(
+ paragraph(
+ referenceLabel({
+ referenceType: 'label',
+ originalText: '~foo',
+ href: '/gitlab-org/gitlab-test/-/labels/foo',
+ text: '~foo',
+ }),
+ ),
+ ),
+ ).toBe('~foo');
+ });
+
+ it('correctly renders a reference label without originalText', () => {
+ expect(
+ serialize(
+ paragraph(
+ referenceLabel({
+ referenceType: 'label',
+ href: '/gitlab-org/gitlab-test/-/labels/foo',
+ text: 'Foo Bar',
+ }),
+ ),
+ ),
+ ).toBe('~"Foo Bar"');
+ });
+
+ it('ensures spaces between multiple references', () => {
+ expect(
+ serialize(
+ paragraph(
+ reference({
+ referenceType: 'issue',
+ originalText: '#123',
+ href: '/gitlab-org/gitlab-test/-/issues/123',
+ text: '#123',
+ }),
+ referenceLabel({
+ referenceType: 'label',
+ originalText: '~foo',
+ href: '/gitlab-org/gitlab-test/-/labels/foo',
+ text: '~foo',
+ }),
+ reference({
+ referenceType: 'issue',
+ originalText: '#456',
+ href: '/gitlab-org/gitlab-test/-/issues/456',
+ text: '#456',
+ }),
+ ),
+ ),
+ ).toBe('#123 ~foo #456');
+ });
+
it.each`
src
${'data:image/png;base64,iVBORw0KGgoAAAAN'}
@@ -1485,7 +1562,7 @@ paragraph
editAction(document);
- const serialized = markdownSerializer({}).serialize({
+ const serialized = new MarkdownSerializer().serialize({
pristineDoc: document,
doc: tiptapEditor.state.doc,
});
diff --git a/spec/frontend/content_editor/test_utils.js b/spec/frontend/content_editor/test_utils.js
index 9357381c053..2184a829cf0 100644
--- a/spec/frontend/content_editor/test_utils.js
+++ b/spec/frontend/content_editor/test_utils.js
@@ -37,6 +37,8 @@ import Link from '~/content_editor/extensions/link';
import ListItem from '~/content_editor/extensions/list_item';
import OrderedList from '~/content_editor/extensions/ordered_list';
import ReferenceDefinition from '~/content_editor/extensions/reference_definition';
+import Reference from '~/content_editor/extensions/reference';
+import ReferenceLabel from '~/content_editor/extensions/reference_label';
import Strike from '~/content_editor/extensions/strike';
import Table from '~/content_editor/extensions/table';
import TableCell from '~/content_editor/extensions/table_cell';
@@ -291,6 +293,8 @@ export const createTiptapEditor = (extensions = []) =>
ListItem,
OrderedList,
ReferenceDefinition,
+ Reference,
+ ReferenceLabel,
Strike,
Table,
TableCell,
diff --git a/spec/frontend/issuable/components/issuable_header_warnings_spec.js b/spec/frontend/issuable/components/issuable_header_warnings_spec.js
index cbe2810a443..34f36bdf6cb 100644
--- a/spec/frontend/issuable/components/issuable_header_warnings_spec.js
+++ b/spec/frontend/issuable/components/issuable_header_warnings_spec.js
@@ -63,7 +63,16 @@ describe('IssuableHeaderWarnings', () => {
});
it(`${renderTestMessage(lockStatus)} the locked icon`, () => {
- expect(findLockedIcon().exists()).toBe(lockStatus);
+ const lockedIcon = findLockedIcon();
+
+ expect(lockedIcon.exists()).toBe(lockStatus);
+
+ if (lockStatus) {
+ expect(lockedIcon.attributes('title')).toBe(
+ `This ${issuableType.replace('_', ' ')} is locked. Only project members can comment.`,
+ );
+ expect(getBinding(lockedIcon.element, 'gl-tooltip')).not.toBeUndefined();
+ }
});
it(`${renderTestMessage(confidentialStatus)} the confidential icon`, () => {
diff --git a/spec/frontend/issues/show/components/app_spec.js b/spec/frontend/issues/show/components/app_spec.js
index f2c6ff5fdb3..ecca3e69ef6 100644
--- a/spec/frontend/issues/show/components/app_spec.js
+++ b/spec/frontend/issues/show/components/app_spec.js
@@ -397,7 +397,16 @@ describe('Issuable output', () => {
`('$title', async ({ isLocked }) => {
await wrapper.setProps({ isLocked });
- expect(findLockedBadge().exists()).toBe(isLocked);
+ const lockedBadge = findLockedBadge();
+
+ expect(lockedBadge.exists()).toBe(isLocked);
+
+ if (isLocked) {
+ expect(lockedBadge.attributes('title')).toBe(
+ 'This issue is locked. Only project members can comment.',
+ );
+ expect(getBinding(lockedBadge.element, 'gl-tooltip')).not.toBeUndefined();
+ }
});
it.each`
diff --git a/spec/frontend/super_sidebar/components/global_search/command_palette/__snapshots__/command_autocomplete_item_spec.js.snap b/spec/frontend/super_sidebar/components/global_search/command_palette/__snapshots__/command_autocomplete_item_spec.js.snap
new file mode 100644
index 00000000000..3c52cc195db
--- /dev/null
+++ b/spec/frontend/super_sidebar/components/global_search/command_palette/__snapshots__/command_autocomplete_item_spec.js.snap
@@ -0,0 +1,19 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`CommandAutocompleteItem should render user item 1`] = `
+<div
+ class="gl-display-flex gl-align-items-center"
+>
+ <gl-icon-stub
+ class="gl-mr-3"
+ name="users"
+ size="16"
+ />
+
+ <span
+ class="gl-text-gray-900"
+ >
+ Manage &gt; Activity
+ </span>
+</div>
+`;
diff --git a/spec/frontend/super_sidebar/components/global_search/command_palette/command_autocomplete_item_spec.js b/spec/frontend/super_sidebar/components/global_search/command_palette/command_autocomplete_item_spec.js
new file mode 100644
index 00000000000..2597812acaf
--- /dev/null
+++ b/spec/frontend/super_sidebar/components/global_search/command_palette/command_autocomplete_item_spec.js
@@ -0,0 +1,25 @@
+import { shallowMount } from '@vue/test-utils';
+import CommandAutocompleteItem from '~/super_sidebar/components/global_search/command_palette/command_autocomplete_item.vue';
+import { linksReducer } from '~/super_sidebar/components/global_search/command_palette/utils';
+import { LINKS } from './mock_data';
+
+describe('CommandAutocompleteItem', () => {
+ let wrapper;
+
+ const createComponent = () => {
+ wrapper = shallowMount(CommandAutocompleteItem, {
+ propsData: {
+ command: LINKS.reduce(linksReducer, [])[1],
+ searchQuery: 'root',
+ },
+ });
+ };
+
+ beforeEach(() => {
+ createComponent();
+ });
+
+ it('should render user item', () => {
+ expect(wrapper.element).toMatchSnapshot();
+ });
+});
diff --git a/spec/frontend/super_sidebar/components/global_search/command_palette/command_palette_items_spec.js b/spec/frontend/super_sidebar/components/global_search/command_palette/command_palette_items_spec.js
index df5b7de78f7..bd1e0dbc15d 100644
--- a/spec/frontend/super_sidebar/components/global_search/command_palette/command_palette_items_spec.js
+++ b/spec/frontend/super_sidebar/components/global_search/command_palette/command_palette_items_spec.js
@@ -5,21 +5,19 @@ import MockAdapter from 'axios-mock-adapter';
import CommandPaletteItems from '~/super_sidebar/components/global_search/command_palette/command_palette_items.vue';
import {
COMMAND_HANDLE,
- COMMANDS_GROUP_TITLE,
USERS_GROUP_TITLE,
USER_HANDLE,
} from '~/super_sidebar/components/global_search/command_palette/constants';
-import { userMapper } from '~/super_sidebar/components/global_search/command_palette/utils';
+import {
+ userMapper,
+ linksReducer,
+} from '~/super_sidebar/components/global_search/command_palette/utils';
import axios from '~/lib/utils/axios_utils';
import { HTTP_STATUS_OK } from '~/lib/utils/http_status';
import waitForPromises from 'helpers/wait_for_promises';
-import { COMMANDS, USERS } from './mock_data';
+import { COMMANDS, LINKS, USERS } from './mock_data';
-const commands = COMMANDS.map(({ text, href, keywords }) => ({
- text,
- href,
- keywords: keywords.join(''),
-}));
+const links = LINKS.reduce(linksReducer, []);
describe('CommandPaletteItems', () => {
let wrapper;
@@ -36,7 +34,8 @@ describe('CommandPaletteItems', () => {
GlDisclosureDropdownItem,
},
provide: {
- commandPaletteData: COMMANDS,
+ commandPaletteCommands: COMMANDS,
+ commandPaletteLinks: LINKS,
},
});
};
@@ -45,24 +44,31 @@ describe('CommandPaletteItems', () => {
const findGroup = () => wrapper.findComponent(GlDisclosureDropdownGroup);
const findLoader = () => wrapper.findComponent(GlLoadingIcon);
- describe('COMMANDS', () => {
+ describe('COMMANDS & LINKS', () => {
it('renders all commands initially', () => {
createComponent();
- expect(findItems()).toHaveLength(COMMANDS.length);
+ const commandGroup = COMMANDS[0];
+ expect(findItems()).toHaveLength(commandGroup.items.length);
expect(findGroup().props('group')).toEqual({
- name: COMMANDS_GROUP_TITLE,
- items: commands,
+ name: commandGroup.name,
+ items: commandGroup.items,
});
});
describe('with search query', () => {
- it('should filter by the search query', async () => {
+ it('should filter comamnds and links by the search query', async () => {
jest.spyOn(fuzzaldrinPlus, 'filter');
createComponent({ searchQuery: 'mr' });
const searchQuery = 'todo';
await wrapper.setProps({ searchQuery });
+ const commandGroup = COMMANDS[0];
+ expect(fuzzaldrinPlus.filter).toHaveBeenCalledWith(
+ commandGroup.items,
+ searchQuery,
+ expect.objectContaining({ key: 'text' }),
+ );
expect(fuzzaldrinPlus.filter).toHaveBeenCalledWith(
- commands,
+ links,
searchQuery,
expect.objectContaining({ key: 'keywords' }),
);
diff --git a/spec/frontend/super_sidebar/components/global_search/command_palette/mock_data.js b/spec/frontend/super_sidebar/components/global_search/command_palette/mock_data.js
index e924efd56af..726339f56a1 100644
--- a/spec/frontend/super_sidebar/components/global_search/command_palette/mock_data.js
+++ b/spec/frontend/super_sidebar/components/global_search/command_palette/mock_data.js
@@ -1,18 +1,63 @@
export const COMMANDS = [
{
- text: 'New project/repository',
- href: '/projects/new',
- keywords: ['new', 'project', 'repository'],
- },
- {
- text: 'New group',
- href: '/groups/new',
- keywords: ['new', 'group'],
+ name: 'Global',
+ items: [
+ {
+ text: 'New project/repository',
+ href: '/projects/new',
+ keywords: ['new', 'project', 'repository'],
+ },
+ {
+ text: 'New group',
+ href: '/groups/new',
+ keywords: ['new', 'group'],
+ },
+ {
+ text: 'New snippet',
+ href: '/-/snippets/new',
+ keywords: ['new', 'snippet'],
+ },
+ ],
},
+];
+
+export const LINKS = [
{
- text: 'New snippet',
- href: '/-/snippets/new',
- keywords: ['new', 'snippet'],
+ title: 'Manage',
+ icon: 'users',
+ link: '/flightjs/Flight/activity',
+ is_active: false,
+ pill_count: null,
+ items: [
+ {
+ id: 'activity',
+ title: 'Activity',
+ icon: null,
+ link: '/flightjs/Flight/activity',
+ pill_count: null,
+ link_classes: 'shortcuts-project-activity',
+ is_active: false,
+ },
+ {
+ id: 'members',
+ title: 'Members',
+ icon: null,
+ link: '/flightjs/Flight/-/project_members',
+ pill_count: null,
+ link_classes: null,
+ is_active: false,
+ },
+ {
+ id: 'labels',
+ title: 'Labels',
+ icon: null,
+ link: '/flightjs/Flight/-/labels',
+ pill_count: null,
+ link_classes: null,
+ is_active: false,
+ },
+ ],
+ separated: false,
},
];
diff --git a/spec/frontend/super_sidebar/components/global_search/command_palette/utils_spec.js b/spec/frontend/super_sidebar/components/global_search/command_palette/utils_spec.js
index 5bcf5e95793..74a5247add5 100644
--- a/spec/frontend/super_sidebar/components/global_search/command_palette/utils_spec.js
+++ b/spec/frontend/super_sidebar/components/global_search/command_palette/utils_spec.js
@@ -1,8 +1,5 @@
-import {
- userMapper,
- commandMapper,
-} from '~/super_sidebar/components/global_search/command_palette/utils';
-import { COMMANDS, USERS } from './mock_data';
+import { userMapper } from '~/super_sidebar/components/global_search/command_palette/utils';
+import { USERS } from './mock_data';
describe('userMapper', () => {
it('should transform users response', () => {
@@ -16,14 +13,3 @@ describe('userMapper', () => {
});
});
});
-
-describe('commandMapper', () => {
- it('should transform commands response', () => {
- const command = COMMANDS[0];
- expect(commandMapper(command)).toEqual({
- href: command.href,
- text: command.text,
- keywords: command.keywords.join(''),
- });
- });
-});
diff --git a/spec/frontend/vue_shared/components/markdown_drawer/markdown_drawer_spec.js b/spec/frontend/vue_shared/components/markdown_drawer/markdown_drawer_spec.js
index 6f4902e3f96..e916336f21a 100644
--- a/spec/frontend/vue_shared/components/markdown_drawer/markdown_drawer_spec.js
+++ b/spec/frontend/vue_shared/components/markdown_drawer/markdown_drawer_spec.js
@@ -4,6 +4,7 @@ import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
import MarkdownDrawer, { cache } from '~/vue_shared/components/markdown_drawer/markdown_drawer.vue';
import { getRenderedMarkdown } from '~/vue_shared/components/markdown_drawer/utils/fetch';
import { contentTop } from '~/lib/utils/common_utils';
+import { DRAWER_Z_INDEX } from '~/lib/utils/constants';
jest.mock('~/vue_shared/components/markdown_drawer/utils/fetch', () => ({
getRenderedMarkdown: jest.fn().mockReturnValue({
@@ -55,6 +56,10 @@ describe('MarkdownDrawer', () => {
expect(findDrawerTitle().text()).toBe('test title test');
expect(findDrawerBody().text()).toBe('test body');
});
+
+ it(`has proper z-index set for the drawer component`, () => {
+ expect(findDrawer().attributes('zindex')).toBe(DRAWER_Z_INDEX.toString());
+ });
});
describe.each`
diff --git a/spec/helpers/sidebars_helper_spec.rb b/spec/helpers/sidebars_helper_spec.rb
index f4df7a69b8f..6648663b634 100644
--- a/spec/helpers/sidebars_helper_spec.rb
+++ b/spec/helpers/sidebars_helper_spec.rb
@@ -319,17 +319,6 @@ RSpec.describe SidebarsHelper, feature_category: :navigation do
)
end
- it 'returns command palette items', :use_clean_rails_memory_store_caching do
- expect(subject[:command_palette_commands]).to match_array([
- { href: "/projects/new",
- text: "New project/repository", keywords: [_('Create a new project/repository')] },
- { href: "/groups/new", text: "New group",
- keywords: ['Create a new group'] },
- { href: "/-/snippets/new", text: "New snippet",
- keywords: ['Create a new snippet'] }
- ])
- end
-
describe 'current context' do
context 'when current context is a project' do
let_it_be(:project) { build(:project) }
diff --git a/spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb b/spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb
index baabab73ea2..ac66fc3b773 100644
--- a/spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb
+++ b/spec/lib/gitlab/ci/build/prerequisite/kubernetes_namespace_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe Gitlab::Ci::Build::Prerequisite::KubernetesNamespace do
+RSpec.describe Gitlab::Ci::Build::Prerequisite::KubernetesNamespace, feature_category: :continuous_delivery do
describe '#unmet?' do
let(:build) { create(:ci_build) }
@@ -17,15 +17,13 @@ RSpec.describe Gitlab::Ci::Build::Prerequisite::KubernetesNamespace do
end
context 'build has a deployment' do
- let!(:deployment) { create(:deployment, deployable: build, cluster: cluster) }
-
context 'and a cluster to deploy to' do
- let(:cluster) { create(:cluster, :group) }
+ let!(:deployment) { create(:deployment, :on_cluster, deployable: build) }
it { is_expected.to be_truthy }
context 'and the cluster is not managed' do
- let(:cluster) { create(:cluster, :not_managed, projects: [build.project]) }
+ let!(:deployment) { create(:deployment, :on_cluster_not_managed, deployable: build) }
it { is_expected.to be_falsey }
end
@@ -63,8 +61,8 @@ RSpec.describe Gitlab::Ci::Build::Prerequisite::KubernetesNamespace do
subject { prerequisite.complete! }
context 'completion is required' do
- let(:cluster) { create(:cluster, :group) }
- let(:deployment) { create(:deployment, cluster: cluster) }
+ let(:cluster) { deployment.cluster }
+ let(:deployment) { create(:deployment, :on_cluster) }
let(:service) { double(execute: true) }
let(:kubernetes_namespace) { double }
@@ -84,12 +82,12 @@ RSpec.describe Gitlab::Ci::Build::Prerequisite::KubernetesNamespace do
it 'creates a namespace using a new record' do
expect(Clusters::BuildKubernetesNamespaceService)
.to receive(:new)
- .with(cluster, environment: deployment.environment)
+ .with(deployment.cluster, environment: deployment.environment)
.and_return(namespace_builder)
expect(Clusters::Kubernetes::CreateOrUpdateNamespaceService)
.to receive(:new)
- .with(cluster: cluster, kubernetes_namespace: kubernetes_namespace)
+ .with(cluster: deployment.cluster, kubernetes_namespace: kubernetes_namespace)
.and_return(service)
expect(service).to receive(:execute).once
@@ -112,12 +110,12 @@ RSpec.describe Gitlab::Ci::Build::Prerequisite::KubernetesNamespace do
it 'creates a namespace' do
expect(Clusters::BuildKubernetesNamespaceService)
.to receive(:new)
- .with(cluster, environment: deployment.environment)
+ .with(deployment.cluster, environment: deployment.environment)
.and_return(namespace_builder)
expect(Clusters::Kubernetes::CreateOrUpdateNamespaceService)
.to receive(:new)
- .with(cluster: cluster, kubernetes_namespace: kubernetes_namespace)
+ .with(cluster: deployment.cluster, kubernetes_namespace: kubernetes_namespace)
.and_return(service)
expect(service).to receive(:execute).once
@@ -150,7 +148,7 @@ RSpec.describe Gitlab::Ci::Build::Prerequisite::KubernetesNamespace do
expect(Clusters::Kubernetes::CreateOrUpdateNamespaceService)
.to receive(:new)
- .with(cluster: cluster, kubernetes_namespace: kubernetes_namespace)
+ .with(cluster: deployment.cluster, kubernetes_namespace: kubernetes_namespace)
.and_return(service)
subject
diff --git a/spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb b/spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb
index 394c45121dc..3a5df997f7c 100644
--- a/spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb
+++ b/spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb
@@ -12,7 +12,7 @@ RSpec.describe Gitlab::ErrorTracking::ErrorRepository::OpenApiStrategy do
before do
# Disabled in spec_helper by default thus we need to enable it here.
- stub_feature_flags(use_click_house_database_for_error_tracking: true)
+ stub_feature_flags(gitlab_error_tracking: true)
end
shared_examples 'exception logging' do
diff --git a/spec/lib/gitlab/import_export/import_test_coverage_spec.rb b/spec/lib/gitlab/import_export/import_test_coverage_spec.rb
index d8a4230e5da..1d3fc764b50 100644
--- a/spec/lib/gitlab/import_export/import_test_coverage_spec.rb
+++ b/spec/lib/gitlab/import_export/import_test_coverage_spec.rb
@@ -7,7 +7,7 @@ require 'spec_helper'
# Fixture JSONs we use for testing Import such as
# `spec/fixtures/lib/gitlab/import_export/complex/project.json`
# should include these relations being non-empty.
-RSpec.describe 'Test coverage of the Project Import' do
+RSpec.describe 'Test coverage of the Project Import', feature_category: :importers do
include ConfigurationHelper
# `muted_relations` is a technical debt.
@@ -18,7 +18,6 @@ RSpec.describe 'Test coverage of the Project Import' do
let(:muted_relations) do
%w[
project.milestones.events.push_event_payload
- project.issues.events
project.issues.events.push_event_payload
project.issues.notes.events
project.issues.notes.events.push_event_payload
@@ -53,19 +52,23 @@ RSpec.describe 'Test coverage of the Project Import' do
project.boards.lists.label.priorities
project.service_desk_setting
project.security_setting
+ project.push_rule
+ project.approval_rules
+ project.approval_rules.approval_project_rules_protected_branches
+ project.approval_rules.approval_project_rules_users
].freeze
end
- # A list of JSON fixture files we use to test Import.
- # Most of the relations are present in `complex/project.json`
+ # A list of project tree fixture files we use to test Import.
+ # Most of the relations are present in `complex/tree`
# which is our main fixture.
- let(:project_json_fixtures) do
+ let(:project_tree_fixtures) do
[
- 'spec/fixtures/lib/gitlab/import_export/complex/project.json',
- 'spec/fixtures/lib/gitlab/import_export/group/project.json',
- 'spec/fixtures/lib/gitlab/import_export/light/project.json',
- 'spec/fixtures/lib/gitlab/import_export/milestone-iid/project.json',
- 'spec/fixtures/lib/gitlab/import_export/designs/project.json'
+ 'spec/fixtures/lib/gitlab/import_export/complex/tree',
+ 'spec/fixtures/lib/gitlab/import_export/group/tree',
+ 'spec/fixtures/lib/gitlab/import_export/light/tree',
+ 'spec/fixtures/lib/gitlab/import_export/milestone-iid/tree',
+ 'spec/fixtures/lib/gitlab/import_export/designs/tree'
].freeze
end
@@ -82,16 +85,30 @@ RSpec.describe 'Test coverage of the Project Import' do
end
def tested_relations
- project_json_fixtures.flat_map(&method(:relations_from_json)).to_set
+ project_tree_fixtures.flat_map(&method(:relations_from_tree)).to_set
end
- def relations_from_json(json_file)
- json = Gitlab::Json.parse(File.read(json_file))
+ def relations_from_tree(json_tree_path)
+ json = convert_tree_to_json(json_tree_path)
[].tap { |res| gather_relations({ project: json }, res, []) }
.map { |relation_names| relation_names.join('.') }
end
+ def convert_tree_to_json(json_tree_path)
+ json = Gitlab::Json.parse(File.read(File.join(json_tree_path, 'project.json')))
+
+ Dir["#{json_tree_path}/project/*.ndjson"].each do |ndjson|
+ relation_name = File.basename(ndjson, '.ndjson')
+ json[relation_name] = []
+ File.foreach(ndjson) do |line|
+ json[relation_name] << Gitlab::Json.parse(line)
+ end
+ end
+
+ json
+ end
+
def gather_relations(item, res, path)
case item
when Hash
@@ -112,7 +129,7 @@ RSpec.describe 'Test coverage of the Project Import' do
These relations seem to be added recently and
they expected to be covered in our Import specs: #{not_tested_relations}.
- To do that, expand one of the files listed in `project_json_fixtures`
+ To do that, expand one of the files listed in `project_tree_fixtures`
(or expand the list if you consider adding a new fixture file).
After that, add a new spec into
diff --git a/spec/lib/gitlab/import_export/legacy_relation_tree_saver_spec.rb b/spec/lib/gitlab/import_export/legacy_relation_tree_saver_spec.rb
deleted file mode 100644
index c2c50751c3f..00000000000
--- a/spec/lib/gitlab/import_export/legacy_relation_tree_saver_spec.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe Gitlab::ImportExport::LegacyRelationTreeSaver do
- let(:exportable) { create(:group) }
- let(:relation_tree_saver) { described_class.new }
- let(:tree) { {} }
-
- describe '#serialize' do
- let(:serializer) { instance_double(Gitlab::ImportExport::FastHashSerializer) }
-
- it 'uses FastHashSerializer' do
- expect(Gitlab::ImportExport::FastHashSerializer)
- .to receive(:new)
- .with(exportable, tree)
- .and_return(serializer)
-
- expect(serializer).to receive(:execute)
-
- relation_tree_saver.serialize(exportable, tree)
- end
- end
-end
diff --git a/spec/lib/gitlab/utils/usage_data_spec.rb b/spec/lib/gitlab/utils/usage_data_spec.rb
index 586ee04a835..b4672a9d1c4 100644
--- a/spec/lib/gitlab/utils/usage_data_spec.rb
+++ b/spec/lib/gitlab/utils/usage_data_spec.rb
@@ -182,7 +182,7 @@ RSpec.describe Gitlab::Utils::UsageData do
end
it 'counts over joined relations' do
- expect(described_class.estimate_batch_distinct_count(model.joins(:build), "ci_builds.name")).to eq(ci_builds_estimated_cardinality)
+ expect(described_class.estimate_batch_distinct_count(model.joins(:build), "#{Ci::Build.table_name}.name")).to eq(ci_builds_estimated_cardinality)
end
it 'counts with :column field with batch_size of 50K' do
diff --git a/spec/mailers/emails/merge_requests_spec.rb b/spec/mailers/emails/merge_requests_spec.rb
index 9a8d1e1279b..b587c5195da 100644
--- a/spec/mailers/emails/merge_requests_spec.rb
+++ b/spec/mailers/emails/merge_requests_spec.rb
@@ -170,7 +170,7 @@ RSpec.describe Emails::MergeRequests do
end
describe "#merge_when_pipeline_succeeds_email" do
- let(:title) { "Merge request #{merge_request.to_reference} was scheduled to merge after pipeline succeeds by #{current_user.name}" }
+ let(:title) { "Merge request #{merge_request.to_reference} was set to auto-merge by #{current_user.name}" }
subject { Notify.merge_when_pipeline_succeeds_email(recipient.id, merge_request.id, current_user.id) }
diff --git a/spec/models/clusters/cluster_spec.rb b/spec/models/clusters/cluster_spec.rb
index d501325dd90..99932dc27d1 100644
--- a/spec/models/clusters/cluster_spec.rb
+++ b/spec/models/clusters/cluster_spec.rb
@@ -188,8 +188,15 @@ RSpec.describe Clusters::Cluster, :use_clean_rails_memory_store_caching,
context 'cluster has multiple successful deployment with environment' do
let!(:environment) { create(:environment) }
- let!(:deployment) { create(:deployment, :success, cluster: cluster, environment: environment) }
- let!(:deployment_2) { create(:deployment, :success, cluster: cluster, environment: environment) }
+ let!(:deployment) { create(:deployment, :on_cluster, :success, environment: environment) }
+ let!(:deployment_2) { create(:deployment, :on_cluster, :success, environment: environment) }
+
+ before do
+ deployment.deployment_cluster.update!(cluster: cluster)
+ deployment_2.deployment_cluster.update!(cluster: cluster)
+ deployment.reload
+ deployment_2.reload
+ end
it { is_expected.to include(cluster) }
@@ -200,9 +207,9 @@ RSpec.describe Clusters::Cluster, :use_clean_rails_memory_store_caching,
context 'cluster has only failed deployment with environment' do
let!(:environment) { create(:environment) }
- let!(:deployment) { create(:deployment, :failed, cluster: cluster, environment: environment) }
+ let!(:deployment) { create(:deployment, :failed, :on_cluster, environment: environment) }
- it { is_expected.not_to include(cluster) }
+ it { is_expected.not_to include(deployment.cluster) }
end
context 'cluster does not have any deployment' do
diff --git a/spec/models/deployment_spec.rb b/spec/models/deployment_spec.rb
index 2a7a8d50895..ede96d79656 100644
--- a/spec/models/deployment_spec.rb
+++ b/spec/models/deployment_spec.rb
@@ -7,7 +7,6 @@ RSpec.describe Deployment, feature_category: :continuous_delivery do
it { is_expected.to belong_to(:project).required }
it { is_expected.to belong_to(:environment).required }
- it { is_expected.to belong_to(:cluster).class_name('Clusters::Cluster') }
it { is_expected.to belong_to(:user) }
it { is_expected.to belong_to(:deployable) }
it { is_expected.to have_one(:deployment_cluster) }
@@ -18,6 +17,7 @@ RSpec.describe Deployment, feature_category: :continuous_delivery do
it { is_expected.to delegate_method(:commit).to(:project) }
it { is_expected.to delegate_method(:commit_title).to(:commit).as(:try) }
it { is_expected.to delegate_method(:kubernetes_namespace).to(:deployment_cluster).as(:kubernetes_namespace) }
+ it { is_expected.to delegate_method(:cluster).to(:deployment_cluster) }
it { is_expected.to validate_presence_of(:ref) }
it { is_expected.to validate_presence_of(:sha) }
@@ -1476,11 +1476,4 @@ RSpec.describe Deployment, feature_category: :continuous_delivery do
end
end
end
-
- context 'loose foreign key on deployments.cluster_id' do
- it_behaves_like 'cleanup by a loose foreign key' do
- let!(:parent) { create(:cluster) }
- let!(:model) { create(:deployment, cluster: parent) }
- end
- end
end
diff --git a/spec/models/environment_spec.rb b/spec/models/environment_spec.rb
index 061291906a0..7b7b92a0b8d 100644
--- a/spec/models/environment_spec.rb
+++ b/spec/models/environment_spec.rb
@@ -1660,20 +1660,18 @@ RSpec.describe Environment, :use_clean_rails_memory_store_caching, feature_categ
end
context 'environment has a deployment' do
- let!(:deployment) { create(:deployment, :success, environment: environment, cluster: cluster) }
-
context 'with no cluster associated' do
- let(:cluster) { nil }
+ let!(:deployment) { create(:deployment, :success, environment: environment) }
it { is_expected.to be_nil }
end
context 'with a cluster associated' do
- let(:cluster) { create(:cluster) }
+ let!(:deployment) { create(:deployment, :success, :on_cluster, environment: environment) }
it 'calls the service finder' do
expect(Clusters::KnativeServicesFinder).to receive(:new)
- .with(cluster, environment).and_return(:finder)
+ .with(deployment.cluster, environment).and_return(:finder)
is_expected.to eq :finder
end
diff --git a/spec/requests/api/internal/error_tracking_spec.rb b/spec/requests/api/internal/error_tracking_spec.rb
index 83012e26138..1906bed6007 100644
--- a/spec/requests/api/internal/error_tracking_spec.rb
+++ b/spec/requests/api/internal/error_tracking_spec.rb
@@ -19,7 +19,6 @@ RSpec.describe API::Internal::ErrorTracking, feature_category: :error_tracking d
before do
# Because the feature flag is disabled in specs we have to enable it explicitly.
- stub_feature_flags(use_click_house_database_for_error_tracking: true)
stub_feature_flags(gitlab_error_tracking: true)
end
@@ -90,9 +89,8 @@ RSpec.describe API::Internal::ErrorTracking, feature_category: :error_tracking d
expect(json_response).to eq('enabled' => true)
end
- context 'when feature flags use_click_house_database_for_error_tracking or gitlab_error_tracking are disabled' do
+ context 'when feature flags gitlab_error_tracking are disabled' do
before do
- stub_feature_flags(use_click_house_database_for_error_tracking: false)
stub_feature_flags(gitlab_error_tracking: false)
end
diff --git a/spec/scripts/lib/glfm/update_example_snapshots_spec.rb b/spec/scripts/lib/glfm/update_example_snapshots_spec.rb
index f2194f46ab4..87b2c42c5b8 100644
--- a/spec/scripts/lib/glfm/update_example_snapshots_spec.rb
+++ b/spec/scripts/lib/glfm/update_example_snapshots_spec.rb
@@ -815,10 +815,8 @@ RSpec.describe Glfm::UpdateExampleSnapshots, '#process', feature_category: :team
{
"type": "link",
"attrs": {
- "href": "/uploads/groups-test-file",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "/uploads/groups-test-file",
"title": null,
"canonicalSrc": "/uploads/groups-test-file",
"isReference": false
@@ -844,10 +842,8 @@ RSpec.describe Glfm::UpdateExampleSnapshots, '#process', feature_category: :team
{
"type": "link",
"attrs": {
- "href": "projects-test-file",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "projects-test-file",
"title": null,
"canonicalSrc": "projects-test-file",
"isReference": false
@@ -903,10 +899,8 @@ RSpec.describe Glfm::UpdateExampleSnapshots, '#process', feature_category: :team
{
"type": "link",
"attrs": {
- "href": "project-wikis-test-file",
- "target": "_blank",
- "class": null,
"uploading": false,
+ "href": "project-wikis-test-file",
"title": null,
"canonicalSrc": "project-wikis-test-file",
"isReference": false
diff --git a/spec/serializers/deployment_cluster_entity_spec.rb b/spec/serializers/deployment_cluster_entity_spec.rb
index 419ae746b74..1fb07b0e8fd 100644
--- a/spec/serializers/deployment_cluster_entity_spec.rb
+++ b/spec/serializers/deployment_cluster_entity_spec.rb
@@ -12,7 +12,7 @@ RSpec.describe DeploymentClusterEntity do
let(:request) { double(:request, current_user: current_user) }
let(:project) { create(:project) }
let(:cluster) { create(:cluster, name: 'the-cluster', projects: [project]) }
- let(:deployment) { create(:deployment, cluster: cluster) }
+ let(:deployment) { create(:deployment) }
let!(:deployment_cluster) { create(:deployment_cluster, cluster: cluster, deployment: deployment) }
before do
diff --git a/spec/services/ci/unlock_artifacts_service_spec.rb b/spec/services/ci/unlock_artifacts_service_spec.rb
index 0d6ac333587..c149eaf41e5 100644
--- a/spec/services/ci/unlock_artifacts_service_spec.rb
+++ b/spec/services/ci/unlock_artifacts_service_spec.rb
@@ -207,6 +207,8 @@ RSpec.describe Ci::UnlockArtifactsService, feature_category: :continuous_integra
describe '#unlock_job_artifacts_query' do
subject { described_class.new(pipeline.project, pipeline.user).unlock_job_artifacts_query(pipeline_ids) }
+ let(:builds_table) { Ci::Build.quoted_table_name }
+
context 'when given a single pipeline ID' do
let(:pipeline_ids) { [older_pipeline.id] }
@@ -219,12 +221,12 @@ RSpec.describe Ci::UnlockArtifactsService, feature_category: :continuous_integra
WHERE
"ci_job_artifacts"."job_id" IN
(SELECT
- "ci_builds"."id"
+ #{builds_table}."id"
FROM
- "ci_builds"
+ #{builds_table}
WHERE
- "ci_builds"."type" = 'Ci::Build'
- AND "ci_builds"."commit_id" = #{older_pipeline.id})
+ #{builds_table}."type" = 'Ci::Build'
+ AND #{builds_table}."commit_id" = #{older_pipeline.id})
RETURNING
("ci_job_artifacts"."id")
SQL
@@ -243,12 +245,12 @@ RSpec.describe Ci::UnlockArtifactsService, feature_category: :continuous_integra
WHERE
"ci_job_artifacts"."job_id" IN
(SELECT
- "ci_builds"."id"
+ #{builds_table}."id"
FROM
- "ci_builds"
+ #{builds_table}
WHERE
- "ci_builds"."type" = 'Ci::Build'
- AND "ci_builds"."commit_id" IN (#{pipeline_ids.join(', ')}))
+ #{builds_table}."type" = 'Ci::Build'
+ AND #{builds_table}."commit_id" IN (#{pipeline_ids.join(', ')}))
RETURNING
("ci_job_artifacts"."id")
SQL
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index e22303e62f6..a2afa3d0ca7 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -275,7 +275,7 @@ RSpec.configure do |config|
# It's disabled in specs because we don't support certain features which
# cause spec failures.
- stub_feature_flags(use_click_house_database_for_error_tracking: false)
+ stub_feature_flags(gitlab_error_tracking: false)
# Disable this to avoid the Web IDE modals popping up in tests:
# https://gitlab.com/gitlab-org/gitlab/-/issues/385453
diff --git a/yarn.lock b/yarn.lock
index 2f04b2236d4..cb4fe862d0f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9872,10 +9872,10 @@ optionator@^0.9.1:
type-check "^0.4.0"
word-wrap "^1.2.3"
-orderedmap@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.0.0.tgz#12ff5ef6ea9d12d6430b80c701b35475e1c9ff34"
- integrity sha512-buf4PoAMlh45b8a8gsGy/X6w279TSqkyAS0C0wdTSJwFSU+ljQFJON5I8NfjLHoCXwpSROIo2wr0g33T+kQshQ==
+orderedmap@^2.0.0, orderedmap@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.1.tgz#61481269c44031c449915497bf5a4ad273c512d2"
+ integrity sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==
os-browserify@^0.3.0:
version "0.3.0"