From 09ffaae1328da918056512ddc674913f0bb7b134 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 23 Oct 2019 12:06:18 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- doc/api/epic_links.md | 32 +++++++++++++++---------- doc/api/epics.md | 40 ++++++++++++++++++++----------- doc/development/api_graphql_styleguide.md | 17 +++++++++---- doc/user/group/epics/index.md | 38 ++++++++++++++++++++++------- doc/user/group/roadmap/index.md | 2 +- 5 files changed, 88 insertions(+), 41 deletions(-) (limited to 'doc') diff --git a/doc/api/epic_links.md b/doc/api/epic_links.md index 665c902355f..e81dc88da81 100644 --- a/doc/api/epic_links.md +++ b/doc/api/epic_links.md @@ -50,12 +50,14 @@ Example response: "start_date": null, "start_date_is_fixed": false, "start_date_fixed": null, - "start_date_from_milestones": null, - "end_date": "2018-07-31", + "start_date_from_milestones": null, //deprecated in favor of start_date_from_inherited_source + "start_date_from_inherited_source": null, + "end_date": "2018-07-31", //deprecated in favor of due_date "due_date": "2018-07-31", "due_date_is_fixed": false, "due_date_fixed": null, - "due_date_from_milestones": "2018-07-31", + "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source + "due_date_from_inherited_source": "2018-07-31", "created_at": "2018-07-17T13:36:22.770Z", "updated_at": "2018-07-18T12:22:05.239Z", "labels": [] @@ -102,12 +104,14 @@ Example response: "start_date": null, "start_date_is_fixed": false, "start_date_fixed": null, - "start_date_from_milestones": null, - "end_date": "2018-07-31", + "start_date_from_milestones": null, //deprecated in favor of start_date_from_inherited_source + "start_date_from_inherited_source": null, + "end_date": "2018-07-31", //deprecated in favor of due_date "due_date": "2018-07-31", "due_date_is_fixed": false, "due_date_fixed": null, - "due_date_from_milestones": "2018-07-31", + "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source + "due_date_from_inherited_source": "2018-07-31", "created_at": "2018-07-17T13:36:22.770Z", "updated_at": "2018-07-18T12:22:05.239Z", "labels": [] @@ -189,12 +193,14 @@ Example response: "start_date": null, "start_date_is_fixed": false, "start_date_fixed": null, - "start_date_from_milestones": null, - "end_date": "2018-07-31", + "start_date_from_milestones": null, //deprecated in favor of start_date_from_inherited_source + "start_date_from_inherited_source": null, + "end_date": "2018-07-31", //deprecated in favor of due_date "due_date": "2018-07-31", "due_date_is_fixed": false, "due_date_fixed": null, - "due_date_from_milestones": "2018-07-31", + "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source + "due_date_from_inherited_source": "2018-07-31", "created_at": "2018-07-17T13:36:22.770Z", "updated_at": "2018-07-18T12:22:05.239Z", "labels": [] @@ -241,12 +247,14 @@ Example response: "start_date": null, "start_date_is_fixed": false, "start_date_fixed": null, - "start_date_from_milestones": null, - "end_date": "2018-07-31", + "start_date_from_milestones": null, //deprecated in favor of start_date_from_inherited_source + "start_date_from_inherited_source": null, + "end_date": "2018-07-31", //deprecated in favor of due_date "due_date": "2018-07-31", "due_date_is_fixed": false, "due_date_fixed": null, - "due_date_from_milestones": "2018-07-31", + "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source + "due_date_from_inherited_source": "2018-07-31", "created_at": "2018-07-17T13:36:22.770Z", "updated_at": "2018-07-18T12:22:05.239Z", "labels": [] diff --git a/doc/api/epics.md b/doc/api/epics.md index c7a050f1465..531c75fd8c5 100644 --- a/doc/api/epics.md +++ b/doc/api/epics.md @@ -14,9 +14,13 @@ The [epic issues API](epic_issues.md) allows you to interact with issues associa > [Introduced][ee-6448] in GitLab 11.3. -Since start date and due date can be dynamically sourced from related issue milestones, when user has edit permission, additional fields will be shown. These include two boolean fields `start_date_is_fixed` and `due_date_is_fixed`, and four date fields `start_date_fixed`, `start_date_from_milestones`, `due_date_fixed` and `due_date_from_milestones`. +Since start date and due date can be dynamically sourced from related issue milestones, when user has edit permission, +additional fields will be shown. These include two boolean fields `start_date_is_fixed` and `due_date_is_fixed`, +and four date fields `start_date_fixed`, `start_date_from_inherited_source`, `due_date_fixed` and `due_date_from_inherited_source`. -`end_date` has been deprecated in favor of `due_date`. +- `end_date` has been deprecated in favor of `due_date`. +- `start_date_from_milestones` has been deprecated in favor of `start_date_from_inherited_source` +- `due_date_from_milestones` has been deprecated in favor of `due_date_from_inherited_source` ## Epics pagination @@ -80,12 +84,14 @@ Example response: "start_date": null, "start_date_is_fixed": false, "start_date_fixed": null, - "start_date_from_milestones": null, - "end_date": "2018-07-31", + "start_date_from_milestones": null, //deprecated in favor of start_date_from_inherited_source + "start_date_from_inherited_source": null, + "end_date": "2018-07-31", //deprecated in favor of due_date "due_date": "2018-07-31", "due_date_is_fixed": false, "due_date_fixed": null, - "due_date_from_milestones": "2018-07-31", + "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source + "due_date_from_inherited_source": "2018-07-31", "created_at": "2018-07-17T13:36:22.770Z", "updated_at": "2018-07-18T12:22:05.239Z", "closed_at": "2018-08-18T12:22:05.239Z", @@ -136,12 +142,14 @@ Example response: "start_date": null, "start_date_is_fixed": false, "start_date_fixed": null, - "start_date_from_milestones": null, - "end_date": "2018-07-31", + "start_date_from_milestones": null, //deprecated in favor of start_date_from_inherited_source + "start_date_from_inherited_source": null, + "end_date": "2018-07-31", //deprecated in favor of due_date "due_date": "2018-07-31", "due_date_is_fixed": false, "due_date_fixed": null, - "due_date_from_milestones": "2018-07-31", + "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source + "due_date_from_inherited_source": "2018-07-31", "created_at": "2018-07-17T13:36:22.770Z", "updated_at": "2018-07-18T12:22:05.239Z", "closed_at": "2018-08-18T12:22:05.239Z", @@ -204,12 +212,14 @@ Example response: "start_date": null, "start_date_is_fixed": false, "start_date_fixed": null, - "start_date_from_milestones": null, - "end_date": "2018-07-31", + "start_date_from_milestones": null, //deprecated in favor of start_date_from_inherited_source + "start_date_from_inherited_source": null, + "end_date": "2018-07-31", //deprecated in favor of due_date "due_date": "2018-07-31", "due_date_is_fixed": false, "due_date_fixed": null, - "due_date_from_milestones": "2018-07-31", + "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source + "due_date_from_inherited_source": "2018-07-31", "created_at": "2018-07-17T13:36:22.770Z", "updated_at": "2018-07-18T12:22:05.239Z", "closed_at": "2018-08-18T12:22:05.239Z", @@ -272,12 +282,14 @@ Example response: "start_date": null, "start_date_is_fixed": false, "start_date_fixed": null, - "start_date_from_milestones": null, - "end_date": "2018-07-31", + "start_date_from_milestones": null, //deprecated in favor of start_date_from_inherited_source + "start_date_from_inherited_source": null, + "end_date": "2018-07-31", //deprecated in favor of due_date "due_date": "2018-07-31", "due_date_is_fixed": false, "due_date_fixed": null, - "due_date_from_milestones": "2018-07-31", + "due_date_from_milestones": "2018-07-31", //deprecated in favor of start_date_from_inherited_source + "due_date_from_inherited_source": "2018-07-31", "created_at": "2018-07-17T13:36:22.770Z", "updated_at": "2018-07-18T12:22:05.239Z", "closed_at": "2018-08-18T12:22:05.239Z", diff --git a/doc/development/api_graphql_styleguide.md b/doc/development/api_graphql_styleguide.md index cdd0e9b2a7b..05786319d96 100644 --- a/doc/development/api_graphql_styleguide.md +++ b/doc/development/api_graphql_styleguide.md @@ -43,14 +43,14 @@ a new presenter specifically for GraphQL. The presenter is initialized using the object resolved by a field, and the context. -### Exposing Global ids +### Exposing Global IDs -When exposing an `id` field on a type, we will by default try to -expose a global id by calling `to_global_id` on the resource being +When exposing an `ID` field on a type, we will by default try to +expose a global ID by calling `to_global_id` on the resource being rendered. To override this behaviour, you can implement an `id` method on the -type for which you are exposing an id. Please make sure that when +type for which you are exposing an ID. Please make sure that when exposing a `GraphQL::ID_TYPE` using a custom method that it is globally unique. @@ -350,7 +350,10 @@ To find objects to display in a field, we can add resolvers to `app/graphql/resolvers`. Arguments can be defined within the resolver, those arguments will be -made available to the fields using the resolver. +made available to the fields using the resolver. When exposing a model +that had an internal ID (`iid`), prefer using that in combination with +the namespace path as arguments in a resolver over a database +ID. Othewise use a [globally unique ID](#exposing-global-ids). We already have a `FullPathLoader` that can be included in other resolvers to quickly find Projects and Namespaces which will have a @@ -365,6 +368,10 @@ actions. In the same way a GET-request should not modify data, we cannot modify data in a regular GraphQL-query. We can however in a mutation. +To find objects for a mutation, arguments need to be specified. As with +[resolvers](#resolvers), prefer using internal ID or, if needed, a +global ID rather than the database ID. + ### Fields In the most common situations, a mutation would return 2 fields: diff --git a/doc/user/group/epics/index.md b/doc/user/group/epics/index.md index f9690d4edfe..55f337f982d 100644 --- a/doc/user/group/epics/index.md +++ b/doc/user/group/epics/index.md @@ -92,24 +92,44 @@ To remove a child epic from a parent epic: ## Start date and due date -To set a **Start date** and **Due date** for an epic, you can choose either of the following: +To set a **Start date** and **Due date** for an epic, select one of the following: - **Fixed**: Enter a fixed value. -- **From milestones:** Inherit a dynamic value from the issues added to the epic. +- **From milestones**: Inherit a dynamic value from the issues added to the epic. +- **Inherited**: Inherit a dynamic value from the issues added to the epic. ([Introduced](https://gitlab.com/gitlab-org/gitlab/issues/7332) in GitLab 12.5 to replace **From milestones**). -If you select **From milestones** for the start date, GitLab will automatically set the -date to be earliest start date across all milestones that are currently assigned -to the issues that are added to the epic. Similarly, if you select "From milestones" -for the due date, GitLab will set it to be the latest due date across all -milestones that are currently assigned to those issues. +### Milestones -These are dynamic dates which are recalculated immediately if any of the following occur: +If you select **From milestones** for the start date, GitLab will automatically set the date to be earliest +start date across all milestones that are currently assigned to the issues that are added to the epic. +Similarly, if you select **From milestones** for the due date, GitLab will set it to be the latest due date across +all milestones that are currently assigned to those issues. + +These are dynamic dates which are recalculated if any of the following occur: - Milestones are re-assigned to the issues. - Milestone dates change. - Issues are added or removed from the epic. -## Roadmap +### Inherited + +If you select **Inherited** for the start date, GitLab will scan all child epics and issues assigned to the epic, +and will set the start date to match the earliest found start date or milestone. Similarly, if you select +**Inherited** for the due date, GitLab will set the due date to match the latest due date or milestone +found among its child epics and issues. + +These are dynamic dates and recalculated if any of the following occur: + +- A child epic's dates change. +- Milestones are reassigned to an issue. +- A milestone's dates change. +- Issues are added to, or removed from, the epic. + +Because the epic's dates can inherit dates from its children, the start date and due date propagate from the bottom to the top. +If the start date of a child epic on the lowest level changes, that becomes the earliest possible start date for its parent epic, +then the parent epic's start date will reflect the change and this will propagate upwards to the top epic. + +## Roadmap in epics > [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/7327) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 11.10. diff --git a/doc/user/group/roadmap/index.md b/doc/user/group/roadmap/index.md index bcd79bd04bf..a72cd990706 100644 --- a/doc/user/group/roadmap/index.md +++ b/doc/user/group/roadmap/index.md @@ -26,7 +26,7 @@ Epics in the view can be sorted by: Each option contains a button that toggles the sort order between **ascending** and **descending**. The sort option and order will be persisted when browsing Epics, including the [epics list view](../epics/index.md). -Roadmaps can also be [visualized inside an epic](../epics/index.md#roadmap). +Roadmaps can also be [visualized inside an epic](../epics/index.md#roadmap-in-epics). ## Timeline duration -- cgit v1.2.1