Show end state of the import and detailed information on not imported entities to the user
Release notes
Upon finished import of a project from GitHub, we show numbers of entities imported, but we don't inform which entities were not successfully imported. We also do not show errors that prevented entities to get imported or caused the general failure of the import. That makes it difficult for the user to decide, if they are satisfied with the import results or would rather repeat it.
In this release we extend the import summary to show which entities were not imported, e.g which specific pull requests and, if possible, provide a direct link to these entities on GitHub. We also show errors related to those failures, so users gain more information to debug and troubleshoot problems.
Problem
Currently we do not provide exact feedback to the user on finished import process. We show how many entities were imported, but we don't provide which entities exactly were not successfully imported. We also do not show errors that prevented entities to get imported or caused the general failure of the import (when project was not created or repository imported).
It's difficult for the user to decide, if they are satisfied with the import or would rather repeat it.
It's impossible for user to know the cause of the failures (the errors).
Proposed solution
Ultimately we should show to the user:
- general end state of import: Completed, Partially completed, Failed, Cancelled
- for Partially completed state
- overall number of imported vs not imported entities (that's what we have now)
- exactly which entities were not imported (as in which PRs exactly, for example), if possible provide a direct link to that entity on GitHub
- errors related to entities not getting imported, protected branches rules not translated, attachments not migrated, etc. so user (and ourselves) have more information to troubleshoot/debug
- for Failed state - show error(s) that prevented project from being created, or the repository from being migrated.
In this issue we want to show:
- the end state of import to the user as a badge: Completed, Partially completed, Failed, Cancelled. Note that this user facing state is combination of the state machine final state and detailed information stored in DB, implemented in Store detailed import status in DB (#386747 - closed)
- if import was Partially completed, we should show which entities were not imported and provide a link to those entities, when possible
- if import was Partially completed and we show entities that were not imported, we should also show the error(s) that prevented each entity from getting imported (separate errors by entity) (implemented in Store detailed import status in DB (#386747 - closed))
- if import was Failed, we should show error(s) that caused that failure (that caused project not to be created or repository not to get migrated) (implemented in Store detailed import status in DB (#386747 - closed)). We add "Details" button and clicking on this button would bring user to another page, that shows error(s) that caused that failure.
At the moment, we show Partial import
badge in UI. The badge should be renamed to Partially completed
.
The current UI report visible on import/history
and import/github/status
pages:
should be changed. We keep "Details" button, that upon clicking expands to a list (as it's now), and add under listing in "Details" a link "See failures", that would bring user to another page, that shows all not imported relations in Accordion list, where list items are clickable (expandable) to show related to each relation errors.
Implementation details
- Separate page within rails routing
- Page will be separate tiny Vue application (that even could be a HAML one considering lack of frontend on import team side, but if (and I bet we will want) we will want to do some functionality like filtration - it's better to do that in Vue from very start (from comment) - let's go for Vue app.
Documentation
Should be added in https://docs.gitlab.com/ee/user/project/import/github.html, maybe within #imported-data section or in a new section.
This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.