Devise an easy way to uniquely identify diff files and lines across all contexts
<!--IssueSummary start--> <details> <summary> Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards. </summary> - [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=235970) </details> <!--IssueSummary end--> ## Summary <!-- Please briefly describe what part of the code base needs to be refactored. --> Currently we use a combination of several strategies to identify a line on a diff file. This has broken down in the past by being easily mixed up and by not supporting certain scenarios like symlinks where the same file name is shown twice. ## Improvements Have an easy and unique way to identify a specific: * diff file (file path, file mode) * line (and interval) In the contexts: * inline / parallel mode * specific version comparison * ... ## Risks <!-- Please list features that can break because of this refactoring and how you intend to solve that. --> Central mechanism to diff rendering. ## Involved components <!-- List files or directories that will be changed by the refactoring. --> * `app/assets/javascripts/diffs` ## Optional: Intended side effects <!-- If the refactoring involves changes apart from the main improvements (such as a better UI), list them here. It may be a good idea to create separate issues and link them here. --> ## Optional: Missing test coverage <!-- If you are aware of tests that need to be written or adjusted apart from unit tests for the changed components, please list them here. --> <!-- Please select the appropriate label from the following: ~"feature::addition" ~"feature::maintenance" ~"tooling::pipelines" ~"tooling::workflow" -->
issue