Show the bytes for file changes when the file is not diffable
What does this MR do?
When a file is not diffable, the UI instead shows the bytes that were modified instead of the count of lines (since git
doesn't report a diff in lines for undiffable files).
Caveats
- Our humanized file sizes fail when the value is below zero. I have opened an MR to fix this problem.
- Our humanized file sizes require localization text, which assumes the presence of the
window
object. This means using any of our utilities in a Web Worker (wherewindow
is not defined) is not possible - and thus adding these utilities to any file eventually imported into a Worker is not possible. I've opened an MR to fix this problem. - One method of creating an
undiffable
file is changing file encodings, like to UTF-16. Unfortunately, when I change a file to UTF-16, whilegit
does report it as a binary undiffable file, the GitLab UI actually shows a partially corrupted file. In the screenshot this isB# personal
(which is# personal
in the source file, followed by hundreds of lines).
Screenshots (strongly suggested)
Before | After | |
---|---|---|
Decrease in file size | ||
No change in file size | Same as above | |
Increase in file size | Same as above |
Does this MR meet the acceptance criteria?
Conformity
-
I have included a changelog entry, or it's not needed. (Does this MR need a changelog?) -
I have added/updated documentation, or it's not needed. (Is documentation required?) -
I have properly separated EE content from FOSS, or this MR is FOSS only. (Where should EE code go?) -
I have added information for database reviewers in the MR description, or it's not needed. (Does this MR have database related changes?) -
I have self-reviewed this MR per code review guidelines. -
This MR does not harm performance, or I have asked a reviewer to help assess the performance impact. (Merge request performance guidelines) -
I have followed the style guides.
Availability and Testing
-
I have added/updated tests following the Testing Guide, or it's not needed. (Consider all test levels. See the Test Planning Process.) -
I have tested this MR in all supported browsers, or it's not needed. -
I have informed the Infrastructure department of a default or new setting change per definition of done, or it's not needed.
Edited by Thomas Randolph