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:
authorYorick Peterse <yorickpeterse@gmail.com>2019-02-11 18:20:39 +0300
committerYorick Peterse <yorickpeterse@gmail.com>2019-02-11 18:20:39 +0300
commit36a64a18b3071b6e0e91d9d35a6383d231b62b7e (patch)
treee4a51f62a9ddc9cfe26203f0d8b3471ff90bf67d
parent6afe2688aafa31347eea245b8e98577c80bbd443 (diff)
parent1d77ab4988f388f3de2f7be0fa3cbc8e5a542a4f (diff)
Merge branch '11-8-stable-prepare-rc2' into '11-8-stable'
Prepare 11.8.0-rc2 release See merge request gitlab-org/gitlab-ce!25095
-rw-r--r--app/assets/javascripts/diffs/components/tree_list.vue70
-rw-r--r--app/assets/javascripts/ide/index.js11
-rw-r--r--app/assets/javascripts/lib/utils/webpack.js10
-rw-r--r--app/assets/javascripts/mr_notes/index.js3
-rw-r--r--app/controllers/projects/merge_requests_controller.rb4
-rw-r--r--app/views/projects/issues/_merge_requests_status.html.haml7
-rw-r--r--doc/api/container_registry.md4
-rw-r--r--doc/topics/autodevops/index.md7
-rw-r--r--locale/gitlab.pot3
-rw-r--r--qa/qa/page/project/new.rb2
-rw-r--r--spec/views/projects/issues/_merge_requests_status.html.haml_spec.rb22
11 files changed, 112 insertions, 31 deletions
diff --git a/app/assets/javascripts/diffs/components/tree_list.vue b/app/assets/javascripts/diffs/components/tree_list.vue
index 96ae197d8b8..7e00b994541 100644
--- a/app/assets/javascripts/diffs/components/tree_list.vue
+++ b/app/assets/javascripts/diffs/components/tree_list.vue
@@ -13,18 +13,43 @@ export default {
Icon,
FileRow,
},
+ data() {
+ return {
+ search: '',
+ };
+ },
computed: {
...mapState('diffs', ['tree', 'renderTreeList']),
...mapGetters('diffs', ['allBlobs']),
filteredTreeList() {
- return this.renderTreeList ? this.tree : this.allBlobs;
+ const search = this.search.toLowerCase().trim();
+
+ if (search === '' || this.$options.fuzzyFileFinderEnabled)
+ return this.renderTreeList ? this.tree : this.allBlobs;
+
+ return this.allBlobs.reduce((acc, folder) => {
+ const tree = folder.tree.filter(f => f.path.toLowerCase().indexOf(search) >= 0);
+
+ if (tree.length) {
+ return acc.concat({
+ ...folder,
+ tree,
+ });
+ }
+
+ return acc;
+ }, []);
},
},
methods: {
...mapActions('diffs', ['toggleTreeOpen', 'scrollToFile', 'toggleFileFinder']),
+ clearSearch() {
+ this.search = '';
+ },
},
shortcutKeyCharacter: `${/Mac/i.test(navigator.userAgent) ? '&#8984;' : 'Ctrl'}+P`,
FileRowStats,
+ diffTreeFiltering: gon.features && gon.features.diffTreeFiltering,
};
</script>
@@ -33,17 +58,36 @@ export default {
<div class="append-bottom-8 position-relative tree-list-search d-flex">
<div class="flex-fill d-flex">
<icon name="search" class="position-absolute tree-list-icon" />
- <button
- type="button"
- class="form-control text-left text-secondary"
- @click="toggleFileFinder(true)"
- >
- {{ s__('MergeRequest|Search files') }}
- </button>
- <span
- class="position-absolute text-secondary diff-tree-search-shortcut"
- v-html="$options.shortcutKeyCharacter"
- ></span>
+ <template v-if="$options.diffTreeFiltering">
+ <input
+ v-model="search"
+ :placeholder="s__('MergeRequest|Filter files')"
+ type="search"
+ class="form-control"
+ />
+ <button
+ v-show="search"
+ :aria-label="__('Clear search')"
+ type="button"
+ class="position-absolute bg-transparent tree-list-icon tree-list-clear-icon border-0 p-0"
+ @click="clearSearch"
+ >
+ <icon name="close" />
+ </button>
+ </template>
+ <template v-else>
+ <button
+ type="button"
+ class="form-control text-left text-secondary"
+ @click="toggleFileFinder(true)"
+ >
+ {{ s__('MergeRequest|Search files') }}
+ </button>
+ <span
+ class="position-absolute text-secondary diff-tree-search-shortcut"
+ v-html="$options.shortcutKeyCharacter"
+ ></span>
+ </template>
</div>
</div>
<div :class="{ 'pt-0 tree-list-blobs': !renderTreeList }" class="tree-list-scroll">
@@ -79,7 +123,7 @@ export default {
pointer-events: none;
}
-.tree-list-icon {
+.tree-list-icon:not(button) {
pointer-events: none;
}
</style>
diff --git a/app/assets/javascripts/ide/index.js b/app/assets/javascripts/ide/index.js
index 5a2b680c2f7..cdfebd19fa4 100644
--- a/app/assets/javascripts/ide/index.js
+++ b/app/assets/javascripts/ide/index.js
@@ -6,6 +6,7 @@ import ide from './components/ide.vue';
import store from './stores';
import router from './ide_router';
import { parseBoolean } from '../lib/utils/common_utils';
+import { resetServiceWorkersPublicPath } from '../lib/utils/webpack';
Vue.use(Translate);
@@ -60,16 +61,6 @@ export function initIde(el, options = {}) {
});
}
-// tell webpack to load assets from origin so that web workers don't break
-export function resetServiceWorkersPublicPath() {
- // __webpack_public_path__ is a global variable that can be used to adjust
- // the webpack publicPath setting at runtime.
- // see: https://webpack.js.org/guides/public-path/
- const relativeRootPath = (gon && gon.relative_url_root) || '';
- const webpackAssetPath = `${relativeRootPath}/assets/webpack/`;
- __webpack_public_path__ = webpackAssetPath; // eslint-disable-line camelcase
-}
-
/**
* Start the IDE.
*
diff --git a/app/assets/javascripts/lib/utils/webpack.js b/app/assets/javascripts/lib/utils/webpack.js
new file mode 100644
index 00000000000..308ad9784e4
--- /dev/null
+++ b/app/assets/javascripts/lib/utils/webpack.js
@@ -0,0 +1,10 @@
+// tell webpack to load assets from origin so that web workers don't break
+// eslint-disable-next-line import/prefer-default-export
+export function resetServiceWorkersPublicPath() {
+ // __webpack_public_path__ is a global variable that can be used to adjust
+ // the webpack publicPath setting at runtime.
+ // see: https://webpack.js.org/guides/public-path/
+ const relativeRootPath = (gon && gon.relative_url_root) || '';
+ const webpackAssetPath = `${relativeRootPath}/assets/webpack/`;
+ __webpack_public_path__ = webpackAssetPath; // eslint-disable-line camelcase
+}
diff --git a/app/assets/javascripts/mr_notes/index.js b/app/assets/javascripts/mr_notes/index.js
index e4d72eb8318..9e99aa4f724 100644
--- a/app/assets/javascripts/mr_notes/index.js
+++ b/app/assets/javascripts/mr_notes/index.js
@@ -7,8 +7,11 @@ import discussionCounter from '../notes/components/discussion_counter.vue';
import initDiscussionFilters from '../notes/discussion_filters';
import store from './stores';
import MergeRequest from '../merge_request';
+import { resetServiceWorkersPublicPath } from '../lib/utils/webpack';
export default function initMrNotes() {
+ resetServiceWorkersPublicPath();
+
const mrShowNode = document.querySelector('.merge-request');
// eslint-disable-next-line no-new
new MergeRequest({
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 5cf7fa3422d..46a44841c31 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -16,6 +16,10 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
before_action :authenticate_user!, only: [:assign_related_issues]
before_action :check_user_can_push_to_source_branch!, only: [:rebase]
+ before_action only: [:show] do
+ push_frontend_feature_flag(:diff_tree_filtering, default_enabled: true)
+ end
+
def index
@merge_requests = @issuables
diff --git a/app/views/projects/issues/_merge_requests_status.html.haml b/app/views/projects/issues/_merge_requests_status.html.haml
index 43e4c8db93f..90838a75214 100644
--- a/app/views/projects/issues/_merge_requests_status.html.haml
+++ b/app/views/projects/issues/_merge_requests_status.html.haml
@@ -12,11 +12,14 @@
- mr_status_class = 'closed'
- else
- mr_status_date = merge_request.created_at
- - mr_status_title = _('Opened')
+ - mr_status_title = mr_status_date ? _('Opened') : _('Open')
- mr_status_icon = 'issue-open-m'
- mr_status_class = 'open'
-- mr_status_tooltip = "<div><span class=\"bold\">#{mr_status_title}</span> #{time_ago_in_words(mr_status_date)} ago</div><span class=\"text-tertiary\">#{l(mr_status_date.to_time, format: time_format)}</span>"
+- if mr_status_date
+ - mr_status_tooltip = "<div><span class=\"bold\">#{mr_status_title}</span> #{time_ago_in_words(mr_status_date)} ago</div><span class=\"text-tertiary\">#{l(mr_status_date.to_time, format: time_format)}</span>"
+- else
+ - mr_status_tooltip = "<div><span class=\"bold\">#{mr_status_title}</span></div>"
%span.mr-status-wrapper.suggestion-help-hover{ class: css_class, data: { toggle: 'tooltip', placement: 'bottom', html: 'true', title: mr_status_tooltip } }
= sprite_icon(mr_status_icon, size: 16, css_class: "merge-request-status #{mr_status_class}")
diff --git a/doc/api/container_registry.md b/doc/api/container_registry.md
index b70854103e8..c77ed39e4dc 100644
--- a/doc/api/container_registry.md
+++ b/doc/api/container_registry.md
@@ -1,5 +1,7 @@
# Container Registry API
+> [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/55978) in GitLab 11.8.
+
This is the API docs of the [GitLab Container Registry](../user/project/container_registry.md).
## List registry repositories
@@ -42,7 +44,7 @@ Example response:
## Delete registry repository
-Get a list of repository commits in a project.
+Delete a repository in registry.
This operation is executed asynchronously and might take some time to get executed.
diff --git a/doc/topics/autodevops/index.md b/doc/topics/autodevops/index.md
index 463bdd59282..91be3e3d45d 100644
--- a/doc/topics/autodevops/index.md
+++ b/doc/topics/autodevops/index.md
@@ -128,7 +128,7 @@ Auto Deploy, and Auto Monitoring will be silently skipped.
NOTE: **Note**
`AUTO_DEVOPS_DOMAIN` environment variable is deprecated and
-[is scheduled to be removed](https://gitlab.com/gitlab-org/gitlab-ce/issues/56959) in GitLab 12.0.
+[is scheduled to be removed](https://gitlab.com/gitlab-org/gitlab-ce/issues/56959).
The Auto DevOps base domain is required if you want to make use of [Auto
Review Apps](#auto-review-apps) and [Auto Deploy](#auto-deploy). It can be defined
@@ -211,8 +211,7 @@ other environments.
NOTE: **Note:**
From GitLab 11.8, `KUBE_INGRESS_BASE_DOMAIN` replaces `AUTO_DEVOPS_DOMAIN`.
-`AUTO_DEVOPS_DOMAIN` [is scheduled to be removed](https://gitlab.com/gitlab-org/gitlab-ce/issues/56959)
-in GitLab 12.0.
+`AUTO_DEVOPS_DOMAIN` [is scheduled to be removed](https://gitlab.com/gitlab-org/gitlab-ce/issues/56959).
## Enabling/Disabling Auto DevOps
@@ -685,7 +684,7 @@ also be customized, and you can easily use a [custom buildpack](#custom-buildpac
| **Variable** | **Description** |
| ------------ | --------------- |
-| `AUTO_DEVOPS_DOMAIN` | The [Auto DevOps domain](#auto-devops-domain). By default, set automatically by the [Auto DevOps setting](#enabling-auto-devops). This variable is deprecated and [is scheduled to be removed](https://gitlab.com/gitlab-org/gitlab-ce/issues/56959) in GitLab 12.0. Use `KUBE_INGRESS_BASE_DOMAIN` instead. |
+| `AUTO_DEVOPS_DOMAIN` | The [Auto DevOps domain](#auto-devops-domain). By default, set automatically by the [Auto DevOps setting](#enabling-auto-devops). This variable is deprecated and [is scheduled to be removed](https://gitlab.com/gitlab-org/gitlab-ce/issues/56959). Use `KUBE_INGRESS_BASE_DOMAIN` instead. |
| `AUTO_DEVOPS_CHART` | The Helm Chart used to deploy your apps; defaults to the one [provided by GitLab](https://gitlab.com/charts/auto-deploy-app). |
| `AUTO_DEVOPS_CHART_REPOSITORY` | The Helm Chart repository used to search for charts; defaults to `https://charts.gitlab.io`. |
| `REPLICAS` | The number of replicas to deploy; defaults to 1. |
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index a3f78968a55..c3349980d60 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -4581,6 +4581,9 @@ msgstr ""
msgid "MergeRequest| %{paragraphStart}changed the description %{descriptionChangedTimes} times %{timeDifferenceMinutes}%{paragraphEnd}"
msgstr ""
+msgid "MergeRequest|Filter files"
+msgstr ""
+
msgid "MergeRequest|No files found"
msgstr ""
diff --git a/qa/qa/page/project/new.rb b/qa/qa/page/project/new.rb
index a588af07e4a..9f1867ef8a5 100644
--- a/qa/qa/page/project/new.rb
+++ b/qa/qa/page/project/new.rb
@@ -26,7 +26,7 @@ module QA
def choose_test_namespace
click_element :project_namespace_select
- select_item(Runtime::Namespace.path)
+ search_and_select(Runtime::Namespace.path)
end
def go_to_import_project
diff --git a/spec/views/projects/issues/_merge_requests_status.html.haml_spec.rb b/spec/views/projects/issues/_merge_requests_status.html.haml_spec.rb
new file mode 100644
index 00000000000..02c225292ce
--- /dev/null
+++ b/spec/views/projects/issues/_merge_requests_status.html.haml_spec.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+require 'spec_helper'
+
+describe 'projects/issues/_merge_requests_status.html.haml' do
+ it 'shows date of status change in tooltip' do
+ merge_request = create(:merge_request, created_at: 1.month.ago)
+
+ render partial: 'projects/issues/merge_requests_status',
+ locals: { merge_request: merge_request, css_class: '' }
+
+ expect(rendered).to match("Opened.*about 1 month ago")
+ end
+
+ it 'shows only status in tooltip if date is not set' do
+ merge_request = create(:merge_request, state: :closed)
+
+ render partial: 'projects/issues/merge_requests_status',
+ locals: { merge_request: merge_request, css_class: '' }
+
+ expect(rendered).to match("Closed")
+ end
+end