Include slug in issue and MR URLs
For example, the URL for this issue would be https://gitlab.com/gitlab-org/gitlab-ce/issues/28795-include-slug-in-issue-and-mr-urls.
This will make it easier to identify what a URL points to when it's pasted into other mediums than GitLab (which adds a tooltip with the title) or Mattermost/Slack (which unfurl the link and show the title and description), especially when multiple URLs are pasted at the same time and it's otherwise near-impossible to keep them apart.
Viewing
- These should all show the same content, with a canonical link element pointing to the slug-less version. [Should this be the current slug?]
/gitlab-org/gitlab-ce/issues/28795
/gitlab-org/gitlab-ce/issues/28795-include-slug-in-issue-and-mr-urls
/gitlab-org/gitlab-ce/issues/28795-some-other-slug
- Slugs as the component should work for nested routes, so all of these should work:
/gitlab-org/gitlab-ce/merge_requests/28795/diffs
/gitlab-org/gitlab-ce/merge_requests/28795-include-slug-in-issue-and-mr-urls/diffs
/gitlab-org/gitlab-ce/merge_requests/28795-some-other-slug/diffs
- When visiting a URL that is not the version with the current slug, we should update the URL with
replaceState
on the front-end.
Reference parsing in comments / issues / etc.
- If you enter a reference (
#28795
), the slug would be in the URL, so that would expand to the equivalent of(#28795)[https://gitlab.com/gitlab-org/gitlab-ce/issues/28795-include-slug-in-issue-and-mr-urls]
. - If you enter a full URL without a slug (
https://gitlab.com/gitlab-org/gitlab-ce/issues/28795
):- If the viewer can see the contents of that link, the same would happen as when entering the reference.
- If the viewer can't see the contents of that link, it's just left there unlinked.
- If you enter a full URL with a slug (
https://gitlab.com/gitlab-org/gitlab-ce/issues/28795-include-slug-in-issue-and-mr-urls
), exactly the same as the above would happen. If the slug didn't match the current title, it wouldn't be updated in the generated link.