index.md 13.6 KB
Newer Older
1 2 3 4
---
type: reference, howto
---

5
# Epics **(PREMIUM)**
6

7
> Introduced in [GitLab Ultimate](https://about.gitlab.com/pricing/) 10.2.
8
> In [GitLab 12.8](https://gitlab.com/gitlab-org/gitlab/issues/37081), single-level Epics were moved to Premium tier.
9 10 11 12 13

Epics let you manage your portfolio of projects more efficiently and with less
effort by tracking groups of issues that share a theme, across projects and
milestones.

14 15 16 17 18
## Relationships between epics and issues

The possible relationships between epics and issues are:

- An epic is the parent of one or more issues.
19
- An epic is the parent of one or more child epics. For details see [Multi-level child epics](#multi-level-child-epics-ultimate). **(ULTIMATE)**
20 21 22 23 24 25 26

```mermaid
graph TD
    Parent_epic --> Issue1
    Parent_epic --> Child_epic
    Child_epic --> Issue2
````
27 28 29 30 31

## Use cases

- Suppose your team is working on a large feature that involves multiple discussions throughout different issues created in distinct projects within a [Group](../index.md). With Epics, you can track all the related activities that together contribute to that single feature.
- Track when the work for the group of issues is targeted to begin, and when it is targeted to end.
32
- Discuss and collaborate on feature ideas and scope at a high level.
33

34 35
![epics list view](img/epics_list_view_v12.5.png)

36 37 38 39 40 41
## Creating an epic

A paginated list of epics is available in each group from where you can create
a new epic. The list of epics includes also epics from all subgroups of the
selected group. From your group page:

42 43 44
1. Go to **Epics**.
1. Click **New epic**.
1. Enter a descriptive title and click **Create epic**.
45

46
You will be taken to the new epic where can edit the following details:
47

48 49 50 51 52 53 54 55 56 57
- Title
- Description
- Start date
- Due date
- Labels

An epic's page contains the following tabs:

- **Epics and Issues**: epics and issues added to this epic. Child epics, and their issues, are shown in a tree view.
  - Click on the <kbd>></kbd> beside a parent epic to reveal the child epics and issues.
58
  - Hover over the total counts to see a breakdown of open and closed items.
59 60 61
- **Roadmap**: a roadmap view of child epics which have start and due dates.

![epic view](img/epic_view_v12.3.png)
62 63 64

## Adding an issue to an epic

65 66 67 68 69 70
You can add an existing issue to an epic, or, from an epic's page, create a new issue that is automatically added to the epic.

### Adding an existing issue to an epic

Existing issues that belong to a project in an epic's group, or any of the epic's
subgroups, are eligible to be added to the epic. Newly added issues appear at the top of the list of issues in the **Epics and Issues** tab.
71

72
An epic contains a list of issues and an issue can be associated with at most
73 74
one epic. When you add an issue that is already linked to an epic,
the issue is automatically unlinked from its current parent.
75

76 77 78
To add an issue to an epic:

1. Click **Add an issue**.
79 80 81 82 83
1. Identify the issue to be added, using either of the following methods:
   - Paste the link of the issue.
   - Search for the desired issue by entering part of the issue's title, then selecting the desired match. ([From GitLab 12.5](https://gitlab.com/gitlab-org/gitlab/issues/9126))

   If there are multiple issues to be added, press <kbd>Spacebar</kbd> and repeat this step.
84 85
1. Click **Add**.

86 87 88 89 90 91 92 93 94 95 96 97 98
### Creating an issue from an epic

> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/5419) in GitLab 12.7.

Creating an issue from an epic enables you to maintain focus on the broader context of the epic while dividing work into smaller parts.

To create an issue from an epic:

1. On the epic's page, under **Epics and Issues**, click the arrow next to **Add an issue** and select **Create new issue**.
1. Under **Title**, enter the title for the new issue.
1. From the **Project** dropdown, select the project in which the issue should be created.
1. Click **Create issue**.

99
To remove an issue from an epic:
100

101 102
1. Click on the <kbd>x</kbd> button in the epic's issue list.
1. Click **Remove** in the **Remove issue** warning message.
103

104
## Multi-level child epics **(ULTIMATE)**
105

106
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/8333) in GitLab Ultimate 11.7.
107

108 109 110
Any epic that belongs to a group, or subgroup of the parent epic's group, is
eligible to be added. New child epics appear at the top of the list of epics in the **Epics and Issues** tab.

111
When you add an epic that is already linked to a parent epic, the link to its current parent is removed.
112 113 114

An epic can have multiple child epics with
the maximum depth being 5.
115

116
To add a child epic to an epic:
117 118

1. Click **Add an epic**.
119 120 121 122 123
1. Identify the epic to be added, using either of the following methods:
   - Paste the link of the epic.
   - Search for the desired issue by entering part of the epic's title, then selecting the desired match. ([From GitLab 12.5](https://gitlab.com/gitlab-org/gitlab/issues/9126))

   If there are multiple epics to be added, press <kbd>Spacebar</kbd> and repeat this step.
124 125
1. Click **Add**.

126 127 128 129
To remove a child epic from a parent epic:

1. Click on the <kbd>x</kbd> button in the parent epic's list of epics.
1. Click **Remove** in the **Remove epic** warning message.
130 131 132

## Start date and due date

133
To set a **Start date** and **Due date** for an epic, select one of the following:
134

135
- **Fixed**: Enter a fixed value.
136 137 138
- **From milestones**: Inherit a dynamic value from the milestones currently assigned to the epic's issues.
  Note that GitLab 12.5 replaced this option with **Inherited**.
- **Inherited**: Inherit a dynamic value from the epic's issues, child epics, and milestones ([Introduced](https://gitlab.com/gitlab-org/gitlab/issues/7332) in GitLab 12.5 to replace **From milestones**).
139

140 141 142
### From milestones

> [Replaced](https://gitlab.com/gitlab-org/gitlab/issues/7332) in GitLab 12.5 by **Inherited**.
143

144 145 146 147 148 149
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:
150

151 152 153 154
- Milestones are re-assigned to the issues.
- Milestone dates change.
- Issues are added or removed from the epic.

155 156
### Inherited

157 158
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/7332) in GitLab 12.5 to replace **From milestones**.

159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
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
176

177
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/7327) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 11.10.
178

179
If your epic contains one or more [child epics](#multi-level-child-epics-ultimate) which
180 181
have a [start or due date](#start-date-and-due-date), a
[roadmap](../roadmap/index.md) view of the child epics is listed under the parent epic.
182

183
![Child epics roadmap](img/epic_view_roadmap_v12.3.png)
184 185 186

## Reordering issues and child epics

187 188
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/9367) in GitLab 12.5.

189 190 191 192 193 194 195 196 197 198 199
New issues and child epics are added to the top of their respective lists in the **Epics and Issues** tab. You can reorder the list of issues and the list of child epics. Issues and child epics cannot be intermingled.

To reorder issues assigned to an epic:

1. Go to the **Epics and Issues** tab.
1. Drag and drop issues into the desired order.

To reorder child epics assigned to an epic:

1. Go to the **Epics and Issues** tab.
1. Drag and drop epics into the desired order.
200

201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
## Updating epics

### Using bulk editing

To apply labels across multiple epics:

1. Go to the Epics list.
1. Click **Edit epics**.
    - Checkboxes will appear beside each epic.
    - A sidebar on the right-hand side will appear, with an editable field for labels.
1. Check the checkbox beside each epic to be edited.
1. Select the desired labels.
1. Click **Update all**.

![bulk editing](img/bulk_editing.png)

217 218 219
## Deleting an epic

NOTE: **Note:**
220
To delete an epic, you need to be an [Owner](../../permissions.md#group-members-permissions) of a group/subgroup.
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253

When inside a single epic view, click the **Delete** button to delete the epic.
A modal will pop-up to confirm your action.

Deleting an epic releases all existing issues from their associated epic in the
system.

## Closing and reopening epics

### Using buttons

Whenever you decide that there is no longer need for that epic,
close the epic using the close button:

![close epic - button](img/button_close_epic.png)

You can always reopen it using the reopen button.

![reopen epic - button](img/button_reopen_epic.png)

### Using quick actions

You can close or reopen an epic using [Quick actions](../../project/quick_actions.md)

## Navigating to an epic from an issue

If an issue belongs to an epic, you can navigate to the containing epic with the
link in the issue sidebar.

![containing epic](img/containing_epic.png)

## Promoting an issue to an epic

254
> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/3777) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 11.6.
255 256 257

If you have [permissions](../../permissions.md) to close an issue and create an
epic in the parent group, you can promote an issue to an epic with the `/promote`
258
[quick action](../../project/quick_actions.md#quick-actions-for-issues-merge-requests-and-epics).
259 260 261
Only issues from projects that are in groups can be promoted. When attempting to promote a confidential
issue, a warning will display. Promoting a confidential issue to an epic will make all information
related to the issue public as epics are public to group members.
262 263 264 265 266 267 268 269 270 271 272 273 274 275 276

When the quick action is executed:

- An epic is created in the same group as the project of the issue.
- Subscribers of the issue are notified that the epic was created.

The following issue metadata will be copied to the epic:

- Title, description, activity/comment thread.
- Upvotes/downvotes.
- Participants.
- Group labels that the issue already has.

## Searching for an epic from epics list page

277
> Introduced in [GitLab Ultimate](https://about.gitlab.com/pricing/) 10.5.
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315

You can search for an epic from the list of epics using filtered search bar (similar to
that of Issues and Merge requests) based on following parameters:

- Title or description
- Author name / username
- Labels

![epics search](img/epics_search.png)

To search, go to the list of epics and click on the field **Search or filter results...**.
It will display a dropdown menu, from which you can add an author. You can also enter plain
text to search by epic title or description. When done, press <kbd>Enter</kbd> on your
keyboard to filter the list.

You can also sort epics list by:

- **Created date**
- **Last updated**
- **Start date**
- **Due date**

Each option contains a button that can toggle the order between **ascending** and **descending**. The sort option and order will be persisted to be used wherever epics are browsed including the [roadmap](../roadmap/index.md).

![epics sort](img/epics_sort.png)

## Permissions

If you have access to view an epic and have access to view an issue already
added to that epic, then you can view the issue in the epic issue list.

If you have access to edit an epic and have access to edit an issue, then you
can add the issue to or remove it from the epic.

Note that for a given group, the visibility of all projects must be the same as
the group, or less restrictive. That means if you have access to a group's epic,
then you already have access to its projects' issues.

316
You may also consult the [group permissions table](../../permissions.md#group-members-permissions).
317 318 319 320

## Thread

- Comments: collaborate on that epic by posting comments in its thread.
E
Evan Read 已提交
321 322
  These text fields also fully support
  [GitLab Flavored Markdown](../../markdown.md#gitlab-flavored-markdown-gfm).
323

324
## Comment, or start a thread
325 326 327 328

Once you wrote your comment, you can either:

- Click "Comment" and your comment will be published.
329
- Click "Start thread": start a thread within that epic's discussion to discuss specific points.
330 331 332 333 334

## Award emoji

- You can [award an emoji](../../award_emojis.md) to that epic or its comments.

E
Evan Read 已提交
335
## Notifications
336

337
- [Receive notifications](../../profile/notifications.md) for epic events.
338 339 340 341 342 343 344 345 346 347 348 349

<!-- ## Troubleshooting

Include any troubleshooting steps that you can foresee. If you know beforehand what issues
one might have when setting this up, or when something is changed, or on upgrading, it's
important to describe those, too. Think of things that may go wrong and include them here.
This is important to minimize requests for support, and to avoid doc comments with
questions that you know someone might ask.

Each scenario can be a third-level heading, e.g. `### Getting error message X`.
If you have none to add when creating a doc, leave this section in place
but commented out to help encourage others to add to it in the future. -->