Pushing Repo Results in Corruption of Binary Files
Created originally on Bitbucket by kandrey89 (Andrey Kuznetsov)
This is the 2nd time that I got a repo corruption, from my brief search and based on what was corrupted, they appear to come from the same issue. (While I don't have a specific example or case to reproduce, here's what I can narrow down)
I have a macOS and a windows machine running latest version of TortoiseHG. I remote connect from macOS to windows and I also setup a remote disk to mount, this allows me to use TortoiseHG to push my repo from windows to macOS drive.
When I push the repo updates, there are no issues presented. However when I go into macOS and start checking, I get an error that appears when I select a commited abc.exe file, the error is something like unknown compression followed by some character that changes depending on which .exe file I select. Due to this error, I cannot do anything to the repo because it fails to parse these corrupt files. Previously, via the same method of push commits, I got an error on a .dll file reported here: https://bitbucket.org/tortoisehg/thg/issues/5117/unknown-version-12238-in-revlog
It looks like somehow the .d file gets corrupt when pushing commits from windows to macOS. (ie abc.exe.d).
When I copied .hg directory to macOS from a working windows repo where the changes were commited, the macOS repo worked fine.
I consider this a blocker issue because it corrupts the whole repository and it's impossible to use the GUI tools to recover the repo (including the History->Strip extension). There should be a way to completely delete revisions even if there are these file corruption parse errors, like for example completely deleting the file if it cannot be parsed/read/unmodified. That way a user could sync to the repo again.