Ability to clone an epic
What: Copy (that is, clone) an epic, including all its children, recursively.
Why? This provides a way to kickstart creating epics. And in particular, it solves the use case of templating. That is, suppose you have a business process (e.g. https://gitlab.com/gitlab-org/gitlab-ee/issues/9243#note_132245383) of creating and managing epics and/or issues. You can have specific epics (and specific issues) that serve as templates, but without actually having to worry about extra UI to manage templates as a native feature. Instead, users will have these epics and issues bookmarked, and they can be changed over time. Every time they need to create a new epic/issue, they will just "clone" one of these objects.
Details: We would likely need to first create a copy feature for individual issues first as a baseline feature that will likely help this feature. See https://gitlab.com/gitlab-org/gitlab-ce/issues/21863. When we copy an epic, we copy the title and description. We also make copies of its children recursively, and re-create the tree structure rooted at this epic. So that may mean making copies of multiple epics and children accordingly, and also cloning their respective titles and descriptions too. We would not copy related issues relationships. Just parent-child epic-epic relationships and parent-child epic-issue relationships.
UI: Can be a simple quick action to start off with.
Comments: Not sure if we should copy comments. If the primary use case is indeed templating, then it doesn't make sense to copy comments. Furthemore, we already have the move issue
functionality and the promote issue to epic
functionality, which do copy comments over, and serve those specific scenarios.
Attributes: We should probably also copy labels at least if the use is for templating. But should other attributes be copied over?