Operating system: Both MacOS 10.14.2 (Mojave) and Windows 10
Graphics card: GTX 1080Ti, Radeon Pro 560X 4096 MB
Broken: 2.8 branch (daily build as of Jan 3, 2019)
Short description of error
When using "Save External..." with the multires modifier, a file is saved, but it is not loaded when the associated .blend file is reopened.
Exact steps for others to reproduce the error
1 - Create an object
2 - Create a multires modifier on the object
3 - Subdivide a few levels
4 - Sculpt some detail on the object
5 - Save the .blend file with a name (note the size of the .blend file)
6 - File->Revert to reload the .blend file and observe that the detail is still there
7 - In the modifier panel, click on the multires "Save External..." button and create the file
8 - Note that the .btx file has been created and is an appropriate size and the .blend file has shrunk by approximately this amount. e.g.
$ ls -latr total 2976 drwxr-xr-x 4 chuck staff 128 Jan 3 10:17 .. -rw-r--r-- 1 chuck staff 733248 Jan 3 11:11 MultiResTest.blend1 -rw-r--r-- 1 chuck staff 83344 Jan 3 11:12 Cube.btx -rw-r--r-- 1 chuck staff 655116 Jan 3 11:12 MultiResTest.blend drwxr-xr-x 5 chuck staff 160 Jan 3 11:12 .
9 - File->Revert to reload the .blend file and observe that the multires detail is not present
I tried to debug this a bit but I am still learning my way around the blender code base. What I did notice is that the original "Save External..." workflow ends up invoking CustomData_external_write() in customdata.c. This is also invoked when saving the .blend file as expected. Tracing through it does seem to be writing out real data.
However, I would have expected that loading the .blend file or doing File->Revert would have invoked CustomData_external_read(). The only time that appears to be called is when I click on "Pack External" in the multires modifier. If you use this carefully you can get your external data back. But if you File->Revert when the data is saved externally, and you save the .blend file again, it appears to overwrite the .btx file and the detail is lost forever.