Resolving case-only rename conflicts

If you happen to make a case-only rename of some file on windows machine, then this file will be renamed on this machine only. The filename caseness won’t propagate to other windows machines and the file will become out of sync forever. To deal with this conflict one have to manually rename this file on every machine to match the case.

There is a easier way. If you see that file “types.h” is out of sync, rename it to “types_.h” and wait for some time. Soon you will get files “Types.h” and “types_.h” in the same dir. Then compare files and delete the one you don’t need. If you deleted “Types.h” wait for files to sync and then rename “types_.h” back to “types.h”

The same is useful for dirs. If you have a dir full of case conflicts. rename “dir” to “dir_” syncthing will pull “dir” and populate it with conflicting files. Then you have to copy contents of “dir” to “_dir” overwriting all files. And after some time rename “_dir” back to “dir”

2 Likes

I think that is not practical in practice. I think Syncthing should be able to change renaming over the peers.

In my case it often happens that I rename up to 30 or 40 files in a batch, even simple capital letters. In addition, there is not always access to devices to do something like this.

2 Likes

Case only changes are a known problem on case-insensitive filesystems: https://github.com/syncthing/syncthing/issues/1787 and https://github.com/syncthing/syncthing/issues/2739.

1 Like