diff --git a/.haml-lint.yml b/.haml-lint.yml index 0ec1af6a6c1..848df4d647c 100644 --- a/.haml-lint.yml +++ b/.haml-lint.yml @@ -118,7 +118,6 @@ linters: - Layout/TrailingEmptyLines - Lint/LiteralInInterpolation - Lint/ParenthesesAsGroupedExpression - - Lint/RedundantWithIndex - Lint/SafeNavigationConsistency - Metrics/BlockNesting - Naming/VariableName diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml index 7e69a94d048..7f4a69ef128 100644 --- a/.rubocop_manual_todo.yml +++ b/.rubocop_manual_todo.yml @@ -603,26 +603,6 @@ RSpec/EmptyLineAfterFinalLetItBe: - spec/features/merge_request/user_posts_notes_spec.rb - spec/features/operations_sidebar_link_spec.rb - spec/features/participants_autocomplete_spec.rb - - spec/features/projects/badges/pipeline_badge_spec.rb - - spec/features/projects/branches/user_deletes_branch_spec.rb - - spec/features/projects/commit/cherry_pick_spec.rb - - spec/features/projects/commit/user_comments_on_commit_spec.rb - - spec/features/projects/commit/user_reverts_commit_spec.rb - - spec/features/projects/commit/user_views_user_status_on_commit_spec.rb - - spec/features/projects/confluence/user_views_confluence_page_spec.rb - - spec/features/projects/files/gitlab_ci_syntax_yml_dropdown_spec.rb - - spec/features/projects/issues/design_management/user_views_design_images_spec.rb - - spec/features/projects/labels/user_sees_links_to_issuables_spec.rb - - spec/features/projects/labels/user_views_labels_spec.rb - - spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb - - spec/features/projects/merge_request_button_spec.rb - - spec/features/projects/pages/user_adds_domain_spec.rb - - spec/features/projects/pipelines/pipeline_spec.rb - - spec/features/projects/product_analytics/events_spec.rb - - spec/features/projects/settings/project_settings_spec.rb - - spec/features/projects/settings/repository_settings_spec.rb - - spec/features/projects/snippets/user_views_snippets_spec.rb - - spec/features/projects/user_sees_user_popover_spec.rb - spec/features/snippets/embedded_snippet_spec.rb - spec/finders/alert_management/alerts_finder_spec.rb - spec/finders/ci/commit_statuses_finder_spec.rb @@ -699,12 +679,6 @@ RSpec/EmptyLineAfterFinalLetItBe: - spec/lib/gitlab/data_builder/wiki_page_spec.rb - spec/lib/gitlab/deploy_key_access_spec.rb - spec/lib/gitlab/email/handler/service_desk_handler_spec.rb - - spec/lib/gitlab/git/lfs_changes_spec.rb - - spec/lib/gitlab/git/merge_base_spec.rb - - spec/lib/gitlab/git/push_spec.rb - - spec/lib/gitlab/git_access_design_spec.rb - - spec/lib/gitlab/git_access_project_spec.rb - - spec/lib/gitlab/git_access_wiki_spec.rb - spec/lib/gitlab/gitaly_client/operation_service_spec.rb - spec/lib/gitlab/gl_repository/repo_type_spec.rb - spec/lib/gitlab/group_search_results_spec.rb diff --git a/app/models/namespaces/traversal/linear.rb b/app/models/namespaces/traversal/linear.rb index 294ef83b9b4..66180e0bd32 100644 --- a/app/models/namespaces/traversal/linear.rb +++ b/app/models/namespaces/traversal/linear.rb @@ -52,7 +52,9 @@ module Namespaces end def use_traversal_ids? - Feature.enabled?(:use_traversal_ids, root_ancestor, default_enabled: :yaml) + return false unless Feature.enabled?(:use_traversal_ids, root_ancestor, default_enabled: :yaml) + + traversal_ids.present? end def self_and_descendants @@ -86,25 +88,7 @@ module Namespaces raise UnboundedSearch.new('Must bound search by a top') unless top without_sti_condition - .traversal_ids_contains(latest_traversal_ids(top)) - end - - # traversal_ids are a cached value. - # - # The traversal_ids value in a loaded object can become stale when compared - # to the database value. For example, if you load a hierarchy and then move - # a group, any previously loaded descendant objects will have out of date - # traversal_ids. - # - # To solve this problem, we never depend on the object's traversal_ids - # value. We always query the database first with a sub-select for the - # latest traversal_ids. - # - # Note that ActiveRecord will cache query results. You can avoid this by - # using `Model.uncached { ... }` - def latest_traversal_ids(namespace = self) - without_sti_condition.where('id = (?)', namespace) - .select('traversal_ids as latest_traversal_ids') + .traversal_ids_contains("{#{top.id}}") end end end diff --git a/app/views/admin/projects/_projects.html.haml b/app/views/admin/projects/_projects.html.haml index 7e505729213..6f7cea85ed1 100644 --- a/app/views/admin/projects/_projects.html.haml +++ b/app/views/admin/projects/_projects.html.haml @@ -1,7 +1,7 @@ .js-projects-list-holder - if @projects.any? %ul.projects-list.content-list.admin-projects - - @projects.each_with_index do |project| + - @projects.each do |project| %li.project-row{ class: ('no-description' if project.description.blank?) } .controls = link_to _('Edit'), edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn gl-button btn-default" diff --git a/changelogs/unreleased/issue-325836-fix-empty-line-after-let-it-be-gitlab-git.yml b/changelogs/unreleased/issue-325836-fix-empty-line-after-let-it-be-gitlab-git.yml new file mode 100644 index 00000000000..bbaf6246b65 --- /dev/null +++ b/changelogs/unreleased/issue-325836-fix-empty-line-after-let-it-be-gitlab-git.yml @@ -0,0 +1,5 @@ +--- +title: Fix EmptyLineAfterFinalLetItBe offenses in spec/lib/gitlab/git +merge_request: 58254 +author: Huzaifa Iftikhar @huzaifaiftikhar +type: fixed diff --git a/changelogs/unreleased/issue-325836-fix-empty-line-after-let-it-be-merge-projects-module.yml b/changelogs/unreleased/issue-325836-fix-empty-line-after-let-it-be-merge-projects-module.yml new file mode 100644 index 00000000000..994ad3eec0b --- /dev/null +++ b/changelogs/unreleased/issue-325836-fix-empty-line-after-let-it-be-merge-projects-module.yml @@ -0,0 +1,5 @@ +--- +title: Fix EmptyLineAfterFinalLetItBe Rubocop offenses for projects module +merge_request: 58187 +author: Huzaifa Iftikhar @huzaifaiftikhar +type: fixed diff --git a/config/webpack.config.js b/config/webpack.config.js index 94aa190b77a..11694e4aa1f 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -395,18 +395,6 @@ module.exports = { new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery', - Popper: ['popper.js', 'default'], - Alert: 'exports-loader?Alert!bootstrap/js/dist/alert', - Button: 'exports-loader?Button!bootstrap/js/dist/button', - Carousel: 'exports-loader?Carousel!bootstrap/js/dist/carousel', - Collapse: 'exports-loader?Collapse!bootstrap/js/dist/collapse', - Dropdown: 'exports-loader?Dropdown!bootstrap/js/dist/dropdown', - Modal: 'exports-loader?Modal!bootstrap/js/dist/modal', - Popover: 'exports-loader?Popover!bootstrap/js/dist/popover', - Scrollspy: 'exports-loader?Scrollspy!bootstrap/js/dist/scrollspy', - Tab: 'exports-loader?Tab!bootstrap/js/dist/tab', - Tooltip: 'exports-loader?Tooltip!bootstrap/js/dist/tooltip', - Util: 'exports-loader?Util!bootstrap/js/dist/util', }), // if DLLs are enabled, detect whether the DLL exists and create it automatically if necessary diff --git a/doc/user/application_security/dast/index.md b/doc/user/application_security/dast/index.md index d3f679fe9dd..65ddece1bde 100644 --- a/doc/user/application_security/dast/index.md +++ b/doc/user/application_security/dast/index.md @@ -300,7 +300,7 @@ variables: DAST_SUBMIT_FIELD: login # the `id` or `name` of the element that when clicked will submit the login form or the password form of a multi-page login process DAST_FIRST_SUBMIT_FIELD: next # the `id` or `name` of the element that when clicked will submit the username form of a multi-page login process DAST_EXCLUDE_URLS: http://example.com/sign-out,http://example.com/sign-out-2 # optional, URLs to skip during the authenticated scan; comma-separated, no spaces in between - DAST_AUTH_VALIDATION_URL: http://example.com/loggedin_page # optional, a URL only accessible to logged in users that DAST can use to confirm successful authentication + DAST_AUTH_VERIFICATION_URL: http://example.com/loggedin_page # optional, a URL only accessible to logged in users that DAST can use to confirm successful authentication ``` The results are saved as a @@ -645,7 +645,7 @@ DAST can be [configured](#customizing-the-dast-settings) using CI/CD variables. | `DAST_API_SPECIFICATION` | URL or string | The API specification to import. The specification can be hosted at a URL, or the name of a file present in the `/zap/wrk` directory. `DAST_WEBSITE` must be specified if this is omitted. | | `DAST_SPIDER_START_AT_HOST` | boolean | Set to `false` to prevent DAST from resetting the target to its host before scanning. When `true`, non-host targets `http://test.site/some_path` is reset to `http://test.site` before scan. Default: `true`. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/258805) in GitLab 13.6. | | `DAST_AUTH_URL` | URL | The URL of the page containing the sign-in HTML form on the target website. `DAST_USERNAME` and `DAST_PASSWORD` are submitted with the login form to create an authenticated scan. Not supported for API scans. | -| `DAST_AUTH_VALIDATION_URL` | URL | A URL only accessible to logged in users that DAST can use to confirm successful authentication. If provided, DAST will exit if it cannot access the URL. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/207335) in GitLab 13.8. +| `DAST_AUTH_VERIFICATION_URL` | URL | A URL only accessible to logged in users that DAST can use to confirm successful authentication. If provided, DAST will exit if it cannot access the URL. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/207335) in GitLab 13.8. | `DAST_USERNAME` | string | The username to authenticate to in the website. | | `DAST_PASSWORD` | string | The password to authenticate to in the website. | | `DAST_USERNAME_FIELD` | string | The name of username field at the sign-in HTML form. | diff --git a/doc/user/application_security/sast/index.md b/doc/user/application_security/sast/index.md index 0ae91b2db9a..41e57656fc7 100644 --- a/doc/user/application_security/sast/index.md +++ b/doc/user/application_security/sast/index.md @@ -247,8 +247,8 @@ You can customize the default scanning rules provided by our SAST analyzers. Ruleset customization supports two capabilities: -1. Disabling predefined rules -1. Modifying the default behavior of a given analyzer +1. Disabling predefined rules (available for all analyzers). +1. Modifying the default behavior of a given analyzer (only available for `nodejs-scan` and `gosec`). These capabilities can be used simultaneously. diff --git a/doc/user/group/bulk_editing/img/bulk-editing_v13_2.png b/doc/user/group/bulk_editing/img/bulk-editing_v13_2.png deleted file mode 100644 index 9f28fabdf0c..00000000000 Binary files a/doc/user/group/bulk_editing/img/bulk-editing_v13_2.png and /dev/null differ diff --git a/doc/user/group/bulk_editing/img/bulk_editing_v13_11.png b/doc/user/group/bulk_editing/img/bulk_editing_v13_11.png new file mode 100644 index 00000000000..4db2bbf264f Binary files /dev/null and b/doc/user/group/bulk_editing/img/bulk_editing_v13_11.png differ diff --git a/doc/user/group/bulk_editing/index.md b/doc/user/group/bulk_editing/index.md index aa356bee8e3..2a3e010282f 100644 --- a/doc/user/group/bulk_editing/index.md +++ b/doc/user/group/bulk_editing/index.md @@ -15,7 +15,7 @@ can do it by bulk editing them, that is, editing them together. Only the items visible on the current page are selected for bulk editing (up to 20). -![Bulk editing](img/bulk-editing_v13_2.png) +![Bulk editing](img/bulk_editing_v13_11.png) ## Bulk edit issues at the group level diff --git a/doc/user/group/epics/img/epic_board_v13_10.png b/doc/user/group/epics/img/epic_board_v13_10.png index 5a14d9288d3..85a131ea605 100644 Binary files a/doc/user/group/epics/img/epic_board_v13_10.png and b/doc/user/group/epics/img/epic_board_v13_10.png differ diff --git a/doc/user/group/epics/img/epic_view_roadmap_v12_9.png b/doc/user/group/epics/img/epic_view_roadmap_v12_9.png index 035adc5e7ac..e8224ced7e9 100644 Binary files a/doc/user/group/epics/img/epic_view_roadmap_v12_9.png and b/doc/user/group/epics/img/epic_view_roadmap_v12_9.png differ diff --git a/doc/user/group/epics/img/epic_view_v13.0.png b/doc/user/group/epics/img/epic_view_v13.0.png index b25a91d318a..c317a5707bc 100644 Binary files a/doc/user/group/epics/img/epic_view_v13.0.png and b/doc/user/group/epics/img/epic_view_v13.0.png differ diff --git a/doc/user/group/roadmap/img/roadmap_view_v13_2.png b/doc/user/group/roadmap/img/roadmap_view_v13_2.png index b4f889afaa4..94cf2258569 100644 Binary files a/doc/user/group/roadmap/img/roadmap_view_v13_2.png and b/doc/user/group/roadmap/img/roadmap_view_v13_2.png differ diff --git a/doc/user/img/todos_icon.png b/doc/user/img/todos_icon.png deleted file mode 100644 index 9fee4337a75..00000000000 Binary files a/doc/user/img/todos_icon.png and /dev/null differ diff --git a/doc/user/img/todos_index.png b/doc/user/img/todos_index.png deleted file mode 100644 index 99c1575d157..00000000000 Binary files a/doc/user/img/todos_index.png and /dev/null differ diff --git a/doc/user/img/todos_index_v13_11.png b/doc/user/img/todos_index_v13_11.png new file mode 100644 index 00000000000..eedb3045d39 Binary files /dev/null and b/doc/user/img/todos_index_v13_11.png differ diff --git a/doc/user/project/bulk_editing.md b/doc/user/project/bulk_editing.md index 76ae4cf596b..e3c60453388 100644 --- a/doc/user/project/bulk_editing.md +++ b/doc/user/project/bulk_editing.md @@ -16,7 +16,7 @@ by bulk editing them, that is, editing them together. Only the items visible on the current page are selected for bulk editing (up to 20). -![Bulk editing](img/bulk-editing_v13_2.png) +![Bulk editing](img/bulk_editing_v13_11.png) ## Bulk edit issues at the project level diff --git a/doc/user/project/img/bulk-editing_v13_2.png b/doc/user/project/img/bulk-editing_v13_2.png deleted file mode 100644 index 871cb02c01f..00000000000 Binary files a/doc/user/project/img/bulk-editing_v13_2.png and /dev/null differ diff --git a/doc/user/project/img/bulk_editing_v13_11.png b/doc/user/project/img/bulk_editing_v13_11.png new file mode 100644 index 00000000000..220459dd30b Binary files /dev/null and b/doc/user/project/img/bulk_editing_v13_11.png differ diff --git a/doc/user/project/import/img/jira/import_issues_from_jira_form_v13_2.png b/doc/user/project/import/img/jira/import_issues_from_jira_form_v13_2.png index 8a94d33d47b..dca60b2bc5c 100644 Binary files a/doc/user/project/import/img/jira/import_issues_from_jira_form_v13_2.png and b/doc/user/project/import/img/jira/import_issues_from_jira_form_v13_2.png differ diff --git a/doc/user/project/issues/img/create_issue_from_group_level_issue_tracker.png b/doc/user/project/issues/img/create_issue_from_group_level_issue_tracker.png deleted file mode 100644 index 8996490ae63..00000000000 Binary files a/doc/user/project/issues/img/create_issue_from_group_level_issue_tracker.png and /dev/null differ diff --git a/doc/user/project/issues/img/delete_issue.png b/doc/user/project/issues/img/delete_issue.png deleted file mode 100644 index 87ea65956fc..00000000000 Binary files a/doc/user/project/issues/img/delete_issue.png and /dev/null differ diff --git a/doc/user/project/issues/img/delete_issue_v13_11.png b/doc/user/project/issues/img/delete_issue_v13_11.png new file mode 100644 index 00000000000..d9905012eab Binary files /dev/null and b/doc/user/project/issues/img/delete_issue_v13_11.png differ diff --git a/doc/user/project/issues/img/issue_weight.png b/doc/user/project/issues/img/issue_weight.png deleted file mode 100644 index 3800b5940b8..00000000000 Binary files a/doc/user/project/issues/img/issue_weight.png and /dev/null differ diff --git a/doc/user/project/issues/img/issue_weight_v13_11.png b/doc/user/project/issues/img/issue_weight_v13_11.png new file mode 100644 index 00000000000..842c154ea49 Binary files /dev/null and b/doc/user/project/issues/img/issue_weight_v13_11.png differ diff --git a/doc/user/project/issues/img/merge_request_closes_issue.png b/doc/user/project/issues/img/merge_request_closes_issue.png deleted file mode 100644 index 6fd27738843..00000000000 Binary files a/doc/user/project/issues/img/merge_request_closes_issue.png and /dev/null differ diff --git a/doc/user/project/issues/img/merge_request_closes_issue_v13_11.png b/doc/user/project/issues/img/merge_request_closes_issue_v13_11.png new file mode 100644 index 00000000000..26b42239c12 Binary files /dev/null and b/doc/user/project/issues/img/merge_request_closes_issue_v13_11.png differ diff --git a/doc/user/project/issues/img/select_project_from_group_level_issue_tracker.png b/doc/user/project/issues/img/select_project_from_group_level_issue_tracker.png deleted file mode 100644 index 97d93620b2a..00000000000 Binary files a/doc/user/project/issues/img/select_project_from_group_level_issue_tracker.png and /dev/null differ diff --git a/doc/user/project/issues/img/select_project_from_group_level_issue_tracker_v13_11.png b/doc/user/project/issues/img/select_project_from_group_level_issue_tracker_v13_11.png new file mode 100644 index 00000000000..4612ae254d4 Binary files /dev/null and b/doc/user/project/issues/img/select_project_from_group_level_issue_tracker_v13_11.png differ diff --git a/doc/user/project/issues/issue_weight.md b/doc/user/project/issues/issue_weight.md index b10debf9888..8f17f399cb0 100644 --- a/doc/user/project/issues/issue_weight.md +++ b/doc/user/project/issues/issue_weight.md @@ -7,22 +7,22 @@ info: To determine the technical writer assigned to the Stage/Group associated w # Issue weight **(PREMIUM)** -> - Moved to GitLab Premium in 13.9. +> Moved to GitLab Premium in 13.9. When you have a lot of issues, it can be hard to get an overview. -By adding a weight to each issue, you can get a better idea of how much time, -value or complexity a given issue has or costs. +With weighted issues, you can get a better idea of how much time, +value, or complexity a given issue has or costs. You can set the weight of an issue during its creation, by changing the value in the dropdown menu. You can set it to a non-negative integer value from 0, 1, 2, and so on. (The database stores a 4-byte value, so the -upper bound is essentially limitless). +upper bound is essentially limitless.) You can remove weight from an issue as well. This value appears on the right sidebar of an individual issue, as well as -in the issues page next to a distinctive balance scale icon. +in the issues page next to a weight icon (**{weight}**). As an added bonus, you can see the total sum of all issues on the milestone page. -![issue page](img/issue_weight.png) +![issue page](img/issue_weight_v13_11.png) diff --git a/doc/user/project/issues/managing_issues.md b/doc/user/project/issues/managing_issues.md index dafc0e6ba02..2a841400852 100644 --- a/doc/user/project/issues/managing_issues.md +++ b/doc/user/project/issues/managing_issues.md @@ -67,23 +67,25 @@ When you're creating a new issue, these are the fields you can fill in: - Milestone - Labels -### New issue from the group-level Issue Tracker +### New issue from the group-level issue tracker -Go to the Group dashboard and click **Issues** in the sidebar to visit the Issue Tracker -for all projects in your Group. Select the project you'd like to add an issue for -using the dropdown button at the top-right of the page. +To visit the issue tracker for all projects in your group: -![Select project to create issue](img/select_project_from_group_level_issue_tracker.png) +1. Go to the group dashboard. +1. In the left sidebar, select **Issues**. +1. In the top-right, select the **Select project to create issue** button. +1. Select the project you'd like to create an issue for. The button now appears as **New issue in **. +1. Select **New issue in **. + +![Select project to create issue](img/select_project_from_group_level_issue_tracker_v13_11.png) The project you selected most recently becomes the default for your next visit. This should save you a lot of time and clicks, if you mostly create issues for the same project. -![Create issue from group-level issue tracker](img/create_issue_from_group_level_issue_tracker.png) - ### New issue via Service Desk Enable [Service Desk](../service_desk.md) for your project and offer email support. -By doing so, when your customer sends a new email, a new issue can be created in +Now, when your customer sends a new email, a new issue can be created in the appropriate project and followed up from there. ### New issue via email @@ -207,7 +209,7 @@ description, issues `#4` and `#6` are closed automatically when the MR is merged Using `Related to` flags `#5` as a [related issue](related_issues.md), but is not closed automatically. -![merge request closing issue when merged](img/merge_request_closes_issue.png) +![merge request closing issue when merged](img/merge_request_closes_issue_v13_11.png) If the issue is in a different repository than the MR, add the full URL for the issue(s): @@ -278,12 +280,10 @@ of your installation. ## Deleting issues -> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/2982) in GitLab 8.6. - Users with [project owner permission](../../permissions.md) can delete an issue by -editing it and clicking on the delete button. +editing it and selecting **Delete issue**. -![delete issue - button](img/delete_issue.png) +![delete issue - button](img/delete_issue_v13_11.png) ## Promote an issue to an epic **(PREMIUM)** diff --git a/doc/user/project/milestones/img/milestones_new_group_milestone_v13_5.png b/doc/user/project/milestones/img/milestones_new_group_milestone_v13_5.png index a865221c5d7..ffe1328b7d3 100644 Binary files a/doc/user/project/milestones/img/milestones_new_group_milestone_v13_5.png and b/doc/user/project/milestones/img/milestones_new_group_milestone_v13_5.png differ diff --git a/doc/user/project/milestones/img/milestones_project_milestone_page.png b/doc/user/project/milestones/img/milestones_project_milestone_page.png deleted file mode 100644 index 1faaf0b3979..00000000000 Binary files a/doc/user/project/milestones/img/milestones_project_milestone_page.png and /dev/null differ diff --git a/doc/user/project/milestones/img/milestones_project_milestone_page_sidebar_v13_11.png b/doc/user/project/milestones/img/milestones_project_milestone_page_sidebar_v13_11.png new file mode 100644 index 00000000000..3bdec8e219a Binary files /dev/null and b/doc/user/project/milestones/img/milestones_project_milestone_page_sidebar_v13_11.png differ diff --git a/doc/user/project/milestones/index.md b/doc/user/project/milestones/index.md index fe34dca4959..2399774c96d 100644 --- a/doc/user/project/milestones/index.md +++ b/doc/user/project/milestones/index.md @@ -38,7 +38,7 @@ You can assign **group milestones** to any issue or merge request of any project To view the group milestone list, in a group, go to **{issues}** **Issues > Milestones**. You can also view all milestones you have access to in the dashboard milestones list. -To view both project milestones and group milestones you have access to, click **More > Milestones** +To view both project milestones and group milestones you have access to, select **More > Milestones** on the top navigation bar. For information about project and group milestones API, see: @@ -47,9 +47,9 @@ For information about project and group milestones API, see: - [Group Milestones API](../../../api/group_milestones.md) NOTE: -If you're in a group and click **Issues > Milestones**, GitLab displays group milestones +If you're in a group and select **Issues > Milestones**, GitLab displays group milestones and the milestones of projects in this group. -If you're in a project and click **Issues > Milestones**, GitLab displays only this project's milestones. +If you're in a project and select **Issues > Milestones**, GitLab displays only this project's milestones. ## Creating milestones @@ -58,23 +58,23 @@ A permission level of [Developer or higher](../../permissions.md) is required to ### New project milestone -To create a **project milestone**: +To create a project milestone: 1. In a project, go to **{issues}** **Issues > Milestones**. -1. Click **New milestone**. +1. Select **New milestone**. 1. Enter the title, an optional description, an optional start date, and an optional due date. -1. Click **New milestone**. +1. Select **New milestone**. ![New project milestone](img/milestones_new_project_milestone.png) ### New group milestone -To create a **group milestone**: +To create a group milestone: 1. In a group, go to **{issues}** **Issues > Milestones**. -1. Click **New milestone**. +1. Select **New milestone**. 1. Enter the title, an optional description, an optional start date, and an optional due date. -1. Click **New milestone**. +1. Select **New milestone**. ![New group milestone](img/milestones_new_group_milestone_v13_5.png) @@ -86,10 +86,10 @@ A permission level of [Developer or higher](../../permissions.md) is required to To edit a milestone: 1. In a project or group, go to **{issues}** **Issues > Milestones**. -1. Click a milestone's title. -1. Click **Edit**. +1. Select a milestone's title. +1. Select **Edit**. -You can delete a milestone by clicking the **Delete** button. +You can delete a milestone by selecting the **Delete** button. ### Promoting project milestones to group milestones @@ -182,7 +182,7 @@ The milestone sidebar on the milestone view shows the following: - The total time spent on all issues and merge requests assigned to the milestone. - The total issue weight of all issues assigned to the milestone. -![Project milestone page](img/milestones_project_milestone_page.png) +![Project milestone page](img/milestones_project_milestone_page_sidebar_v13_11.png)